diff --git a/client/package.json b/client/package.json index 0ee7fde8..08767133 100644 --- a/client/package.json +++ b/client/package.json @@ -9,6 +9,7 @@ "@testing-library/jest-dom": "^5.14.1", "@testing-library/react": "^12.0.0", "@testing-library/user-event": "^7.1.2", + "strapi-provider-email-nodemailer": "^3.6.8", "antd": "^4.16.12", "axios": "^0.21.1", "craco-less": "^1.18.0", @@ -17,9 +18,11 @@ "http-server": "^0.12.3", "react": "^17.0.2", "react-dom": "^17.0.2", + "react-hooks-global-state": "^1.0.2", "react-papaparse": "^3.17.1", "react-router-dom": "^5.1.2", "react-scripts": "^4.0.3", + "recharts": "^2.1.5", "util": "^0.12.4", "yarn": "^1.22.10" }, diff --git a/client/public/images/arduino_functions.png b/client/public/images/arduino_functions.png new file mode 100644 index 00000000..62397ca4 Binary files /dev/null and b/client/public/images/arduino_functions.png differ diff --git a/client/public/images/block_comment.png b/client/public/images/block_comment.png new file mode 100644 index 00000000..6b25e37d Binary files /dev/null and b/client/public/images/block_comment.png differ diff --git a/client/public/images/controls_flow_statements.png b/client/public/images/controls_flow_statements.png new file mode 100644 index 00000000..6ed51440 Binary files /dev/null and b/client/public/images/controls_flow_statements.png differ diff --git a/client/public/images/controls_for.png b/client/public/images/controls_for.png new file mode 100644 index 00000000..c827ca89 Binary files /dev/null and b/client/public/images/controls_for.png differ diff --git a/client/public/images/controls_for_Each.png b/client/public/images/controls_for_Each.png new file mode 100644 index 00000000..43d7b177 Binary files /dev/null and b/client/public/images/controls_for_Each.png differ diff --git a/client/public/images/controls_if.png b/client/public/images/controls_if.png new file mode 100644 index 00000000..3080320e Binary files /dev/null and b/client/public/images/controls_if.png differ diff --git a/client/public/images/controls_repeat.png b/client/public/images/controls_repeat.png new file mode 100644 index 00000000..8e02c47a Binary files /dev/null and b/client/public/images/controls_repeat.png differ diff --git a/client/public/images/controls_while_Until.png b/client/public/images/controls_while_Until.png new file mode 100644 index 00000000..049a3785 Binary files /dev/null and b/client/public/images/controls_while_Until.png differ diff --git a/client/public/images/infinite_loop.png b/client/public/images/infinite_loop.png new file mode 100644 index 00000000..7473299c Binary files /dev/null and b/client/public/images/infinite_loop.png differ diff --git a/client/public/images/insert_comment.png b/client/public/images/insert_comment.png new file mode 100644 index 00000000..059f2075 Binary files /dev/null and b/client/public/images/insert_comment.png differ diff --git a/client/public/images/io_analogread.png b/client/public/images/io_analogread.png new file mode 100644 index 00000000..d42427e0 Binary files /dev/null and b/client/public/images/io_analogread.png differ diff --git a/client/public/images/io_analogwrite.png b/client/public/images/io_analogwrite.png new file mode 100644 index 00000000..71fb32ea Binary files /dev/null and b/client/public/images/io_analogwrite.png differ diff --git a/client/public/images/io_builtin_led.png b/client/public/images/io_builtin_led.png new file mode 100644 index 00000000..76064a90 Binary files /dev/null and b/client/public/images/io_builtin_led.png differ diff --git a/client/public/images/io_digitalread.png b/client/public/images/io_digitalread.png new file mode 100644 index 00000000..947d4564 Binary files /dev/null and b/client/public/images/io_digitalread.png differ diff --git a/client/public/images/io_digitalwrite.png b/client/public/images/io_digitalwrite.png new file mode 100644 index 00000000..8e7c2c4f Binary files /dev/null and b/client/public/images/io_digitalwrite.png differ diff --git a/client/public/images/io_highlow.png b/client/public/images/io_highlow.png new file mode 100644 index 00000000..03931600 Binary files /dev/null and b/client/public/images/io_highlow.png differ diff --git a/client/public/images/io_notone.png b/client/public/images/io_notone.png new file mode 100644 index 00000000..937098de Binary files /dev/null and b/client/public/images/io_notone.png differ diff --git a/client/public/images/io_pulsein.png b/client/public/images/io_pulsein.png new file mode 100644 index 00000000..463c6609 Binary files /dev/null and b/client/public/images/io_pulsein.png differ diff --git a/client/public/images/io_pulsetimeout.png b/client/public/images/io_pulsetimeout.png new file mode 100644 index 00000000..2cecbf98 Binary files /dev/null and b/client/public/images/io_pulsetimeout.png differ diff --git a/client/public/images/io_tone.png b/client/public/images/io_tone.png new file mode 100644 index 00000000..e98bcf4a Binary files /dev/null and b/client/public/images/io_tone.png differ diff --git a/client/public/images/logic_boolean.png b/client/public/images/logic_boolean.png new file mode 100644 index 00000000..18ddc69e Binary files /dev/null and b/client/public/images/logic_boolean.png differ diff --git a/client/public/images/logic_compare.png b/client/public/images/logic_compare.png new file mode 100644 index 00000000..391b81ab Binary files /dev/null and b/client/public/images/logic_compare.png differ diff --git a/client/public/images/logic_negate.png b/client/public/images/logic_negate.png new file mode 100644 index 00000000..84ae8291 Binary files /dev/null and b/client/public/images/logic_negate.png differ diff --git a/client/public/images/logic_null.png b/client/public/images/logic_null.png new file mode 100644 index 00000000..2bff28c2 Binary files /dev/null and b/client/public/images/logic_null.png differ diff --git a/client/public/images/logic_operation.png b/client/public/images/logic_operation.png new file mode 100644 index 00000000..e79dd293 Binary files /dev/null and b/client/public/images/logic_operation.png differ diff --git a/client/public/images/logic_ternary.png b/client/public/images/logic_ternary.png new file mode 100644 index 00000000..cc39e727 Binary files /dev/null and b/client/public/images/logic_ternary.png differ diff --git a/client/public/images/math_arithmetic.png b/client/public/images/math_arithmetic.png new file mode 100644 index 00000000..87fbac65 Binary files /dev/null and b/client/public/images/math_arithmetic.png differ diff --git a/client/public/images/math_change.png b/client/public/images/math_change.png new file mode 100644 index 00000000..009e7694 Binary files /dev/null and b/client/public/images/math_change.png differ diff --git a/client/public/images/math_constant.png b/client/public/images/math_constant.png new file mode 100644 index 00000000..c04060f4 Binary files /dev/null and b/client/public/images/math_constant.png differ diff --git a/client/public/images/math_constrain.png b/client/public/images/math_constrain.png new file mode 100644 index 00000000..2a8ec182 Binary files /dev/null and b/client/public/images/math_constrain.png differ diff --git a/client/public/images/math_modulo.png b/client/public/images/math_modulo.png new file mode 100644 index 00000000..74be1d54 Binary files /dev/null and b/client/public/images/math_modulo.png differ diff --git a/client/public/images/math_number.png b/client/public/images/math_number.png new file mode 100644 index 00000000..86030671 Binary files /dev/null and b/client/public/images/math_number.png differ diff --git a/client/public/images/math_number_property.png b/client/public/images/math_number_property.png new file mode 100644 index 00000000..d5fc5b5d Binary files /dev/null and b/client/public/images/math_number_property.png differ diff --git a/client/public/images/math_on_list.png b/client/public/images/math_on_list.png new file mode 100644 index 00000000..61c88d95 Binary files /dev/null and b/client/public/images/math_on_list.png differ diff --git a/client/public/images/math_random_float.png b/client/public/images/math_random_float.png new file mode 100644 index 00000000..ce5ecd16 Binary files /dev/null and b/client/public/images/math_random_float.png differ diff --git a/client/public/images/math_random_int.png b/client/public/images/math_random_int.png new file mode 100644 index 00000000..4caa3d93 Binary files /dev/null and b/client/public/images/math_random_int.png differ diff --git a/client/public/images/math_round.png b/client/public/images/math_round.png new file mode 100644 index 00000000..625266d8 Binary files /dev/null and b/client/public/images/math_round.png differ diff --git a/client/public/images/math_single.png b/client/public/images/math_single.png new file mode 100644 index 00000000..5b9221e1 Binary files /dev/null and b/client/public/images/math_single.png differ diff --git a/client/public/images/math_trig.png b/client/public/images/math_trig.png new file mode 100644 index 00000000..99686ffe Binary files /dev/null and b/client/public/images/math_trig.png differ diff --git a/client/public/images/procedures_callnoreturn.png b/client/public/images/procedures_callnoreturn.png new file mode 100644 index 00000000..902be892 Binary files /dev/null and b/client/public/images/procedures_callnoreturn.png differ diff --git a/client/public/images/procedures_callreturn.png b/client/public/images/procedures_callreturn.png new file mode 100644 index 00000000..85b88f5b Binary files /dev/null and b/client/public/images/procedures_callreturn.png differ diff --git a/client/public/images/procedures_defnoreturn.png b/client/public/images/procedures_defnoreturn.png new file mode 100644 index 00000000..56c6a07c Binary files /dev/null and b/client/public/images/procedures_defnoreturn.png differ diff --git a/client/public/images/procedures_defreturn.png b/client/public/images/procedures_defreturn.png new file mode 100644 index 00000000..64171beb Binary files /dev/null and b/client/public/images/procedures_defreturn.png differ diff --git a/client/public/images/procedures_ifreturn.png b/client/public/images/procedures_ifreturn.png new file mode 100644 index 00000000..847fbe83 Binary files /dev/null and b/client/public/images/procedures_ifreturn.png differ diff --git a/client/public/images/serial_print.png b/client/public/images/serial_print.png new file mode 100644 index 00000000..363ee520 Binary files /dev/null and b/client/public/images/serial_print.png differ diff --git a/client/public/images/serial_setup.png b/client/public/images/serial_setup.png new file mode 100644 index 00000000..27e13d6d Binary files /dev/null and b/client/public/images/serial_setup.png differ diff --git a/client/public/images/servo_read.png b/client/public/images/servo_read.png new file mode 100644 index 00000000..dcd0af43 Binary files /dev/null and b/client/public/images/servo_read.png differ diff --git a/client/public/images/servo_write.png b/client/public/images/servo_write.png new file mode 100644 index 00000000..4c2e4354 Binary files /dev/null and b/client/public/images/servo_write.png differ diff --git a/client/public/images/small_io_pulsetimeout.png b/client/public/images/small_io_pulsetimeout.png new file mode 100644 index 00000000..9cb00e18 Binary files /dev/null and b/client/public/images/small_io_pulsetimeout.png differ diff --git a/client/public/images/small_text_get_Substring.png b/client/public/images/small_text_get_Substring.png new file mode 100644 index 00000000..ff1e725b Binary files /dev/null and b/client/public/images/small_text_get_Substring.png differ diff --git a/client/public/images/spi_setup.png b/client/public/images/spi_setup.png new file mode 100644 index 00000000..020e27c3 Binary files /dev/null and b/client/public/images/spi_setup.png differ diff --git a/client/public/images/spi_transfer.png b/client/public/images/spi_transfer.png new file mode 100644 index 00000000..bf9b944a Binary files /dev/null and b/client/public/images/spi_transfer.png differ diff --git a/client/public/images/spi_transfer_return.png b/client/public/images/spi_transfer_return.png new file mode 100644 index 00000000..c3349086 Binary files /dev/null and b/client/public/images/spi_transfer_return.png differ diff --git a/client/public/images/stepper_config.png b/client/public/images/stepper_config.png new file mode 100644 index 00000000..f3c0cc81 Binary files /dev/null and b/client/public/images/stepper_config.png differ diff --git a/client/public/images/stepper_step.png b/client/public/images/stepper_step.png new file mode 100644 index 00000000..de0cf84b Binary files /dev/null and b/client/public/images/stepper_step.png differ diff --git a/client/public/images/text.png b/client/public/images/text.png new file mode 100644 index 00000000..663a109f Binary files /dev/null and b/client/public/images/text.png differ diff --git a/client/public/images/text_append.png b/client/public/images/text_append.png new file mode 100644 index 00000000..9bd291c8 Binary files /dev/null and b/client/public/images/text_append.png differ diff --git a/client/public/images/text_char_At.png b/client/public/images/text_char_At.png new file mode 100644 index 00000000..1322fd98 Binary files /dev/null and b/client/public/images/text_char_At.png differ diff --git a/client/public/images/text_get_Substring.png b/client/public/images/text_get_Substring.png new file mode 100644 index 00000000..c3db4935 Binary files /dev/null and b/client/public/images/text_get_Substring.png differ diff --git a/client/public/images/text_is_Empty.png b/client/public/images/text_is_Empty.png new file mode 100644 index 00000000..05f06a5f Binary files /dev/null and b/client/public/images/text_is_Empty.png differ diff --git a/client/public/images/text_join.png b/client/public/images/text_join.png new file mode 100644 index 00000000..1496e25e Binary files /dev/null and b/client/public/images/text_join.png differ diff --git a/client/public/images/text_length.png b/client/public/images/text_length.png new file mode 100644 index 00000000..8fe31480 Binary files /dev/null and b/client/public/images/text_length.png differ diff --git a/client/public/images/text_print.png b/client/public/images/text_print.png new file mode 100644 index 00000000..56faef21 Binary files /dev/null and b/client/public/images/text_print.png differ diff --git a/client/public/images/text_prompt_ext.png b/client/public/images/text_prompt_ext.png new file mode 100644 index 00000000..66e077e7 Binary files /dev/null and b/client/public/images/text_prompt_ext.png differ diff --git a/client/public/images/time_delay.png b/client/public/images/time_delay.png new file mode 100644 index 00000000..df605ac8 Binary files /dev/null and b/client/public/images/time_delay.png differ diff --git a/client/public/images/time_delaymicros.png b/client/public/images/time_delaymicros.png new file mode 100644 index 00000000..b6873d95 Binary files /dev/null and b/client/public/images/time_delaymicros.png differ diff --git a/client/public/images/time_micros.png b/client/public/images/time_micros.png new file mode 100644 index 00000000..0556ed41 Binary files /dev/null and b/client/public/images/time_micros.png differ diff --git a/client/public/images/time_millis.png b/client/public/images/time_millis.png new file mode 100644 index 00000000..46ad3e65 Binary files /dev/null and b/client/public/images/time_millis.png differ diff --git a/client/public/images/variables_get.png b/client/public/images/variables_get.png new file mode 100644 index 00000000..9d10b878 Binary files /dev/null and b/client/public/images/variables_get.png differ diff --git a/client/public/images/variables_set.png b/client/public/images/variables_set.png new file mode 100644 index 00000000..233a3cf2 Binary files /dev/null and b/client/public/images/variables_set.png differ diff --git a/client/public/images/variables_set_type.png b/client/public/images/variables_set_type.png new file mode 100644 index 00000000..edb4573c Binary files /dev/null and b/client/public/images/variables_set_type.png differ diff --git a/client/public/lib/arduino_compressed.js b/client/public/lib/arduino_compressed.js index 9ce25c7c..cffff09a 100644 --- a/client/public/lib/arduino_compressed.js +++ b/client/public/lib/arduino_compressed.js @@ -1,7 +1,7 @@ // Do not edit this file; automatically generated by build.py. 'use strict'; -/* +var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.createTemplateTagFirstArg=function(a){return a.raw=a};$jscomp.createTemplateTagFirstArgWithRaw=function(a,b){a.raw=b;return a};/* Licensed under the Apache License, Version 2.0 (the "License"): http://www.apache.org/licenses/LICENSE-2.0 */ @@ -88,7 +88,7 @@ Blockly.Arduino.math_random_int=function(a){var b=Blockly.Arduino.valueToCode(a, Blockly.Arduino.logic_compare=function(a){var b={EQ:"==",NEQ:"!=",LT:"<",LTE:"<=",GT:">",GTE:">="}[a.getFieldValue("OP")],c="=="==b||"!="==b?Blockly.Arduino.ORDER_EQUALITY:Blockly.Arduino.ORDER_RELATIONAL,d=Blockly.Arduino.valueToCode(a,"A",c)||"0";a=Blockly.Arduino.valueToCode(a,"B",c)||"0";return[d+" "+b+" "+a,c]}; Blockly.Arduino.logic_operation=function(a){var b="AND"==a.getFieldValue("OP")?"&&":"||",c="&&"==b?Blockly.Arduino.ORDER_LOGICAL_AND:Blockly.Arduino.ORDER_LOGICAL_OR,d=Blockly.Arduino.valueToCode(a,"A",c)||"false";a=Blockly.Arduino.valueToCode(a,"B",c)||"false";if(d||a){var e="&&"==b?"true":"false";d||(d=e);a||(a=e)}else a=d="false";return[d+" "+b+" "+a,c]}; Blockly.Arduino.logic_negate=function(a){var b=Blockly.Arduino.ORDER_UNARY_PREFIX;return["!"+(Blockly.Arduino.valueToCode(a,"BOOL",b)||"false"),b]};Blockly.Arduino.logic_boolean=function(a){return["TRUE"==a.getFieldValue("BOOL")?"true":"false",Blockly.Arduino.ORDER_ATOMIC]};Blockly.Arduino.logic_null=function(a){return["NULL",Blockly.Arduino.ORDER_ATOMIC]}; -Blockly.Arduino.logic_ternary=function(a){var b=Blockly.Arduino.valueToCode(a,"IF",Blockly.Arduino.ORDER_CONDITIONAL)||"false",c=Blockly.Arduino.valueToCode(a,"THEN",Blockly.Arduino.ORDER_CONDITIONAL)||"NULL";a=Blockly.Arduino.valueToCode(a,"ELSE",Blockly.Arduino.ORDER_CONDITIONAL)||"NULL";return[b+" ? "+c+" : "+a,Blockly.Arduino.ORDER_CONDITIONAL]};Blockly.Arduino.comment={};Blockly.Arduino.insert_comment=function(a){if(0==a.itemCount_)return"// \n";if(1==a.itemCount_)return a=Blockly.Arduino.valueToCode(a,"ADD0",Blockly.Arduino.ORDER_UNARY_POSTFIX)||"",a=a.slice(0,-1),a=a.substring(1),"// "+a+"\n";var b=[];for(var c=0;c");Blockly.Arduino.addDeclaration("dht","DHT dht("+parseInt(a)+", DHT11);");Blockly.Arduino.addSetup("dht","dht.begin();",!0);return""};Blockly.Arduino.sensor_read_dht_humidity=function(a){return["dht.readHumidity()",Blockly.Arduino.ORDER_ATOMIC]};Blockly.Arduino.sensor_read_dht_temperature=function(a){return["dht.readTemperature(true)",Blockly.Arduino.ORDER_ATOMIC]};Blockly.Arduino.comment={};Blockly.Arduino.insert_comment=function(a){if(0==a.itemCount_)return"// \n";if(1==a.itemCount_)return a=Blockly.Arduino.valueToCode(a,"ADD0",Blockly.Arduino.ORDER_UNARY_POSTFIX)||"",a=a.slice(0,-1),a=a.substring(1),"// "+a+"\n";var b=[];for(var c=0;c>> 0); -goog.uidCounter_ = 0; goog.cloneObject = function (a) { var b = goog.typeOf(a); if ("object" == b || "array" == b) { if ("function" === typeof a.clone) return a.clone(); if ("undefined" !== typeof Map && a instanceof Map) return new Map(a); if ("undefined" !== typeof Set && a instanceof Set) return new Set(a); b = "array" == b ? [] : {}; for (var c in a) b[c] = goog.cloneObject(a[c]); return b } return a }; goog.bindNative_ = function (a, b, c) { return a.call.apply(a.bind, arguments) }; -goog.bindJs_ = function (a, b, c) { if (!a) throw Error(); if (2 < arguments.length) { var d = Array.prototype.slice.call(arguments, 2); return function () { var e = Array.prototype.slice.call(arguments); Array.prototype.unshift.apply(e, d); return a.apply(b, e) } } return function () { return a.apply(b, arguments) } }; goog.bind = function (a, b, c) { Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? goog.bind = goog.bindNative_ : goog.bind = goog.bindJs_; return goog.bind.apply(null, arguments) }; -goog.partial = function (a, b) { var c = Array.prototype.slice.call(arguments, 1); return function () { var d = c.slice(); d.push.apply(d, arguments); return a.apply(this, d) } }; goog.mixin = function (a, b) { for (var c in b) a[c] = b[c] }; goog.now = function () { return Date.now() }; goog.globalEval = function (a) { (0, eval)(a) }; -goog.getCssName = function (a, b) { if ("." == String(a).charAt(0)) throw Error('className passed in goog.getCssName must not start with ".". You passed: ' + a); var c = function (e) { return goog.cssNameMapping_[e] || e }, d = function (e) { e = e.split("-"); for (var f = [], g = 0; g < e.length; g++)f.push(c(e[g])); return f.join("-") }; d = goog.cssNameMapping_ ? "BY_WHOLE" == goog.cssNameMappingStyle_ ? c : d : function (e) { return e }; d = b ? a + "-" + d(b) : d(a); return goog.global.CLOSURE_CSS_NAME_MAP_FN ? goog.global.CLOSURE_CSS_NAME_MAP_FN(d) : d }; -goog.setCssNameMapping = function (a, b) { goog.cssNameMapping_ = a; goog.cssNameMappingStyle_ = b }; !COMPILED && goog.global.CLOSURE_CSS_NAME_MAPPING && (goog.cssNameMapping_ = goog.global.CLOSURE_CSS_NAME_MAPPING); goog.getMsg = function (a, b, c) { c && c.html && (a = a.replace(/").replace(/'/g, "'").replace(/"/g, '"').replace(/&/g, "&")); b && (a = a.replace(/\{\$([^}]+)}/g, function (d, e) { return null != b && e in b ? b[e] : d })); return a }; -goog.getMsgWithFallback = function (a, b) { return a }; goog.exportSymbol = function (a, b, c) { goog.exportPath_(a, b, !0, c) }; goog.exportProperty = function (a, b, c) { a[b] = c }; goog.inherits = function (a, b) { function c() { } c.prototype = b.prototype; a.superClass_ = b.prototype; a.prototype = new c; a.prototype.constructor = a; a.base = function (d, e, f) { for (var g = Array(arguments.length - 2), h = 2; h < arguments.length; h++)g[h - 2] = arguments[h]; return b.prototype[e].apply(d, g) } }; -goog.scope = function (a) { if (goog.isInModuleLoader_()) throw Error("goog.scope is not supported within a module."); a.call(goog.global) }; COMPILED || (goog.global.COMPILED = COMPILED); -goog.defineClass = function (a, b) { var c = b.constructor, d = b.statics; c && c != Object.prototype.constructor || (c = function () { throw Error("cannot instantiate an interface (no constructor defined)."); }); c = goog.defineClass.createSealingConstructor_(c, a); a && goog.inherits(c, a); delete b.constructor; delete b.statics; goog.defineClass.applyProperties_(c.prototype, b); null != d && (d instanceof Function ? d(c) : goog.defineClass.applyProperties_(c, d)); return c }; goog.defineClass.SEAL_CLASS_INSTANCES = goog.DEBUG; -goog.defineClass.createSealingConstructor_ = function (a, b) { return goog.defineClass.SEAL_CLASS_INSTANCES ? function () { var c = a.apply(this, arguments) || this; c[goog.UID_PROPERTY_] = c[goog.UID_PROPERTY_]; return c } : a }; goog.defineClass.OBJECT_PROTOTYPE_FIELDS_ = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "); -goog.defineClass.applyProperties_ = function (a, b) { for (var c in b) Object.prototype.hasOwnProperty.call(b, c) && (a[c] = b[c]); for (var d = 0; d < goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length; d++)c = goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d], Object.prototype.hasOwnProperty.call(b, c) && (a[c] = b[c]) }; goog.identity_ = function (a) { return a }; -goog.createTrustedTypesPolicy = function (a) { var b = null, c = goog.global.trustedTypes; if (!c || !c.createPolicy) return b; try { b = c.createPolicy(a, { createHTML: goog.identity_, createScript: goog.identity_, createScriptURL: goog.identity_ }) } catch (d) { goog.logToConsole_(d.message) } return b }; -!COMPILED && goog.DEPENDENCIES_ENABLED && (goog.isEdge_ = function () { return !!(goog.global.navigator && goog.global.navigator.userAgent ? goog.global.navigator.userAgent : "").match(/Edge\/(\d+)(\.\d)*/i) }, goog.inHtmlDocument_ = function () { var a = goog.global.document; return null != a && "write" in a }, goog.isDocumentLoading_ = function () { var a = goog.global.document; return a.attachEvent ? "complete" != a.readyState : "loading" == a.readyState }, goog.findBasePath_ = function () { - if (void 0 != goog.global.CLOSURE_BASE_PATH && "string" === typeof goog.global.CLOSURE_BASE_PATH) goog.basePath = - goog.global.CLOSURE_BASE_PATH; else if (goog.inHtmlDocument_()) { var a = goog.global.document, b = a.currentScript; a = b ? [b] : a.getElementsByTagName("SCRIPT"); for (b = a.length - 1; 0 <= b; --b) { var c = a[b].src, d = c.lastIndexOf("?"); d = -1 == d ? c.length : d; if ("base.js" == c.substr(d - 7, 7)) { goog.basePath = c.substr(0, d - 7); break } } } -}, goog.findBasePath_(), goog.Transpiler = function () { this.requiresTranspilation_ = null; this.transpilationTarget_ = goog.TRANSPILE_TO_LANGUAGE }, goog.Transpiler.prototype.createRequiresTranspilation_ = function () { - function a(f, - g) { e ? d[f] = !0 : g() ? (c = f, d[f] = !1) : e = d[f] = !0 } function b(f) { try { return !!eval(goog.CLOSURE_EVAL_PREFILTER_.createScript(f)) } catch (g) { return !1 } } var c = "es3", d = { es3: !1 }, e = !1; a("es5", function () { return b("[1,].length==1") }); a("es6", function () { return goog.isEdge_() ? !1 : b('(()=>{"use strict";class X{constructor(){if(new.target!=String)throw 1;this.x=42}}let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a==2)continue;function f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()==3}})()') }); - a("es7", function () { return b("2**3==8") }); a("es8", function () { return b("async()=>1,1") }); a("es9", function () { return b("({...rest}={}),1") }); a("es_2019", function () { return b('let r;try{r="\u2029"}catch{};r') }); a("es_2020", function () { return b("null?.x??1") }); a("es_next", function () { return !1 }); return { target: c, map: d } -}, goog.Transpiler.prototype.needsTranspile = function (a, b) { - if ("always" == goog.TRANSPILE) return !0; if ("never" == goog.TRANSPILE) return !1; if (!this.requiresTranspilation_) { - var c = this.createRequiresTranspilation_(); - this.requiresTranspilation_ = c.map; this.transpilationTarget_ = this.transpilationTarget_ || c.target - } if (a in this.requiresTranspilation_) return this.requiresTranspilation_[a] ? !0 : !goog.inHtmlDocument_() || "es6" != b || "noModule" in goog.global.document.createElement("script") ? !1 : !0; throw Error("Unknown language mode: " + a); -}, goog.Transpiler.prototype.transpile = function (a, b) { return goog.transpile_(a, b, this.transpilationTarget_) }, goog.transpiler_ = new goog.Transpiler, goog.protectScriptTag_ = function (a) { - return a.replace(/<\/(SCRIPT)/ig, - "\\x3c/$1") -}, goog.DebugLoader_ = function () { this.dependencies_ = {}; this.idToPath_ = {}; this.written_ = {}; this.loadingDeps_ = []; this.depsToLoad_ = []; this.paused_ = !1; this.factory_ = new goog.DependencyFactory(goog.transpiler_); this.deferredCallbacks_ = {}; this.deferredQueue_ = [] }, goog.DebugLoader_.prototype.bootstrap = function (a, b) { - function c() { d && (goog.global.setTimeout(d, 0), d = null) } var d = b; if (a.length) { - for (var e = [], f = 0; f < a.length; f++) { - var g = this.getPathFromDeps_(a[f]); if (!g) throw Error("Unregonized namespace: " + - a[f]); e.push(this.dependencies_[g]) - } g = goog.require; var h = 0; for (f = 0; f < a.length; f++)g(a[f]), e[f].onLoad(function () { ++h == a.length && c() }) - } else c() -}, goog.DebugLoader_.prototype.loadClosureDeps = function () { this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath + "deps.js"), "deps.js", [], [], {}, !1)); this.loadDeps_() }, goog.DebugLoader_.prototype.requested = function (a, b) { - var c = this.getPathFromDeps_(a); if (c && (b || this.areDepsLoaded_(this.dependencies_[c].requires))) { - var d = this.deferredCallbacks_[c]; - d && (delete this.deferredCallbacks_[c], d()) - } -}, goog.DebugLoader_.prototype.setDependencyFactory = function (a) { this.factory_ = a }, goog.DebugLoader_.prototype.load_ = function (a) { - if (this.getPathFromDeps_(a)) { - var b = this, c = [], d = function (e) { var f = b.getPathFromDeps_(e); if (!f) throw Error("Bad dependency path or symbol: " + e); if (!b.written_[f]) { b.written_[f] = !0; e = b.dependencies_[f]; for (f = 0; f < e.requires.length; f++)goog.isProvided_(e.requires[f]) || d(e.requires[f]); c.push(e) } }; d(a); a = !!this.depsToLoad_.length; this.depsToLoad_ = - this.depsToLoad_.concat(c); this.paused_ || a || this.loadDeps_() - } else goog.logToConsole_("goog.require could not find: " + a) -}, goog.DebugLoader_.prototype.loadDeps_ = function () { - for (var a = this, b = this.paused_; this.depsToLoad_.length && !b;)(function () { - var c = !1, d = a.depsToLoad_.shift(), e = !1; a.loading_(d); var f = { - pause: function () { if (c) throw Error("Cannot call pause after the call to load."); b = !0 }, resume: function () { c ? a.resume_() : b = !1 }, loaded: function () { if (e) throw Error("Double call to loaded."); e = !0; a.loaded_(d) }, - pending: function () { for (var g = [], h = 0; h < a.loadingDeps_.length; h++)g.push(a.loadingDeps_[h]); return g }, setModuleState: function (g) { goog.moduleLoaderState_ = { type: g, moduleName: "", declareLegacyNamespace: !1 } }, registerEs6ModuleExports: function (g, h, k) { k && (goog.loadedModules_[k] = { exports: h, type: goog.ModuleType.ES6, moduleId: k || "" }) }, registerGoogModuleExports: function (g, h) { goog.loadedModules_[g] = { exports: h, type: goog.ModuleType.GOOG, moduleId: g } }, clearModuleState: function () { goog.moduleLoaderState_ = null }, defer: function (g) { - if (c) throw Error("Cannot register with defer after the call to load."); - a.defer_(d, g) - }, areDepsLoaded: function () { return a.areDepsLoaded_(d.requires) } - }; try { d.load(f) } finally { c = !0 } - })(); b && this.pause_() -}, goog.DebugLoader_.prototype.pause_ = function () { this.paused_ = !0 }, goog.DebugLoader_.prototype.resume_ = function () { this.paused_ && (this.paused_ = !1, this.loadDeps_()) }, goog.DebugLoader_.prototype.loading_ = function (a) { this.loadingDeps_.push(a) }, goog.DebugLoader_.prototype.loaded_ = function (a) { - for (var b = 0; b < this.loadingDeps_.length; b++)if (this.loadingDeps_[b] == a) { - this.loadingDeps_.splice(b, - 1); break - } for (b = 0; b < this.deferredQueue_.length; b++)if (this.deferredQueue_[b] == a.path) { this.deferredQueue_.splice(b, 1); break } if (this.loadingDeps_.length == this.deferredQueue_.length && !this.depsToLoad_.length) for (; this.deferredQueue_.length;)this.requested(this.deferredQueue_.shift(), !0); a.loaded() -}, goog.DebugLoader_.prototype.areDepsLoaded_ = function (a) { for (var b = 0; b < a.length; b++) { var c = this.getPathFromDeps_(a[b]); if (!c || !(c in this.deferredCallbacks_ || goog.isProvided_(a[b]))) return !1 } return !0 }, goog.DebugLoader_.prototype.getPathFromDeps_ = - function (a) { return a in this.idToPath_ ? this.idToPath_[a] : a in this.dependencies_ ? a : null }, goog.DebugLoader_.prototype.defer_ = function (a, b) { this.deferredCallbacks_[a.path] = b; this.deferredQueue_.push(a.path) }, goog.LoadController = function () { }, goog.LoadController.prototype.pause = function () { }, goog.LoadController.prototype.resume = function () { }, goog.LoadController.prototype.loaded = function () { }, goog.LoadController.prototype.pending = function () { }, goog.LoadController.prototype.registerEs6ModuleExports = function (a, - b, c) { }, goog.LoadController.prototype.setModuleState = function (a) { }, goog.LoadController.prototype.clearModuleState = function () { }, goog.LoadController.prototype.defer = function (a) { }, goog.LoadController.prototype.areDepsLoaded = function () { }, goog.Dependency = function (a, b, c, d, e) { this.path = a; this.relativePath = b; this.provides = c; this.requires = d; this.loadFlags = e; this.loaded_ = !1; this.loadCallbacks_ = [] }, goog.Dependency.prototype.getPathName = function () { - var a = this.path, b = a.indexOf("://"); 0 <= b && (a = a.substring(b + 3), b = - a.indexOf("/"), 0 <= b && (a = a.substring(b + 1))); return a - }, goog.Dependency.prototype.onLoad = function (a) { this.loaded_ ? a() : this.loadCallbacks_.push(a) }, goog.Dependency.prototype.loaded = function () { this.loaded_ = !0; var a = this.loadCallbacks_; this.loadCallbacks_ = []; for (var b = 0; b < a.length; b++)a[b]() }, goog.Dependency.defer_ = !1, goog.Dependency.callbackMap_ = {}, goog.Dependency.registerCallback_ = function (a) { var b = Math.random().toString(32); goog.Dependency.callbackMap_[b] = a; return b }, goog.Dependency.unregisterCallback_ = - function (a) { delete goog.Dependency.callbackMap_[a] }, goog.Dependency.callback_ = function (a, b) { if (a in goog.Dependency.callbackMap_) { for (var c = goog.Dependency.callbackMap_[a], d = [], e = 1; e < arguments.length; e++)d.push(arguments[e]); c.apply(void 0, d) } else throw Error("Callback key " + a + " does not exist (was base.js loaded more than once?)."); }, goog.Dependency.prototype.load = function (a) { - if (goog.global.CLOSURE_IMPORT_SCRIPT) goog.global.CLOSURE_IMPORT_SCRIPT(this.path) ? a.loaded() : a.pause(); else if (goog.inHtmlDocument_()) { - var b = - goog.global.document; if ("complete" == b.readyState && !goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING) { if (/\bdeps.js$/.test(this.path)) { a.loaded(); return } throw Error('Cannot write "' + this.path + '" after document load'); } var c = goog.getScriptNonce_(); if (!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING && goog.isDocumentLoading_()) { - var d = function (h) { h.readyState && "complete" != h.readyState ? h.onload = d : (goog.Dependency.unregisterCallback_(e), a.loaded()) }; var e = goog.Dependency.registerCallback_(d); c = c ? ' nonce="' + c + '"' : ""; - var f = '