From bfe207b20ea38a31db17715e7322b9beaf4a5a6d Mon Sep 17 00:00:00 2001 From: SebCanet Date: Thu, 21 May 2020 21:02:30 +0200 Subject: [PATCH] cleaning --- blockly/demos/keyboard_nav/line_cursor.js | 178 ++--- blocklyduino/css/blocklyduino.css | 92 +-- .../generators/arduino/addon/grove.js | 296 ++++---- .../generators/arduino/blockly/lists.js | 678 +++++++++--------- .../generators/arduino/blockly/logic.js | 10 +- .../generators/arduino/blockly/loops.js | 266 +++---- .../generators/arduino/blockly/math.js | 346 ++++----- .../generators/arduino/blockly/procedures.js | 138 ++-- .../generators/arduino/blockly/text.js | 576 +++++++-------- .../generators/arduino/typed_variable.js | 72 +- blocklyduino/generators/arduino_generator.js | 24 +- blocklyduino/js/blockly/code.js | 12 +- blocklyduino/js/buttons_functions.js | 73 +- blocklyduino/js/dialog.js | 11 +- blocklyduino/msg/UI_ca.js | 9 +- blocklyduino/msg/UI_de.js | 7 +- blocklyduino/msg/UI_en.js | 9 +- blocklyduino/msg/UI_es.js | 9 +- blocklyduino/msg/UI_fr.js | 11 +- blocklyduino/msg/UI_ja.js | 5 +- blocklyduino/msg/blocks_ca.js | 2 +- blocklyduino/msg/blocks_de.js | 2 +- blocklyduino/msg/blocks_en.js | 2 +- blocklyduino/msg/blocks_es.js | 2 +- blocklyduino/msg/blocks_fr.js | 2 +- blocklyduino/msg/blocks_ja.js | 2 +- blocklyduino/themes/bw.js | 6 +- documentation/deuteranotopia.png | Bin 5896 -> 0 bytes documentation/geras.png | Bin 7808 -> 0 bytes documentation/minimalist.png | Bin 12850 -> 0 bytes documentation/new.gif | Bin 1342532 -> 0 bytes documentation/renderers.png | Bin 72356 -> 0 bytes documentation/thrasos.png | Bin 12405 -> 0 bytes documentation/undo_redo.gif | Bin 1757446 -> 0 bytes documentation/v0.2/Image 001.png | Bin 29899 -> 0 bytes documentation/v0.2/Image 002.png | Bin 55614 -> 0 bytes documentation/v0.2/Image 003.png | Bin 7086 -> 0 bytes documentation/v0.2/Image 004.png | Bin 40480 -> 0 bytes documentation/v0.2/Image 005.png | Bin 42718 -> 0 bytes documentation/v0.2/Image 006.png | Bin 43014 -> 0 bytes documentation/v0.2/Image 007.png | Bin 37711 -> 0 bytes documentation/v0.2/Image 008.png | Bin 3835 -> 0 bytes documentation/v0.2/Image 009.png | Bin 32103 -> 0 bytes documentation/v0.2/Image 010.png | Bin 68703 -> 0 bytes documentation/v0.2/Image 011.png | Bin 28507 -> 0 bytes documentation/v0.2/Image 012.png | Bin 5387 -> 0 bytes documentation/v0.2/Image 013.png | Bin 8563 -> 0 bytes documentation/v0.2/Image 014.png | Bin 33032 -> 0 bytes documentation/v0.2/Image 015.png | Bin 7890 -> 0 bytes documentation/v0.2/Image 016.png | Bin 28722 -> 0 bytes documentation/v0.2/Image 017.png | Bin 6330 -> 0 bytes documentation/v0.2/Image 018.png | Bin 12625 -> 0 bytes documentation/v0.2/Image 019.png | Bin 4557 -> 0 bytes documentation/v0.2/Image 020.png | Bin 31258 -> 0 bytes documentation/v0.2/Image 021.png | Bin 20662 -> 0 bytes documentation/v0.2/Image 022.png | Bin 19761 -> 0 bytes documentation/zelos.png | Bin 13836 -> 0 bytes documentation/zelos_zelos.png | Bin 14629 -> 0 bytes electron/js/serialMonitorPlotter.js | 32 +- electron/serialMonitor.html | 2 +- index.html | 70 +- 61 files changed, 1494 insertions(+), 1450 deletions(-) delete mode 100644 documentation/deuteranotopia.png delete mode 100644 documentation/geras.png delete mode 100644 documentation/minimalist.png delete mode 100644 documentation/new.gif delete mode 100644 documentation/renderers.png delete mode 100644 documentation/thrasos.png delete mode 100644 documentation/undo_redo.gif delete mode 100644 documentation/v0.2/Image 001.png delete mode 100644 documentation/v0.2/Image 002.png delete mode 100644 documentation/v0.2/Image 003.png delete mode 100644 documentation/v0.2/Image 004.png delete mode 100644 documentation/v0.2/Image 005.png delete mode 100644 documentation/v0.2/Image 006.png delete mode 100644 documentation/v0.2/Image 007.png delete mode 100644 documentation/v0.2/Image 008.png delete mode 100644 documentation/v0.2/Image 009.png delete mode 100644 documentation/v0.2/Image 010.png delete mode 100644 documentation/v0.2/Image 011.png delete mode 100644 documentation/v0.2/Image 012.png delete mode 100644 documentation/v0.2/Image 013.png delete mode 100644 documentation/v0.2/Image 014.png delete mode 100644 documentation/v0.2/Image 015.png delete mode 100644 documentation/v0.2/Image 016.png delete mode 100644 documentation/v0.2/Image 017.png delete mode 100644 documentation/v0.2/Image 018.png delete mode 100644 documentation/v0.2/Image 019.png delete mode 100644 documentation/v0.2/Image 020.png delete mode 100644 documentation/v0.2/Image 021.png delete mode 100644 documentation/v0.2/Image 022.png delete mode 100644 documentation/zelos.png delete mode 100644 documentation/zelos_zelos.png diff --git a/blockly/demos/keyboard_nav/line_cursor.js b/blockly/demos/keyboard_nav/line_cursor.js index d9cb806..4e93b2d 100644 --- a/blockly/demos/keyboard_nav/line_cursor.js +++ b/blockly/demos/keyboard_nav/line_cursor.js @@ -22,8 +22,8 @@ * @constructor * @extends {Blockly.BasicCursor} */ -Blockly.LineCursor = function() { - Blockly.LineCursor.superClass_.constructor.call(this); +Blockly.LineCursor = function () { + Blockly.LineCursor.superClass_.constructor.call(this); }; Blockly.utils.object.inherits(Blockly.LineCursor, Blockly.BasicCursor); @@ -34,23 +34,23 @@ Blockly.utils.object.inherits(Blockly.LineCursor, Blockly.BasicCursor); * not set or there is no next value. * @override */ -Blockly.LineCursor.prototype.next = function() { - var curNode = this.getCurNode(); - if (!curNode) { - return null; - } - var newNode = this.getNextNode_(curNode, this.validLineNode_); - - // Skip the input or next value if there is a connected block. - if (newNode && (newNode.getType() == Blockly.ASTNode.types.INPUT || - newNode.getType() == Blockly.ASTNode.types.NEXT) && - newNode.getLocation().targetBlock()) { - newNode = this.getNextNode_(newNode, this.validLineNode_); - } - if (newNode) { - this.setCurNode(newNode); - } - return newNode; +Blockly.LineCursor.prototype.next = function () { + var curNode = this.getCurNode(); + if (!curNode) { + return null; + } + var newNode = this.getNextNode_(curNode, this.validLineNode_); + + // Skip the input or next value if there is a connected block. + if (newNode && (newNode.getType() == Blockly.ASTNode.types.INPUT || + newNode.getType() == Blockly.ASTNode.types.NEXT) && + newNode.getLocation().targetBlock()) { + newNode = this.getNextNode_(newNode, this.validLineNode_); + } + if (newNode) { + this.setCurNode(newNode); + } + return newNode; }; /** @@ -60,17 +60,17 @@ Blockly.LineCursor.prototype.next = function() { * not set or there is no next value. * @override */ -Blockly.LineCursor.prototype.in = function() { - var curNode = this.getCurNode(); - if (!curNode) { - return null; - } - var newNode = this.getNextNode_(curNode, this.validInLineNode_); - - if (newNode) { - this.setCurNode(newNode); - } - return newNode; +Blockly.LineCursor.prototype.in = function () { + var curNode = this.getCurNode(); + if (!curNode) { + return null; + } + var newNode = this.getNextNode_(curNode, this.validInLineNode_); + + if (newNode) { + this.setCurNode(newNode); + } + return newNode; }; /** @@ -79,23 +79,23 @@ Blockly.LineCursor.prototype.in = function() { * is not set or there is no previous value. * @override */ -Blockly.LineCursor.prototype.prev = function() { - var curNode = this.getCurNode(); - if (!curNode) { - return null; - } - var newNode = this.getPreviousNode_(curNode, this.validLineNode_); - - if (newNode && (newNode.getType() == Blockly.ASTNode.types.INPUT || - newNode.getType() == Blockly.ASTNode.types.NEXT) && - newNode.getLocation().targetBlock()) { - newNode = this.getPreviousNode_(newNode, this.validLineNode_); - } - - if (newNode) { - this.setCurNode(newNode); - } - return newNode; +Blockly.LineCursor.prototype.prev = function () { + var curNode = this.getCurNode(); + if (!curNode) { + return null; + } + var newNode = this.getPreviousNode_(curNode, this.validLineNode_); + + if (newNode && (newNode.getType() == Blockly.ASTNode.types.INPUT || + newNode.getType() == Blockly.ASTNode.types.NEXT) && + newNode.getLocation().targetBlock()) { + newNode = this.getPreviousNode_(newNode, this.validLineNode_); + } + + if (newNode) { + this.setCurNode(newNode); + } + return newNode; }; /** @@ -105,17 +105,17 @@ Blockly.LineCursor.prototype.prev = function() { * not set or there is no previous value. * @override */ -Blockly.LineCursor.prototype.out = function() { - var curNode = this.getCurNode(); - if (!curNode) { - return null; - } - var newNode = this.getPreviousNode_(curNode, this.validInLineNode_); - - if (newNode) { - this.setCurNode(newNode); - } - return newNode; +Blockly.LineCursor.prototype.out = function () { + var curNode = this.getCurNode(); + if (!curNode) { + return null; + } + var newNode = this.getPreviousNode_(curNode, this.validInLineNode_); + + if (newNode) { + this.setCurNode(newNode); + } + return newNode; }; @@ -126,24 +126,24 @@ Blockly.LineCursor.prototype.out = function() { * @return {boolean} True if the node should be visited, false otherwise. * @private */ -Blockly.LineCursor.prototype.validLineNode_ = function(node) { - if (!node) { - return false; - } - var isValid = false; - var location = node.getLocation(); - var type = node && node.getType(); - if (type == Blockly.ASTNode.types.BLOCK) { - if (location.outputConnection === null) { - isValid = true; +Blockly.LineCursor.prototype.validLineNode_ = function (node) { + if (!node) { + return false; + } + var isValid = false; + var location = node.getLocation(); + var type = node && node.getType(); + if (type == Blockly.ASTNode.types.BLOCK) { + if (location.outputConnection === null) { + isValid = true; + } + } else if (type == Blockly.ASTNode.types.INPUT && + location.type == Blockly.NEXT_STATEMENT) { + isValid = true; + } else if (type == Blockly.ASTNode.types.NEXT) { + isValid = true; } - } else if (type == Blockly.ASTNode.types.INPUT && - location.type == Blockly.NEXT_STATEMENT) { - isValid = true; - } else if (type == Blockly.ASTNode.types.NEXT) { - isValid = true; - } - return isValid; + return isValid; }; /** @@ -152,18 +152,18 @@ Blockly.LineCursor.prototype.validLineNode_ = function(node) { * @return {boolean} True if the node should be visited, false otherwise. * @private */ -Blockly.LineCursor.prototype.validInLineNode_ = function(node) { - if (!node) { - return false; - } - var isValid = false; - var location = node.getLocation(); - var type = node && node.getType(); - if (type == Blockly.ASTNode.types.FIELD) { - isValid = true; - } else if (type == Blockly.ASTNode.types.INPUT && - location.type == Blockly.INPUT_VALUE) { - isValid = true; - } - return isValid; +Blockly.LineCursor.prototype.validInLineNode_ = function (node) { + if (!node) { + return false; + } + var isValid = false; + var location = node.getLocation(); + var type = node && node.getType(); + if (type == Blockly.ASTNode.types.FIELD) { + isValid = true; + } else if (type == Blockly.ASTNode.types.INPUT && + location.type == Blockly.INPUT_VALUE) { + isValid = true; + } + return isValid; }; diff --git a/blocklyduino/css/blocklyduino.css b/blocklyduino/css/blocklyduino.css index 0663180..672b1a5 100644 --- a/blocklyduino/css/blocklyduino.css +++ b/blocklyduino/css/blocklyduino.css @@ -255,10 +255,10 @@ td.tabMiddle { /* Colours for the new code highlighting in code peek */ .new_code_highlight { - background-color: #FFF200; /* same color as blockly highlight */ + background-color: #FFF200; /* same color as blockly highlight */ } - /* The boards list modal (background) */ +/* The boards list modal (background) */ .modal { position: fixed; /* Stay in place */ z-index: 200; /* Sit on top */ @@ -278,13 +278,13 @@ td.tabMiddle { transition: top 0.5s, opacity 0.4s; } .overlay{ - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: 100; - background-color: rgba(0,0,0,0.5); /*dim the background*/ + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 100; + background-color: rgba(0,0,0,0.5); /*dim the background*/ } .modal.show { /* Firefox */ @@ -347,65 +347,65 @@ td.tabMiddle { width: 200px; } #hideSelectScrollbar { - display: inline-block; - vertical-align: top; - overflow: hidden; - border: solid grey 1px; + display: inline-block; + vertical-align: top; + overflow: hidden; + border: solid grey 1px; } #hideSelectScrollbar > select { - padding: 10px; - margin: -5px -20px -5px -5px; + padding: 10px; + margin: -5px -20px -5px -5px; } #arduino_mini_picture_div { - position:absolute; - right:65px; - width:166px; - height:266px; + position:absolute; + right:65px; + width:166px; + height:266px; } #arduino_board_mini_picture { text-align: center; - width:166px; - height:266px; + width:166px; + height:266px; object-fit: contain; } .modalBoard_info { - left: 230px; + left: 380px; position: absolute; } /* collapsible content inside div */ .collapsibleButton { - background-color: #006468; - color: #FFFFFF; - cursor: pointer; - padding: 10px; - width: 100%; - border: none; - text-align: left; - outline: none; - font-size: large; - font-weight: bold; + background-color: #006468; + color: #FFFFFF; + cursor: pointer; + padding: 10px; + width: 100%; + border: none; + text-align: left; + outline: none; + font-size: large; + font-weight: bold; } /* Add a background color to the button if it is clicked on (add the .active class with JS), and when you move the mouse over it (hover) */ .active, .collapsibleButton:hover { - background-color: #FFCC00; - color: #000000; + background-color: #FFCC00; + color: #000000; } /* Style the collapsible content. Note: hidden by default */ .collapsibleContent { - visibility: hidden; - padding: 0 18px; - background-color: white; - max-height: 0; - overflow: hidden; - transition: max-height 0.1s ease-out; + visibility: hidden; + padding: 0 18px; + background-color: white; + max-height: 0; + overflow: hidden; + transition: max-height 0.1s ease-out; } .collapsibleButton:after { - content: '\02795'; /* Unicode character for "plus" sign (+) */ - float: left; - padding-right: 5px; - transition: 0.1s ease-out; + content: '\02795'; /* Unicode character for "plus" sign (+) */ + float: left; + padding-right: 5px; + transition: 0.1s ease-out; } .active:after { - transform: rotateZ(45deg); - transition: 0.1s ease-out; + transform: rotateZ(45deg); + transition: 0.1s ease-out; } \ No newline at end of file diff --git a/blocklyduino/generators/arduino/addon/grove.js b/blocklyduino/generators/arduino/addon/grove.js index ec6f1dc..51ae488 100644 --- a/blocklyduino/generators/arduino/addon/grove.js +++ b/blocklyduino/generators/arduino/addon/grove.js @@ -36,13 +36,13 @@ goog.require('Blockly.Arduino'); var _get_next_pin = function (dropdown_pin) { var pos = -1; //check if NextPIN in bound - if (isNaN(parseInt(dropdown_pin))) { + if (isNaN(parseInt(dropdown_pin))) { var NextPIN = 'A' + (parseInt(dropdown_pin.slice(1, dropdown_pin.length)) + 1); pos = profile.default.analog.indexOf(String(NextPIN)); } else { var NextPIN = parseInt(dropdown_pin) + 1; pos = profile.default.digital.indexOf(String(NextPIN)); - } + } if (pos < 0) { alert("Grove Sensor needs PIN#+1 port, current setting is out of bound."); return null; @@ -55,7 +55,7 @@ Blockly.Arduino['grove_led'] = function (block) { var dropdown_stat = block.getFieldValue('STAT'); Blockly.Arduino.setups_['setup_green_led_' + dropdown_pin] = 'pinMode(' + dropdown_pin + ', OUTPUT);'; var code = 'digitalWrite(' + dropdown_pin + ',' + dropdown_stat + ');\n' - return code; + return code; }; Blockly.Arduino['grove_button'] = function (block) { @@ -83,7 +83,7 @@ Blockly.Arduino['grove_piezo_buzzer'] = function (block) { var dropdown_stat = block.getFieldValue('STAT'); Blockly.Arduino.setups_['setup_piezo_buzzer_' + dropdown_pin] = 'pinMode(' + dropdown_pin + ', OUTPUT);'; var code = 'digitalWrite(' + dropdown_pin + ',' + dropdown_stat + ');\n' - return code; + return code; }; Blockly.Arduino['grove_relay'] = function (block) { @@ -91,15 +91,15 @@ Blockly.Arduino['grove_relay'] = function (block) { var dropdown_stat = block.getFieldValue('STAT'); Blockly.Arduino.setups_['setup_relay_' + dropdown_pin] = 'pinMode(' + dropdown_pin + ', OUTPUT);'; var code = 'digitalWrite(' + dropdown_pin + ',' + dropdown_stat + ');\n' - return code; + return code; }; Blockly.Arduino['grove_temperature_sensor'] = function (block) { var dropdown_pin = block.getFieldValue('PIN'); /* - a=analogRead(0); - resistance=(float)(1023-a)*10000/a; - temperature=1/(log(resistance/10000)/B+1/298.15)-273.15; + a=analogRead(0); + resistance=(float)(1023-a)*10000/a; + temperature=1/(log(resistance/10000)/B+1/298.15)-273.15; */ var code = 'round(' + '(1/(log((float)(1023-analogRead(' + dropdown_pin + '))*10000/analogRead(' + dropdown_pin + '))/10000)/3975+1/298.15)-273.15' + ')'; return [code, Blockly.Arduino.ORDER_ATOMIC]; @@ -113,8 +113,8 @@ Blockly.Arduino['grove_serial_lcd_print'] = function (block) { Blockly.Arduino.ORDER_UNARY_POSTFIX) || '\'\''; var delay_time = Blockly.Arduino.valueToCode(block, 'DELAY_TIME', Blockly.Arduino.ORDER_ATOMIC) || '1000'; /*if(text.length>16||text2.length>16){ - alert("string is too long"); - }*/ + alert("string is too long"); + }*/ Blockly.Arduino.definitions_['define_seriallcd'] = '#include \n'; Blockly.Arduino.definitions_['define_softwareserial'] = '#include \n'; //generate PIN#+1 port @@ -210,64 +210,64 @@ Blockly.Arduino['grove_motor_shield'] = function (block) { var dropdown_direction = block.getFieldValue('DIRECTION'); var speed = 127; //Blockly.Arduino.valueToCode(block, 'SPEED', Blockly.Arduino.ORDER_ATOMIC) || '127'; Blockly.Arduino.setups_["setup_motor"] = "pinMode(8,OUTPUT);//I1\n" + - " pinMode(11,OUTPUT);//I2\n" + - " pinMode(9,OUTPUT);//speedPinA\n" + - " pinMode(12,OUTPUT);//I3\n" + - " pinMode(13,OUTPUT);//i4\n" + - " pinMode(10,OUTPUT);//speedPinB\n"; + " pinMode(11,OUTPUT);//I2\n" + + " pinMode(9,OUTPUT);//speedPinA\n" + + " pinMode(12,OUTPUT);//I3\n" + + " pinMode(13,OUTPUT);//i4\n" + + " pinMode(10,OUTPUT);//speedPinB\n"; var code = ""; if (dropdown_direction === "forward") { Blockly.Arduino.definitions_['define_forward'] = "void forward()\n" + - "{\n" + - " analogWrite(9," + speed + ");//input a simulation value to set the speed\n" + - " analogWrite(10," + speed + ");\n" + - " digitalWrite(13,HIGH);//turn DC Motor B move clockwise\n" + - " digitalWrite(12,LOW);\n" + - " digitalWrite(11,LOW);//turn DC Motor A move anticlockwise\n" + - " digitalWrite(8,HIGH);\n" + - "}\n"; + "{\n" + + " analogWrite(9," + speed + ");//input a simulation value to set the speed\n" + + " analogWrite(10," + speed + ");\n" + + " digitalWrite(13,HIGH);//turn DC Motor B move clockwise\n" + + " digitalWrite(12,LOW);\n" + + " digitalWrite(11,LOW);//turn DC Motor A move anticlockwise\n" + + " digitalWrite(8,HIGH);\n" + + "}\n"; code = "forward();\n"; } else if (dropdown_direction === "right") { Blockly.Arduino.definitions_['define_right'] = "void right()\n" + - "{\n" + - " analogWrite(9," + speed + ");//input a simulation value to set the speed\n" + - " analogWrite(10," + speed + ");\n" + - " digitalWrite(13,LOW);//turn DC Motor B move anticlockwise\n" + - " digitalWrite(12,HIGH);\n" + - " digitalWrite(11,LOW);//turn DC Motor A move anticlockwise\n" + - " digitalWrite(8,HIGH);\n" + - "}\n\n"; + "{\n" + + " analogWrite(9," + speed + ");//input a simulation value to set the speed\n" + + " analogWrite(10," + speed + ");\n" + + " digitalWrite(13,LOW);//turn DC Motor B move anticlockwise\n" + + " digitalWrite(12,HIGH);\n" + + " digitalWrite(11,LOW);//turn DC Motor A move anticlockwise\n" + + " digitalWrite(8,HIGH);\n" + + "}\n\n"; code = "right();\n"; } else if (dropdown_direction === "left") { Blockly.Arduino.definitions_['define_left'] = "void left()\n" + - "{\n" + - " analogWrite(9," + speed + ");//input a simulation value to set the speed\n" + - " analogWrite(10," + speed + ");\n" + - " digitalWrite(13,HIGH);//turn DC Motor B move clockwise\n" + - " digitalWrite(12,LOW);\n" + - " digitalWrite(11,HIGH);//turn DC Motor A move clockwise\n" + - " digitalWrite(8,LOW);\n" + - "}\n\n"; + "{\n" + + " analogWrite(9," + speed + ");//input a simulation value to set the speed\n" + + " analogWrite(10," + speed + ");\n" + + " digitalWrite(13,HIGH);//turn DC Motor B move clockwise\n" + + " digitalWrite(12,LOW);\n" + + " digitalWrite(11,HIGH);//turn DC Motor A move clockwise\n" + + " digitalWrite(8,LOW);\n" + + "}\n\n"; code = "left();\n"; } else if (dropdown_direction === "backward") { Blockly.Arduino.definitions_['define_backward'] = "void backward()\n" + - "{\n" + - " analogWrite(9," + speed + ");//input a simulation value to set the speed\n" + - " analogWrite(10," + speed + ");\n" + - " digitalWrite(13,LOW);//turn DC Motor B move anticlockwise\n" + - " digitalWrite(12,HIGH);\n" + - " digitalWrite(11,HIGH);//turn DC Motor A move clockwise\n" + - " digitalWrite(8,LOW);\n" + - "}\n\n"; + "{\n" + + " analogWrite(9," + speed + ");//input a simulation value to set the speed\n" + + " analogWrite(10," + speed + ");\n" + + " digitalWrite(13,LOW);//turn DC Motor B move anticlockwise\n" + + " digitalWrite(12,HIGH);\n" + + " digitalWrite(11,HIGH);//turn DC Motor A move clockwise\n" + + " digitalWrite(8,LOW);\n" + + "}\n\n"; code = "backward();\n"; } else if (dropdown_direction === "stop") { Blockly.Arduino.definitions_['define_stop'] = "void stop()\n" + - "{\n" + - "digitalWrite(9,LOW);// Unenble the pin, to stop the motor. block should be done to avid damaging the motor.\n" + - "digitalWrite(10,LOW);\n" + - "delay(1000);\n" + - "}\n\n" - code = "stop();\n"; + "{\n" + + "digitalWrite(9,LOW);// Unenble the pin, to stop the motor. block should be done to avid damaging the motor.\n" + + "digitalWrite(10,LOW);\n" + + "delay(1000);\n" + + "}\n\n" + code = "stop();\n"; } return code; }; @@ -276,12 +276,12 @@ Blockly.Arduino['grove_thumb_joystick'] = function (block) { var dropdown_pin = block.getFieldValue('PIN'); var dropdown_axis = block.getFieldValue('AXIS'); var stickPIN = "0" - if (dropdown_axis === "y") { - stickPIN = _get_next_pin(dropdown_pin); - } else { - stickPIN = dropdown_pin - } - var code = 'analogRead(' + stickPIN + ')'; + if (dropdown_axis === "y") { + stickPIN = _get_next_pin(dropdown_pin); + } else { + stickPIN = dropdown_pin + } + var code = 'analogRead(' + stickPIN + ')'; return [code, Blockly.Arduino.ORDER_ATOMIC]; }; @@ -308,68 +308,68 @@ Blockly.Arduino['grove_rgb_led'] = function (block) { Blockly.Arduino.definitions_['define_uint16'] = "#define uint16 unsigned int"; Blockly.Arduino.definitions_['define_uint32'] = "#define uint32 unsigned long int"; Blockly.Arduino.definitions_['define_clkproduce_' + dropdown_pin] = "void ClkProduce_" + dropdown_pin + "(void)\n" + - "{\n" + - " digitalWrite(" + dropdown_pin + ", LOW);\n" + - " delayMicroseconds(20);\n" + - " digitalWrite(" + dropdown_pin + ", HIGH);\n" + - " delayMicroseconds(20);\n" + - "}\n"; + "{\n" + + " digitalWrite(" + dropdown_pin + ", LOW);\n" + + " delayMicroseconds(20);\n" + + " digitalWrite(" + dropdown_pin + ", HIGH);\n" + + " delayMicroseconds(20);\n" + + "}\n"; Blockly.Arduino.definitions_['define_send32zero_' + dropdown_pin] = "void Send32Zero_" + dropdown_pin + "(void)\n" + - "{\n" + - " uint8 i;\n" + - " for (i=0; i<32; i++)\n" + - " {\n" + - " digitalWrite(" + NextPIN + ", LOW);\n" + - " ClkProduce_" + dropdown_pin + "();\n" + - " }\n" + - "}\n"; + "{\n" + + " uint8 i;\n" + + " for (i=0; i<32; i++)\n" + + " {\n" + + " digitalWrite(" + NextPIN + ", LOW);\n" + + " ClkProduce_" + dropdown_pin + "();\n" + + " }\n" + + "}\n"; Blockly.Arduino.definitions_['define_taskanticode'] = "uint8 TakeAntiCode(uint8 dat)\n" + - "{\n" + - " uint8 tmp = 0;\n" + - " if ((dat & 0x80) == 0)\n" + - " {\n" + - " tmp |= 0x02;\n" + - " }\n" + - " \n" + - " if ((dat & 0x40) == 0)\n" + - " {\n" + - " tmp |= 0x01;\n" + - " }\n" + - " return tmp;\n" + - "}\n"; + "{\n" + + " uint8 tmp = 0;\n" + + " if ((dat & 0x80) == 0)\n" + + " {\n" + + " tmp |= 0x02;\n" + + " }\n" + + " \n" + + " if ((dat & 0x40) == 0)\n" + + " {\n" + + " tmp |= 0x01;\n" + + " }\n" + + " return tmp;\n" + + "}\n"; Blockly.Arduino.definitions_['define_datasend_' + dropdown_pin] = "// gray data\n" + - "void DatSend_" + dropdown_pin + "(uint32 dx)\n" + - "{\n" + - " uint8 i;\n" + - " for (i=0; i<32; i++)\n" + - " {\n" + - " if ((dx & 0x80000000) != 0)\n" + - " {\n" + - " digitalWrite(" + NextPIN + ", HIGH);\n" + - " }\n" + - " else\n" + - " {\n" + - " digitalWrite(" + NextPIN + ", LOW);\n" + - " }\n" + - " dx <<= 1;\n" + - " ClkProduce_" + dropdown_pin + "();\n" + - " }\n" + - "}\n"; + "void DatSend_" + dropdown_pin + "(uint32 dx)\n" + + "{\n" + + " uint8 i;\n" + + " for (i=0; i<32; i++)\n" + + " {\n" + + " if ((dx & 0x80000000) != 0)\n" + + " {\n" + + " digitalWrite(" + NextPIN + ", HIGH);\n" + + " }\n" + + " else\n" + + " {\n" + + " digitalWrite(" + NextPIN + ", LOW);\n" + + " }\n" + + " dx <<= 1;\n" + + " ClkProduce_" + dropdown_pin + "();\n" + + " }\n" + + "}\n"; Blockly.Arduino.definitions_['define_datadealwithsend_' + dropdown_pin] = "// data processing\n" + - "void DataDealWithAndSend_" + dropdown_pin + "(uint8 r, uint8 g, uint8 b)\n" + - "{\n" + - " uint32 dx = 0;\n" + - " dx |= (uint32)0x03 << 30; // highest two bits 1,flag bits\n" + - " dx |= (uint32)TakeAntiCode(b) << 28;\n" + - " dx |= (uint32)TakeAntiCode(g) << 26;\n" + - " dx |= (uint32)TakeAntiCode(r) << 24;\n" + - "\n" + - " dx |= (uint32)b << 16;\n" + - " dx |= (uint32)g << 8;\n" + - " dx |= r;\n" + - "\n" + - " DatSend_" + dropdown_pin + "(dx);\n" + - "}\n"; + "void DataDealWithAndSend_" + dropdown_pin + "(uint8 r, uint8 g, uint8 b)\n" + + "{\n" + + " uint32 dx = 0;\n" + + " dx |= (uint32)0x03 << 30; // highest two bits 1,flag bits\n" + + " dx |= (uint32)TakeAntiCode(b) << 28;\n" + + " dx |= (uint32)TakeAntiCode(g) << 26;\n" + + " dx |= (uint32)TakeAntiCode(r) << 24;\n" + + "\n" + + " dx |= (uint32)b << 16;\n" + + " dx |= (uint32)g << 8;\n" + + " dx |= r;\n" + + "\n" + + " DatSend_" + dropdown_pin + "(dx);\n" + + "}\n"; var code = "Send32Zero_" + dropdown_pin + "(); // begin\n"; //console.log(block.itemCount_); if (block.itemCount_ == 0) { @@ -389,13 +389,13 @@ Blockly.Arduino['grove_bluetooth_slave'] = function (block) { var dropdown_pin = block.getFieldValue('PIN'); var NextPIN = _get_next_pin(dropdown_pin); var name = block.getFieldValue('NAME') - var pincode = block.getFieldValue('PINCODE'); + var pincode = block.getFieldValue('PINCODE'); var statement_receive = Blockly.Arduino.statementToCode(block, "RCV") - var statement_send = Blockly.Arduino.statementToCode(block, "SNT") - /* if(pincode.length != 4){ - alert("pincode length should be 4"); - } */ - Blockly.Arduino.definitions_['define_softwareserial'] = '#include \n'; + var statement_send = Blockly.Arduino.statementToCode(block, "SNT") + /* if(pincode.length != 4){ + alert("pincode length should be 4"); + } */ + Blockly.Arduino.definitions_['define_softwareserial'] = '#include \n'; Blockly.Arduino.definitions_['var_bluetooth_' + dropdown_pin] = 'SoftwareSerial blueToothSerial_' + dropdown_pin + '(' + dropdown_pin + ',' + NextPIN + ');\n'; Blockly.Arduino.setups_['setup_bluetooth_' + dropdown_pin] = 'Serial.begin(9600);\n'; @@ -404,31 +404,31 @@ Blockly.Arduino['grove_bluetooth_slave'] = function (block) { Blockly.Arduino.setups_['setup_bluetooth_' + dropdown_pin] += ' setupBlueToothConnection_' + dropdown_pin + '();\n'; Blockly.Arduino.definitions_['define_setupBlueToothConnection_' + dropdown_pin] = 'void setupBlueToothConnection_' + dropdown_pin + '()\n' + - '{\n' + - ' blueToothSerial_' + dropdown_pin + '.begin(38400); //Set BluetoothBee BaudRate to default baud rate 38400\n' + - ' blueToothSerial_' + dropdown_pin + '.print("\\r\\n+STWMOD=0\\r\\n"); //set the bluetooth work in slave mode\n' + - ' blueToothSerial_' + dropdown_pin + '.print("\\r\\n+STNA=' + name + '\\r\\n"); //set the bluetooth name as "' + name + '"\n' + - ' blueToothSerial_' + dropdown_pin + '.print("\\r\\n+STPIN=0000\\r\\n");//Set SLAVE pincode"0000"\n' + - ' blueToothSerial_' + dropdown_pin + '.print("\\r\\n+STOAUT=1\\r\\n"); // Permit Paired device to connect me\n' + - ' blueToothSerial_' + dropdown_pin + '.print("\\r\\n+STAUTO=0\\r\\n"); // Auto-connection should be forbidden here\n' + - ' delay(2000); // This delay is required.\n' + - ' blueToothSerial_' + dropdown_pin + '.print("\\r\\n+INQ=1\\r\\n"); //make the slave bluetooth inquirable \n' + - ' Serial.println("The slave bluetooth is inquirable!");\n' + - ' delay(2000); // This delay is required.\n' + - ' blueToothSerial_' + dropdown_pin + '.flush();\n' + - '}\n'; + '{\n' + + ' blueToothSerial_' + dropdown_pin + '.begin(38400); //Set BluetoothBee BaudRate to default baud rate 38400\n' + + ' blueToothSerial_' + dropdown_pin + '.print("\\r\\n+STWMOD=0\\r\\n"); //set the bluetooth work in slave mode\n' + + ' blueToothSerial_' + dropdown_pin + '.print("\\r\\n+STNA=' + name + '\\r\\n"); //set the bluetooth name as "' + name + '"\n' + + ' blueToothSerial_' + dropdown_pin + '.print("\\r\\n+STPIN=0000\\r\\n");//Set SLAVE pincode"0000"\n' + + ' blueToothSerial_' + dropdown_pin + '.print("\\r\\n+STOAUT=1\\r\\n"); // Permit Paired device to connect me\n' + + ' blueToothSerial_' + dropdown_pin + '.print("\\r\\n+STAUTO=0\\r\\n"); // Auto-connection should be forbidden here\n' + + ' delay(2000); // This delay is required.\n' + + ' blueToothSerial_' + dropdown_pin + '.print("\\r\\n+INQ=1\\r\\n"); //make the slave bluetooth inquirable \n' + + ' Serial.println("The slave bluetooth is inquirable!");\n' + + ' delay(2000); // This delay is required.\n' + + ' blueToothSerial_' + dropdown_pin + '.flush();\n' + + '}\n'; var code = 'char recvChar_' + dropdown_pin + ';\n' + - 'while(1) {\n' + - ' if(blueToothSerial_' + dropdown_pin + '.available()) {//check if there is any data sent from the remote bluetooth shield\n' + - ' recvChar_' + dropdown_pin + ' = blueToothSerial_' + dropdown_pin + '.read();\n' + - ' Serial.print(recvChar_' + dropdown_pin + ');\n' + - statement_receive + - ' }\n' + - ' if(Serial.available()){//check if there is any data sent from the local serial terminal, you can add the other applications here\n' + - ' recvChar_' + dropdown_pin + ' = Serial.read();\n' + - ' blueToothSerial_' + dropdown_pin + '.print(recvChar_' + dropdown_pin + ');\n' + - statement_send + - ' }\n' + - '}\n'; + 'while(1) {\n' + + ' if(blueToothSerial_' + dropdown_pin + '.available()) {//check if there is any data sent from the remote bluetooth shield\n' + + ' recvChar_' + dropdown_pin + ' = blueToothSerial_' + dropdown_pin + '.read();\n' + + ' Serial.print(recvChar_' + dropdown_pin + ');\n' + + statement_receive + + ' }\n' + + ' if(Serial.available()){//check if there is any data sent from the local serial terminal, you can add the other applications here\n' + + ' recvChar_' + dropdown_pin + ' = Serial.read();\n' + + ' blueToothSerial_' + dropdown_pin + '.print(recvChar_' + dropdown_pin + ');\n' + + statement_send + + ' }\n' + + '}\n'; return code; }; diff --git a/blocklyduino/generators/arduino/blockly/lists.js b/blocklyduino/generators/arduino/blockly/lists.js index 0c7e6ed..a4a8b31 100644 --- a/blocklyduino/generators/arduino/blockly/lists.js +++ b/blocklyduino/generators/arduino/blockly/lists.js @@ -29,225 +29,225 @@ goog.provide('Blockly.Arduino.lists'); goog.require('Blockly.Arduino'); -Blockly.Arduino['lists_create_empty'] = function(block) { - // Create an empty list. - return ['[]', Blockly.Arduino.ORDER_ATOMIC]; +Blockly.Arduino['lists_create_empty'] = function (block) { + // Create an empty list. + return ['[]', Blockly.Arduino.ORDER_ATOMIC]; }; -Blockly.Arduino['lists_create_with'] = function(block) { - // Create a list with any number of elements of any type. - var elements = new Array(block.itemCount_); - for (var i = 0; i < block.itemCount_; i++) { - elements[i] = Blockly.Arduino.valueToCode(block, 'ADD' + i, - Blockly.Arduino.ORDER_COMMA) || 'null'; - } - var code = '[' + elements.join(', ') + ']'; - return [code, Blockly.Arduino.ORDER_ATOMIC]; +Blockly.Arduino['lists_create_with'] = function (block) { + // Create a list with any number of elements of any type. + var elements = new Array(block.itemCount_); + for (var i = 0; i < block.itemCount_; i++) { + elements[i] = Blockly.Arduino.valueToCode(block, 'ADD' + i, + Blockly.Arduino.ORDER_COMMA) || 'null'; + } + var code = '[' + elements.join(', ') + ']'; + return [code, Blockly.Arduino.ORDER_ATOMIC]; }; -Blockly.Arduino['lists_repeat'] = function(block) { - // Create a list with one element repeated. - var functionName = Blockly.Arduino.provideFunction_( - 'listsRepeat', - ['function ' + Blockly.Arduino.FUNCTION_NAME_PLACEHOLDER_ + - '(value, n) {', - ' var array = [];', - ' for (var i = 0; i < n; i++) {', - ' array[i] = value;', - ' }', - ' return array;', - '}']); - var element = Blockly.Arduino.valueToCode(block, 'ITEM', - Blockly.Arduino.ORDER_COMMA) || 'null'; - var repeatCount = Blockly.Arduino.valueToCode(block, 'NUM', - Blockly.Arduino.ORDER_COMMA) || '0'; - var code = functionName + '(' + element + ', ' + repeatCount + ')'; - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; +Blockly.Arduino['lists_repeat'] = function (block) { + // Create a list with one element repeated. + var functionName = Blockly.Arduino.provideFunction_( + 'listsRepeat', + ['function ' + Blockly.Arduino.FUNCTION_NAME_PLACEHOLDER_ + + '(value, n) {', + ' var array = [];', + ' for (var i = 0; i < n; i++) {', + ' array[i] = value;', + ' }', + ' return array;', + '}']); + var element = Blockly.Arduino.valueToCode(block, 'ITEM', + Blockly.Arduino.ORDER_COMMA) || 'null'; + var repeatCount = Blockly.Arduino.valueToCode(block, 'NUM', + Blockly.Arduino.ORDER_COMMA) || '0'; + var code = functionName + '(' + element + ', ' + repeatCount + ')'; + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; }; -Blockly.Arduino['lists_length'] = function(block) { - // String or array length. - var list = Blockly.Arduino.valueToCode(block, 'VALUE', - Blockly.Arduino.ORDER_MEMBER) || '[]'; - return [list + '.length', Blockly.Arduino.ORDER_MEMBER]; +Blockly.Arduino['lists_length'] = function (block) { + // String or array length. + var list = Blockly.Arduino.valueToCode(block, 'VALUE', + Blockly.Arduino.ORDER_MEMBER) || '[]'; + return [list + '.length', Blockly.Arduino.ORDER_MEMBER]; }; -Blockly.Arduino['lists_isEmpty'] = function(block) { - // Is the string null or array empty? - var list = Blockly.Arduino.valueToCode(block, 'VALUE', - Blockly.Arduino.ORDER_MEMBER) || '[]'; - return ['!' + list + '.length', Blockly.Arduino.ORDER_LOGICAL_NOT]; +Blockly.Arduino['lists_isEmpty'] = function (block) { + // Is the string null or array empty? + var list = Blockly.Arduino.valueToCode(block, 'VALUE', + Blockly.Arduino.ORDER_MEMBER) || '[]'; + return ['!' + list + '.length', Blockly.Arduino.ORDER_LOGICAL_NOT]; }; -Blockly.Arduino['lists_indexOf'] = function(block) { - // Find an item in the list. - var operator = block.getFieldValue('END') == 'FIRST' ? - 'indexOf' : 'lastIndexOf'; - var item = Blockly.Arduino.valueToCode(block, 'FIND', - Blockly.Arduino.ORDER_NONE) || '\'\''; - var list = Blockly.Arduino.valueToCode(block, 'VALUE', - Blockly.Arduino.ORDER_MEMBER) || '[]'; - var code = list + '.' + operator + '(' + item + ')'; - if (block.workspace.options.oneBasedIndex) { - return [code + ' + 1', Blockly.Arduino.ORDER_ADDITION]; - } - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; +Blockly.Arduino['lists_indexOf'] = function (block) { + // Find an item in the list. + var operator = block.getFieldValue('END') == 'FIRST' ? + 'indexOf' : 'lastIndexOf'; + var item = Blockly.Arduino.valueToCode(block, 'FIND', + Blockly.Arduino.ORDER_NONE) || '\'\''; + var list = Blockly.Arduino.valueToCode(block, 'VALUE', + Blockly.Arduino.ORDER_MEMBER) || '[]'; + var code = list + '.' + operator + '(' + item + ')'; + if (block.workspace.options.oneBasedIndex) { + return [code + ' + 1', Blockly.Arduino.ORDER_ADDITION]; + } + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; }; -Blockly.Arduino['lists_getIndex'] = function(block) { - // Get element at index. - // Note: Until January 2013 this block did not have MODE or WHERE inputs. - var mode = block.getFieldValue('MODE') || 'GET'; - var where = block.getFieldValue('WHERE') || 'FROM_START'; - var listOrder = (where == 'RANDOM') ? Blockly.Arduino.ORDER_COMMA : - Blockly.Arduino.ORDER_MEMBER; - var list = Blockly.Arduino.valueToCode(block, 'VALUE', listOrder) || '[]'; +Blockly.Arduino['lists_getIndex'] = function (block) { + // Get element at index. + // Note: Until January 2013 this block did not have MODE or WHERE inputs. + var mode = block.getFieldValue('MODE') || 'GET'; + var where = block.getFieldValue('WHERE') || 'FROM_START'; + var listOrder = (where == 'RANDOM') ? Blockly.Arduino.ORDER_COMMA : + Blockly.Arduino.ORDER_MEMBER; + var list = Blockly.Arduino.valueToCode(block, 'VALUE', listOrder) || '[]'; - switch (where) { - case ('FIRST'): - if (mode == 'GET') { - var code = list + '[0]'; - return [code, Blockly.Arduino.ORDER_MEMBER]; - } else if (mode == 'GET_REMOVE') { - var code = list + '.shift()'; - return [code, Blockly.Arduino.ORDER_MEMBER]; - } else if (mode == 'REMOVE') { - return list + '.shift();\n'; - } - break; - case ('LAST'): - if (mode == 'GET') { - var code = list + '.slice(-1)[0]'; - return [code, Blockly.Arduino.ORDER_MEMBER]; - } else if (mode == 'GET_REMOVE') { - var code = list + '.pop()'; - return [code, Blockly.Arduino.ORDER_MEMBER]; - } else if (mode == 'REMOVE') { - return list + '.pop();\n'; - } - break; - case ('FROM_START'): - var at = Blockly.Arduino.getAdjusted(block, 'AT'); - if (mode == 'GET') { - var code = list + '[' + at + ']'; - return [code, Blockly.Arduino.ORDER_MEMBER]; - } else if (mode == 'GET_REMOVE') { - var code = list + '.splice(' + at + ', 1)[0]'; - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; - } else if (mode == 'REMOVE') { - return list + '.splice(' + at + ', 1);\n'; - } - break; - case ('FROM_END'): - var at = Blockly.Arduino.getAdjusted(block, 'AT', 1, true); - if (mode == 'GET') { - var code = list + '.slice(' + at + ')[0]'; - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; - } else if (mode == 'GET_REMOVE') { - var code = list + '.splice(' + at + ', 1)[0]'; - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; - } else if (mode == 'REMOVE') { - return list + '.splice(' + at + ', 1);'; - } - break; - case ('RANDOM'): - var functionName = Blockly.Arduino.provideFunction_( - 'listsGetRandomItem', - ['function ' + Blockly.Arduino.FUNCTION_NAME_PLACEHOLDER_ + - '(list, remove) {', - ' var x = Math.floor(Math.random() * list.length);', - ' if (remove) {', - ' return list.splice(x, 1)[0];', - ' } else {', - ' return list[x];', - ' }', - '}']); - code = functionName + '(' + list + ', ' + (mode != 'GET') + ')'; - if (mode == 'GET' || mode == 'GET_REMOVE') { - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; - } else if (mode == 'REMOVE') { - return code + ';\n'; - } - break; - } - throw 'Unhandled combination (lists_getIndex).'; + switch (where) { + case ('FIRST'): + if (mode == 'GET') { + var code = list + '[0]'; + return [code, Blockly.Arduino.ORDER_MEMBER]; + } else if (mode == 'GET_REMOVE') { + var code = list + '.shift()'; + return [code, Blockly.Arduino.ORDER_MEMBER]; + } else if (mode == 'REMOVE') { + return list + '.shift();\n'; + } + break; + case ('LAST'): + if (mode == 'GET') { + var code = list + '.slice(-1)[0]'; + return [code, Blockly.Arduino.ORDER_MEMBER]; + } else if (mode == 'GET_REMOVE') { + var code = list + '.pop()'; + return [code, Blockly.Arduino.ORDER_MEMBER]; + } else if (mode == 'REMOVE') { + return list + '.pop();\n'; + } + break; + case ('FROM_START'): + var at = Blockly.Arduino.getAdjusted(block, 'AT'); + if (mode == 'GET') { + var code = list + '[' + at + ']'; + return [code, Blockly.Arduino.ORDER_MEMBER]; + } else if (mode == 'GET_REMOVE') { + var code = list + '.splice(' + at + ', 1)[0]'; + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; + } else if (mode == 'REMOVE') { + return list + '.splice(' + at + ', 1);\n'; + } + break; + case ('FROM_END'): + var at = Blockly.Arduino.getAdjusted(block, 'AT', 1, true); + if (mode == 'GET') { + var code = list + '.slice(' + at + ')[0]'; + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; + } else if (mode == 'GET_REMOVE') { + var code = list + '.splice(' + at + ', 1)[0]'; + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; + } else if (mode == 'REMOVE') { + return list + '.splice(' + at + ', 1);'; + } + break; + case ('RANDOM'): + var functionName = Blockly.Arduino.provideFunction_( + 'listsGetRandomItem', + ['function ' + Blockly.Arduino.FUNCTION_NAME_PLACEHOLDER_ + + '(list, remove) {', + ' var x = Math.floor(Math.random() * list.length);', + ' if (remove) {', + ' return list.splice(x, 1)[0];', + ' } else {', + ' return list[x];', + ' }', + '}']); + code = functionName + '(' + list + ', ' + (mode != 'GET') + ')'; + if (mode == 'GET' || mode == 'GET_REMOVE') { + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; + } else if (mode == 'REMOVE') { + return code + ';\n'; + } + break; + } + throw 'Unhandled combination (lists_getIndex).'; }; -Blockly.Arduino['lists_setIndex'] = function(block) { - // Set element at index. - // Note: Until February 2013 this block did not have MODE or WHERE inputs. - var list = Blockly.Arduino.valueToCode(block, 'LIST', - Blockly.Arduino.ORDER_MEMBER) || '[]'; - var mode = block.getFieldValue('MODE') || 'GET'; - var where = block.getFieldValue('WHERE') || 'FROM_START'; - var value = Blockly.Arduino.valueToCode(block, 'TO', - Blockly.Arduino.ORDER_ASSIGNMENT) || 'null'; - // Cache non-trivial values to variables to prevent repeated look-ups. - // Closure, which accesses and modifies 'list'. - function cacheList() { - if (list.match(/^\w+$/)) { - return ''; - } - var listVar = Blockly.Arduino.variableDB_.getDistinctName( - 'tmpList', Blockly.Variables.NAME_TYPE); - var code = 'var ' + listVar + ' = ' + list + ';\n'; - list = listVar; - return code; - } - switch (where) { - case ('FIRST'): - if (mode == 'SET') { - return list + '[0] = ' + value + ';\n'; - } else if (mode == 'INSERT') { - return list + '.unshift(' + value + ');\n'; - } - break; - case ('LAST'): - if (mode == 'SET') { - var code = cacheList(); - code += list + '[' + list + '.length - 1] = ' + value + ';\n'; - return code; - } else if (mode == 'INSERT') { - return list + '.push(' + value + ');\n'; - } - break; - case ('FROM_START'): - var at = Blockly.Arduino.getAdjusted(block, 'AT'); - if (mode == 'SET') { - return list + '[' + at + '] = ' + value + ';\n'; - } else if (mode == 'INSERT') { - return list + '.splice(' + at + ', 0, ' + value + ');\n'; - } - break; - case ('FROM_END'): - var at = Blockly.Arduino.getAdjusted(block, 'AT', 1, false, - Blockly.Arduino.ORDER_SUBTRACTION); - var code = cacheList(); - if (mode == 'SET') { - code += list + '[' + list + '.length - ' + at + '] = ' + value + ';\n'; +Blockly.Arduino['lists_setIndex'] = function (block) { + // Set element at index. + // Note: Until February 2013 this block did not have MODE or WHERE inputs. + var list = Blockly.Arduino.valueToCode(block, 'LIST', + Blockly.Arduino.ORDER_MEMBER) || '[]'; + var mode = block.getFieldValue('MODE') || 'GET'; + var where = block.getFieldValue('WHERE') || 'FROM_START'; + var value = Blockly.Arduino.valueToCode(block, 'TO', + Blockly.Arduino.ORDER_ASSIGNMENT) || 'null'; + // Cache non-trivial values to variables to prevent repeated look-ups. + // Closure, which accesses and modifies 'list'. + function cacheList() { + if (list.match(/^\w+$/)) { + return ''; + } + var listVar = Blockly.Arduino.variableDB_.getDistinctName( + 'tmpList', Blockly.Variables.NAME_TYPE); + var code = 'var ' + listVar + ' = ' + list + ';\n'; + list = listVar; return code; - } else if (mode == 'INSERT') { - code += list + '.splice(' + list + '.length - ' + at + ', 0, ' + value + - ');\n'; - return code; - } - break; - case ('RANDOM'): - var code = cacheList(); - var xVar = Blockly.Arduino.variableDB_.getDistinctName( - 'tmpX', Blockly.Variables.NAME_TYPE); - code += 'var ' + xVar + ' = Math.floor(Math.random() * ' + list + - '.length);\n'; - if (mode == 'SET') { - code += list + '[' + xVar + '] = ' + value + ';\n'; - return code; - } else if (mode == 'INSERT') { - code += list + '.splice(' + xVar + ', 0, ' + value + ');\n'; - return code; - } - break; - } - throw 'Unhandled combination (lists_setIndex).'; + } + switch (where) { + case ('FIRST'): + if (mode == 'SET') { + return list + '[0] = ' + value + ';\n'; + } else if (mode == 'INSERT') { + return list + '.unshift(' + value + ');\n'; + } + break; + case ('LAST'): + if (mode == 'SET') { + var code = cacheList(); + code += list + '[' + list + '.length - 1] = ' + value + ';\n'; + return code; + } else if (mode == 'INSERT') { + return list + '.push(' + value + ');\n'; + } + break; + case ('FROM_START'): + var at = Blockly.Arduino.getAdjusted(block, 'AT'); + if (mode == 'SET') { + return list + '[' + at + '] = ' + value + ';\n'; + } else if (mode == 'INSERT') { + return list + '.splice(' + at + ', 0, ' + value + ');\n'; + } + break; + case ('FROM_END'): + var at = Blockly.Arduino.getAdjusted(block, 'AT', 1, false, + Blockly.Arduino.ORDER_SUBTRACTION); + var code = cacheList(); + if (mode == 'SET') { + code += list + '[' + list + '.length - ' + at + '] = ' + value + ';\n'; + return code; + } else if (mode == 'INSERT') { + code += list + '.splice(' + list + '.length - ' + at + ', 0, ' + value + + ');\n'; + return code; + } + break; + case ('RANDOM'): + var code = cacheList(); + var xVar = Blockly.Arduino.variableDB_.getDistinctName( + 'tmpX', Blockly.Variables.NAME_TYPE); + code += 'var ' + xVar + ' = Math.floor(Math.random() * ' + list + + '.length);\n'; + if (mode == 'SET') { + code += list + '[' + xVar + '] = ' + value + ';\n'; + return code; + } else if (mode == 'INSERT') { + code += list + '.splice(' + xVar + ', 0, ' + value + ');\n'; + return code; + } + break; + } + throw 'Unhandled combination (lists_setIndex).'; }; /** @@ -258,145 +258,145 @@ Blockly.Arduino['lists_setIndex'] = function(block) { * @param {string=} opt_at The optional offset when indexing from start/end. * @return {string} Index expression. */ -Blockly.Arduino.lists.getIndex_ = function(listName, where, opt_at) { - if (where == 'FIRST') { - return '0'; - } else if (where == 'FROM_END') { - return listName + '.length - 1 - ' + opt_at; - } else if (where == 'LAST') { - return listName + '.length - 1'; - } else { - return opt_at; - } +Blockly.Arduino.lists.getIndex_ = function (listName, where, opt_at) { + if (where == 'FIRST') { + return '0'; + } else if (where == 'FROM_END') { + return listName + '.length - 1 - ' + opt_at; + } else if (where == 'LAST') { + return listName + '.length - 1'; + } else { + return opt_at; + } }; -Blockly.Arduino['lists_getSublist'] = function(block) { - // Get sublist. - var list = Blockly.Arduino.valueToCode(block, 'LIST', - Blockly.Arduino.ORDER_MEMBER) || '[]'; - var where1 = block.getFieldValue('WHERE1'); - var where2 = block.getFieldValue('WHERE2'); - if (where1 == 'FIRST' && where2 == 'LAST') { - var code = list + '.slice(0)'; - } else if (list.match(/^\w+$/) || - (where1 != 'FROM_END' && where2 == 'FROM_START')) { - // If the list is a variable or doesn't require a call for length, don't - // generate a helper function. - switch (where1) { - case 'FROM_START': +Blockly.Arduino['lists_getSublist'] = function (block) { + // Get sublist. + var list = Blockly.Arduino.valueToCode(block, 'LIST', + Blockly.Arduino.ORDER_MEMBER) || '[]'; + var where1 = block.getFieldValue('WHERE1'); + var where2 = block.getFieldValue('WHERE2'); + if (where1 == 'FIRST' && where2 == 'LAST') { + var code = list + '.slice(0)'; + } else if (list.match(/^\w+$/) || + (where1 != 'FROM_END' && where2 == 'FROM_START')) { + // If the list is a variable or doesn't require a call for length, don't + // generate a helper function. + switch (where1) { + case 'FROM_START': + var at1 = Blockly.Arduino.getAdjusted(block, 'AT1'); + break; + case 'FROM_END': + var at1 = Blockly.Arduino.getAdjusted(block, 'AT1', 1, false, + Blockly.Arduino.ORDER_SUBTRACTION); + at1 = list + '.length - ' + at1; + break; + case 'FIRST': + var at1 = '0'; + break; + default: + throw 'Unhandled option (lists_getSublist).'; + } + switch (where2) { + case 'FROM_START': + var at2 = Blockly.Arduino.getAdjusted(block, 'AT2', 1); + break; + case 'FROM_END': + var at2 = Blockly.Arduino.getAdjusted(block, 'AT2', 0, false, + Blockly.Arduino.ORDER_SUBTRACTION); + at2 = list + '.length - ' + at2; + break; + case 'LAST': + var at2 = list + '.length'; + break; + default: + throw 'Unhandled option (lists_getSublist).'; + } + code = list + '.slice(' + at1 + ', ' + at2 + ')'; + } else { var at1 = Blockly.Arduino.getAdjusted(block, 'AT1'); - break; - case 'FROM_END': - var at1 = Blockly.Arduino.getAdjusted(block, 'AT1', 1, false, - Blockly.Arduino.ORDER_SUBTRACTION); - at1 = list + '.length - ' + at1; - break; - case 'FIRST': - var at1 = '0'; - break; - default: - throw 'Unhandled option (lists_getSublist).'; - } - switch (where2) { - case 'FROM_START': - var at2 = Blockly.Arduino.getAdjusted(block, 'AT2', 1); - break; - case 'FROM_END': - var at2 = Blockly.Arduino.getAdjusted(block, 'AT2', 0, false, - Blockly.Arduino.ORDER_SUBTRACTION); - at2 = list + '.length - ' + at2; - break; - case 'LAST': - var at2 = list + '.length'; - break; - default: - throw 'Unhandled option (lists_getSublist).'; - } - code = list + '.slice(' + at1 + ', ' + at2 + ')'; - } else { - var at1 = Blockly.Arduino.getAdjusted(block, 'AT1'); - var at2 = Blockly.Arduino.getAdjusted(block, 'AT2'); - var getIndex_ = Blockly.Arduino.lists.getIndex_; - var wherePascalCase = {'FIRST': 'First', 'LAST': 'Last', - 'FROM_START': 'FromStart', 'FROM_END': 'FromEnd'}; - var functionName = Blockly.Arduino.provideFunction_( - 'subsequence' + wherePascalCase[where1] + wherePascalCase[where2], - ['function ' + Blockly.Arduino.FUNCTION_NAME_PLACEHOLDER_ + - '(sequence' + - // The value for 'FROM_END' and'FROM_START' depends on `at` so - // we add it as a parameter. - ((where1 == 'FROM_END' || where1 == 'FROM_START') ? ', at1' : '') + - ((where2 == 'FROM_END' || where2 == 'FROM_START') ? ', at2' : '') + - ') {', - ' var start = ' + getIndex_('sequence', where1, 'at1') + ';', - ' var end = ' + getIndex_('sequence', where2, 'at2') + ' + 1;', - ' return sequence.slice(start, end);', - '}']); - var code = functionName + '(' + list + - // The value for 'FROM_END' and 'FROM_START' depends on `at` so we - // pass it. - ((where1 == 'FROM_END' || where1 == 'FROM_START') ? ', ' + at1 : '') + - ((where2 == 'FROM_END' || where2 == 'FROM_START') ? ', ' + at2 : '') + - ')'; - } - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; -}; + var at2 = Blockly.Arduino.getAdjusted(block, 'AT2'); + var getIndex_ = Blockly.Arduino.lists.getIndex_; + var wherePascalCase = {'FIRST': 'First', 'LAST': 'Last', + 'FROM_START': 'FromStart', 'FROM_END': 'FromEnd'}; + var functionName = Blockly.Arduino.provideFunction_( + 'subsequence' + wherePascalCase[where1] + wherePascalCase[where2], + ['function ' + Blockly.Arduino.FUNCTION_NAME_PLACEHOLDER_ + + '(sequence' + + // The value for 'FROM_END' and'FROM_START' depends on `at` so + // we add it as a parameter. + ((where1 == 'FROM_END' || where1 == 'FROM_START') ? ', at1' : '') + + ((where2 == 'FROM_END' || where2 == 'FROM_START') ? ', at2' : '') + + ') {', + ' var start = ' + getIndex_('sequence', where1, 'at1') + ';', + ' var end = ' + getIndex_('sequence', where2, 'at2') + ' + 1;', + ' return sequence.slice(start, end);', + '}']); + var code = functionName + '(' + list + + // The value for 'FROM_END' and 'FROM_START' depends on `at` so we + // pass it. + ((where1 == 'FROM_END' || where1 == 'FROM_START') ? ', ' + at1 : '') + + ((where2 == 'FROM_END' || where2 == 'FROM_START') ? ', ' + at2 : '') + + ')'; + } + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; + }; -Blockly.Arduino['lists_sort'] = function(block) { - // Block for sorting a list. - var list = Blockly.Arduino.valueToCode(block, 'LIST', - Blockly.Arduino.ORDER_FUNCTION_CALL) || '[]'; - var direction = block.getFieldValue('DIRECTION') === '1' ? 1 : -1; - var type = block.getFieldValue('TYPE'); - var getCompareFunctionName = Blockly.Arduino.provideFunction_( - 'listsGetSortCompare', - ['function ' + Blockly.Arduino.FUNCTION_NAME_PLACEHOLDER_ + - '(type, direction) {', - ' var compareFuncs = {', - ' "NUMERIC": function(a, b) {', - ' return parseFloat(a) - parseFloat(b); },', - ' "TEXT": function(a, b) {', - ' return a.toString() > b.toString() ? 1 : -1; },', - ' "IGNORE_CASE": function(a, b) {', - ' return a.toString().toLowerCase() > ' + - 'b.toString().toLowerCase() ? 1 : -1; },', - ' };', - ' var compare = compareFuncs[type];', - ' return function(a, b) { return compare(a, b) * direction; }', - '}']); - return [list + '.slice().sort(' + - getCompareFunctionName + '("' + type + '", ' + direction + '))', - Blockly.Arduino.ORDER_FUNCTION_CALL]; -}; + Blockly.Arduino['lists_sort'] = function (block) { + // Block for sorting a list. + var list = Blockly.Arduino.valueToCode(block, 'LIST', + Blockly.Arduino.ORDER_FUNCTION_CALL) || '[]'; + var direction = block.getFieldValue('DIRECTION') === '1' ? 1 : -1; + var type = block.getFieldValue('TYPE'); + var getCompareFunctionName = Blockly.Arduino.provideFunction_( + 'listsGetSortCompare', + ['function ' + Blockly.Arduino.FUNCTION_NAME_PLACEHOLDER_ + + '(type, direction) {', + ' var compareFuncs = {', + ' "NUMERIC": function(a, b) {', + ' return parseFloat(a) - parseFloat(b); },', + ' "TEXT": function(a, b) {', + ' return a.toString() > b.toString() ? 1 : -1; },', + ' "IGNORE_CASE": function(a, b) {', + ' return a.toString().toLowerCase() > ' + + 'b.toString().toLowerCase() ? 1 : -1; },', + ' };', + ' var compare = compareFuncs[type];', + ' return function(a, b) { return compare(a, b) * direction; }', + '}']); + return [list + '.slice().sort(' + + getCompareFunctionName + '("' + type + '", ' + direction + '))', + Blockly.Arduino.ORDER_FUNCTION_CALL]; + }; -Blockly.Arduino['lists_split'] = function(block) { - // Block for splitting text into a list, or joining a list into text. - var input = Blockly.Arduino.valueToCode(block, 'INPUT', - Blockly.Arduino.ORDER_MEMBER); - var delimiter = Blockly.Arduino.valueToCode(block, 'DELIM', - Blockly.Arduino.ORDER_NONE) || '\'\''; - var mode = block.getFieldValue('MODE'); - if (mode == 'SPLIT') { - if (!input) { - input = '\'\''; - } - var functionName = 'split'; - } else if (mode == 'JOIN') { - if (!input) { - input = '[]'; - } - var functionName = 'join'; - } else { - throw 'Unknown mode: ' + mode; - } - var code = input + '.' + functionName + '(' + delimiter + ')'; - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; -}; + Blockly.Arduino['lists_split'] = function (block) { + // Block for splitting text into a list, or joining a list into text. + var input = Blockly.Arduino.valueToCode(block, 'INPUT', + Blockly.Arduino.ORDER_MEMBER); + var delimiter = Blockly.Arduino.valueToCode(block, 'DELIM', + Blockly.Arduino.ORDER_NONE) || '\'\''; + var mode = block.getFieldValue('MODE'); + if (mode == 'SPLIT') { + if (!input) { + input = '\'\''; + } + var functionName = 'split'; + } else if (mode == 'JOIN') { + if (!input) { + input = '[]'; + } + var functionName = 'join'; + } else { + throw 'Unknown mode: ' + mode; + } + var code = input + '.' + functionName + '(' + delimiter + ')'; + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; + }; -Blockly.Arduino['lists_reverse'] = function(block) { - // Block for reversing a list. - var list = Blockly.Arduino.valueToCode(block, 'LIST', - Blockly.Arduino.ORDER_FUNCTION_CALL) || '[]'; - var code = list + '.slice().reverse()'; - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; -}; + Blockly.Arduino['lists_reverse'] = function (block) { + // Block for reversing a list. + var list = Blockly.Arduino.valueToCode(block, 'LIST', + Blockly.Arduino.ORDER_FUNCTION_CALL) || '[]'; + var code = list + '.slice().reverse()'; + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; + }; diff --git a/blocklyduino/generators/arduino/blockly/logic.js b/blocklyduino/generators/arduino/blockly/logic.js index 0f9bd5e..0255a21 100644 --- a/blocklyduino/generators/arduino/blockly/logic.js +++ b/blocklyduino/generators/arduino/blockly/logic.js @@ -32,14 +32,14 @@ Blockly.Arduino['controls_if'] = function (block) { // If/elseif/else condition. var n = 0; var code = '', - branchCode, - conditionCode; + branchCode, + conditionCode; do { conditionCode = Blockly.Arduino.valueToCode(block, 'IF' + n, Blockly.Arduino.ORDER_NONE) || 'false'; branchCode = Blockly.Arduino.statementToCode(block, 'DO' + n); code += (n > 0 ? ' else ' : '') + - 'if (' + conditionCode + ') {\n' + branchCode + '}'; + 'if (' + conditionCode + ') {\n' + branchCode + '}'; ++n; } while (block.getInput('IF' + n)); @@ -63,7 +63,7 @@ Blockly.Arduino['logic_compare'] = function (block) { }; var operator = OPERATORS[block.getFieldValue('OP')]; var order = (operator == '==' || operator == '!=') ? - Blockly.Arduino.ORDER_EQUALITY : Blockly.Arduino.ORDER_RELATIONAL; + Blockly.Arduino.ORDER_EQUALITY : Blockly.Arduino.ORDER_RELATIONAL; var argument0 = Blockly.Arduino.valueToCode(block, 'A', order) || '0'; var argument1 = Blockly.Arduino.valueToCode(block, 'B', order) || '0'; var code = argument0 + ' ' + operator + ' ' + argument1; @@ -74,7 +74,7 @@ Blockly.Arduino['logic_operation'] = function (block) { // Operations 'and', 'or'. var operator = (block.getFieldValue('OP') == 'AND') ? '&&' : '||'; var order = (operator == '&&') ? Blockly.Arduino.ORDER_LOGICAL_AND : - Blockly.Arduino.ORDER_LOGICAL_OR; + Blockly.Arduino.ORDER_LOGICAL_OR; var argument0 = Blockly.Arduino.valueToCode(block, 'A', order); var argument1 = Blockly.Arduino.valueToCode(block, 'B', order); if (!argument0 && !argument1) { diff --git a/blocklyduino/generators/arduino/blockly/loops.js b/blocklyduino/generators/arduino/blockly/loops.js index 1b9b4a0..03b7923 100644 --- a/blocklyduino/generators/arduino/blockly/loops.js +++ b/blocklyduino/generators/arduino/blockly/loops.js @@ -29,150 +29,150 @@ goog.provide('Blockly.Arduino.loops'); goog.require('Blockly.Arduino'); -Blockly.Arduino['controls_repeat_ext'] = function(block) { - // Repeat n times. - if (block.getField('TIMES')) { - // Internal number. - var repeats = String(Number(block.getFieldValue('TIMES'))); - } else { - // External number. - var repeats = Blockly.Arduino.valueToCode(block, 'TIMES', - Blockly.Arduino.ORDER_ASSIGNMENT) || '0'; - } - var branch = Blockly.Arduino.statementToCode(block, 'DO'); - branch = Blockly.Arduino.addLoopTrap(branch, block.id); - var code = ''; - var loopVar = Blockly.Arduino.variableDB_.getDistinctName( - 'count', Blockly.Variables.NAME_TYPE); - var endVar = repeats; - if (!repeats.match(/^\w+$/) && !Blockly.isNumber(repeats)) { - var endVar = Blockly.Arduino.variableDB_.getDistinctName( - 'repeat_end', Blockly.Variables.NAME_TYPE); - code += 'int ' + endVar + ' = ' + repeats + ';\n'; - } - code += 'for (int ' + loopVar + ' = 0; ' + - loopVar + ' < ' + endVar + '; ' + - loopVar + '++) {\n' + - branch + '}\n'; - return code; +Blockly.Arduino['controls_repeat_ext'] = function (block) { + // Repeat n times. + if (block.getField('TIMES')) { + // Internal number. + var repeats = String(Number(block.getFieldValue('TIMES'))); + } else { + // External number. + var repeats = Blockly.Arduino.valueToCode(block, 'TIMES', + Blockly.Arduino.ORDER_ASSIGNMENT) || '0'; + } + var branch = Blockly.Arduino.statementToCode(block, 'DO'); + branch = Blockly.Arduino.addLoopTrap(branch, block.id); + var code = ''; + var loopVar = Blockly.Arduino.variableDB_.getDistinctName( + 'count', Blockly.Variables.NAME_TYPE); + var endVar = repeats; + if (!repeats.match(/^\w+$/) && !Blockly.isNumber(repeats)) { + var endVar = Blockly.Arduino.variableDB_.getDistinctName( + 'repeat_end', Blockly.Variables.NAME_TYPE); + code += 'int ' + endVar + ' = ' + repeats + ';\n'; + } + code += 'for (int ' + loopVar + ' = 0; ' + + loopVar + ' < ' + endVar + '; ' + + loopVar + '++) {\n' + + branch + '}\n'; + return code; }; Blockly.Arduino['controls_repeat'] = - Blockly.Arduino['controls_repeat_ext']; + Blockly.Arduino['controls_repeat_ext']; -Blockly.Arduino['controls_whileUntil'] = function(block) { - // Do while/until loop. - var argument0 = Blockly.Arduino.valueToCode(this, 'BOOL', Blockly.Arduino.ORDER_NONE) || 'false'; - var branch = Blockly.Arduino.statementToCode(this, 'DO'); - if (Blockly.Arduino.INFINITE_LOOP_TRAP) { - branch = Blockly.Arduino.INFINITE_LOOP_TRAP.replace(/%1/g, - '\'' + this.id + '\'') + branch; - } - if (this.getFieldValue ('MODE') == 'UNTIL') { - if (!argument0.match(/^\w+$/)) { - argument0 = '(' + argument0 + ')'; +Blockly.Arduino['controls_whileUntil'] = function (block) { + // Do while/until loop. + var argument0 = Blockly.Arduino.valueToCode(this, 'BOOL', Blockly.Arduino.ORDER_NONE) || 'false'; + var branch = Blockly.Arduino.statementToCode(this, 'DO'); + if (Blockly.Arduino.INFINITE_LOOP_TRAP) { + branch = Blockly.Arduino.INFINITE_LOOP_TRAP.replace(/%1/g, + '\'' + this.id + '\'') + branch; } - argument0 = '!' + argument0; - } - return 'while (' + argument0 + ') {\n' + branch + '}\n'; + if (this.getFieldValue('MODE') == 'UNTIL') { + if (!argument0.match(/^\w+$/)) { + argument0 = '(' + argument0 + ')'; + } + argument0 = '!' + argument0; + } + return 'while (' + argument0 + ') {\n' + branch + '}\n'; }; -Blockly.Arduino['controls_for'] = function(block) { - // For loop. - var variable0 = Blockly.Arduino.variableDB_.getName( - block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); - var argument0 = Blockly.Arduino.valueToCode(block, 'FROM', - Blockly.Arduino.ORDER_ASSIGNMENT) || '0'; - var argument1 = Blockly.Arduino.valueToCode(block, 'TO', - Blockly.Arduino.ORDER_ASSIGNMENT) || '0'; - var increment = Blockly.Arduino.valueToCode(block, 'BY', - Blockly.Arduino.ORDER_ASSIGNMENT) || '1'; - var branch = Blockly.Arduino.statementToCode(block, 'DO'); - branch = Blockly.Arduino.addLoopTrap(branch, block.id); - var code; - if (Blockly.isNumber(argument0) && Blockly.isNumber(argument1) && - Blockly.isNumber(increment)) { - // All arguments are simple numbers. - var up = parseFloat(argument0) <= parseFloat(argument1); - code = 'for (int ' + variable0 + ' = ' + argument0 + '; ' + - variable0 + (up ? ' <= ' : ' >= ') + argument1 + '; ' + - variable0; - var step = Math.abs(parseFloat(increment)); - if (step == 1) { - code += up ? '++' : '--'; - } else { - code += (up ? ' += ' : ' -= ') + step; - } - code += ') {\n' + branch + '}\n'; - } else { - code = ''; - // Cache non-trivial values to variables to prevent repeated look-ups. - var startVar = argument0; - if (!argument0.match(/^\w+$/) && !Blockly.isNumber(argument0)) { - startVar = Blockly.Arduino.variableDB_.getDistinctName( - variable0 + '_start', Blockly.Variables.NAME_TYPE); - code += 'var ' + startVar + ' = ' + argument0 + ';\n'; - } - var endVar = argument1; - if (!argument1.match(/^\w+$/) && !Blockly.isNumber(argument1)) { - var endVar = Blockly.Arduino.variableDB_.getDistinctName( - variable0 + '_end', Blockly.Variables.NAME_TYPE); - code += 'var ' + endVar + ' = ' + argument1 + ';\n'; - } - // Determine loop direction at start, in case one of the bounds - // changes during loop execution. - var incVar = Blockly.Arduino.variableDB_.getDistinctName( - variable0 + '_inc', Blockly.Variables.NAME_TYPE); - code += 'var ' + incVar + ' = '; - if (Blockly.isNumber(increment)) { - code += Math.abs(increment) + ';\n'; +Blockly.Arduino['controls_for'] = function (block) { + // For loop. + var variable0 = Blockly.Arduino.variableDB_.getName( + block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + var argument0 = Blockly.Arduino.valueToCode(block, 'FROM', + Blockly.Arduino.ORDER_ASSIGNMENT) || '0'; + var argument1 = Blockly.Arduino.valueToCode(block, 'TO', + Blockly.Arduino.ORDER_ASSIGNMENT) || '0'; + var increment = Blockly.Arduino.valueToCode(block, 'BY', + Blockly.Arduino.ORDER_ASSIGNMENT) || '1'; + var branch = Blockly.Arduino.statementToCode(block, 'DO'); + branch = Blockly.Arduino.addLoopTrap(branch, block.id); + var code; + if (Blockly.isNumber(argument0) && Blockly.isNumber(argument1) && + Blockly.isNumber(increment)) { + // All arguments are simple numbers. + var up = parseFloat(argument0) <= parseFloat(argument1); + code = 'for (int ' + variable0 + ' = ' + argument0 + '; ' + + variable0 + (up ? ' <= ' : ' >= ') + argument1 + '; ' + + variable0; + var step = Math.abs(parseFloat(increment)); + if (step == 1) { + code += up ? '++' : '--'; + } else { + code += (up ? ' += ' : ' -= ') + step; + } + code += ') {\n' + branch + '}\n'; } else { - code += 'Math.abs(' + increment + ');\n'; + code = ''; + // Cache non-trivial values to variables to prevent repeated look-ups. + var startVar = argument0; + if (!argument0.match(/^\w+$/) && !Blockly.isNumber(argument0)) { + startVar = Blockly.Arduino.variableDB_.getDistinctName( + variable0 + '_start', Blockly.Variables.NAME_TYPE); + code += 'var ' + startVar + ' = ' + argument0 + ';\n'; + } + var endVar = argument1; + if (!argument1.match(/^\w+$/) && !Blockly.isNumber(argument1)) { + var endVar = Blockly.Arduino.variableDB_.getDistinctName( + variable0 + '_end', Blockly.Variables.NAME_TYPE); + code += 'var ' + endVar + ' = ' + argument1 + ';\n'; + } + // Determine loop direction at start, in case one of the bounds + // changes during loop execution. + var incVar = Blockly.Arduino.variableDB_.getDistinctName( + variable0 + '_inc', Blockly.Variables.NAME_TYPE); + code += 'var ' + incVar + ' = '; + if (Blockly.isNumber(increment)) { + code += Math.abs(increment) + ';\n'; + } else { + code += 'Math.abs(' + increment + ');\n'; + } + code += 'if (' + startVar + ' > ' + endVar + ') {\n'; + code += Blockly.Arduino.INDENT + incVar + ' = -' + incVar + ';\n'; + code += '}\n'; + code += 'for (' + variable0 + ' = ' + startVar + '; ' + + incVar + ' >= 0 ? ' + + variable0 + ' <= ' + endVar + ' : ' + + variable0 + ' >= ' + endVar + '; ' + + variable0 + ' += ' + incVar + ') {\n' + + branch + '}\n'; } - code += 'if (' + startVar + ' > ' + endVar + ') {\n'; - code += Blockly.Arduino.INDENT + incVar + ' = -' + incVar + ';\n'; - code += '}\n'; - code += 'for (' + variable0 + ' = ' + startVar + '; ' + - incVar + ' >= 0 ? ' + - variable0 + ' <= ' + endVar + ' : ' + - variable0 + ' >= ' + endVar + '; ' + - variable0 + ' += ' + incVar + ') {\n' + - branch + '}\n'; - } - return code; + return code; }; -Blockly.Arduino['controls_forEach'] = function(block) { - // For each loop. - var variable0 = Blockly.Arduino.variableDB_.getName( - block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); - var argument0 = Blockly.Arduino.valueToCode(block, 'LIST', - Blockly.Arduino.ORDER_ASSIGNMENT) || '[]'; - var branch = Blockly.Arduino.statementToCode(block, 'DO'); - branch = Blockly.Arduino.addLoopTrap(branch, block.id); - var code = ''; - // Cache non-trivial values to variables to prevent repeated look-ups. - var listVar = argument0; - if (!argument0.match(/^\w+$/)) { - listVar = Blockly.Arduino.variableDB_.getDistinctName( - variable0 + '_list', Blockly.Variables.NAME_TYPE); - code += 'var ' + listVar + ' = ' + argument0 + ';\n'; - } - var indexVar = Blockly.Arduino.variableDB_.getDistinctName( - variable0 + '_index', Blockly.Variables.NAME_TYPE); - branch = Blockly.Arduino.INDENT + variable0 + ' = ' + - listVar + '[' + indexVar + '];\n' + branch; - code += 'for (var ' + indexVar + ' in ' + listVar + ') {\n' + branch + '}\n'; - return code; +Blockly.Arduino['controls_forEach'] = function (block) { + // For each loop. + var variable0 = Blockly.Arduino.variableDB_.getName( + block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + var argument0 = Blockly.Arduino.valueToCode(block, 'LIST', + Blockly.Arduino.ORDER_ASSIGNMENT) || '[]'; + var branch = Blockly.Arduino.statementToCode(block, 'DO'); + branch = Blockly.Arduino.addLoopTrap(branch, block.id); + var code = ''; + // Cache non-trivial values to variables to prevent repeated look-ups. + var listVar = argument0; + if (!argument0.match(/^\w+$/)) { + listVar = Blockly.Arduino.variableDB_.getDistinctName( + variable0 + '_list', Blockly.Variables.NAME_TYPE); + code += 'var ' + listVar + ' = ' + argument0 + ';\n'; + } + var indexVar = Blockly.Arduino.variableDB_.getDistinctName( + variable0 + '_index', Blockly.Variables.NAME_TYPE); + branch = Blockly.Arduino.INDENT + variable0 + ' = ' + + listVar + '[' + indexVar + '];\n' + branch; + code += 'for (var ' + indexVar + ' in ' + listVar + ') {\n' + branch + '}\n'; + return code; }; -Blockly.Arduino['controls_flow_statements'] = function(block) { - // Flow statements: continue, break. - switch (block.getFieldValue('FLOW')) { - case 'BREAK': - return 'break;\n'; - case 'CONTINUE': - return 'continue;\n'; - } - throw 'Unknown flow statement.'; +Blockly.Arduino['controls_flow_statements'] = function (block) { + // Flow statements: continue, break. + switch (block.getFieldValue('FLOW')) { + case 'BREAK': + return 'break;\n'; + case 'CONTINUE': + return 'continue;\n'; + } + throw 'Unknown flow statement.'; }; diff --git a/blocklyduino/generators/arduino/blockly/math.js b/blocklyduino/generators/arduino/blockly/math.js index e2b26c7..035d3cf 100644 --- a/blocklyduino/generators/arduino/blockly/math.js +++ b/blocklyduino/generators/arduino/blockly/math.js @@ -29,195 +29,195 @@ goog.provide('Blockly.Arduino.math'); goog.require('Blockly.Arduino'); -Blockly.Arduino['math_number'] = function(block) { - // Numeric value. - var code = parseFloat(block.getFieldValue('NUM')); - var order = code >= 0 ? Blockly.Arduino.ORDER_ATOMIC : - Blockly.Arduino.ORDER_UNARY_NEGATION; - return [code, order]; +Blockly.Arduino['math_number'] = function (block) { + // Numeric value. + var code = parseFloat(block.getFieldValue('NUM')); + var order = code >= 0 ? Blockly.Arduino.ORDER_ATOMIC : + Blockly.Arduino.ORDER_UNARY_NEGATION; + return [code, order]; }; -Blockly.Arduino['math_arithmetic'] = function(block) { - // Basic arithmetic operators, and power. - var OPERATORS = { - 'ADD': [' + ', Blockly.Arduino.ORDER_ADDITIVE], - 'MINUS': [' - ', Blockly.Arduino.ORDER_ADDITIVE], - 'MULTIPLY': [' * ', Blockly.Arduino.ORDER_MULTIPLICATIVE], - 'DIVIDE': [' / ', Blockly.Arduino.ORDER_MULTIPLICATIVE], - 'POWER': [null, Blockly.Arduino.ORDER_NONE] // Handle power separately. - }; - var mode = block.getFieldValue('OP'); - var tuple = OPERATORS[mode]; - var operator = tuple[0]; - var order = tuple[1]; - var argument0 = Blockly.Arduino.valueToCode(block, 'A', order) || '0'; - var argument1 = Blockly.Arduino.valueToCode(block, 'B', order) || '0'; - var code; - // Power in Arduino requires a special case since it has no operator. - if (!operator) { - code = 'pow(' + argument0 + ', ' + argument1 + ')'; - return [code, Blockly.Arduino.ORDER_UNARY_POSTFIX]; - } - code = argument0 + operator + argument1; - return [code, order]; +Blockly.Arduino['math_arithmetic'] = function (block) { + // Basic arithmetic operators, and power. + var OPERATORS = { + 'ADD': [' + ', Blockly.Arduino.ORDER_ADDITIVE], + 'MINUS': [' - ', Blockly.Arduino.ORDER_ADDITIVE], + 'MULTIPLY': [' * ', Blockly.Arduino.ORDER_MULTIPLICATIVE], + 'DIVIDE': [' / ', Blockly.Arduino.ORDER_MULTIPLICATIVE], + 'POWER': [null, Blockly.Arduino.ORDER_NONE] // Handle power separately. + }; + var mode = block.getFieldValue('OP'); + var tuple = OPERATORS[mode]; + var operator = tuple[0]; + var order = tuple[1]; + var argument0 = Blockly.Arduino.valueToCode(block, 'A', order) || '0'; + var argument1 = Blockly.Arduino.valueToCode(block, 'B', order) || '0'; + var code; + // Power in Arduino requires a special case since it has no operator. + if (!operator) { + code = 'pow(' + argument0 + ', ' + argument1 + ')'; + return [code, Blockly.Arduino.ORDER_UNARY_POSTFIX]; + } + code = argument0 + operator + argument1; + return [code, order]; }; -Blockly.Arduino['math_single'] = function(block) { - // Math operators with single operand. - var operator = block.getFieldValue('OP'); - var code; - var arg; - if (operator === 'NEG') { - // Negation is a special case given its different operator precedence. - arg = Blockly.Arduino.valueToCode(block, 'NUM', Blockly.Arduino.ORDER_UNARY_PREFIX) || '0'; - if (arg[0] == '-') { - arg = ' ' + arg; +Blockly.Arduino['math_single'] = function (block) { + // Math operators with single operand. + var operator = block.getFieldValue('OP'); + var code; + var arg; + if (operator === 'NEG') { + // Negation is a special case given its different operator precedence. + arg = Blockly.Arduino.valueToCode(block, 'NUM', Blockly.Arduino.ORDER_UNARY_PREFIX) || '0'; + if (arg[0] == '-') { + arg = ' ' + arg; + } + code = '-' + arg; + return [code, Blockly.Arduino.ORDER_UNARY_PREFIX]; + } + if (operator === 'SIN' || operator === 'COS' || operator === 'TAN') { + arg = Blockly.Arduino.valueToCode(block, 'NUM', Blockly.Arduino.ORDER_MULTIPLICATIVE) || '0'; + } else { + arg = Blockly.Arduino.valueToCode(block, 'NUM', Blockly.Arduino.ORDER_NONE) || '0'; + } + // First, handle cases which generate values that don't need parentheses + // wrapping the code. + switch (operator) { + case 'ABS': + code = 'abs(' + arg + ')'; + break; + case 'ROOT': + code = 'sqrt(' + arg + ')'; + break; + case 'POW10': + code = 'pow(10,' + arg + ')'; + break; + case 'SIN': + code = 'sin(' + arg + ')'; + break; + case 'COS': + code = 'cos(' + arg + ')'; + break; + case 'TAN': + code = 'tan(' + arg + ')'; + break; + default: + throw 'Unknown math operator: ' + operator; } - code = '-' + arg; - return [code, Blockly.Arduino.ORDER_UNARY_PREFIX]; - } - if (operator === 'SIN' || operator === 'COS' || operator === 'TAN') { - arg = Blockly.Arduino.valueToCode(block, 'NUM', Blockly.Arduino.ORDER_MULTIPLICATIVE) || '0'; - } else { - arg = Blockly.Arduino.valueToCode(block, 'NUM', Blockly.Arduino.ORDER_NONE) || '0'; - } - // First, handle cases which generate values that don't need parentheses - // wrapping the code. - switch (operator) { - case 'ABS': - code = 'abs(' + arg + ')'; - break; - case 'ROOT': - code = 'sqrt(' + arg + ')'; - break; - case 'POW10': - code = 'pow(10,' + arg + ')'; - break; - case 'SIN': - code = 'sin(' + arg + ')'; - break; - case 'COS': - code = 'cos(' + arg + ')'; - break; - case 'TAN': - code = 'tan(' + arg + ')'; - break; - default: - throw 'Unknown math operator: ' + operator; - } - if (code) { - return [code, Blockly.Arduino.ORDER_ATOMIC]; - } - return [code, Blockly.Arduino.ORDER_MULTIPLICATIVE]; + if (code) { + return [code, Blockly.Arduino.ORDER_ATOMIC]; + } + return [code, Blockly.Arduino.ORDER_MULTIPLICATIVE]; }; -Blockly.Arduino['math_constant'] = function(block) { - // Constants: PI, E, the Golden Rato, sqrt(2), 1/sqrt(2), INFINITY. - var CONSTANTS = { - 'PI': ['PI', Blockly.Arduino.ORDER_MEMBER], - 'GOLDEN_RATIO': - ['(1 + sqrt(5)) / 2', Blockly.Arduino.ORDER_MEMBER], - 'SQRT2': ['sqrt(2)', Blockly.Arduino.ORDER_MEMBER], - 'SQRT1_2': ['sqrt(1/2)', Blockly.Arduino.ORDER_MEMBER] - }; - return CONSTANTS[block.getFieldValue('CONSTANT')]; +Blockly.Arduino['math_constant'] = function (block) { + // Constants: PI, E, the Golden Rato, sqrt(2), 1/sqrt(2), INFINITY. + var CONSTANTS = { + 'PI': ['PI', Blockly.Arduino.ORDER_MEMBER], + 'GOLDEN_RATIO': + ['(1 + sqrt(5)) / 2', Blockly.Arduino.ORDER_MEMBER], + 'SQRT2': ['sqrt(2)', Blockly.Arduino.ORDER_MEMBER], + 'SQRT1_2': ['sqrt(1/2)', Blockly.Arduino.ORDER_MEMBER] + }; + return CONSTANTS[block.getFieldValue('CONSTANT')]; }; -Blockly.Arduino['math_number_property'] = function(block) { - // Check if a number is even, odd, prime, whole, positive, or negative - // or if it is divisible by certain number. Returns true or false. - var number_to_check = Blockly.Arduino.valueToCode(this, 'NUMBER_TO_CHECK', Blockly.Arduino.ORDER_MEMBER) || '0'; - var dropdown_property = this.getFieldValue('PROPERTY'); - var code; - if (dropdown_property == 'PRIME') { - // Prime is a special case as it is not a one-liner test. - var functionName = Blockly.Arduino.provideFunction_( - 'math_isPrime', - [ 'function ' + Blockly.Arduino.FUNCTION_NAME_PLACEHOLDER_ + '(n) {', - ' // https://en.wikipedia.org/wiki/Primality_test#Naive_methods', - ' if (n == 2 || n == 3) {', - ' return true;', - ' }', - ' // False if n is NaN, negative, is 1, or not whole.', - ' // And false if n is divisible by 2 or 3.', - ' if (isNaN(n) || n <= 1 || n % 1 != 0 || n % 2 == 0 ||' + - ' n % 3 == 0) {', - ' return false;', - ' }', - ' // Check all the numbers of form 6k +/- 1, up to sqrt(n).', - ' for (var x = 6; x <= sqrt(n) + 1; x += 6) {', - ' if (n % (x - 1) == 0 || n % (x + 1) == 0) {', - ' return false;', - ' }', - ' }', - ' return true;', - '}']); - code = functionName + '(' + number_to_check + ')'; - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; - } - switch (dropdown_property) { - case 'EVEN': - code = number_to_check + ' % 2 == 0'; - break; - case 'ODD': - code = number_to_check + ' % 2 == 1'; - break; - case 'WHOLE': - code = number_to_check + ' % 1 == 0'; - break; - case 'POSITIVE': - code = number_to_check + ' > 0'; - break; - case 'NEGATIVE': - code = number_to_check + ' < 0'; - break; - case 'DIVISIBLE_BY': - var divisor = Blockly.Arduino.valueToCode(this, 'DIVISOR', Blockly.Arduino.ORDER_MEMBER) || '0'; - code = number_to_check + ' % ' + divisor + ' == 0'; - break; - } - return [code, Blockly.Arduino.ORDER_EQUALITY]; +Blockly.Arduino['math_number_property'] = function (block) { + // Check if a number is even, odd, prime, whole, positive, or negative + // or if it is divisible by certain number. Returns true or false. + var number_to_check = Blockly.Arduino.valueToCode(this, 'NUMBER_TO_CHECK', Blockly.Arduino.ORDER_MEMBER) || '0'; + var dropdown_property = this.getFieldValue('PROPERTY'); + var code; + if (dropdown_property == 'PRIME') { + // Prime is a special case as it is not a one-liner test. + var functionName = Blockly.Arduino.provideFunction_( + 'math_isPrime', + ['function ' + Blockly.Arduino.FUNCTION_NAME_PLACEHOLDER_ + '(n) {', + ' // https://en.wikipedia.org/wiki/Primality_test#Naive_methods', + ' if (n == 2 || n == 3) {', + ' return true;', + ' }', + ' // False if n is NaN, negative, is 1, or not whole.', + ' // And false if n is divisible by 2 or 3.', + ' if (isNaN(n) || n <= 1 || n % 1 != 0 || n % 2 == 0 ||' + + ' n % 3 == 0) {', + ' return false;', + ' }', + ' // Check all the numbers of form 6k +/- 1, up to sqrt(n).', + ' for (var x = 6; x <= sqrt(n) + 1; x += 6) {', + ' if (n % (x - 1) == 0 || n % (x + 1) == 0) {', + ' return false;', + ' }', + ' }', + ' return true;', + '}']); + code = functionName + '(' + number_to_check + ')'; + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; + } + switch (dropdown_property) { + case 'EVEN': + code = number_to_check + ' % 2 == 0'; + break; + case 'ODD': + code = number_to_check + ' % 2 == 1'; + break; + case 'WHOLE': + code = number_to_check + ' % 1 == 0'; + break; + case 'POSITIVE': + code = number_to_check + ' > 0'; + break; + case 'NEGATIVE': + code = number_to_check + ' < 0'; + break; + case 'DIVISIBLE_BY': + var divisor = Blockly.Arduino.valueToCode(this, 'DIVISOR', Blockly.Arduino.ORDER_MEMBER) || '0'; + code = number_to_check + ' % ' + divisor + ' == 0'; + break; + } + return [code, Blockly.Arduino.ORDER_EQUALITY]; }; -Blockly.Arduino['math_change'] = function(block) { - // Add to a variable in place. - var argument0 = Blockly.Arduino.valueToCode(block, 'DELTA', - Blockly.Arduino.ORDER_ADDITION) || '0'; - var varName = Blockly.Arduino.variableDB_.getName( - block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); - return varName + ' = (typeof ' + varName + ' == \'number\' ? ' + varName + - ' : 0) + ' + argument0 + ';\n'; +Blockly.Arduino['math_change'] = function (block) { + // Add to a variable in place. + var argument0 = Blockly.Arduino.valueToCode(block, 'DELTA', + Blockly.Arduino.ORDER_ADDITION) || '0'; + var varName = Blockly.Arduino.variableDB_.getName( + block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + return varName + ' = (typeof ' + varName + ' == \'number\' ? ' + varName + + ' : 0) + ' + argument0 + ';\n'; }; // Trigonometry functions have a single operand. Blockly.Arduino['math_trig'] = Blockly.Arduino['math_single']; -Blockly.Arduino['math_modulo'] = function(block) { - // Remainder computation. - var argument0 = Blockly.Arduino.valueToCode(block, 'DIVIDEND', Blockly.Arduino.ORDER_MEMBER) || '0'; - var argument1 = Blockly.Arduino.valueToCode(block, 'DIVISOR', Blockly.Arduino.ORDER_MEMBER) || '0'; - var code = argument0 + ' % ' + argument1; - return [code, Blockly.Arduino.ORDER_MEMBER]; +Blockly.Arduino['math_modulo'] = function (block) { + // Remainder computation. + var argument0 = Blockly.Arduino.valueToCode(block, 'DIVIDEND', Blockly.Arduino.ORDER_MEMBER) || '0'; + var argument1 = Blockly.Arduino.valueToCode(block, 'DIVISOR', Blockly.Arduino.ORDER_MEMBER) || '0'; + var code = argument0 + ' % ' + argument1; + return [code, Blockly.Arduino.ORDER_MEMBER]; }; -Blockly.Arduino['math_random_int'] = function(block) { - // Random integer between [X] and [Y]. - var argument0 = Blockly.Arduino.valueToCode(block, 'FROM', - Blockly.Arduino.ORDER_COMMA) || '0'; - var argument1 = Blockly.Arduino.valueToCode(block, 'TO', - Blockly.Arduino.ORDER_COMMA) || '0'; - var functionName = Blockly.Arduino.provideFunction_( - 'mathRandomInt', - ['function ' + Blockly.Arduino.FUNCTION_NAME_PLACEHOLDER_ + - '(a, b) {', - ' if (a > b) {', - ' // Swap a and b to ensure a is smaller.', - ' var c = a;', - ' a = b;', - ' b = c;', - ' }', - ' return random(a, b);', - '}']); - var code = functionName + '(' + argument0 + ', ' + argument1 + ')'; - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; +Blockly.Arduino['math_random_int'] = function (block) { + // Random integer between [X] and [Y]. + var argument0 = Blockly.Arduino.valueToCode(block, 'FROM', + Blockly.Arduino.ORDER_COMMA) || '0'; + var argument1 = Blockly.Arduino.valueToCode(block, 'TO', + Blockly.Arduino.ORDER_COMMA) || '0'; + var functionName = Blockly.Arduino.provideFunction_( + 'mathRandomInt', + ['function ' + Blockly.Arduino.FUNCTION_NAME_PLACEHOLDER_ + + '(a, b) {', + ' if (a > b) {', + ' // Swap a and b to ensure a is smaller.', + ' var c = a;', + ' a = b;', + ' b = c;', + ' }', + ' return random(a, b);', + '}']); + var code = functionName + '(' + argument0 + ', ' + argument1 + ')'; + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; }; \ No newline at end of file diff --git a/blocklyduino/generators/arduino/blockly/procedures.js b/blocklyduino/generators/arduino/blockly/procedures.js index a247065..abc606a 100644 --- a/blocklyduino/generators/arduino/blockly/procedures.js +++ b/blocklyduino/generators/arduino/blockly/procedures.js @@ -29,83 +29,83 @@ goog.provide('Blockly.Arduino.procedures'); goog.require('Blockly.Arduino'); -Blockly.Arduino['procedures_defreturn'] = function(block) { - // Define a procedure with a return value. - var funcName = Blockly.Arduino.variableDB_.getName( - block.getFieldValue('NAME'), Blockly.Procedures.NAME_TYPE); - var branch = Blockly.Arduino.statementToCode(block, 'STACK'); - if (Blockly.Arduino.STATEMENT_PREFIX) { - var id = block.id.replace(/\$/g, '$$$$'); // Issue 251. - branch = Blockly.Arduino.prefixLines( - Blockly.Arduino.STATEMENT_PREFIX.replace(/%1/g, - '\'' + id + '\''), Blockly.Arduino.INDENT) + branch; - } - if (Blockly.Arduino.INFINITE_LOOP_TRAP) { - branch = Blockly.Arduino.INFINITE_LOOP_TRAP.replace(/%1/g, - '\'' + block.id + '\'') + branch; - } - var returnValue = Blockly.Arduino.valueToCode(block, 'RETURN', - Blockly.Arduino.ORDER_NONE) || ''; - if (returnValue) { - returnValue = Blockly.Arduino.INDENT + 'return ' + returnValue + ';\n'; - } - var returnType = returnValue ? 'int' : 'void'; - var args = []; - for (var i = 0; i < block.arguments_.length; i++) { - args[i] = 'int ' + Blockly.Arduino.variableDB_.getName(block.arguments_[i], - Blockly.Variables.NAME_TYPE); - } - var code = returnType + ' ' + funcName + '(' + args.join(', ') + ') {\n' + - branch + returnValue + '}\n'; - code = Blockly.Arduino.scrub_(block, code); - // Add % so as not to collide with helper functions in definitions list. - Blockly.Arduino.definitions_['%' + funcName] = code; - return null; +Blockly.Arduino['procedures_defreturn'] = function (block) { + // Define a procedure with a return value. + var funcName = Blockly.Arduino.variableDB_.getName( + block.getFieldValue('NAME'), Blockly.Procedures.NAME_TYPE); + var branch = Blockly.Arduino.statementToCode(block, 'STACK'); + if (Blockly.Arduino.STATEMENT_PREFIX) { + var id = block.id.replace(/\$/g, '$$$$'); // Issue 251. + branch = Blockly.Arduino.prefixLines( + Blockly.Arduino.STATEMENT_PREFIX.replace(/%1/g, + '\'' + id + '\''), Blockly.Arduino.INDENT) + branch; + } + if (Blockly.Arduino.INFINITE_LOOP_TRAP) { + branch = Blockly.Arduino.INFINITE_LOOP_TRAP.replace(/%1/g, + '\'' + block.id + '\'') + branch; + } + var returnValue = Blockly.Arduino.valueToCode(block, 'RETURN', + Blockly.Arduino.ORDER_NONE) || ''; + if (returnValue) { + returnValue = Blockly.Arduino.INDENT + 'return ' + returnValue + ';\n'; + } + var returnType = returnValue ? 'int' : 'void'; + var args = []; + for (var i = 0; i < block.arguments_.length; i++) { + args[i] = 'int ' + Blockly.Arduino.variableDB_.getName(block.arguments_[i], + Blockly.Variables.NAME_TYPE); + } + var code = returnType + ' ' + funcName + '(' + args.join(', ') + ') {\n' + + branch + returnValue + '}\n'; + code = Blockly.Arduino.scrub_(block, code); + // Add % so as not to collide with helper functions in definitions list. + Blockly.Arduino.definitions_['%' + funcName] = code; + return null; }; // Defining a procedure without a return value uses the same generator as // a procedure with a return value. Blockly.Arduino['procedures_defnoreturn'] = - Blockly.Arduino['procedures_defreturn']; + Blockly.Arduino['procedures_defreturn']; -Blockly.Arduino['procedures_callreturn'] = function(block) { - // Call a procedure with a return value. - var funcName = Blockly.Arduino.variableDB_.getName( - block.getFieldValue('NAME'), Blockly.Procedures.NAME_TYPE); - var args = []; - for (var i = 0; i < block.arguments_.length; i++) { - args[i] = Blockly.Arduino.valueToCode(block, 'ARG' + i, - Blockly.Arduino.ORDER_COMMA) || 'null'; - } - var code = funcName + '(' + args.join(', ') + ')'; - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; +Blockly.Arduino['procedures_callreturn'] = function (block) { + // Call a procedure with a return value. + var funcName = Blockly.Arduino.variableDB_.getName( + block.getFieldValue('NAME'), Blockly.Procedures.NAME_TYPE); + var args = []; + for (var i = 0; i < block.arguments_.length; i++) { + args[i] = Blockly.Arduino.valueToCode(block, 'ARG' + i, + Blockly.Arduino.ORDER_COMMA) || 'null'; + } + var code = funcName + '(' + args.join(', ') + ')'; + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; }; -Blockly.Arduino['procedures_callnoreturn'] = function(block) { - // Call a procedure with no return value. - var funcName = Blockly.Arduino.variableDB_.getName( - block.getFieldValue('NAME'), Blockly.Procedures.NAME_TYPE); - var args = []; - for (var i = 0; i < block.arguments_.length; i++) { - args[i] = Blockly.Arduino.valueToCode(block, 'ARG' + i, - Blockly.Arduino.ORDER_COMMA) || 'null'; - } - var code = funcName + '(' + args.join(', ') + ');\n'; - return code; +Blockly.Arduino['procedures_callnoreturn'] = function (block) { + // Call a procedure with no return value. + var funcName = Blockly.Arduino.variableDB_.getName( + block.getFieldValue('NAME'), Blockly.Procedures.NAME_TYPE); + var args = []; + for (var i = 0; i < block.arguments_.length; i++) { + args[i] = Blockly.Arduino.valueToCode(block, 'ARG' + i, + Blockly.Arduino.ORDER_COMMA) || 'null'; + } + var code = funcName + '(' + args.join(', ') + ');\n'; + return code; }; -Blockly.Arduino['procedures_ifreturn'] = function(block) { - // Conditionally return value from a procedure. - var condition = Blockly.Arduino.valueToCode(block, 'CONDITION', - Blockly.Arduino.ORDER_NONE) || 'false'; - var code = 'if (' + condition + ') {\n'; - if (block.hasReturnValue_) { - var value = Blockly.Arduino.valueToCode(block, 'VALUE', - Blockly.Arduino.ORDER_NONE) || 'null'; - code += Blockly.Arduino.INDENT + 'return ' + value + ';\n'; - } else { - code += Blockly.Arduino.INDENT + 'return;\n'; - } - code += '}\n'; - return code; +Blockly.Arduino['procedures_ifreturn'] = function (block) { + // Conditionally return value from a procedure. + var condition = Blockly.Arduino.valueToCode(block, 'CONDITION', + Blockly.Arduino.ORDER_NONE) || 'false'; + var code = 'if (' + condition + ') {\n'; + if (block.hasReturnValue_) { + var value = Blockly.Arduino.valueToCode(block, 'VALUE', + Blockly.Arduino.ORDER_NONE) || 'null'; + code += Blockly.Arduino.INDENT + 'return ' + value + ';\n'; + } else { + code += Blockly.Arduino.INDENT + 'return;\n'; + } + code += '}\n'; + return code; }; diff --git a/blocklyduino/generators/arduino/blockly/text.js b/blocklyduino/generators/arduino/blockly/text.js index c060aa2..5bb1e5f 100644 --- a/blocklyduino/generators/arduino/blockly/text.js +++ b/blocklyduino/generators/arduino/blockly/text.js @@ -29,115 +29,115 @@ goog.provide('Blockly.Arduino.texts'); goog.require('Blockly.Arduino'); -Blockly.Arduino['text'] = function(block) { - // Text value. - var code = Blockly.Arduino.quote_(block.getFieldValue('TEXT')); - return [code, Blockly.Arduino.ORDER_ATOMIC]; +Blockly.Arduino['text'] = function (block) { + // Text value. + var code = Blockly.Arduino.quote_(block.getFieldValue('TEXT')); + return [code, Blockly.Arduino.ORDER_ATOMIC]; }; -Blockly.Arduino['text_join'] = function(block) { - // Create a string made up of any number of elements of any type. - switch (block.itemCount_) { - case 0: - return ['\'\'', Blockly.Arduino.ORDER_ATOMIC]; - case 1: - var element = Blockly.Arduino.valueToCode(block, 'ADD0', - Blockly.Arduino.ORDER_NONE) || '\'\''; - var code = 'String(' + element + ')'; - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; - case 2: - var element0 = Blockly.Arduino.valueToCode(block, 'ADD0', - Blockly.Arduino.ORDER_NONE) || '\'\''; - var element1 = Blockly.Arduino.valueToCode(block, 'ADD1', - Blockly.Arduino.ORDER_NONE) || '\'\''; - var code = 'String(' + element0 + ') + String(' + element1 + ')'; - return [code, Blockly.Arduino.ORDER_ADDITION]; - default: - var elements = new Array(block.itemCount_); - for (var i = 0; i < block.itemCount_; i++) { - elements[i] = Blockly.Arduino.valueToCode(block, 'ADD' + i, - Blockly.Arduino.ORDER_COMMA) || '\'\''; - } - var code = '[' + elements.join(',') + '].join(\'\')'; - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; - } +Blockly.Arduino['text_join'] = function (block) { + // Create a string made up of any number of elements of any type. + switch (block.itemCount_) { + case 0: + return ['\'\'', Blockly.Arduino.ORDER_ATOMIC]; + case 1: + var element = Blockly.Arduino.valueToCode(block, 'ADD0', + Blockly.Arduino.ORDER_NONE) || '\'\''; + var code = 'String(' + element + ')'; + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; + case 2: + var element0 = Blockly.Arduino.valueToCode(block, 'ADD0', + Blockly.Arduino.ORDER_NONE) || '\'\''; + var element1 = Blockly.Arduino.valueToCode(block, 'ADD1', + Blockly.Arduino.ORDER_NONE) || '\'\''; + var code = 'String(' + element0 + ') + String(' + element1 + ')'; + return [code, Blockly.Arduino.ORDER_ADDITION]; + default: + var elements = new Array(block.itemCount_); + for (var i = 0; i < block.itemCount_; i++) { + elements[i] = Blockly.Arduino.valueToCode(block, 'ADD' + i, + Blockly.Arduino.ORDER_COMMA) || '\'\''; + } + var code = '[' + elements.join(',') + '].join(\'\')'; + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; + } }; -Blockly.Arduino['text_append'] = function(block) { - // Append to a variable in place. - var varName = Blockly.Arduino.variableDB_.getName( - block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); - var value = Blockly.Arduino.valueToCode(block, 'TEXT', - Blockly.Arduino.ORDER_NONE) || '\'\''; - return varName + ' = String(' + varName + ') + String(' + value + ');\n'; +Blockly.Arduino['text_append'] = function (block) { + // Append to a variable in place. + var varName = Blockly.Arduino.variableDB_.getName( + block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + var value = Blockly.Arduino.valueToCode(block, 'TEXT', + Blockly.Arduino.ORDER_NONE) || '\'\''; + return varName + ' = String(' + varName + ') + String(' + value + ');\n'; }; -Blockly.Arduino['text_length'] = function(block) { - // String or array length. - var text = Blockly.Arduino.valueToCode(block, 'VALUE', - Blockly.Arduino.ORDER_FUNCTION_CALL) || '\'\''; - return [text + '.length', Blockly.Arduino.ORDER_MEMBER]; +Blockly.Arduino['text_length'] = function (block) { + // String or array length. + var text = Blockly.Arduino.valueToCode(block, 'VALUE', + Blockly.Arduino.ORDER_FUNCTION_CALL) || '\'\''; + return [text + '.length', Blockly.Arduino.ORDER_MEMBER]; }; -Blockly.Arduino['text_isEmpty'] = function(block) { - // Is the string null or array empty? - var text = Blockly.Arduino.valueToCode(block, 'VALUE', - Blockly.Arduino.ORDER_MEMBER) || '\'\''; - return ['!' + text + '.length', Blockly.Arduino.ORDER_LOGICAL_NOT]; +Blockly.Arduino['text_isEmpty'] = function (block) { + // Is the string null or array empty? + var text = Blockly.Arduino.valueToCode(block, 'VALUE', + Blockly.Arduino.ORDER_MEMBER) || '\'\''; + return ['!' + text + '.length', Blockly.Arduino.ORDER_LOGICAL_NOT]; }; -Blockly.Arduino['text_indexOf'] = function(block) { - // Search the text for a substring. - var operator = block.getFieldValue('END') == 'FIRST' ? - 'indexOf' : 'lastIndexOf'; - var substring = Blockly.Arduino.valueToCode(block, 'FIND', - Blockly.Arduino.ORDER_NONE) || '\'\''; - var text = Blockly.Arduino.valueToCode(block, 'VALUE', - Blockly.Arduino.ORDER_MEMBER) || '\'\''; - var code = text + '.' + operator + '(' + substring + ')'; - // Adjust index if using one-based indices. - if (block.workspace.options.oneBasedIndex) { - return [code + ' + 1', Blockly.Arduino.ORDER_ADDITION]; - } - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; +Blockly.Arduino['text_indexOf'] = function (block) { + // Search the text for a substring. + var operator = block.getFieldValue('END') == 'FIRST' ? + 'indexOf' : 'lastIndexOf'; + var substring = Blockly.Arduino.valueToCode(block, 'FIND', + Blockly.Arduino.ORDER_NONE) || '\'\''; + var text = Blockly.Arduino.valueToCode(block, 'VALUE', + Blockly.Arduino.ORDER_MEMBER) || '\'\''; + var code = text + '.' + operator + '(' + substring + ')'; + // Adjust index if using one-based indices. + if (block.workspace.options.oneBasedIndex) { + return [code + ' + 1', Blockly.Arduino.ORDER_ADDITION]; + } + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; }; -Blockly.Arduino['text_charAt'] = function(block) { - // Get letter at index. - // Note: Until January 2013 this block did not have the WHERE input. - var where = block.getFieldValue('WHERE') || 'FROM_START'; - var textOrder = (where == 'RANDOM') ? Blockly.Arduino.ORDER_NONE : - Blockly.Arduino.ORDER_MEMBER; - var text = Blockly.Arduino.valueToCode(block, 'VALUE', - textOrder) || '\'\''; - switch (where) { - case 'FIRST': - var code = text + '.charAt(0)'; - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; - case 'LAST': - var code = text + '.slice(-1)'; - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; - case 'FROM_START': - var at = Blockly.Arduino.getAdjusted(block, 'AT'); - // Adjust index if using one-based indices. - var code = text + '.charAt(' + at + ')'; - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; - case 'FROM_END': - var at = Blockly.Arduino.getAdjusted(block, 'AT', 1, true); - var code = text + '.slice(' + at + ').charAt(0)'; - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; - case 'RANDOM': - var functionName = Blockly.Arduino.provideFunction_( - 'textRandomLetter', - ['function ' + Blockly.Arduino.FUNCTION_NAME_PLACEHOLDER_ + - '(text) {', - ' var x = Math.floor(Math.random() * text.length);', - ' return text[x];', - '}']); - var code = functionName + '(' + text + ')'; - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; - } - throw 'Unhandled option (text_charAt).'; +Blockly.Arduino['text_charAt'] = function (block) { + // Get letter at index. + // Note: Until January 2013 this block did not have the WHERE input. + var where = block.getFieldValue('WHERE') || 'FROM_START'; + var textOrder = (where == 'RANDOM') ? Blockly.Arduino.ORDER_NONE : + Blockly.Arduino.ORDER_MEMBER; + var text = Blockly.Arduino.valueToCode(block, 'VALUE', + textOrder) || '\'\''; + switch (where) { + case 'FIRST': + var code = text + '.charAt(0)'; + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; + case 'LAST': + var code = text + '.slice(-1)'; + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; + case 'FROM_START': + var at = Blockly.Arduino.getAdjusted(block, 'AT'); + // Adjust index if using one-based indices. + var code = text + '.charAt(' + at + ')'; + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; + case 'FROM_END': + var at = Blockly.Arduino.getAdjusted(block, 'AT', 1, true); + var code = text + '.slice(' + at + ').charAt(0)'; + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; + case 'RANDOM': + var functionName = Blockly.Arduino.provideFunction_( + 'textRandomLetter', + ['function ' + Blockly.Arduino.FUNCTION_NAME_PLACEHOLDER_ + + '(text) {', + ' var x = Math.floor(Math.random() * text.length);', + ' return text[x];', + '}']); + var code = functionName + '(' + text + ')'; + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; + } + throw 'Unhandled option (text_charAt).'; }; /** @@ -148,205 +148,205 @@ Blockly.Arduino['text_charAt'] = function(block) { * @param {string=} opt_at The optional offset when indexing from start/end. * @return {string} Index expression. */ -Blockly.Arduino.text.getIndex_ = function(stringName, where, opt_at) { - if (where == 'FIRST') { - return '0'; - } else if (where == 'FROM_END') { - return stringName + '.length - 1 - ' + opt_at; - } else if (where == 'LAST') { - return stringName + '.length - 1'; - } else { - return opt_at; - } +Blockly.Arduino.text.getIndex_ = function (stringName, where, opt_at) { + if (where == 'FIRST') { + return '0'; + } else if (where == 'FROM_END') { + return stringName + '.length - 1 - ' + opt_at; + } else if (where == 'LAST') { + return stringName + '.length - 1'; + } else { + return opt_at; + } }; -Blockly.Arduino['text_getSubstring'] = function(block) { - // Get substring. - var text = Blockly.Arduino.valueToCode(block, 'STRING', - Blockly.Arduino.ORDER_FUNCTION_CALL) || '\'\''; - var where1 = block.getFieldValue('WHERE1'); - var where2 = block.getFieldValue('WHERE2'); - if (where1 == 'FIRST' && where2 == 'LAST') { - var code = text; - } else if (text.match(/^'?\w+'?$/) || - (where1 != 'FROM_END' && where1 != 'LAST' && - where2 != 'FROM_END' && where2 != 'LAST')) { - // If the text is a variable or literal or doesn't require a call for - // length, don't generate a helper function. - switch (where1) { - case 'FROM_START': +Blockly.Arduino['text_getSubstring'] = function (block) { + // Get substring. + var text = Blockly.Arduino.valueToCode(block, 'STRING', + Blockly.Arduino.ORDER_FUNCTION_CALL) || '\'\''; + var where1 = block.getFieldValue('WHERE1'); + var where2 = block.getFieldValue('WHERE2'); + if (where1 == 'FIRST' && where2 == 'LAST') { + var code = text; + } else if (text.match(/^'?\w+'?$/) || + (where1 != 'FROM_END' && where1 != 'LAST' && + where2 != 'FROM_END' && where2 != 'LAST')) { + // If the text is a variable or literal or doesn't require a call for + // length, don't generate a helper function. + switch (where1) { + case 'FROM_START': + var at1 = Blockly.Arduino.getAdjusted(block, 'AT1'); + break; + case 'FROM_END': + var at1 = Blockly.Arduino.getAdjusted(block, 'AT1', 1, false, + Blockly.Arduino.ORDER_SUBTRACTION); + at1 = text + '.length - ' + at1; + break; + case 'FIRST': + var at1 = '0'; + break; + default: + throw 'Unhandled option (text_getSubstring).'; + } + switch (where2) { + case 'FROM_START': + var at2 = Blockly.Arduino.getAdjusted(block, 'AT2', 1); + break; + case 'FROM_END': + var at2 = Blockly.Arduino.getAdjusted(block, 'AT2', 0, false, + Blockly.Arduino.ORDER_SUBTRACTION); + at2 = text + '.length - ' + at2; + break; + case 'LAST': + var at2 = text + '.length'; + break; + default: + throw 'Unhandled option (text_getSubstring).'; + } + code = text + '.slice(' + at1 + ', ' + at2 + ')'; + } else { var at1 = Blockly.Arduino.getAdjusted(block, 'AT1'); - break; - case 'FROM_END': - var at1 = Blockly.Arduino.getAdjusted(block, 'AT1', 1, false, - Blockly.Arduino.ORDER_SUBTRACTION); - at1 = text + '.length - ' + at1; - break; - case 'FIRST': - var at1 = '0'; - break; - default: - throw 'Unhandled option (text_getSubstring).'; - } - switch (where2) { - case 'FROM_START': - var at2 = Blockly.Arduino.getAdjusted(block, 'AT2', 1); - break; - case 'FROM_END': - var at2 = Blockly.Arduino.getAdjusted(block, 'AT2', 0, false, - Blockly.Arduino.ORDER_SUBTRACTION); - at2 = text + '.length - ' + at2; - break; - case 'LAST': - var at2 = text + '.length'; - break; - default: - throw 'Unhandled option (text_getSubstring).'; - } - code = text + '.slice(' + at1 + ', ' + at2 + ')'; - } else { - var at1 = Blockly.Arduino.getAdjusted(block, 'AT1'); - var at2 = Blockly.Arduino.getAdjusted(block, 'AT2'); - var getIndex_ = Blockly.Arduino.text.getIndex_; - var wherePascalCase = {'FIRST': 'First', 'LAST': 'Last', - 'FROM_START': 'FromStart', 'FROM_END': 'FromEnd'}; - var functionName = Blockly.Arduino.provideFunction_( - 'subsequence' + wherePascalCase[where1] + wherePascalCase[where2], - ['function ' + Blockly.Arduino.FUNCTION_NAME_PLACEHOLDER_ + - '(sequence' + - // The value for 'FROM_END' and'FROM_START' depends on `at` so - // we add it as a parameter. - ((where1 == 'FROM_END' || where1 == 'FROM_START') ? ', at1' : '') + - ((where2 == 'FROM_END' || where2 == 'FROM_START') ? ', at2' : '') + - ') {', - ' var start = ' + getIndex_('sequence', where1, 'at1') + ';', - ' var end = ' + getIndex_('sequence', where2, 'at2') + ' + 1;', - ' return sequence.slice(start, end);', - '}']); - var code = functionName + '(' + text + - // The value for 'FROM_END' and 'FROM_START' depends on `at` so we - // pass it. - ((where1 == 'FROM_END' || where1 == 'FROM_START') ? ', ' + at1 : '') + - ((where2 == 'FROM_END' || where2 == 'FROM_START') ? ', ' + at2 : '') + - ')'; - } - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; -}; + var at2 = Blockly.Arduino.getAdjusted(block, 'AT2'); + var getIndex_ = Blockly.Arduino.text.getIndex_; + var wherePascalCase = {'FIRST': 'First', 'LAST': 'Last', + 'FROM_START': 'FromStart', 'FROM_END': 'FromEnd'}; + var functionName = Blockly.Arduino.provideFunction_( + 'subsequence' + wherePascalCase[where1] + wherePascalCase[where2], + ['function ' + Blockly.Arduino.FUNCTION_NAME_PLACEHOLDER_ + + '(sequence' + + // The value for 'FROM_END' and'FROM_START' depends on `at` so + // we add it as a parameter. + ((where1 == 'FROM_END' || where1 == 'FROM_START') ? ', at1' : '') + + ((where2 == 'FROM_END' || where2 == 'FROM_START') ? ', at2' : '') + + ') {', + ' var start = ' + getIndex_('sequence', where1, 'at1') + ';', + ' var end = ' + getIndex_('sequence', where2, 'at2') + ' + 1;', + ' return sequence.slice(start, end);', + '}']); + var code = functionName + '(' + text + + // The value for 'FROM_END' and 'FROM_START' depends on `at` so we + // pass it. + ((where1 == 'FROM_END' || where1 == 'FROM_START') ? ', ' + at1 : '') + + ((where2 == 'FROM_END' || where2 == 'FROM_START') ? ', ' + at2 : '') + + ')'; + } + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; + }; -Blockly.Arduino['text_changeCase'] = function(block) { - // Change capitalization. - var OPERATORS = { - 'UPPERCASE': '.toUpperCase()', - 'LOWERCASE': '.toLowerCase()', - 'TITLECASE': null - }; - var operator = OPERATORS[block.getFieldValue('CASE')]; - var textOrder = operator ? Blockly.Arduino.ORDER_MEMBER : - Blockly.Arduino.ORDER_NONE; - var text = Blockly.Arduino.valueToCode(block, 'TEXT', - textOrder) || '\'\''; - if (operator) { - // Upper and lower case are functions built into Arduino. - var code = text + operator; - } else { - // Title case is not a native Arduino function. Define one. - var functionName = Blockly.Arduino.provideFunction_( - 'textToTitleCase', - ['function ' + Blockly.Arduino.FUNCTION_NAME_PLACEHOLDER_ + - '(str) {', - ' return str.replace(/\\S+/g,', - ' function(txt) {return txt[0].toUpperCase() + ' + - 'txt.substring(1).toLowerCase();});', - '}']); - var code = functionName + '(' + text + ')'; - } - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; -}; + Blockly.Arduino['text_changeCase'] = function (block) { + // Change capitalization. + var OPERATORS = { + 'UPPERCASE': '.toUpperCase()', + 'LOWERCASE': '.toLowerCase()', + 'TITLECASE': null + }; + var operator = OPERATORS[block.getFieldValue('CASE')]; + var textOrder = operator ? Blockly.Arduino.ORDER_MEMBER : + Blockly.Arduino.ORDER_NONE; + var text = Blockly.Arduino.valueToCode(block, 'TEXT', + textOrder) || '\'\''; + if (operator) { + // Upper and lower case are functions built into Arduino. + var code = text + operator; + } else { + // Title case is not a native Arduino function. Define one. + var functionName = Blockly.Arduino.provideFunction_( + 'textToTitleCase', + ['function ' + Blockly.Arduino.FUNCTION_NAME_PLACEHOLDER_ + + '(str) {', + ' return str.replace(/\\S+/g,', + ' function(txt) {return txt[0].toUpperCase() + ' + + 'txt.substring(1).toLowerCase();});', + '}']); + var code = functionName + '(' + text + ')'; + } + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; + }; -Blockly.Arduino['text_trim'] = function(block) { - // Trim spaces. - var OPERATORS = { - 'LEFT': ".replace(/^[\\s\\xa0]+/, '')", - 'RIGHT': ".replace(/[\\s\\xa0]+$/, '')", - 'BOTH': '.trim()' - }; - var operator = OPERATORS[block.getFieldValue('MODE')]; - var text = Blockly.Arduino.valueToCode(block, 'TEXT', - Blockly.Arduino.ORDER_MEMBER) || '\'\''; - return [text + operator, Blockly.Arduino.ORDER_FUNCTION_CALL]; -}; + Blockly.Arduino['text_trim'] = function (block) { + // Trim spaces. + var OPERATORS = { + 'LEFT': ".replace(/^[\\s\\xa0]+/, '')", + 'RIGHT': ".replace(/[\\s\\xa0]+$/, '')", + 'BOTH': '.trim()' + }; + var operator = OPERATORS[block.getFieldValue('MODE')]; + var text = Blockly.Arduino.valueToCode(block, 'TEXT', + Blockly.Arduino.ORDER_MEMBER) || '\'\''; + return [text + operator, Blockly.Arduino.ORDER_FUNCTION_CALL]; + }; -Blockly.Arduino['text_print'] = function(block) { - // Print statement. - var msg = Blockly.Arduino.valueToCode(block, 'TEXT', - Blockly.Arduino.ORDER_NONE) || '\'\''; - return 'window.alert(' + msg + ');\n'; -}; + Blockly.Arduino['text_print'] = function (block) { + // Print statement. + var msg = Blockly.Arduino.valueToCode(block, 'TEXT', + Blockly.Arduino.ORDER_NONE) || '\'\''; + return 'window.alert(' + msg + ');\n'; + }; -Blockly.Arduino['text_prompt_ext'] = function(block) { - // Prompt function. - if (block.getField('TEXT')) { - // Internal message. - var msg = Blockly.Arduino.quote_(block.getFieldValue('TEXT')); - } else { - // External message. - var msg = Blockly.Arduino.valueToCode(block, 'TEXT', - Blockly.Arduino.ORDER_NONE) || '\'\''; - } - var code = 'window.prompt(' + msg + ')'; - var toNumber = block.getFieldValue('TYPE') == 'NUMBER'; - if (toNumber) { - code = 'parseFloat(' + code + ')'; - } - return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; -}; + Blockly.Arduino['text_prompt_ext'] = function (block) { + // Prompt function. + if (block.getField('TEXT')) { + // Internal message. + var msg = Blockly.Arduino.quote_(block.getFieldValue('TEXT')); + } else { + // External message. + var msg = Blockly.Arduino.valueToCode(block, 'TEXT', + Blockly.Arduino.ORDER_NONE) || '\'\''; + } + var code = 'window.prompt(' + msg + ')'; + var toNumber = block.getFieldValue('TYPE') == 'NUMBER'; + if (toNumber) { + code = 'parseFloat(' + code + ')'; + } + return [code, Blockly.Arduino.ORDER_FUNCTION_CALL]; + }; -Blockly.Arduino['text_prompt'] = Blockly.Arduino['text_prompt_ext']; + Blockly.Arduino['text_prompt'] = Blockly.Arduino['text_prompt_ext']; -Blockly.Arduino['text_count'] = function(block) { - var text = Blockly.Arduino.valueToCode(block, 'TEXT', - Blockly.Arduino.ORDER_MEMBER) || '\'\''; - var sub = Blockly.Arduino.valueToCode(block, 'SUB', - Blockly.Arduino.ORDER_NONE) || '\'\''; - var functionName = Blockly.Arduino.provideFunction_( - 'textCount', - ['function ' + Blockly.Arduino.FUNCTION_NAME_PLACEHOLDER_ + - '(haystack, needle) {', - ' if (needle.length === 0) {', - ' return haystack.length + 1;', - ' } else {', - ' return haystack.split(needle).length - 1;', - ' }', - '}']); - var code = functionName + '(' + text + ', ' + sub + ')'; - return [code, Blockly.Arduino.ORDER_SUBTRACTION]; -}; + Blockly.Arduino['text_count'] = function (block) { + var text = Blockly.Arduino.valueToCode(block, 'TEXT', + Blockly.Arduino.ORDER_MEMBER) || '\'\''; + var sub = Blockly.Arduino.valueToCode(block, 'SUB', + Blockly.Arduino.ORDER_NONE) || '\'\''; + var functionName = Blockly.Arduino.provideFunction_( + 'textCount', + ['function ' + Blockly.Arduino.FUNCTION_NAME_PLACEHOLDER_ + + '(haystack, needle) {', + ' if (needle.length === 0) {', + ' return haystack.length + 1;', + ' } else {', + ' return haystack.split(needle).length - 1;', + ' }', + '}']); + var code = functionName + '(' + text + ', ' + sub + ')'; + return [code, Blockly.Arduino.ORDER_SUBTRACTION]; + }; -Blockly.Arduino['text_replace'] = function(block) { - var text = Blockly.Arduino.valueToCode(block, 'TEXT', - Blockly.Arduino.ORDER_MEMBER) || '\'\''; - var from = Blockly.Arduino.valueToCode(block, 'FROM', - Blockly.Arduino.ORDER_NONE) || '\'\''; - var to = Blockly.Arduino.valueToCode(block, 'TO', - Blockly.Arduino.ORDER_NONE) || '\'\''; - // The regex escaping code below is taken from the implementation of - // goog.string.regExpEscape. - var functionName = Blockly.Arduino.provideFunction_( - 'textReplace', - ['function ' + Blockly.Arduino.FUNCTION_NAME_PLACEHOLDER_ + - '(haystack, needle, replacement) {', - ' needle = ' + - 'needle.replace(/([-()\\[\\]{}+?*.$\\^|,:#online documentation", //CLI_functions.js config_sideButton_span: "Control del compilador Arduino CLI", @@ -87,7 +90,7 @@ var MSG = { cleanCLIcacheButton_success_msg: "Netejat!", listBoardsButton_msg: "S'està cercant la placa...\n", installBoardsButton_msg: "S'està instal·lant el suport de la placa, espera...\n", - searchlLibButton_msg: "S'està cercant la biblioteca...\n", + searchlLibButton_msg: "S'està cercant la biblioteca...\n", installLibButton_msg: "S'està instal·lant la biblioteca...\n", coreUpdateButton_span: "actualitza nucli i biblioteques", cleanCLIcacheButton_span: "S'està netejant memòria cau", diff --git a/blocklyduino/msg/UI_de.js b/blocklyduino/msg/UI_de.js index 7db36eb..8b2ce66 100644 --- a/blocklyduino/msg/UI_de.js +++ b/blocklyduino/msg/UI_de.js @@ -17,6 +17,8 @@ var MSG = { xmlError: "Deine gespeicherte Datei konnte nicht geladen werden. Vielleicht wurde sie mit einer anderen Version von Blockly erstellt.", badXml: "Fehler beim Parsen von XML:\n%1\n\nWähle 'OK' zum Verwerfen deiner Änderungen oder 'Abbrechen' zum weiteren Bearbeiten des XML.", languageSpan: "choose language", + interfaceColorSpan: "interface theme", + codeEditorColorSpan: "code editor theme", themeSpan: "choose theme", renderSpan: "choose renderer", fullScreenButton_span: "full screen", @@ -51,7 +53,7 @@ var MSG = { themeHighContrastSpan: "High Contrast", themeDarkSpan: "Dark", themeBwSpan: "Black & White", - compilationInProgress: "Board", + compilationInProgress: "Board", keyMappingModalSpan: "Set key mappings below", detailedCompilation_span: "Detailed compilation verbose", CLI_title_span: "Arduino CLI setup", @@ -77,6 +79,7 @@ var MSG = { optionFontSizeBlocks: "Blocks Font Size", optionFontSizePage: "Page Font Size", optionFontSpacingPage: "Page Font Spacing", + optionFontSizeCodeEditor: "Code Editor Font Size", keyMappingExplanationSpan: "accessibility: online documentation", //CLI_functions.js config_sideButton_span: "Arduino CLI control", @@ -87,7 +90,7 @@ var MSG = { cleanCLIcacheButton_success_msg: "Cleaned!", listBoardsButton_msg: "Searching for board...\n", installBoardsButton_msg: "Installing board support, wait...\n", - searchlLibButton_msg: "Searching for library...\n", + searchlLibButton_msg: "Searching for library...\n", installLibButton_msg: "Installing library...\n", coreUpdateButton_span: "update core and libraries", cleanCLIcacheButton_span: "cleaning cache", diff --git a/blocklyduino/msg/UI_en.js b/blocklyduino/msg/UI_en.js index 4e9d670..96ecc85 100644 --- a/blocklyduino/msg/UI_en.js +++ b/blocklyduino/msg/UI_en.js @@ -17,8 +17,10 @@ var MSG = { xmlError: "Could not load your saved file. Perhaps it was created with a different version of S4E?", badXml: "Error parsing XML:\n%1\n\nSelect 'OK' to abandon your changes or 'Cancel' to further edit the file.", languageSpan: "choose language", - themeSpan: "choose theme", - renderSpan: "choose renderer", + interfaceColorSpan: "interface theme", + codeEditorColorSpan: "code editor theme", + themeSpan: "choose block theme", + renderSpan: "choose block renderer", fullScreenButton_span: "full screen", undoButton_span: "Undo", redoButton_span: "Redo", @@ -77,6 +79,7 @@ var MSG = { optionFontSizeBlocks: "Blocks Font Size", optionFontSizePage: "Page Font Size", optionFontSpacingPage: "Page Font Spacing", + optionFontSizeCodeEditor: "Code Editor Font Size", keyMappingExplanationSpan: "accessibility: online documentation", //CLI_functions.js config_sideButton_span: "Arduino CLI control", @@ -87,7 +90,7 @@ var MSG = { cleanCLIcacheButton_success_msg: "Cleaned!", listBoardsButton_msg: "Searching for board...\n", installBoardsButton_msg: "Installing board support, wait...\n", - searchlLibButton_msg: "Searching for library...\n", + searchlLibButton_msg: "Searching for library...\n", installLibButton_msg: "Installing library...\n", coreUpdateButton_span: "update core and libraries", cleanCLIcacheButton_span: "cleaning cache", diff --git a/blocklyduino/msg/UI_es.js b/blocklyduino/msg/UI_es.js index 197c0f1..d88dd18 100644 --- a/blocklyduino/msg/UI_es.js +++ b/blocklyduino/msg/UI_es.js @@ -1,8 +1,8 @@ var MSG = { title: "BlocklyDuino", - appName: "BlocklyDuino", + appName: "BlocklyDuino", blocks: "Bloques", - prog: "Program", + prog: "Program", catLogic: "💡 Lógica", catLoops: "↻ Bucles", catMath: "+ Matemáticas", @@ -17,6 +17,8 @@ var MSG = { xmlError: "No se puede descargar vuestro fichero guardado. Quizás se ha creado con un versión diferente de S4E?", badXml: "Error de análisis XML:\n%1\n\nSelecciona 'De acuerdo' para abandonar los cambios o 'Cancela' para continuar editando el fichero.", languageSpan: "escoge idioma", + interfaceColorSpan: "interface theme", + codeEditorColorSpan: "code editor theme", themeSpan: "escoge tema", renderSpan: "escoge renderizador", fullScreenButton_span: "full screen", @@ -77,6 +79,7 @@ var MSG = { optionFontSizeBlocks: "Tamaño del tipo de letra bloques", optionFontSizePage: "Tamaño del tipo de letra página", optionFontSpacingPage: "Espaciado de letra página", + optionFontSizeCodeEditor: "Code Editor Font Size", keyMappingExplanationSpan: "accessibility: online documentation", //CLI_functions.js config_sideButton_span: "Control del compilador Arduino CLI", @@ -87,7 +90,7 @@ var MSG = { cleanCLIcacheButton_success_msg: "Limpiado!", listBoardsButton_msg: "Se está buscando la placa...\n", installBoardsButton_msg: "Se está instalando el soporte de la placa, espera...\n", - searchlLibButton_msg: "Se está buscando la biblioteca...\n", + searchlLibButton_msg: "Se está buscando la biblioteca...\n", installLibButton_msg: "Se está instalando la biblioteca...\n", coreUpdateButton_span: "actualiza núcleo y bibliotecas", cleanCLIcacheButton_span: "Se está limpiando caché", diff --git a/blocklyduino/msg/UI_fr.js b/blocklyduino/msg/UI_fr.js index feb1137..2c9a7d7 100644 --- a/blocklyduino/msg/UI_fr.js +++ b/blocklyduino/msg/UI_fr.js @@ -17,8 +17,10 @@ var MSG = { xmlError: "Impossible de charger le fichier de sauvegarde. Peut être a t-il été créé avec une autre version de Blockly ?", badXml: "Erreur d’analyse du fichier :\n%1\n\nSélectionner 'OK' pour abandonner vos modifications ou 'Annuler' pour continuer à modifier le fichier.", languageSpan: "choix de la langue", - themeSpan: "choix du thème", - renderSpan: "choix de la forme", + interfaceColorSpan: "choix du thème de l'interface", + codeEditorColorSpan: "choix du thème du code", + themeSpan: "choix du thème des blocs", + renderSpan: "choix de la forme des blocs", fullScreenButton_span: "plein écran", undoButton_span: "annuler", redoButton_span: "refaire", @@ -73,10 +75,11 @@ var MSG = { actionName12: "espace de travail vers la droite", actionName13: "basculer la navigation clavier", setup_sideButton_span: "configuration", - fontSizeSpan: "rendu", + fontSizeSpan: "choix de la taille", optionFontSizeBlocks: "police des blocs", - optionFontSizePage: "taille des écritures", + optionFontSizePage: "police de l'interface", optionFontSpacingPage: "espacement entre les lettres", + optionFontSizeCodeEditor: "police de l'éditeur", keyMappingExplanationSpan: "accessibilité : documentation en ligne.", //CLI_functions.js config_sideButton_span: "gestion du compilateur", diff --git a/blocklyduino/msg/UI_ja.js b/blocklyduino/msg/UI_ja.js index 3ca6463..bdfc46d 100644 --- a/blocklyduino/msg/UI_ja.js +++ b/blocklyduino/msg/UI_ja.js @@ -17,6 +17,8 @@ var MSG = { xmlError: "保存されたファイルを読み込めませんでした。別のバージョンのブロックリーで作成された可能性があります。", badXml: "XML のエラーです:\n%1\n\nXML の変更をやめるには「OK」、編集を続けるには「キャンセル」を選んでください。", languageSpan: "choose language", + interfaceColorSpan: "interface theme", + codeEditorColorSpan: "code editor theme", themeSpan: "choose theme", renderSpan: "choose renderer", fullScreenButton_span: "full screen", @@ -77,6 +79,7 @@ var MSG = { optionFontSizeBlocks: "Blocks Font Size", optionFontSizePage: "Page Font Size", optionFontSpacingPage: "Page Font Spacing", + optionFontSizeCodeEditor: "Code Editor Font Size", keyMappingExplanationSpan: "accessibility: online documentation", //CLI_functions.js config_sideButton_span: "Arduino CLI control", @@ -87,7 +90,7 @@ var MSG = { cleanCLIcacheButton_success_msg: "Cleaned!", listBoardsButton_msg: "Searching for board...\n", installBoardsButton_msg: "Installing board support, wait...\n", - searchlLibButton_msg: "Searching for library...\n", + searchlLibButton_msg: "Searching for library...\n", installLibButton_msg: "Installing library...\n", coreUpdateButton_span: "update core and libraries", cleanCLIcacheButton_span: "cleaning cache", diff --git a/blocklyduino/msg/blocks_ca.js b/blocklyduino/msg/blocks_ca.js index 5222a76..5aea58f 100644 --- a/blocklyduino/msg/blocks_ca.js +++ b/blocklyduino/msg/blocks_ca.js @@ -26,7 +26,7 @@ Blockly.Msg.CONTROLS_SWITCH_TOOLTIP_3 = "Si el valor és cert executa el primer Blockly.Msg.CONTROLS_SWITCH_TOOLTIP_4 = "Si el valor és cert executa el primer bloc d'ordres. En cas contrari executa el bloc següent d'ordres si la condició és certa. Si ninguna condició és verifica, llavors executa el darrer bloc d'ordres per defecte."; Blockly.Msg.CONTROLS_SWITCH_VAR_TOOLTIP = "Desplaça el bloc des de l'esquerra per afegir-lo."; Blockly.Msg.CONTROLS_SWITCH_CASEBREAK_TOOLTIP = "Afegeix un bloc d'ordres cas trenca"; -Blockly.Msg.CONTROLS_SWITCH_DEFAULT_TOOLTIP ="Afegeix un bloc d'accions per defecte"; +Blockly.Msg.CONTROLS_SWITCH_DEFAULT_TOOLTIP = "Afegeix un bloc d'accions per defecte"; //Arduino base cateory blocks Blockly.Msg.VAR_CREATE_INT = "integer"; Blockly.Msg.VAR_CREATE_FLOAT = "float"; diff --git a/blocklyduino/msg/blocks_de.js b/blocklyduino/msg/blocks_de.js index 1e55489..6676a6e 100644 --- a/blocklyduino/msg/blocks_de.js +++ b/blocklyduino/msg/blocks_de.js @@ -26,7 +26,7 @@ Blockly.Msg.CONTROLS_SWITCH_TOOLTIP_3 = "If the first value is true, then do the Blockly.Msg.CONTROLS_SWITCH_TOOLTIP_4 = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; Blockly.Msg.CONTROLS_SWITCH_VAR_TOOLTIP = "Drag from the left into here to add"; Blockly.Msg.CONTROLS_SWITCH_CASEBREAK_TOOLTIP = "Add additional case break do"; -Blockly.Msg.CONTROLS_SWITCH_DEFAULT_TOOLTIP ="Add optional default action"; +Blockly.Msg.CONTROLS_SWITCH_DEFAULT_TOOLTIP = "Add optional default action"; //Arduino base cateory blocks Blockly.Msg.VAR_CREATE_INT = "integer"; Blockly.Msg.VAR_CREATE_FLOAT = "float"; diff --git a/blocklyduino/msg/blocks_en.js b/blocklyduino/msg/blocks_en.js index 925d821..709f3c8 100644 --- a/blocklyduino/msg/blocks_en.js +++ b/blocklyduino/msg/blocks_en.js @@ -25,7 +25,7 @@ Blockly.Msg.CONTROLS_SWITCH_TOOLTIP_3 = "If the first value is true, then do the Blockly.Msg.CONTROLS_SWITCH_TOOLTIP_4 = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; Blockly.Msg.CONTROLS_SWITCH_VAR_TOOLTIP = "Drag from the left into here to add"; Blockly.Msg.CONTROLS_SWITCH_CASEBREAK_TOOLTIP = "Add additional case break do"; -Blockly.Msg.CONTROLS_SWITCH_DEFAULT_TOOLTIP ="Add optional default action"; +Blockly.Msg.CONTROLS_SWITCH_DEFAULT_TOOLTIP = "Add optional default action"; //Arduino base cateory blocks Blockly.Msg.VAR_CREATE_INT = "integer"; Blockly.Msg.VAR_CREATE_FLOAT = "float"; diff --git a/blocklyduino/msg/blocks_es.js b/blocklyduino/msg/blocks_es.js index a354d5a..ceb899e 100644 --- a/blocklyduino/msg/blocks_es.js +++ b/blocklyduino/msg/blocks_es.js @@ -26,7 +26,7 @@ Blockly.Msg.CONTROLS_SWITCH_TOOLTIP_3 = "If the first value is true, then do the Blockly.Msg.CONTROLS_SWITCH_TOOLTIP_4 = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; Blockly.Msg.CONTROLS_SWITCH_VAR_TOOLTIP = "Drag from the left into here to add"; Blockly.Msg.CONTROLS_SWITCH_CASEBREAK_TOOLTIP = "Add additional case break do"; -Blockly.Msg.CONTROLS_SWITCH_DEFAULT_TOOLTIP ="Add optional default action"; +Blockly.Msg.CONTROLS_SWITCH_DEFAULT_TOOLTIP = "Add optional default action"; //Arduino base cateory blocks Blockly.Msg.VAR_CREATE_INT = "integer"; Blockly.Msg.VAR_CREATE_FLOAT = "float"; diff --git a/blocklyduino/msg/blocks_fr.js b/blocklyduino/msg/blocks_fr.js index 445161b..2367047 100644 --- a/blocklyduino/msg/blocks_fr.js +++ b/blocklyduino/msg/blocks_fr.js @@ -25,7 +25,7 @@ Blockly.Msg.CONTROLS_SWITCH_TOOLTIP_3 = "Si une valeur est vraie alors exécuter Blockly.Msg.CONTROLS_SWITCH_TOOLTIP_4 = "Si une valeur est vraie alors exécuter le premier bloc de commandes. Sinon exécuter le bloc suivant de commandes si la condition est vraie. Si aucune condition n'est vérifiée, alors faire le bloc de commandes par défaut."; Blockly.Msg.CONTROLS_SWITCH_VAR_TOOLTIP = "Déplacer le bloc de gauche pour l'ajouter."; Blockly.Msg.CONTROLS_SWITCH_CASEBREAK_TOOLTIP = "Ajoute un bloc de commandes sous condition"; -Blockly.Msg.CONTROLS_SWITCH_DEFAULT_TOOLTIP ="Ajoute un bloc d'actions par défaut"; +Blockly.Msg.CONTROLS_SWITCH_DEFAULT_TOOLTIP = "Ajoute un bloc d'actions par défaut"; //Arduino base cateory blocks Blockly.Msg.VAR_CREATE_INT = "de type nombre entier"; Blockly.Msg.VAR_CREATE_FLOAT = "de type nombre à virgule"; diff --git a/blocklyduino/msg/blocks_ja.js b/blocklyduino/msg/blocks_ja.js index d6a898b..f099b30 100644 --- a/blocklyduino/msg/blocks_ja.js +++ b/blocklyduino/msg/blocks_ja.js @@ -26,7 +26,7 @@ Blockly.Msg.CONTROLS_SWITCH_TOOLTIP_3 = "もし最初の値が真なら、最初 Blockly.Msg.CONTROLS_SWITCH_TOOLTIP_4 = "もし最初の値が真なら、最初のブロックを実行、そうでなければ、2番目の値が真なら、2番目のブロックを実行 もし両方とも真でなければ、最後のブロックを実行"; Blockly.Msg.CONTROLS_SWITCH_VAR_TOOLTIP = "追加するために左からここにドラッグ"; Blockly.Msg.CONTROLS_SWITCH_CASEBREAK_TOOLTIP = "ケース ブレイク 実行を追加";//"Add additional case break do" -Blockly.Msg.CONTROLS_SWITCH_DEFAULT_TOOLTIP ="デフォルトのアクションを追加";//"Add optional default action" +Blockly.Msg.CONTROLS_SWITCH_DEFAULT_TOOLTIP = "デフォルトのアクションを追加";//"Add optional default action" //Arduino base cateory blocks Blockly.Msg.VAR_CREATE_INT = "integer"; Blockly.Msg.VAR_CREATE_FLOAT = "float"; diff --git a/blocklyduino/themes/bw.js b/blocklyduino/themes/bw.js index ecf0145..7be3563 100644 --- a/blocklyduino/themes/bw.js +++ b/blocklyduino/themes/bw.js @@ -159,7 +159,7 @@ Blockly.Themes.blackWhite.setComponentStyle('scrollbarColour', '#000000'); Blockly.Themes.blackWhite.setComponentStyle('scrollbarOpacity', '1'); Blockly.Themes.blackWhite.setFontStyle({ - 'family': 'Trebuchet MS', // Use default font-family - 'weight': null, // Use default font-weight - 'size': 12 + 'family': 'Trebuchet MS', // Use default font-family + 'weight': null, // Use default font-weight + 'size': 12 }); \ No newline at end of file diff --git a/documentation/deuteranotopia.png b/documentation/deuteranotopia.png deleted file mode 100644 index 3f4105c7c5e60e0acc947987be19d662ad15d6c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5896 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 G4gP;jYdFjR diff --git a/documentation/minimalist.png b/documentation/minimalist.png deleted file mode 100644 index e0a3728da45186f7e21dd83a412905d388f61db8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12850 zcmcJ$Ra9I})GdlT!QCYg90H+{KyX6PG!TL(xI=JgT!MRWcL)K3YeNz=xNGRfy>S`{ z0nX<8-|ju*j(Z-?L+>7=s&>^XSygk*nmbBMLzxhd77qmlg;3?S0vH7a^%d}w#X$p7 z;tyY`qo4@gs3^$lcrPJxalPrba!&>%s(U2-RhrEQJP*YpQpCLE$OcilShVmk+xfOa z0~|UmTRI%`ow~s`E#aQaj>E`jc7hxJ&ZxV7M+Y0j=5x?};kv|^v1gT>cSY3?3;3BPOC15UiI4P@^qSo7)Eka$4^b`fwwGJ(M zHf9LJlYz}m3lZ9I^OWDf-`f6WhgJxB*J?r9A14rfXuH;1gX*+nIb4#20dxvXw4P7; z`ZPLUuGfQu4jE`@XlQAR4y$WwnhmOLj*ZI7$_mm}+ru`droa_Xud_BfwB&l7TI3Zm z(NN7KsNeHaR`7S>_X*iJ2L~hTF%YBT6HiJ~$SRKN>V)FM$fi5VIQLF_VDf^@!!p`ni> zC2}Pxo|59;&0=9|y`_!&eEjPy zYW^TMBcmXeFrtUpyHXYZE6#qzeiK@XVhZ}Xg8;^Ia4_oE=#;nG+SV{eH^YFYcU|dJ|%N92}Oh>cSsJWo-e`N5!kPGcb0~GhJZG zF~Yxqh~00?R+)z`qx3R|oJ{7ywwqnp8Ez0w6I#E6i&QPKUp{YRf{p16()qt_caXEc zTt09Slld@YVnYaaWHgf~Mz7e2j*fOW93#_!uV%Qp{K4(c&69y?C|7|SL59oOytJty zJqe{pq_V~&4Q?O4ZmDgxyP&+agmoyR7spSpG~@dh`&5yge$rOfR<`GZmol$)&qt4W zur!69$Xyx8x&n_$j&dt*>VSuO#MvtQ>tP=oOQJBi;arO=b=cZ++@d{ZB}2n}^z*dm z`Wz{x*YpH!IYD(G)WttSA(Us8H9y&QYC?Yay zZ)&MCXua}%?IjKw&0@CTro_wpdlGEFgHMJ;W~EEt8Zw3}%z^4ATtADl=rT@=oG;mDECGJ~;;*D9}tz?(Jc|HM#dqxN`|UGj6AewcK|Nr7f|PUeqyna&8tiP#6DOoH&txRF}Kg ztS$x}+2PEQ)|#inIWy)7$6FdkWlK5QA{h^(^6fb6(KR!@Tom5Uh~l2mV9dR^4kLHnNseG9P?7F6yrvmQ%%&4WTJ>f0 zxSecT5@!Th%^U^ihfqTbbOwiZEPh$qSwhG%ajP1J!&p*LoX3r6tfZs#`CAI0nPgB; z1W{l>e&x}R3^#|dIM(2lm?N9R_hUp0u4BZ{RuTq zOZ2fnE@RNRj+^u+W)lHz5B^pSb?%&3f939ruJ@S(!*pNAf+nz>4d5r|xW z`!|{ZqlcNK-fF}k^c;1xxe(%OxqXP;HFm+8V(izV7i5}7Bxt|-emMr`< z;c5Q2K6|yR(9+;65(FK^ffqm>ZWd#dbLX+GI^pI$B%L_NABHn23SBng`LEQfGf421 z$4#0~jae~dA&aPQsmugC4)gKW0`wz^Wgz-OFW2sC=QXqj#AHZGaBKv4_=(hC2A=SG zIC$Mc9L0w4)|eX8DRycIx_viUJziQ}5yXn$@RNjm$QPEJFi{BlaA=9S6oW$y6tWRu zm6^#5QitwFy1|=ua`$$nImK9B?pA;pJCX8*PB!Tg z31$>QlcwDlk5R*64_%H%FX>iC@obNMh64i;H)P+XcjTDHSu#+GH%&GXGJ(z@-yNGRW+>FD^K?larH25rkC+c14r+8qTYK zQb}5Wtb6iBkYgFhR9=PKRn_uByZUBKVRbCkck8YZVu)%%n>jvx8BXp(;yP!hn+>v& z`@*KC-cbO3c-t$5BcPbhpY{>*Mr z{oUx|(RK(WFh%8|?2}gDPYFP>flmC>gnDg{`3?-%@G}CgFQ$7Zi~aH!=nE{bPI@fp z%Ys#-VW;H32_oAs0;T8!57VCDRzF9#IqW<&@q&NPy|JjjO9U32sxj|mc;d;ap#;uH zW;qC5^){Vk)^3DAr%dO+=Wy#(jN+u$1Aa5a(t>=e)04d2OyZR%8#g7@gLfqGiTp&kQMsH?M`Y5G9=rMWu zqH{ZP-xJod#TMhfZ;|freK-&Qb4A*%n}%^cSJNF}9{9qy;^7w+8-*;}nO zqp8%9tHRHJSUqaueI-m3ISM2CW@DtIr@?Rx*L-=)3*YHMdmY5&|D~cTM(U+^eYtgF z4`jl2v8v;0E!(+?yM#-69Cmw61aJFgANMrWM-RE}!8e@Edk8;pxiyvc`;SdUG;;5+X={>D?bx%{_u4(pZv7-ipM!~Hkc>?5WB2r{3_P5$ zeS&!1W71ca`)Wx)$rs1lV)qdJl~j-MX)DHh_5NRf2At%^--mmQ)PVrP3zHWM6K;xB z(m@&wdvu8Mmc{?98erNfdp%JPMKtTTSaWf3L_#4^Ua+-QP3pMbmTm^g&sOIG5AGq^ zMJeA~^v+k=yc`7bcQy`lvG2F_Sv+Iq&pj302xkYwn~!#mmXjBE6n?+m-GGWh;NMqX zK-m)dzAb-ukS(6gS;XEx`O;_Md=L^niombjm^Wd|gT!aE-rd2;)YYRND$66T%LCW9 zYhNN4)HZJRpvSJ~g?p38+1hV*nJ-!eUrxE5Ufs6C=uR=qne5fAssqgy@+Sv&s3Y5n zA(b1h(CuKud5eckn2gJjpy3)bH$>9F?ps^1b zB@iPJb>?}8aWPY2#Rn5RfgUdgmES&>spTu}F;_M2%cDy>F)qqsvw=+KmVR%87JA4Y zE?-%{VsoalOpufHyXsJ|O*Rsw=U{7?AO6YYyNX&LrSUTXT5WiL*=5i(vhkx5ezykM z@p<;zN{70!DYXtFUS(*XdG)U^y5i9CN!{Q3t0>iUv1gh-;-{m|WxhW_U9tpETu&mx ztOcqhdwvCrM>!vS?SBz-P=DKrCNqI7TXu!jS&>L3r1L;BLFQy<|IT}>YJnGy+9DRZ zq&#DhRw(D5lfdG2f5K}vVNzdfv-RfJ9=r9E&vFfU*u@40+Ye#G=~3{z_7%F^ugl=BoE%CvT{dOCpH;eX$o(YQ~avkQWt6e z9VHfc`4*n+a`tqmULo@=VsKbzRJ%OVI*$b{Sf^GN(qQ3}5}x<=B0Rxqt3&Jt7}RYM zq@3N~x`etr3mejWNoAupxz@67HE!-f*tgcLO7QuCDOupX+gGXrsQwhpA@$ARr(|&D z=JC-D3cT+(wxXRtNt5Y=gm`-fVZ@UpsJ>fAyxuqFZnQK$^Gg;_$whyPH(h7+0?4tV zAGbMr{Pk&S39j!3O9S0nv?yzTb1B+61Jl1Hz?mURJ}^VxmS`O9gX1dx=@zkxr+dDB zO8ju0(0lDY1vI~ivNUx|SMlX++|OGZm?CQOO6ZSr=@*()baABJe<@Dq49_1{I*zhT zSIIadnI6Pu@h4yoANc9Z-*QRc6~_6cKVu@Vh1$KSbENw;t**i*I4mjE>n{0kQaNg$ zo#&bCjFd}|_ePx0yG8{_gDiJaBWPfI{XnFY2;L>#G0sB}J#P}-WUmsuqk)34#jI}G z9pd07eA*|#;oVgpp_4x9hua9En=p}0w1!0Oc?fqQo31&D7+3>NV=ms@_mU}W+ zm5@m9KElRX^fmj_i}q22)OGCz*X{6s%l4vV@W1c=rO@!AN_j0%qVU%xfxHIVvZ8djNcO-Eq!euNW-?Z@q`bMORJK2n zySK(M8x~gzUS5Vd6kZYbCMEw%d{|gscDgo`o?*-3di0Vp;(wcY9vAg6)-rEIxESuf)3Or# zl39FM)g-OfPv=fqyd2*>PoPT5SzR05I{o0QV*_>PH6AkzM`w+5n1J8MJYDBj1}@z2 zVAfI;#3-o|O+?_CdF?yN1XXhSF))hsRhy3bC!hjaUJhTWI4KZsq1PV@p^#>f7oT-* zy!S3kQQQip+ixqJ=9U!I_jNfe3yUfm6J8vz=zy01EaPr}(;r_pi?;0cjOuZX{Jq>< zqWzr=6RXe9CE8~cPu|D0aZU?rzp#UaEU`&?0j_QYKepr#%F~W#e2P#vo(8h18^4Cn zEg*Aj9bty8jwqHv9tt%z%#O>OlNUNxJ9gX8q^iS9K##J}`Z^yXoAiEe-#%N&8e9gJ# zp2>Alsg#U_XL)u zR+|IOA|3sFYxoI%l8;o3Eo>k@spDC1oVAlJi{AMDp+!>?8W2FEo|jEl(^0j&(5VY_ zenyY#3_q?@Orb_agSWVq_I)#d$ZW$x@lqw0J2EV<&FLiXj;iX}VDj>Y-WM2@+SG8Bzf#gN7gV%# z=J$lZtNQID7tP*bhY`B@j~$sp13rn;B+dp6#81Lv_2=I6rK?nK_$V7Kau`A2N3r;A zz!B*(f(x4(7o^(+2$CMl{znv-2o09`v2*T0xI~o8P>`oG4~w5$N}Y!=1YSw5U(UC2 zEu?5B_Xv|d7gc(Rqy`0UB`FX7G$gli?teezF+1-?)R@uO@{L8)xKih<4tJ%_n{Eey z$Jud!SE`1N@KVJ)Zqx`xaE{^TmNi!Pt1$p^@X=yd$Zw^8;XLHfqbDoda8PmGJ-F!gfmrPTom=)UG~B(1Q-^_ zgM)*_t2idq@l6&}O;pJyul*}GCf~Y-@N<4MQmOHkuTq?bYaXts9toyNDY2a*oCo52 zl6C{TTywIEsGeTVDy8r@3zg`A>wAj;G-zA*{tf%{!C?)rWe(#8FoPgU)nFZ8NEzT@uzTw>Ho>IpkZ;#G*l$US#B z0b{CKIIElKA%0j*{KB1f;Y|MToPcLJ)li>iDp%u#0r}LQ2v14+C)vUZ%h^Y~m>&+l za!4pHcISH|^%*t!2{T5wLpdS7Sc}!+;p{)Z&CAHg!iYs!KJa3!;ie0aMvdJDk9Y^% z5~@;UwHT@>C0c8rH@GZ z_HSj_B2_XaR<)gMQ?N;SJg&}J$u#KY-jjxtv=H$-m-)}{tn5bFfI3A*MFj1DvJkKw`(lI$D_PRw3ctqrJQy>)(_VM ze=Z2z@EiA}|Gss7aLNLrvT=7eAt(Gb+E^%VQ1_F4uw}u~)$`jN;TWh)xNJj!tyFG> zH*|9_&i@wdXq<2T_3Pm5_l&9*(|sn$m0zG>7)>ql$0Z0rbVdlKt&m(W6vrZ-mhD&{ z!)D(7YIStkCJ;yAxvc+oQwYt?fm&FKbmipzz<18Ighz#J(lmN8wl<|_Fy^&;=mPkX z#9&f6K2g}aqa(@&rv8@ucQ6yN^TxX(4f>`j4{uM)~){qenYE#F*h@2p<}PO)c(*%rBlt?hgR7M|bRD9;(0k0VYYL z^Te;q>!QiaT>G{@7D`@lw7o@m(P_Fy9HlglB*G(N7wU{>~Nj&b@dR zqx(ksRdS`)_1UVz_-b#(N{^R5F~E#`8%%|J{QJ_bS^Zz`2I^W0>!^dhrbAZ zQDDV283`nfG)hjuN(!Jp=$$Y2L?)OwRhPuVD8pDb=k#dys?oVbN~0xP_3Z z*wE(2GC9p-6}kv8i?EIE%o3YKHMlg}FLufas#*+TiPBfq_KJ+E{93An@pXUQZM`Ug$jGLfw4&7X5(TRjoO zZ2M8l2L58Av1pZaqWb|%(lC71&8h!N(xXwCmcFH<0uRj$HUAyzBh+2`E(Zp7!^oGO4SqQ1x5e?I>+b-2WlFxBx=w<*=POO>kFc_E;E zd2aSqzu(jbk%kyFrR@)eE*NYkYBTiPKfwADO$}ln?htYutrA^;=t~pkw3!_Wr%X|k zXvilk>1uJbBYQo-MHbn@$^WF&zYOFg-~7izne*`dXHPtl)WV-5Uj8HKOFXX3Fj0fi zk+)zV^scDV8GQaQL7&p1*808vPaDu92XSlM3VXi!Nh;Pb_-u^*JZ}x3F3#Q5g=RQ2 zq4c!y=GoZp&_|9O!Qt@D5C=YxVH*=k79ED8KtId@MbD5@XTr;!WpbsdQ1`l8mO~ux zS2&}q?SI*^sCxF??)~-e9Z(}$JVp4N$$PK68c&jBGY;cDZ^dwasmME#g&C>xmwntM zZ`2F>@xrEhqDN8XRfDZhPrv0Qz)HK-5UA(v)p-!b3g@d;NlNGsoYnX5Q;g2pHLOaU zEHDErVJn9Q*rE$PtZJu~s&2-rhp+i{nq@krTx*VZ7po>0^?0+7cEcEk--I8Q#d8FY zfCdQ~^&DglYO4#QHM|N_uL0%=<2exv1R#-LF+izXjz6)}#wmb}`=8UWw>22_oy1}3 zJ1sio<3D+PZ{vH-kPJi5Q^*6hUXQRJRkUg{=Et;1=Er$1LUT8+{~jIR$WYznQhH`w zk&`HhGae%*$4|J#!<~WODwBA#>3D#5K>6CBgd(hu+|_o%=`aW0Zq;5U){ucHhNzSS+Z1?UojNag1b>N#bpI>C zh5riCHwUBncLQEgi8-OjXw*uDsrrJPtSe3~t~RfMH}>L0JUT2sN)yPl1$&R<@_RF) zjk$u2_3XgAY}Bp;4z5x>eM5N)4Q+n_;Y|2z3I0=r%##$^d@nSTMdxgrYiJ$y+8nJ$9%sR%9bIJVww4~Ww0n@+C5!suyTf|7Zq0#YScqdTh1O%{KOAny zU(A+9wqgfd^nenqsDdY9>k5a+p{1_BeY$+nt=7e3YlUnB9ap(bw8$R&8GK66p?-sn zVy+UO%0Hpsh}o6fN@K{^oyK&w;I5;ty8(#Cr38nHFvaXBzGsboW8tD$%OxYVG!XD> zF4l{wK3dZTtvc>FcdP!YuZg)5VfvSB_60>mk?+kzTcCc7geNWU^&Db)|%h*$S}KMK_} z$$@%$9cphvJMs+%94bE7cHT^FU~l7p+KzYj_dN|+bX@C2IxXE?jNw^T<#^C}J3(#@ zjti}smYFgis-t8eF=QmmRX(f2Eyv$7qKZf$$1MTZV~Ui=4$y=6f%MU(Hl9Lg2UGi1 zu}7>xM1}oB0#drC9$mlt?02`x)Q=O;bI-l=R}y*pSHi%eid=vpIT=lxUCOBTmsUFj z0`@38+e!mQy`-1HJ-a{OSU8`jcQ-n5$)~LT*wcLYM}Lb-4f6X}qX`mf?upj8zap!> zmoC;;1gtt;>e%dO^6wpb|9-OR0UMJ4@%CdDHdC898rfKFdv$-$ zq*1*R=ZM_NUdE%#tn}=TEE#kd0#s!u-djPs%QA z9YJj4To;1mU=cv}zc^--w`RKD%OudCd|W&B&dp{gNmpjI6v>oDO(0lJ5aEAF4E1@}VS6jGq_o;@&(;Noar*9O={Oe6# z8W!1Nw}0W%prIq^sd>hy9AQ=&1&7)Tq$bQ?ldstEfa(55+nN5uWa|s(hgC0U!RO`o zTOZ>|gkYB~51s@&)GUW2bx^k*xJiSl-z|Q3n}nwKmluII=LczHCW&lB=aA_Pv=`Wq z-q!?G*kTK8F)z-$A!sw%G{4n8bV&2g{hCu-O~M$6l&pnj>@B%J&X*Ge_kS38p<9C| zM0qbSdSm2qF|=R2JnNo!6nXkSS$yEYz?e>|;o*F|VdOVi5R#G;&}ZoL5<(Ex8aWSl zr@>V9;pxW7+Yd?|l_bz2SH!&eFqmie5nWO32}(aW;^)C0xa~E2p#AR1K8Z zSyej=aE1oyRM(PC-VxRAzgm!Ar54&fvnF_P?;1?#gpqj&o_%h@MSn&xHF-FceLGEH z1zu+)ka-ne7qD^DFFwFl<$JP5^yhtLhF5vXL5W(zbV<#SR!st5af|hNavCPZA01j& z2Mh~m_pEbh@ol`v+i@2tdWG3mO*W&6xkfvczKG3%#QBUfe^QIzR8zXb()W)&J)oIc zdvKt#5q>)-(ZACl0_|eUSTkmGy4k}O8wh*KY9ouSnkhVr*6(ad3(w`BK7C3Wg%NOW z{45@j9yzrv@41`MctV$7C`qNHth89}Hy!9X8tPBJFXPqKaGs@!yZ#rjECYw7k2AVi zwiZ1{udMvIc0@=x%!lP)8QT_EJAVL`Sh(5_KI%#N;{;cgSq(o?WpFln*KO;AK9Kq@ z==v_8HAk+HnBHE5Hdli)r4F`QCj*csY;0`uL2TY1#bl&X$RK?c6b+_~ff$KcBahFV-{^rD>cvN0ZBs;fQt)xMa6E@E~|%Ws~T=QLoi&8 zBYH>(l2`CfmUqs>dp38qBirqoXiLJ)tKU`4AM_ zp{e6Hf@;+?G?pAhhhT#uY7n7g^_V%#)Kx)`$F92zxSy_ic0@!(R07f~a3R05jj(Dd zn0x*OZCq+h>ubkP5^mS zZefR`x8_vbLUn3*(o;+wi9Pn{TPJ=>Dy)RgG(4~Xks{!y7;E>;%{G6m+ z?4dvDoG@$m&^D};Bgn0y2|{kCo}PXp_WtnP#gkdojS-u4j6=H59Dqq7BpU2ICR!`N%aTgFcUvO7_bz5mY0VAlWoY13fx;O=hM5-Nk)4|}i z=pxq-;c}?KdfXJtIFzUWD^f)hq8MtxRojxWi*>%=*95AuTkp_%{Rm5O8qR4J+P~V4 zt{ZgWhr1*IVUG09NaE`^1_#`4YHL&303Zr6l;m$^k^Y~MV)E;k#EYp=&{s9fiGZ5w z8SAUc$nV6BP-=kAuX-ms|7CjPg_^|W3aBZ)vTyF#VC27;O&@GKW59E9;mz~A!bWtO$ir@Hzt4lA`h{OQ{u+wxatzvh58*ldX`2?ITKLy+}o2t^E>rD42ADiUTuaq@pD)5VccAxIF>*YqMeqz-5aAZY&gnw0-N zGol7jM&!u?CZaq_QC8451Ufz9CGy;F{(eUIrQ^s7BJ0g<{#+jTb5@$CgC>N=`9>l{9%&XEIuCr?fe+I-cfHsCfyYQs@VaX@Kp3mMw$*?km7cw3r6jwlS2R;N8KzzgwkCbF3@#2Rk%03;`I0?LI+pQ_^Y9n$4BcH9AhE0@v)OwD_(+HD2B?u0G_&-joj zMhVmSgTj{&uxwmt^Y3(68!^u3iU=}| zMsSK5f~{#R9cUTmi^I3`Q)ovlzDw>5ryn+wiT63M>6l&0kr?B%#R46myW=l;|6?JW z!oSBe@`t%6(WM}DbnL>)hL{iWZ+u{5C~ferX94*lmUc_5XO4bq@UqVrK*sET5rOG*X9)>Jy`^1oy?} z#ARypZ%sEA1@s3GE5_3(|{JLNIs zT**r>Zt~B}hi6#3{QMZdu^K^~GH8B)JZ9Qheo}!G%`CKsF;I{?K1?pjg*}>K<~3FU zRJ?Z$*?kvqj7hm%7PPtMqJe?DF2@?kS(AG&X;SrWPIniO+QKops7t0u_b&J4Aa1`Z zR^0xfEoQ&yo2LCz;PepLvqs`Ho~ZyfLN03KoEKE)@KDjS_C&__5FbO<>On`ky*Qi_(Ehms-cCoH zDJ70GC>2WPoZCe@f6JH1oFlmTj<#v}9Vopr^

w@msDf*G%Rm0Yz))qad-svSrUM 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�<_m{MqF>M_yhDnvkry`c};+et-|eCVY8BOxLn zGlF3Lu7E9T49Nn6dvW!W3=hSyRbj@&RgXm9fFlGk*5Ke#HEuSFh&O0nSzh!rW#bL@ zZWCi>UX8NtjThVQNI8o7tO~N~m{Qg_RUP7)DRJQzPGCw*_8aMwI!Yr29t{{>v9z?L zH1AkUR8Ve2c)?S8s`l8#YWjPwOx=UYCNe4>YMx`k0_8Inq7<@Uwp)VP`MIM4igC&G zZ@73hGVJl2k|FZwj$&1w7<$BAQwK5vG>PS#A?&-gA_7q zVtniT^ek35F$%MxeTHS@RCP36iF|2P`WdXTk&ZleYN%%D( z&xHvxtye-1y6%nqoT$Qj`KTaq?{dVxW;77KGWQ<3K3H9dmrNe3z@@(>BdQdh@}Qee z!d5g#`hpHyMl^tzqhshpNmLp~aN)~Z(b(k3-28_PZ)D$L$EN${exyIe044mVo5`Gd}<>lc82%zF4X2WU;Z2vOl+g)&O8X%Hl9 zU3ck1pPUv{QdXVD(1wmJBuF(rik3`QQ_a(T7N!QO{$y8XDr6J0$Qpmo zmHVI-o3-~$bPIRA_04QFMl!~*xAXNlM%rBi;Lm2B$(lUI9c5W%dhOo%;`AsizS*3S z&%^O4=VmqgT{tpPxCY()>?_r$G=2cKc*A|{DYaV6~nb6Sjg6l?0QP# zgNvGh-^A}rO1l}9mTu4^m4BJ}_y~$2 z_8&}A5kGp|TFxMEp?Ly`UmT!1?_1CL)WzRsKK4~toZn`?608<`A_MnjvR?Nd9(J|& zG7GB@FrPax+H+AB(1Mvb#RfF(1AfxIv1GLB8n6&{N||2R;OqU(0cQMI*!;x-1`9jq z{A^yOlkpsjZ;6e0^vQ{-&7Zg^Yb;O}4O3~`pfK?d4$#|Pz*R{J#A_glCkt?>a@PX! zc*FPKhIlP>lb_EeEe(<YFOkUnz|Zuhm;Kf{k$>Lk_>LFXfu#O2xWIgW4j?xlQ+Z)hS*rE&OSm8kV9=(X>8P3vvxZqZ4m zTfk=PNc8ttnb(^#A`ZjyM#Pl0w=+H>ZmV|@msOeFqLcAN$13!6M`1th@V{MObE27Z z0G&C|gE&BOto<%-ZPf_`y;F|<93 zPk|4U0xZ*d?AChhxj$MjJWzZV;4A@r%iZg=C+QIPG)bb@)mdg=z4ykf*A2x1#z7u2 zmHiL)?mDQ=Md9~-2nnt&R;)mA*OsEeEx5ZBC@oUj;#Ra!yu~Rl#ob+s6RfzqJH;iv zVXeKk?{(gD=e+0KGjo||m<*GU41X|?=kt7jVS;S#Yu#R~O^oo;+JLVzA831gZG@h3 z0zDg_`kD89JQX}v?eTQz`IIGFjM?K)))PF|6XwA$=;Bj3+8w%f?*N@EkZD?x2mx}T z4|~5j^u}rMJ;i&RqFXm)`el$wAla`sd9C-AU_*?C;6sy!6xzOwP(h|#pLU=6pIm+4 z9LmllO0Gltu%TuAV~~P1NMWJ8ShPggrQBz|hUzDhg5(N9tO~+H3WzHotFSsM$tA0^ zBx?5LYiSkgc@-KY6&f}AtH=6lU}B7{;!Hx~ZBTJ~1Mzkn@$Vku43$C5X}ts_z^*-3 z#0)@dC9JOl)-DPA-UuDogLTZoIyGQ8(XgQ(VtWFL@B?|pBR$2F*NUfZ1Jaj}k<}bNOZ$MzF}mk;r|H-D21LIt(XT@&36zb3J@iZ5hckM zeN-h{WTQ&vsY)KEN|CHeS)^LrC{HyYPdzVRho$y}LXDQ~$E=VVy`ma}q1v)PT(R#I z1_KQYtwC7^elV~9U>R4N>A0`){U9IcWmVik*O2v8le^Q9$JSI}(}W6ZKK!#X-?-7)xG{LbgmA)?Zo-Uj;)T?Nx#on0#e}8f z#LIvQt3Ppo0nZ5dvOqd`p8`go3#*egPPM?MDCTs=vPOkHM@6uw zh0fF?vvocT>wclojjGalE;Sm#HXU!Mo1my0>p2~+IWR1*?PRE$GOz1ytL=@g7eJx+ z@eZLL^%N;Im27oX6!nyC_0&A|awv2%i}ci!_41nZvgY-&!}Pul=#}p4z5BOizL?p% z?AiLN*@n*9#_`#v_1WgL*%t6zE8$!l-CR50+;^$D4$ZmFe{p~@m%8cux@q$U0|N#b z`v${z1_f+7lRt!YMiq6&40Q@A^z+#aCp-;{!wgHXXS1v3OPUZTyyxe~=ND`Zr9G!& z!*rIDbykX|zB=lLDjJ0u8im^$MRe*;_)jNfFC=E`u1e|dY3lA48SPi;u2UGTVH+Q@ z86C43p9mYB4lHB@%#YeGj(IMQ#~5BD8($U~Um*w};p}vP-r~CPWcK3iopBMx(jE2^ ze0*_E(PY8UOajP4I)4I^wR1tNBCA~JF+JS-|S z-9w{WI%(?*n+_3wZ4hco7URj{;aE0bUg#*;fGFn?W8OSoYoIn%&HL zpRQuA$`mSdK-bAhf)iJn)^AEUg#fxdgw zmx+*lx_;SeAz5l)zNy6Is7K}Khh1yxfUH)VtZt#AF}k`X?$#}ZjsyFlpP$B#V+I#ex`zvT#+v#j zd;14}&-vX~{d!wQx(epH5;yvy_XncSek5K^W#2B8-!3=athHTj4V>?c9c<40ru_bZ zek%y&x4wc1{%!6pY#mN-9}n%Fbsk-JoZWO?-Spnx48pI+;1@ISvnBZH&fUq$-O=UU z{_Wik9KHpIZ^GfbaQM&rz~65l|9{W#uR!mQAIP5-2NC!AuRA`Z{{xQi&wGBJe>gs; zKXH86|IzU|W&Bqi-`{$E^0{$d|5rIaGu}UQd}jXx$EVT#ua0jXU*^vicBgzOE2_$X z;*S5>@r`$3x&FoRY12sGJ3j3>Ye}MibbM$&zd1e&>RD<@s0Nt#ua580-#b1GZ!~kX zQ=i9wb9?}Ue{g(We{+1u|LXXLD?LsnH6_BTB#0G?jupsX(w2?zPGh~3zw7f*nexcP zKj}sE{1A?hAt$u3!@`Aib{3UyfWyT{;)S!=M~;Fjh@3mNH|oitP2sRRJ~s9&)H*p} z4rsV1_5B6UL0!v(ueNSE4v$0MZVQQ~RD3t6fpIRQh~47NyRqS@PM4-Osm+iS8P-AV z3J4I64^<82u*ujI;rJ4fe1M)XrygWHdjQ(vQXmJs$O}^tZ$1Pw+G7nY^*Zge#9-+#W3;EV!ySb`LV55o)HxnQM z;dqx2M2t;%|Lu@_nE>)dZY1%p6d-UlB!j?OQ{;(em>=b;G3r1kpOwj5j^mKDJ%SAJ zjZbgYO!bqRDr@W0+H9>^ords{RC{ zDJwCYeI;)o`f^phte8(|sSluZ(ukzDJ)*XhI{wMrj2B)IInmlHH-|(c{v5eH!*>Df zQKoIMkA16kxPYe*k*mm^dOO-qJQvZQ;NE;eIWXjKe@sKe-Hps66a7Q>aK3mwM)~Hw=2GmK3^nFZrhfBsX z-}nwe@@@Rm`$Hx8X0G4)`m94@=YmXTiuHB z_>&|7@`b+%G-YEw5JEs>oOlJZ!idR(I56|3k#@XxJ1dx!l%299se7*!Y|Uq}&EHL; z#7TscY{=6i`&^DE`rP8<+1TbLOg8eB zWkf|sEtrWnpyY+sPfF{NNE2Raf}(hd3v_O|{2!)Id1kEC8+`Gr_sS6`wD;r|FZJSk zZK^mcVh8Bu+2-3>U!=1!@yatwBpwWZ^SoL{jhmJRtq|TE8`QwMz z3BMG7(I7j9srePnhXG^UeYVrcIRS0q(DST`o-AMK;=x39{Wz7us>u+oKuvgJRk(-d zn)KpMivz}`U})j4f~d5Nh}Kw1AYGx6D6bAWX>}y?>Kn-OuZzEYvAsZ1*v(&vhw=OE zsb~*aWko{pCO<0KJ&2k;QNt1T;_Bd51+eP!Ow2lWJF&XG%KMx;e!?)MO+KQtzl={JjvpZ_ltlzG_Ruypx zsvoh|^=|KfcL}+kKkzK+8*@B~B}^M*m8od@9#-sw-*p`)mjA-)=!@(bYV8>AZ$J!HcLgT=< z-7oKBC$jevY4zFbR#R?Wn`0NI>}CwF+#;rirJZ6+Jen+jp3cY`92#}$TXH|SbC=(& z9%}$2P1m~8tekHy5-CNZNCM`QzeYO)nEkUawwv0Zs4Vi%kz>U#Xr|-MOzJ8;*t&|rL;aV+`Zqe_3oo+z z!!Wy>`4&;rQC!I~7ml2^^+T@?dC)rDK3$h^NWRR~^1;>E9d=t6!e2=-}tR;j1uV zIdzgnvk#DV-tU%vVjgga0@cxx*R!G(VRRPM5kMKoyJRqlA%2e_ezr^A@l|$!Equz0 zw_G*ylV;xM)x__9igNR)ed~D1#HW9erRJuCxMJEI?*5F+0h!+{E#n_Uo zp!5)1;2jxAjY08RHJG<-%+56g_&#}jR)?HIxi2L%NHm{K1<$p6AaCjLS(xU5{Ka%U zCF7kRMP_82Ks!vp`9_xGabrkHU-h;kTPoeBWG;b0x}9Uzch_6gPrz zry}}uSVOB!FBrqneV*SwL~^6{uj|1RfA6nkg~w{a`wej|90S$mxd*_~%a}jxD?!Ah z)rV=Fpxv6t31Jc>JytyJgjlB(**7ur~*#29jsSlg(G zwcg8h&wkm@9WHOMziDd*dHGbyPSt$Aq5m?076aA|wcWI1K@SJ^&~dop-S9`5Jc=z+ zi}JJxTOj^`u^c#D8s%1o_Rc$mN{%%=$`3!?MD|s*2BWhSQ*@4`DOA^aQ7k6SBG$<& zT345l?G@F0jqFrAv)NUA$Ba;a4#YJX{H!2ncyIi-h4i4RQUh!Ua)YU3NN z5>lN_VQBVVd5M0mu^(OIS?glnqJf+v?|XiY(_fpfzP3I}YJZ;8p_|m@n$(k!)K`}T zn@(y&2RWeQXG}Y~mL&vpqWLW)n82SU|LE09-%id%PjO^QnSYdgB$=`)_f_X}{LXZW z7IoaVZwdh5Kk+HqPX*OT#d9tpWkZd1V>;yIiW4c{b6_j=?s?q7C*taaG^~2UBe|C+ z(}1&2$&L_I`y((uXDIG<@-L<|3i&iL(v-)Ec28a>QVXPDGZXG5WUwX@FzBVA2IFD3 zCQQ4g;@f9F%TKSjN)!E_dA*hi4o(wh&JvZ+5+hAzyCz^s%z`o#aP*~0FlSDpqhb$( z9Pp4Zm!dRIvH*G+E_IpGec6NAn^MsB$X^zA%VtOlnG34(L0H28iAYKbJS2N6 z6s)8CO1A>U!tQ};L02MTZTC?R0`UnH4w4ojMt1uUBfGB)5hJ@DiTM(5^XIOM=tl|> zYr7!o;?+KY*%G*ICm(EDyvkg#e_cGKSA3#Zc&t}a<5qHsQF4l)d;)j}J0%Nf#r)|M zDDMB#^ZQD&gXrCHmXUldBW)-npDm-jDWf7Q55!NP)i0-aFK7H(&fHMWItwpnzbWS= ztKb%_;MK2q>R!SBwL+kwLTI)^MXv?1#zb=3eU&QtMSv>)l`Li&(_Qto!)2HoBoUX0|r&rZ$1B?yF#3 z>`h%fW_=<{eUd_b3R!(FCgtnpnpbW00fGz#n6*VL4JBXc%2;YELK>?2pVTPS*6lVl z+)y`Rvb88Qwy{usCv)vAXzVVi?{{bJ#cUeFY#6m}7>D;aOtLgihcwRaHV)iSj3_iM z3R2BuHm@r*uVT_{7Bt^ezTM`11+qhymSY8mpVlpByTlg-EmvQOmuH`RA#+8-YC^_p z0NXU6!Wz(78!Qv6}IPs2*a`5Ms3^v$Q^fwvySjQiQfXE^MWSwLaNvrNe4t zU~O}5_}|_0bMokRN$PfM?Dm-J_PXtcdz1J03ibFK^nCQ_2}^n~B`M3VP@ zvFW+nB_@WF#X%VoYU=M4sc&#6P%d;R-)5*Vbm;K5 z{}$GNx7QCR9|i~yAKwmv*@jUShkx1(V}=c57Y(1mhVl1@A7YPOu#ON5_x`Ww`FW1X zCXdNCjX~$flT6cc8`6WaQ{@P^)(6n*i9 z6N#{iq$Gsqo3v${d{Z=3YBO0LI$2pbSq+=4-J7fr9l2tix`B>7vK{fWo%$3u6)-U6 ztT@%vICvm5y)ri#qd2{0Go27NyAl2dWYPtcC|xIhq^B28Y8R zO*-SvPk7ExCC^W?frppoW`1*gE5ZwFhX3IBb_eD==BJMDrh?fPyM^a24Ci{97B2@D zuNB9GOTjP-kdO+pp#2i65waK_SpSH^000&&**1gdy1lmC6s@2?BH zDJue0AoIJG$L(`M!^=X$bEC<`<7{A_<`s(KWg++~gmO(>WKGg&Op= z{9s`jgA#0zMr?ow#`ju7J6P5E>%uO4S+04_oYG&lbd}0zb+~BNsCeD@PEyE>oodMI--{ z5cik@wml9t2l3ACwJ(#g3NW@}f}VAd8vo2&5r%0+74l z%RP2T_m1!J5m599WPF73;Rr4D2&3ib_nsf11c`y_;Ozl$k)3MUYkAG?fV26KkR80c z05&W=P=mmaNx~5ez{?y|;KT4GfwU#+g+qi1;{BuNhs1GA|7(K?_dxi=64}tP`TjA1 z2)IlHnU)GngA1ljJ1rFfOMf`^9R~YG5?cdS*u4)J*nbKjdVY`3%|y?^Lq8qhKw@0V zw|J-DjSeJ5C)6XBWPhE~7+*MwUZ@Q%Ge(?H7XuA&SK3q7MIq<@#`lg7V z3;^WzVq~L;%jyp|FO-qgOTmqcH_g9pS|8u49U&9o9X;SYe#m|u`36LZcQpuqb3yP6 z$V7F62LDMibS|-YWfFG%UKtq1v1^cakW+GzpSsHxaZQMW%rT5iFpSJuip;qL^fNx9 zq5=_70lhgv*b%?3TaIo;e*%!igTRP|T@2oMm1S|3VLWW6Eow~OV1mbbct}=gK_aiP zw4RUorlCD$pcUtpHSL#=#ifEkTGck7iQGA~(e~nfI4MH)w;&7+s6Ue!Vqv$>FDIP9 zFs*GmT_P};pAd1rq&#XOte^Uw#}wEiP?j5&?sS!!Bq5736fnfb?_R@&-fO;B^D_j@lec*l{^nW z^YvIRPlgSJ{(1Xkk@b-Dz_G0OCvz-4^sB@tmGdC6;7XOwCo*f`92o6`_x*l2d_|L| zrkptw6l#%hp>{~W^NDoMk^gbV3Jn8?5hM3kz6$Nuv;D>HRO4S>h)tefsGJa_s}r}ZtJ3d?%<;EOmtEoGWnHVu)>fdE|%KwL1nS{{$_iBZM_-v^QP zHU(78qZlZR#cJk}6)Q`2oD|KZoQiyt<`s(17X5jYo^OKS1(0^EuSkqt-g?7I?Tnc! z-?6y}98d`bB)Ogh_w>ky1P4b2(NJLLv#D7L(OB_IrU9}7i(2YM+ zVBqUfi;(S%P9wqmQPlOM^oXra!g33ll^ip18x1vh&P>+qrCElruYl~kZ(lKfEXk#0 z@CIX{c0Ex>W2{@-2D8u6@bFOhr&SodACh`z=s0OnV_11Rw*z@#2{~e5+;GHNa6!s0 z9HuY|qCqQmsHLtTz*BUPgxG_M!Jjy*RGvGUUfCh5+<9q%4#wQq$Et-?x78XSK(CS6}rc!S=D7e&7~=3EkRGI zUOP9=nfZcSLDJ*+%(|#%qu#otrWye{IY=pvB zD~97V?Dq@*>uj)dH5E0ktC+nHh6$vUxOG=$LY+juHHV+5b4U_DD)o{#qh<<=;T?Hh z&#i{v_lc<^sZ;kyA>=Ouc)k6#n={hEzI=rMqDXpSl^;lmQ}$WZ0caYG$|Qa?f*AR9 z2Jz2FQO9egpH`2Ay~zria#;eg%bH?1cdSxmw+678_xOL9^TAx|Ovj7aa^s#`mXeGX zl>*wSb>o|b=&7@elayiX6=cy6zmtoGypv*IHCp6d;s0bsO`9}pyr~1MWb?3-n;glg ztbZSU)T$J^zOD9X^j%j^C}wyI$dWSv{v7uF)BYxinX>r@30}tfe$1H}@wi^(dyF8wDZ>lf>s-<6noDC9Z?|D@25Yj-mnZ|2hN9{`V$~jtoW^jP!#G2(PNR0o`qEn@g zWkDkn&q#`vQw!#Oiw??vsG=i~7lPioLlSpFXT{i#j`R>DnKMbqYcW>%vPgksEn}j# zl#t!d6VqUxX0m!XhRw+k(`Y;cK3RE0$mS)CX)^HOW0=!eY5bKHhZv6MORdX(#U{kOM3&t)H zotG|Vr!>1jkg#N_kWe^%Fw5WT_Ssb=?FGE?Sf4E%P;+boUF}s$epRU&PfO5u71Qi% zSKx`Ms-GncaS9AESu%@b#b9UmYXdH?%3m@QC=~}3`7W=&uB9QjD-L7=u7G|ymCzrs z1iw(wCz`G9to1xLXu@28f2Su3Ly>JocfjkZ?|mk95E2s+AY@LEm({ExoCdDWt)|+K z6VfLsc-d$|1jNO%W(wzeQ?WP8wyD|ab9Z9$J!zgxl%(jT(Q4?cIaMC?r>5s^>+}Cm?mB8)uStq6PA_ zy6^d=hO1|=gf%|Z&K>!J==o_<7|Tc0t9+oePbB#c;E9wEbRWp@p;|%{KB85j#DI1v5qdG#GTdMFYKoB%_BdCmI(U6{O%Wa z?;YQL&+p#xx%Nnf>ji1Mjbh8V_GzYUe5trvX8Wz@_dY1qWBuOowVj{DDkS~Z^9xvb z`E_@0OGd`6&c*12K+<(f`F>&7ZaqtTen(q-^v7Mc-)RyR7}4{?Fe+U|YeW1wj`sV) zZq4tGZ(YQ>escb|gW=iD-Oi zaE)+$AFjuZV~_L~{h4yVU$2XPxXxUR=Q%>=eJ}#P7=qvu=psktw;<8B0%=9c+FH1# zkZvnPeqlmTdHIl|ThX&1y${KbSJAWOfmm}$IK1%~pfP6-?p5}OtYz$iT!bCm z#P7vO+*!)ne4kFmVP}b@phe@-@(>x65s$G^f_SJ1c&O*Z9*=Q9S>vWX<)-1~p%)Tk zfQr!>h%woSk-*^WsH^O(P);@*&Ihz*TPNb|Nt|4boZNGqJhz;@2)jUDhPJ*y^!&2AEE`&GXItPm zqE=|F7|(rPgSrttKQRT7p`ezxlHCp(GW^Uk#okCi^}Ai7yIpS+oyK?>(z-pyx;<@( z-N!07;H%x<1U){`hadJnF;d<4`~n(r{pOG;A>RZ|5RMPg^TQ1EkYx%2GHm&lmiI(} zdLs+bLWStV$e%Oe^+s#R+0)7$2{gp`_r@nd7>_dZW`pCRdy~d`&-{Qd%jI^ad(#N| z4*bef*D#XE5k0@Yn8Wco%`R z;a=y&t<(#|yspE5S<--M;lNau;xwY?x28Bdr?|MMI0qVBCKz0SN+4zw)@&r#JtQ|m zB{!2KL8J0rq4Lz6^3C4R?5*-Itl>r8K_K=Z5}^u+P6^DXf~u&3B0PKx zQo*28!8BCC@>D?&7)Dti?g#y^>G?4P{9ufM|6t1g!Cdu&rSk{t_zyNjF!k&Q2Y8f| zaFmN~lsh>DX7hby4EEy``V_4Aj8KuEPVv@8T)TzM}@yY7;cUl%jx|S5$ zHUql0^SXAnx`}tXU$OO)nsnc?>Al<6eP1;3UU9}jc!n!UQ-46yAbUJNMz3IeJnwAW z5F7E%kw(dUd+vZ1@RL?fJj&`7MGMmIxP?=@wS_7FMMe z)-)H^EfzK$7d8VHwqh2xvln)%7Ir%qn)!8O6m=8k^}pX4{SY?jV>9e8GJs(l4%q4q zDjE+78xMOLk5Cx@WHUYuGd|llIBzn(C^Ej>H@?C)K1ntfVH>ZZ(??d)2U+Taoo4F; zW*fk>>>abE$tLLGCb>l>Sj|h^1hXg~O_~Pu>+ekPaZDT7mQh8Pk)2EkDNP@KGr6@j zzPmFfSulP?Y4WSd6mVeFifwW|U`m=|3coX@J}|w(HX~y+^J<)UBZe!9vdy~?Y#%4fOy)M@qE$5sB=)#u+< zc`(ub-S{sCI{sry^k+f*7>emR|AJ|U6(i=w{#381B?=4__VqALqw~XAfgxuQj?52?HmY}R=*Yxl5g@c@B)67j967Bo; z1BU@)M_&dPlJ6nlcthXxUmze1*8kf9>+gm2whwgI40RTbcV#SgCvL&wPDZ}oOr_t= z7u_sYUo5pAt_-cOF0HPu|8}gc-hZqiIN74DJ^Vj_1-1S|^sgl5AEJLme}V;*|05P8 zI`OMG=x+4<6+Y*FV&B~s_So2f{O7xk_S6q{lzP|8YlB6~-2dxw9E{)ztI75&3Q z(?R<)EU4rCKZyQy{TnRU_NURm+%~d`?LUwHWe1{a{ecA^3*KWvg}DZae~SKroPNWC zeAHx*>7iNwDf*Y_4bn%W_4&K#A3EzlV8M5P!-5R|iUq^|918~gBNjCL8y0+K_E#*J z3;_KF3(lh+uNwG%-s2VgI}=wxxVo<>e3W}A=-Z6a-A-gxW*WV^i#z-MU)axn}i z>BZ`h-el`9iZ`CJQE88_YNVRH3!R>i_LH*oq|bv@sHhr=h#9uH1ut2U&S&~*v@bss zJq5k@*C%_xnpf*9#1^46in+Jb*m}fd!rVR;%7vaP|YM$T#{r+J1O0BCX;q z#&zsk97>1_S=L16O48FGe^Lwm#=9vgWs>lQgL{pX`O$MGK1xaZ_UOmrtqBeNZ8nHS zSlVZ^E){_)Md1=RnM4q(C1)A-8l9WhPF^u`MtEuoIQ#tB*GNRM`{49uP+PWh(-A$k1c zA?iN-1I12NiD>9wv7TrT%DuJy=F74!+&_u;E;c54D=U@;y^iS@wq3Y;(pF{lt1bve zP|0rArt$i;cFZevqo9r~gGt%pkN5pQa;8qa;Py$TN>{_oEm_t?yiZ!8=~p0KTJ>Iq z_(#~4Pb*^4Y*Bd{RL{%7_;6Bd+jf56PGJ6`bn$kz_Fsi@QK@5BOUTDuJ4q;xmO*mepl$J^uHWPm8Yi-u!}Ib2YB;w4hD1m?FC`;UYct^~+`{-?|xs zY3VeFv2NX<(UW=59i~!-FSkn;PDk1kQ5Rq*&(YG?tb4j-QO7blM*IMSyp zRT3}r&8WFDj)n$n6W$CF{G37;=50sFX`qQg*>$ZA35@0v#VwqCCgkGtgjY=V7py+4 zIeK`_?B^T0xQ!ZLwtFGyZQT7rJ}N$&o3%_@$s>}0Y%PGjnl@8ve_PP9`t_HCqbZ}t z8MU0tY|)ALd7rH1k6^q=eB;GjO@bPR?Vo!?IjpL}W2A2$>IIW;wY z5}$Kdbe4z^g0D_Ji?*9l>8Sw7TXWu~!4>@db;Whbr|vcLuYij&);sPwUZPu@U^Xj@GgQ zA#Bxgc4u919;H4u$uHwia?U7HUs`X66@44gdUN6CX=AcU(1#q!9g}J(X|A9@1>GpG zNJiT?SHIbs1A5yG3gO!xCKP35n*dtbOmkmEn{9|V=h{qgI~Kf4bEbC|`w=YY%22zY z*?nll7<*XxUO%&THKXO1<*beVyCniw(+2qhE!;0vUCd#ORrDCgA+kc%v1_>$jVP~Y zv;?~RC2DUN>94*ple?y{TSuuDMk zrwV*~dhWQX?Qfl9Y<}TzIsWqfGcWT1mwg%kR1_Z#k^t!pzn>q~&Z11iH3K?dzJA8Y z>!#uzLuhq2DR+U24?}$wAt?cW^6Y(&>r%JzQI5aIGM{6Q+VQE`NR2;L_q(=A5OaqF ze56ZLBnQc$)g1-`!1yF1f;4I4-%G^t>hqC3%eG*@geq!6gZce3f>>HF@Xoo_@w&8y zru=#X{Z<3jC@wg=e%QkAyv2 z2M>wZvt^7ozCx6^BDnCb~iAXThs zPX(*cUzc=evUmo(5hgvM>dT?1H0qD0!fBp=$?9Qoq6_Mtiu7V6yNr+cp8Ms=20Vgr zI`S@7)N0d1;@y|?82{9X5Fy>L;0_P`M_LbE10_D09en)qtLL-U@@Ev_7u57{+UGGE z)69pmcs~REMPK3RCJ?isqrHmsSQ)c4lf)m3ixy1yGQS!1S}q!YB32TGQpVNkhfE}N zI@Gp@uGC3QwU=4*D$e^i6i84Pb2X`UiH7#!2-ODS_<{*P;t~GKD{A-@uX{pljV#_U zZRibS0M16phHs2?ok_7voXh7pYb#`n(*HRA`#Tn_c!kWzm|*bkx0q}J!HYp%v8`UNUW~ZiFX=p_SrCj&4!2DCnM{SU zOs&N1jpZy=`D_$?0KJ7X*>Cc{83iZn1rzA#<+$iQ zl#@?Zal=D`WGxc`#E0YI%a*A(b>FN6at=S`di3QwAVz!hb1xEdq~GR5yXCR_pgfPH zOq$6{xz0<&$PX*aOV`U!Vg~FbP%<3l=->g81oFR;7L@N$W(gEj@8p%b71Zm|R@E0& zCl)kc7etK|w2>CH>J@ec=ZTx<_01GAh!yte<%5xmMwkIQr70!ycw?kRsRBiF%moYA zMc)wPzohwVdd2hkMO&}$_kXu{3PsW>P6SF$^-9hWQt+?Qza0`SL>n*?{7bL&AF!Z4 ziO-|52ZCh;`ej7!|BMA`1k3;1u^`Q9vMs-mRdK3S`X`5uaH`A!P-#$+A#Oph_AJu8*0P#>kw@~>#sx! zEH&?a>ud|^Qv2(4SL)ti)@QTS3yIgiwXQD+sehbNKipnlwp$MbHe4_?)F?E>g*43f zHYD#hWMVevu{4$_G*($RA~JxBrVUL6jmU@zU<4N2ZKR@U8iy-137a)dhcs2DH_i7q zIjl4-V>WwH-(x}7w#Jr%#;slA5AGihXOoX->wXH>pM9;rxT(L=Z@6)gUn+xA9+C z&p(X+3f19+_Tm-xK7jQS?DZ01^<7){2C()8+Vp)2?F+H#+aYV*pY8j8)3@=pxq_Us z3ah`9rN6$hu93XH$)mnyuD(sE;d@d;=UiiVV{`9bUq5;OKvMsZM`OcY{}>i*oE0_+ zg-tj1#j@1RL+c`M1`=2Yzd{F-Z3a_A2h$4&GYk8|_68%chCZ_nML~yRY=+`sgE@sm zd9a~5@f|h-0~IK^7qv*K-{-~gW<{cZfW z+H1EqWw*Y07cnH>4Bu@P*;Q%X(!&AT98s&9fB?n7=YVY@ z8rU05Szd)NN^|b3;(;mBw$H+rQj3=uO+b^Bi>wf23Z;Xm-iM?u$K;F0l)sLtN)E0E z4|NXUhrlm;{R?}@kH^7>i!$EZEUic~kw>wVKjXYWY=?`P1mG-Mlr@}vY@-8e(Njs| zQv?k>5IHemM`pC&TLB)yn}EzMC(6k`Z|_dXkAUbcXZjIm{KiYE@FUR=$LJ|LCv2y( zi1FW+a~s@4`44Bxt!M8ff0w9@=qRt)O;R8@jybt8k zP^VJwUI2hQ5%3Kqq>MueEY54dvE&lO7aXAj2^#hZe8NrsBj|x@h9oOpBoq<-dx9Ov z3Xy!(VTpnnVMCfMnQ&rG@C3)OUgNXGIy8~bcA+CdeN!n#*b@#S{p&EH#b647QZxo4T6 zqX3bu7)kV>iZ!7VKXq`Ce9=Kck+z2tj_-^?z=(t{=Ch)#6l?QBDS*=OkMUo_8>fT$ z)MmPn7{AX!D~>XczG$)t2 zt5(x%Lm-a~mn!GV$2c8(pQ0Nh#R@JynJNem0c-zzbeG*RA0rusC@h}drw^fvXphLC zis)oy{6^kLMHfc?r{i&A(1&JbrWCwqqredrK}Ct-bM7-qAFX6IRHT=gn$#cd=8OEv z{2sQaQ@A>yfg`q2V3i(-bFKd1RO?W7@8bLm2)uI zOA{^U3y9N+qQEqE_S9g!;-@RyaR=%ucEz{^HlGqGPxS(653ng+MZtn(T=byMXX&&m zI}-a{{@R~h!eVNgj{-SZU~hUuAKRjTShkuy^1*xT+CiXb>8RCX+`$+8$U5uTBCI^u zxOTwrBuNtzC;%iH_C}R70m7?ZR8j}!IGVZw_h=cB$>(suTjF9>E;(tx0EZms!DOcK z-NJZoY_tw(t(c^#%ioP_x^#4S@}5Gke# zNXS+Weh8@h)5C52O%F5HC)9F2+8t&@Rkc#=q+uu$-tG7u{Lw%mjq1J!w?KG z#jFag_GltQW7n5h$rW4f=lF4s5VUgtjrt3Zs9H*&EA zOD{QyTU*UiP(K<0cW5V0lQYwZtEErVKfj8~%|_#C3dFHYCv{`Q?>HY36ywcw?X#re z=u-68zyixrSw3vk&Yz0*mM(q1NoV`;IZ54U4m`?dPw6C(0rn*YhE4}9+*1DbRFg@I z5kun>&3L+sCZiTMhL%spc&hz4gV8>^jw{VXa-=4M<-jLGtw$==`2~8c@tET5!vG*} znzJ)o{%|U+W@E7%%Ac(~A!5jp zDo|8vn5ZV26j{ti0&_yNQCuMGUhBI&XJEq}t;u>Kl`xa48&Es*G2NX6tG$&Ra!)-7 zOy7o1*!wPP2Bn6+Rk6rjad-A>t8>*!@+VLI5aXDwi>h12Paj@jnna_yRD(o5`7G+s zlybWi;;^&$4>2!Ss$JHo(iOiA5ge{6^+o~#kT7AAQ@bc=?xbvQgEh&iFl@9-WuX~G z%?&Z|Bj6@_Wk)u_y9}d((DJrKF!xKpy=iK{>YfZ??pIMB({zI4y(qBKkJEk2*EaT@ z_tC!#d7r&{m#5NJPmITy)_G@ay5$^$B2w?if2RjPq1*}9au%05y8X^w?^DhUbjbVb zL@bp!5-rj;o*}Scpmb&V%HB);uIWK{#P}~=(F9qMSJp*}lph zNf3@mamd$f+DSf77^{soQ{>%$ARag~QPbsE?8=Q`b<-oXmX4(X$(!;Qr0nt4y@jK& zSBCdk5QncM44YV8y#XK8>Qr6z@1lS8H3Ors;3b_XW&Y0^!G_jW_gK&_zj9VF_H{*P z%<(^u|Jr|ic3XCH&eL=({5DuyDCGL%b6k#ca=cO=Z>bBU{8V{~il= z|MU27`3H(ENyPZ?xCmipNS>4SLtldM{0EG=0QPE$^O^hc-wWYM+h06rA5}g=LM{!o zo&eqMnq9gO(Z4INs(mxhD8|B8I+xVjRlXM2L1#)w@4$Wx&|#Dy30!PjI=*33v&C(q z#waFB$;aIAcPuy@%>Cf<$PYaOf>wj-brc|aySL_bQ4JG1MnwNMo{2h|{SZE+L-T#g zzj!^_4L_R{2)wU$cE`1mDbajnez|yyi2m(sKM!Q(H^=GzfPD3xZ>2O7G5z7Rre(#FCju!pj}<7y=Y-ZRN~s z0cW*hV76hBiQy5HKcwX*;N>Qi>mCOi7AHF^CkK?1(+2by z#)io7^UQJ3-*WJgb3PT~d}hPJe=GK!RYG7*OmMGgNxT*G9x}S~{r37h9HRq3)&Ux8 zyOeWTe*ZB3==RI?)~i=2dO~$tJ-r4{Nvnmn z!&{M^hwW0??O2PwW?X&G?K#JvqvNR{n!EH_1@vjC_0`GvZiMyO_4L^jW!M;0u1xkh z!Li`k6Gy7BC&^5|u^=tEbZG|yrOq!bSR47q^Zi>YKWOe}FZk#m6`BXk6ZM3{k30nE zb@tgG9{-g<^>LAAzu^rM1O~?Uzju)eqT*!C>ko&@0GWU{$Bj#K{n2;>r)e2*H5elS z$AWEyoU*qn14#h`^LB_FHnQR218F@2BZNS)N&d9qfh>?*+xkG#=|DEuU@k_JXa_>~ zX=9GWU}1nl@O(v zP_O(@L;TQZ55Fg5bl4rfuBk(<_BFyp-QpYF&(5B8f+V`|B)X|2dboNr$#A4spBE>JBkO?70*d&pH996fVL^rqR2v7J3 zZ~6#d*$98jh`>Hk)tRu+9W%TAh|t*xBUd-qu;L8Y=th9zX1wB7p5nJ!#qA!&9jM~2 z#OP+v=$3i!;Ku0C{^;=C=m^HxDACv$)7Ur&{xbR4!P)2qNcj>^`HD*UnoIdcV(e5y z`ObXoa%1djf9(2h>;_}}wpO`~>%Tbq_ur2HN|Lp^sCC@Q_hP^lpazOlObQIGYK+1P zOiOCaiV7_EYOIC|>=|kt5o&D2ljrdY_Xd-|CFLIh>VOD!gbZ~c@i-gP=)R|taDfC?(i3>6WEiYh`OhEOqXsI;VpjHZUHg@)W~s7x;mo;Jpxj-Ap;+MJEU99lItf=e&j=$~m7mG7o2Z2Ew|P7P|3< zx(N<*mFGG&VBK1L-8yRBPuz1=VEt9$S%r`kEHg3&d{x-6@ z9btlTxVm${x|?BwUSWdTW`Yf8f-I(3N~VuQOmVzTF&~&daWut?G<{HE`q;>HdGjmD z#aB|KwSN`=#s1s)ubI`q^nVY~P;v3_(CAqK@+ts*v!5G*@TI`ND!^YH(A*keX$N@u z?vK{5i|_BHK;SDsfK4#KA_`!i40u(D;N1v(*8z6vKsRf8q*_NIS<5Y%A}#NxuVLnF zpzUg+>|$D@{hjsw%Q<`m@K^75Yjx&kKJRw961LHNzukYi58d0}+Sor>J3LxG zJzBUtp13~izq#(ZzU#b(^{quMJV*7qy_|G@^eJ%X_|5Eh#pZ#Crujub@|93CmQ1!JtzvmrYa zXTo|-iY}IJHrOk$2wqCia>KOG{-TXAezJyI9k-oWTwEvC&EBep=?@W^LpQ68YUnKw2 zSfDimaZR}?P~7<6j|J8tp&R_+{|HEhe)>PT#UaFh@PA0Izx*FNxjreCLO=lZpJRaw ze>WBgkN)bR^!O70bu18r?(h8Ho4@+Me-ZsnH2?muqQ9K|^uMFO34b5`&H5SrCH)os zbsYE?(cfBXc=VV1XY}_Y{=bj@5`tdLuKcU$@A?a=C6D|MJ#%vt?nnTTir{w?fR3~D z@3Fvl=z=Os;aHi?@UcMBpJRa=@Ug&(Tx6Er9t>ki+oDqfk8)=U?(_znN^e^>M~9Jz zE)}}iT33*Hg|mGe0?7%kXyFcZQ~}WjWgW7hpT_U8z|o6Zp{6JVo&~u7(~|9lj|H}N z>z@H23KZVfA!QqhxGCF`0HGJ5U#TTkm3{U6^vIhzI(FFC;V0VW2$wV_hY42Nf5$6e6Vi$4a3P9CMy#{pQDo zO`Z|srr=Y(=H*7&NSBx73B%-U*TDK87Q?yMT^m%G)&qWbtl1x#c2-kEhTd2@n^{ny z;1SR&w9>^S%Ue?@xka~fVV@SxshcTf^aqgJ`X&or*(jZ!JR`fXND=VLQAUW?NZ-vb z7K<;?s*_U;2yqCC9ipvnKpK^ZJ&o$mS<(Gs+m;CL|59kujwszg`GF@HlM`D4=k#Q) zkK!v=zuS#f)3Zt#sd^!MWEO(!8kpx;fE1h;F3HN zK0Ws()g-_u%-)>dPK~$VktGKsjCr{1^=S9jnB|iNCfT<-eT06}!9x4!mwapn83GSI zUagWmjG>2GihL>RIU~WUl18Rv`GPwsnWOlAKp{s-vk6+q^04N%wLEpkTvYMMs7YY7 z?m>VZ(Y~(4PM_+>Puwr7?r4NYP&q5h&oYC$4Fp9kXKMXe3dr*OO`bf~@jIOAAk{n0 z+d@|vI^=0H(Pz5*<^QmDm;44v-^e(QucCvq+1Y!6j~gF-O3yM4sC*F8`^8m0n7S zj!0#)Y@!k1IItD(2|0|cA~XKohG$$J7m`5vr`)~&%GV3EzAEpCwerYvYfE4jOD`g8+~W=XH%j=8o@omlO;1wlV-*@&9$gE}b%}gRDiqRSrPXg4 zF8K5|7?aHgacN%WC^4mmc~mKCVl~c|vjJQMKepwk|GSLdUDWm)eci!mU~^a$qzyhz z>ug!7pI&JFvUq*9ulnPn*Cy0TroP-T=XC?UY?#{9G|e1n4qY#!_gXND+jJZvx074T z^H|QsR6LJ6v6l)Has&@tc`K3!WxcO16I6oOXgMtX+MqkQX@l)FW}_ZT_Q1z!=f(wE z$**Sj8J>B3)Ba>T@s^auK|asKi-zEs78k&VVglG2ELw`}TdD8Td-VWzGk$kv42!uR z3syYyQit(xo7=uy{!W8pIujZFmA2>3zOH#w%DQ%UY~J`2@xrR8*^36GHnUSrPkViv z`SGox+8|BQ2+R-i6xtqHK0oOG|$ zwtytrd&JoHzV=YY^PA}NUD2k9_A|G^&7Ydq{gyVWsy~mbCx1~eC!UEN z?hDa|zfe}un~fon6=}(_GPjQ5r;9z{!#>lAx_m5O>>9m$6^5h>GXY#X za_~ES;tRYkkQw|O*0~*KD-*j=7|i?1k-!H3$s9SM8#d=DL=aqz?7oT=`rdzUA|c9##R#79 zz2+Q2%^0Ik#)}EezQ%KL%b16`;ivCdn&G8)>!v$)AZeL|4$#wVUo-B=QZLctOgCo8 z$7CGyXQ_P2#6d{M#Q}WXL0U&eGFJfuJ2D4TSXOp2+IFz7b~3>w*~lePXQ=om*V(wK zco(RN=x8_yKFRO-Gl2jg85sb7dNP@)d3InbJ0FX}=Zhk5ilXKphoTk7>lKGF0KU>-BVq##e851H z;%wXESa|gJX>lBTaeivap>IivTuJVHN&Zbq)zgw{fzllJBDv7;hNe>9&XP}h#o(`{ z?P$e_#EJ_ zKKj*F<!hTBx(RtutHr75zo8w`Q!jm9MwI{p3nm?RyRA=>CfS>gF`)|BC(!0UHe&e@1^v%^Ju3enx+RU5&I`@V@WQ z?r+ZfruU^yQA14$drfKR%^w(>3+xX`Jf63OGJJDO&=augiYTB8+JUJ z_XNof&?$}bOxKJx7Rzw7@r(p#rI+MR?t{xSMH^!d-|?`{2!eE;A2zb(f87yJFMmgxCqrqUaP;+6~V8`&!+-)};1$qwn?bQ!pGvXVLuXOKk!HNcYov^ z#;7mTsDJoKoc(A*_-Oy)@P66w!SL`Q(U`r^*xCO?^w(>WFJn@mbyDcQ+L4IF83P*4 z1l=GS*lqbE`YTU7swh0FY&d#!_eb=*E{cTxVX#3OueTj2DhUgriV8@8ZDoac*&PQgsj^JC zyoB5K)BmxNtaFI0pDukR^K{XLj(J6K#kScV;}k{qsy96}EP z49Bq3?O+kGdKEC3W&U(zJ62@nn+W2!2tmX01A2{9jSJAeY0fg~oN3ndWA>h}OgI5%tm?uHGfD?~cW0JdbV zARQfZ{2mL;I=~j)Bh6Xg%h-5aIZ3;+M0A9}XL6)U28IK}3z0J#td+abqw|9kETxsC z(KQa|Q=P1Hz4r6v%+qfUAQdwBZ7$4>FD#ud)Bs?Y$YmCvWd;Zs@95AIb_y9=er60( z#|A4@o;_1J5o0}zcyN9e0en}voRSG-a^B&?J~ddmigY@C2)Cwe*YU>JiSMqHjX@l2 z2w3k9zeQYHiGqck5k45-m`5GH83i(rFFhPP#2;HCP`>0dyn1$oVCu9jYrL)Kbm_aY z4K}`NXah2`A#ip8c{_j%&gXNP2!hxMPhkLLA?(93()$&Wd*rdZ`N(_ZEKn8a0Rb7$ z)!N;76oQKn5;PLzr2?F&KrqM#5{!eOq6ZJ1uPGo3V4v%&sB5X?W7p*+0kR7KyX0yI zy&mW>d9um}ae4vAMe7&hq0}q_&JB<+y%X^0FRv2)iAtW#BSE3RjsB{`#{&PA|LddT zP%Fm4Qv4ucGtY$vEs%<3Ahw}W#x57D^7aZ@W6;TGFz*P#HU&oDv6<(=#{vZc9Wt&t4T;J^Am zuWg+&1!24t+}`FGI`trp&1Ek;?P?u$Jhw02=4ekIt|@gWH#nJgJ6~TStBCfV-LQ7l zqL~k~H(;-uatP$CiU$s}g_*o>;tFA_q|iVF`cO)&oBE9FQNF0FUk!EmMA$(Yf($SU zc;O$|f=iFIV5#qm5_QH`k(DHSKeT<+xt7PS6o`W$l4_=W09}H}mo8=0C1z+VNA-*0~ zh@7C}^5g$%P^K(!fOe)VNf;I;hU}&z-Z|u)y-vkV6=26r0=znY|3Kal69x4V;R|j` zlQ>1HNB9#I^-C4AV$+1AdI+JZ-XQsY+F*yT5;{x`}nUsxEO+>^6zoA{iVE>FAwqN1)1h0%$hHyX3 z`1R@Lq@n9%>RTfaeV`qxpIep27z)d6S7 zR>aC?x=)Adg@~~ z<_PKiXn$PlmTXOJQ^xBLx~LpQpY&f%jaVexr9LT5_2?6NHNyL?<<*$!O-f0Q^d&?n zPx-TN2(hyXc_5w+-P(3=Kevj*!j#e)6&P#d>2mWj_;rP_+xC1V^<6jt3l-nmbBEWj zqtH=TcJy4|)?6QiyAH=T%+!QyqT@JY$=^NJoR(4=^6k-9=$CwKtl;*6iO3k`bFx*5 zLGh62xAu2Geju9wN>6L@V=Al(1q^{OCkP^bwh5T8!xybqB5OWl$hckbv9CLUP!k~P zZ8zhxslYkg==cXWTf%VUdkWzP0<0{k^YTm3z#zrfgOpG3@Qe9)+Hk*QODIE(L2BmJ z0pY7CEn*a6mbren10Wq^oJ2rApCp6Umr(86o-r5rv&!SnFyk{boSb7&Fx_~#S*l56 z!KW8WcxOvg@XoeK2u zkj2O9zI-N!r0T_>mkx1$*hoe3#k)Or=~+(5AO4Rz&if*o7|-{Y{|j492aW^ z0D3CBw!=_&ZgS^vVSNGaU%nc-xX!XsZ`M^$F(+HvlC(cY9Ok76Pd;lh%q=5et!HNC zcvOl_M%nQcCwU9C=z}>mPOxlXc3E6TIwrbjFAhm7)jP^LV}@V;Z!(Kt*Mb?mo3B5i z5V7L{F^LQgGCHxLoZ48LBRVe>WPa%yC!T4Pc&XCDR4a}}?KdqXKpUdRnL8CmZn&uR zq0*rsCYtJ7m|EN@soqPkGY>1JLdejg?S5Q$*Dj`|)mV>MbD19!wrXx>f$41cv`Ve0 z8V(dwsVWIHS{bNX7CBSN&iFJ&UZ^^T6w`@1Cx9w38i>=;<401SSJcjLtCJ=$SE$BQl9<6@Sz0nz z`jV$KQ}R8&1mV;drMg;8;R8+ew5ch_x;jIz1MTO8({qt^pDbFL6?D2LVyZn9bYt~+?i&iS4P8ujxPCx2;J9pl|zcgWg#-NR3wVXlG(m88re9BLO6`M zwaiZH)%p`9ytR#nsBr(c9M?}!cXl4)r5Uyoxt&yZw;A%z5PdZQ#kDp2fWfc5#AHBg zx--ek*^<&=Y6Xe6-0nUU{ecPquVEDlFTKL|WzrYyq}iVP6rb1Sgc9Vo+FB})ncfmm zfMIk2)l3@4F%e$`wUAC-yE5*-Tlu$4ktEgiHwnM=OlaDm*P87@>}3xD!kg$`mKe)%-rZ(nv{r@#Z2~Z zd^%Q^@S_@pt;J~vMm&^E(ib?bgm~w_M2+rI<9IcRBwddM_PG>rx7utGxlb&pap^wB zv{6f%hq}d_6?SXvBqa07_-wh9SqR(d74}S)B-X?!`z)zn&d<0iaaUX`Y-y!6PJfnq zQ_byVXBs6xlSl`t%@=mC)n1sNfsY0Lt^ZSWVB;lZ6b!Lwnsl(YfYrmJzfue}Bjxcb z{=EsizoWmu#sdHJe+C~)^daB{GCfxrCqHdsw`erKsjQ*x?(L4Q${_eIA*)YpEqA9VtB#u$&>6Y(v zc$ap5jRpR*|Cra*4aAmW@cK^5G-#dvWysi6(sPh5fgmJ(kbgY-)$3 z!SrxCKN#*3Lw65)Ms~D}-wyYG-dSE*%@QUQ;Km;`;MZ?Gw|@G+Q>+seiB4?uoL~xU zSSyOtk>~DD|JQss$vBR%tN+{ol`JN9duBuMQNCWZ|MY)Y8EAV(zVubM$G`kvyKduA z_u)fk*KgWz|EKK@IWT!IDnWjO_3^_~lu)meq?Nl8<9y=kV{AdstOslDowu8w-ZwKV zu(v-_zB_dUZ0{NWSZ`_v;6e7tssQrU%K{yUgw-JZ4zOJZl7Cgv%@Z0Of1+$mo?~C? zBFOwUt}16W^4Uj}cs86xChR*1E{FpUj{~2I{& znZ$sV)Uy)E#Wsg4PFBWBIm}A6*hyjDbwN>%y4XR;2E>3u(BolU4?rDPYF&VZF5sTH z{A2NX+pg=E;v8Jvw+zp?gu3tLp79uT|FC_==h=-A_DmrC+3eHqheVyiOk%_sVj>D+ z5CbtWdofX_(!1L>!tqw>E5xVQqIDD9B2+zu={-bc5-2S_qVYY77!pcE63R?H3gJCU zRK3bfz3~6rYFU7TA`HN!N|BU_`gmWLPiyXzZ9iPVHjrW>T^_fZ3 zjCG^o0}!8^_gT6~sfkPFceGgL_1V_;jlS=Tu|`;F?sGirbJ9q(Cwf1N`1vI~`YVL{ z0`ENm9ni()^V%)91BcK{v3Q&K>>RVq;L4_1&{u6^+#+=$M_&n zh7kMPefAIN4}tau)K)!=?hoscxux{Gs^WJaf{z8t?os+V?exb~^+&_~A4r6ZK{ieU z?*C+`Z*d~+2jYJDzdrrc#Pp2xvw^H(!4yvZG|*rUmt5kcKXFk@B-LQ9%V427pD;F% z*aV>~t+5~g?*HV>?GVZ7{P3-tX1>QxBQ%%%@_(+kG5Hv{RT3?=0YeS;LUeSLo^rm# zA;3oH5Eo+yP`+dQX6OcO`0nX2j6nf0PprcwhXNwd?J=a;Bhe4-QP+?hG?yF-R~SxL zP~T9{fDWtf4-aCD3=xeCGmVU#4Z|iuBV=XIgzOb5JQdl)N6u0e7YCp5YCKEH23Bzi zI1a;?0+smh6u)992@)x-GbzoqJexI8nzL7$_f%RaQ(U^~Vhb2u*HGFwADzM*fu4;X zf|Mujl;FF7lSJ^PKxL?c@*&mOg@p2@hVm8M{N;^Zm5p83j@|W)-Fu2X+gDb-Qy$nD zdwix0TpIeXMSuU>{?B6K!?rw|kV3lxOrbMft*cC}yG5;sY5d9J#8Z$8BK|nwUV&Xx zkwaMdo@?@4LH*ib^44CR3p~jl0bdZDE-k8bCUE>Mk%N-9A{MmH9f#9zbL z5jCE*DoHM>OBia1F>A;uYRGy)A$3r(e5jNK6pjU%&nD#~G*mJ)RO=>KG!@kI)iju= zSbHbg%GJ5OGopH4PNC3=Or6 z%BN`lbM*JW>Hj2W0|M)5EoSKgCzuk{G<((FPpN4+XqmR^n2qQ>U(zub)(pGXF*(pN zh7&+$T}xqID`BlzMa^gj-55pP@Ce_10; z|GWNgb7`45w2FG+Blp64;^k0D{ay?Gjo11;<@#Gw`ri)px9|14F%33}4fdD~_Js|0 z6%E#ejgB<+56X>>6^%{|jSd6#g-7Nym-I>ujf)+O%MbJ_@bxN%yFM7s-+AfXx9Y*X zj7#s0%OZ>~GK?>YO|F;ug(L3eWA2r`rPcj|)dT#M z!;#e!;;*NeU$-PzzA1j)HvGCHY>Mw~`Y6(r0Ji#_+4Mo1Db}bdc7-X<#nQj=fB1jv z|JE4$)|iy?|79^4^LZbVO(V!WAHh5h=ok!i@kem+`vd#E@&P!x0pJ1C`6_%$K)khb!z$svGUYkpHH>7BkrhJy7c2%Tx$8z|@ z7kUyix{~^NEcdqq9Gq<%p6eePhcm#RP2iz{vHs@O&uP0uF~{S{=Q9P@OLf<4ombz6 zE_Wx-cBc=%Eo`iRh1+A8`%bB~gulGl1_xr!{ zzwpUF_=WRZ*!B7S{mK3P@%{Y~yn6wI!TsOepJeSH4BKD6ghREzT>gg(|C3k2ANoH$ z-2bcB{<}N>fByTx?*Wbg3H~pP0BZl!2w>$e1bFmo1d#d9Vld5r7y)ekwMAbt>< z!ygE6h8Xe_0V*z{2mAv9#P$A(07pd@Y-_0=2@w*^29t1rI{x zHAn6zj!5Y8a*&aAT%rS1XHe1qE%JuL_^8j+p=(Rvdqy|YQM1oD(hqqTaURlx%7^ll z&{{G14NZ=5oGfs;l=u&Y$)U%E(8@s+a^WAVP}l0gwWbK zcVY~IZ#je`mED?@BGsgC3Nz33^{t@X>m0u26SM5B7=k-qZeJv}=O&tZkshfqrV*3c zv-uD?O0(Xd)ps%PLpn}Jj*LFelnE@ETCLPyg1;cxOWX&w`HV!#dpk70mv^wgb(1{w zUKcZFQJKJlEpu#RZsY#=1bkHp)Ek?wkFUti-}HCyDu%kiuxoYh zC}xYNTPZ@w;)%tEwQ<5;ID6d!jaK%#CE7=@EQHh%9z}(Srt3Ne+<7c*l<7bamMdRb zD5TEy$%wpqg7X}6IBja2Pwah0s2Pe|`chLONOZ%(6R1mh_~5NnFFlqo&{W4L)0!jx z05irHI`p`6reE9KSMP!P29BFH&oLmDj2aq7U>(x(%r7{wU~wA5&b1qJqbj&6+@ie9 zii(UR@3novT3(SWc9WM{lDtsXGtc54#n!UWipxeJBo}kJ`doXk=}NZ<>D1z{*@)oykZ-~t09k&oQiwSIMO+Y%C-_0e z@pyQSb1v$65tBB9ydGLyw43kh*AnZR>3g-v9jfPSwBo~NLA%LF?`e5_Z4^AG%ftEw z<~cD_tn9mPxbahY9IqDu% zl~bvh4;TgUG`&1e5=>(p?7x8@YmHuHL)|$P!ZV#v7wJ!OMn#K^JJ^!W28fEF#}xJv z;^P_%DvIC6U<_>u>%vCK_xykfy&%TU%9qq-Xfb;*7TVgO?=1dn!o;4XL9CKNk!=X2^A8Vh6g@`>Vx{gF2m1>9 zg+r_2RvPJ1MN3pPl;RU8m@NY03UxyTI&--8XJm-)RE{%vx{62GLRgu;J{Y^`Au44y zcGky{giTo5<)geX4&{14!Q0qna2Rau-iy^46DE*R0YO$XJT%e{_&)6T^t=n~{)nUh z#WQnP!+rhJH{e!O)k-mzWZndu>(?Q-)$X#qB3t4onGmE`upf8HeCGmlUdQ(*X7&5B z{#$`{PCEIR)HiyMmH5UemYLo&uj*npXj32{;hg^!tk)?TWOp42gSQ#4VClv@jc?G+jGgQ2rugq?jXx4B>*i5oVUYvxJsD`;Gh4GqiLWQG9n6EACN($sE><@(v~bEnM1n+++wqHs)@8rzUmr}fy!VmIcr0uh2NdvnJ% z77=q_yvFtAz~Vu^QRk@kn>6J}567`(`M&O_n?{`+;%K*qg>DgX>_MfIL`XB`1z0F| znJ+)g-I{`>%Q@kzr!D(1ZA{-YH8tDR@hVo|_OQP@G)SQ>I&$KHih1pVedu;lGq`P zf8jbi<6M`vZO0E=K@Lv}c_C-*dL8gC%@te4)lSVd+*dmc0qmM@jjvBfQS6HS7M>lR zjVM0}714RSI2BUcuepX29*Dy5rGZJ9hD=B%Qo}mDMkbK7I^5-x;b{@}cM$(N-@7R~ z{FzyDjAUhaWOvy$8s*oXUS@KX*?IUET5NwxJ|A_y&19B?BHobMH;4nmJy!weC=p4I zV;>YpVY~VNunv8z5z60z#Bv?W_5@xG=8xmjjpK2P<4cJXXp9q@ixatygFJ~Bw~6Dg z^2G7weQXooTqLkx6rb4_FKffnyB5C)O0Y|c)pHHiX-qIR672mE@Rfsz=nY)dd`*WEGbC0)o zGEexk_EEFW+_KJWvaTAl&iS8wAIJjilKgm*eOsIb(#wXqW#8FkqornT(&Mee5nu@} z;(Ye0E;hdHhr{>q)rTyi`40qg*iX=McCSBB-DFa@=MbjmFwAEmvga@ee1Lo)=F-dM zanI#T%@t_M6`Ic#xygk*%@Y^MlhDhPa?g`V&68`&%ZQ0qy2(>{ny)61uc4Q(<({vT zny=TCZ!n*4bdzuLw7^WDz+A7u(!IbswZOKiz<$2K@utA}Y2izOLKnTlH|~Y5sfF%M zg`V?;-ZzClPmBBnieLeHMM3UGA*n^7O@AQ3=%>Z80zVO8qI+?2YH?~)@gF0A^X%FX z##{l$dg2Xv|*)*w@{qH%rRr zQmLl~%XbDT_jbzNo zt3ofWLPe**ME{7jK#3#&@u55+e%MC>dDZqIRKG;6*=49Xl&d+ht+@!TftJ)D4b>p7)sO*eg(+%l#cEy5YQ24H89mCFhiX~( zYT422I2r3c=+$X?)aj(v{TGVC9`&wi_3q8}o(uKfxAi`R4Ss?R0s0L=9t|OB4WZ2q z;R_9sw++#Rjj@7_@%oL49*xOqjj7Fz=?jgSw~g6^O*w*1dHPKS9!*7QO(o4uWeZIe zw@p=q&DDaI=8F7Y;HSjZa*GsKiO+PL+`j??6{KexLIgNxobxy>OdFjz%=N<^6Wqp>g@Mu z!xt(a3+?G9ot3oTgeJf{pE46(a zZ+IKOXD88O_mjnD2vLu?P!Bv^Bjwp6linlO(xb50qjcA!Le#4!)T?38tL53NlisV> z(rd8TYjoFZLeys_)MswcXX)8zo!)2L(r3Te=XlrWO!WDs&}SEe&;K|A_z%TkznkW8 zqLv7uwkU({jplATg#iZp0jBT)ma+l1;Q@~Q0WOR|p8amZyY2#m!J_@nyt2W<;lW~z zu2PJla{G_hLzT3pZJ!K=VD3ZY^3|>3)h$HBO&C>O_8pD(!_7j&K>cAH&*72u;eLhT zL4~Tx;i_SU&IjQm*kvQQ!ySwJ!z+seADOz=6}mRu(5I0m~LyAKCdLdF1w<49irVgwM!3sk8vS`+?-z+v>s$QQzh(SzY` zV$2E3h|liWU}+y1NWcVLk*@#)j-nY6XFhtr|DyEAIEfwrz9|;W`@(2UeneY)3&YC_8Cxhhbd=f zLb~#)XT+17^hGpS zx*RB=vdD4_WXuNc3QzNy04PM(sQyw6{&NKIHv*)p0MKEt#tW~4y;p@YR?&>6NGm3# zk5@GyV5~@xP{q=s7nDAGhW`M_?ggdBUgI*_)cSJ-klJybPh?Jjg$yZjb>x0MglL05 z0t9UZ0(?M{jvzqC)?@_8I&*S?89a9ZmWlwvFe;$xqnm$>0Jg0eMb6PfR@Y)T1iWV9 zf>5M<3os6pWC5#_fz?ztVwJv$w=RjV?nrw9y+oi}_Y?1owtpi)X76nq60o|;MzzRZ ztkZNXtiHR0^Be<+=Bmz(K>JD)+eJ42piyl;qocx#n? zOW0_uQ>lN1Wd{J*n~K4k21)RZEDX-6WYNZn@taY!--FHrFzE~$t01)-z zi5_H4!RM4inK_7cjW_EQDI3I13UDU7rhIU?P6Cv~0+X--q)Bhqj4mlF0P;U3)SUJp z5TGjCxw`QpV-?UH0YxGj$PkU(zIM)!_p^iGcVs5D$zN0Ux^h8T~+~+w|~aFe9h5rBJ|CbYNs4KC=;g z1aKXW0EN9lPt-PKVyPAX9sv%=NKq_H009tm293PC_z6y002Pmulmdsej2gLghKR(A zp1#RkT4y}AXw5yX3WN=8D6Yw9oFAn6fwTDdXh_8?*T)d~@vv!tlhG18hgHCA{R`uf zP1_E;xz5U36d2m4W7Bp!#M=!0$H%&~!8>gTUG*%{G>HkbFdI{C^2d1kAJRoI1D?fB zifH8qF`MuC&{U~X&XvHM+#xdVFj)C!_rulRkNZ9{Ee+$r^f@8+S1uHayHn-HpEG}r z0JgqECM79QEqsPhMm9g$@0KAkAZRfdzxxGG+C{?U`$h2`>k% znv|l}G*ll1qpQ4%;9gK#5Mw0r7Q*B$$AkFR2Yc#AhGGM)aT~}<2Fc|Z;uTEMVv3ym zi}C4jSrynnQ`IPNj!AIBi@^rlt!a_gm93d;P#EfamT%ps^!TAF)q!|&I;NsTFv@sV z%$hYuDGBxk2G!3PA*!lamoJCLe;D;(S4?1+b3tSUhvg<7Gfxdx`VmcrtI|AB=K@TO z4~}!qx@^Sw144w#x#pd@IT)!D(tQWks;?lkbWv$yjWi#j98@e>H?fK~h54WK>?(VC z^d0zLa#GN5gX)Fp4~J?N(+udug9$YFz6Rh&HgHnFP+H@=A6}c8kq_~0ilKtP-)pl< z&r#H(Ha>#Nz4tq`X7BLCpC_2`A&g9@4k2i9?(-(r*JOK&IP~K4v{5&=4C(v*DIa4G z#s?voMnO*o>1x>C@LSf0^X6FBZ#Mop0_c1AD2HMdgI9?vo2`B)%>~jKfOjJQ!Mb$& zd`v|iVVTRW{%$GWPKkag*~ER%Jy5c9*+i#GX+^GTucKotNh7S)F-8^Gdc{;5D8<#m zGv&FDGc)PPMid(V8u8OsCPb!7Zot8@LN_|+m2K09UkFeXS=c2i)Vm*vA`e3GdP+M9 z7+RbjbWevDD)m9MjIfTkTVkQ2-gueP%LQ8RWbD#iza12B`Yd5}Npy=7ugwgZwL;&i zHj`}}wV@b`=u_8+Z0;A|36x_u6JlBn#WUZ;w8UzB`f$mI7l{wrCaJ!EbJV`hI}%E1(AgN#jsK`1tSql${%+qAY8r(WF)e-@0$gl@_G+Y%s;ga(A$8===(`7 zI%2HcP!(?c&G3F9z?gSPJ!X^G+j#g);{a3$U>aj95cz_d`E5+*2eMZw%_dRy4+Lfx zA0>WZf7)U4mL8b9yPdR^&ldS6jbs^O@wtxfgT#F42TbEn&q!z@JtHX1sKO=-eOtt_ zRI0E@c_w;t_sc@FK>4*5Cb6oCdGS>In=)$jv6?}731n`Y(q=m`x^MCli5fShUKYnN z8nB18r;j~~f~^6G7ReYNIL7{0mR$M#ind5wC=oqdQ7@y@mLNSy>d|>r zg~v@7t!8M_kS-0aXygdz6PnB(YWhu^LARXh%#s#b#?zfaudeDW{6=wzD!qy(ZhQjL zYiju3xr#1FeBy&TYKa&0s)lOuNsmTkAaC7bd~R@)NrlOF>{S5p*+3w^3<6rXuA;3{ zl|NIUjed|Kes<#vKZy}=7BqgCe<)&muv+vofP{T z)KC01xrT6&CcfWPfGsz(9w`Zz>iGj458CZ za=f=Uyr$QC7ps++y-97$Su$T7G*MT1-*5Q+MzwXz#weuM!SOZWBoONIu|dF(K=Yz| z?h#u}TEgf<(`JJ$o|(omhxhhjX}$AnJD-|+9pBV78~!M>Z~7?cC>8w_XH0yi<(s6F zdj{ju(W9!SP9nUwn}WtSqtNC92R&DIj^$AX?baV)XCE+;z{T2(%~Af~>%C?ZB;I6| zOK#`PGY=e?Tu(bKiy>UM#{AdUJS-K)fb>4>yo~xLex9TUcmTW3|0|H4`YF#e3tx)09)3# z7*w!22w%j(M*vxa8^_JlPG&PqdfDN{;MZ-Z>?4a07=jH^p&hSs2$r^`-@RvDKSmRh z`T7kDXN15$%;nbzV0%CQdURlL&(|HN=o^dBPK!%5u~C3f6X1@I!F7ok26Qx~;e(s$}WQQ`Na{SjndqhC^**k7d!< z*#X9P7}%9p-Hg=9Pp0m5;@(Yfwwql%Jn+)=V)fd!dVMop>8)K^dA}e0`gZxqTeqDR zKKsmdla%Fo!&rIKUn+WfxFU2XIOc6sa=*hV!~gJj9Pe&L^f0SX6cFD&N!S5p?C22e zxX^D0NwmXvk}f?uuEIL5pF)+EI5ix=PdBu`B8l<($o(^F_C@rD>?b7z{0Z`xibIaL>hK?NxlYa(YCwRsm! z4=Gi62!RPLZC)2cElfP;nvIapk8z`m zbo0eOOHk`Itc>07cBa zM>bEQNu5YWDEog=ch^B}E{eYQArRcP6e%vny|}vtch}-xoZ?O?TC@}^+Tt$3HMqM& zu~MuplD=uzTKn#O)?VwJIcM&B@14nHm?R{V{1qNP&-bS|+o#ee$oouMIRHgrw@;n6 zKbHmo!sk_I>DRWBNs;OYY4+=+_UprB+++w5T)!S{F?d(Te+7ZsE`%_;Nn@tp1Qr1- zYUHI1CI6OUAO%l2gik0QVoSqkRX^ZR&(FOW5|Z-Pw}Rgh76F`XVJrGFg>wf40T_KlDA&*7jt*}Chv}kJka6zR)&ZJDbk0y| z<f^^V!5YcRrp95;%GU+Xl=V<-I!wis^Z6!k(zr&*pxtB>S%q= zXoJyUTi}bdCXy?^v7vdP0V5}Rq7|b))D?QeyHP&x6HsCon7(O#zFX$W*y3o>T~nfHV&ghLinAxp3nTRmi@53)K7 zS=)uIkG=Kw?DY2>3`mvRE|S}+m)q?djIu6k^wdP=5x zva0$)TK?Qqz7aMKOs3Z4sMKsFT3|GCGp0}+pjLFE@J(6q`@O<#j@liDVm_JTyPWcU z|IWMF3Fz*`537l9Jc@{36SvABB;(0@M-WON2tEOX#;SJJ4!RB)ZH-rIy#lq(PG0ST zYRRTBA11MYQ+R|^_;l(-yi){TQ-l#yBr;Qvozx$9sFMb&lc%XuKtO~K>Kg>pRCLqS zywfx?)3n;tbk@`KUeo`D#bDkUZkZV#?HOL{89uKW{)m}pX)^-FGlC5>Lj5zsb2B1) znrU$3Vua(HTH|NCsuI_#l7tic%CmJlWkSTS-IgL|w4a~`hJ~edhNgXecZW>6>dQP`^POoZCzhTa(f6iEY4xShE!?6RQ zW6q=sWRVN9Ow+a^*8v!7ThD3R?rGaxYfG_eiIZ#DCum8pX*r#0DW2*mJ?JQ7>Z*|I zsy=9`0W~}m)IrzkUYK*5yxQJ$+CIg)z6rW7oOE48bOWI(3!?w+#bCOnWZtC|nWa?i zr8MiMbg!k1h$XuEd8z(+r>Z6Qz4<_(ZZ4s29-Z!6-i4qw*r>05!GnGw=CW7+f^Wlu zpYgK)o^El%@(ZWs@<4<4xyu3M2E;1b&slXois)3U=+qd`o3c)t0p}O+=WXc>8+li3 zoL1}tSDtIH)F+6vb#yeO8P3%udL1(+VQRy!FGllmMg6d`n`+>B9^OE zjE4FRhUb={2LNQ=?f}=MmF*p4@mLVd=lR z80^&ZZ^hgnBe}mQ9ITcHYv!5S0`*KVlvMCoSV(bkXfco((1DN9kTH;uac~J9J)s8J zzxYQ#5AJ^@^upjAqTsCJ;a(KNC3M1N3?t-Bz`dJ+&z?XC=|{Hj#5V3ESM6ff{2*!k zTHY!Gwx#=XPS++-(LPMYDN@BfR_(=WE#EA?pm%!VMZd-KKxrkggdXf?SWXY-<_uv8 zz2IM$f3);|74Z0RJ8w~Q>e z4lnh?>Uw_+?85qbV+-eXkBjlD|x4-7OW|uYI`RYP#R+x%~vW z`ZRZZu(kt3cE9KL{^;=S9c&*QZylb_o?P~we{Z?CZ@GMEyME~Veh0b#KL2pD@^G{D zaC7)@bM|m?aewyh;qc*M4+`D?#qMCt?gEDI{!!ZdhoSqQ@Ug!lX}>-B|Kyqf{&)ZW zb^p`1_V-WzU%40d7?_wt_&*@#EdC_sMt;lYz4=F+b5$xdG0wElf=$~Q^t6>EN7coXWnrmKi_H*C;5im;e z3FD4y`J}i0xuc^Q>DdTN)5*o?T4LLCILacbr2as+oJla!)>y{49-=bN#NK$oS*hsf zYc?tp^mZ3Gg8=@EaWy%o^Da#qX`WfA{p)K9LsEiTE_>mzcT&I%k;z4Sv3kyajN>$S zMXKO6>tPa^wJWIdvx$W16%>7ul|f`{^vkVih7ZrixM)auNf}1>nE#Uo5~Oz%14I2NJ3dQ2!QM;q`j?;B1rPOZ+|#($G<)!Ou;kqRgaNWRydW2^^a*ks?{n zpm*mR%gxmYUT=xFUgL{_7Qdrgb?rB6>Pg;O^A}{YS)RJDpUhjew&$~X6f zeo>_~yxZu$aPNk*s`j2VB>#wJ!`ir{6#PioP>PmMA_sTemd1gYO#Ex(=$Z>9mvD3k zoIFPd%Y-e|wbT%7<|Bls@R@qHV)$Akxg*;+-hcCZ9#=X;X9qzyJQj{b`jD;YRoSb+ z8uzeU;UwYn#z5iX-+SDjhLa48OQHWncZJ0{3@XRsmNoQ;1HNcvNC;X;CGYchOu^yu(?)O74mT)mCmE2X z8b5tFlold7aTwJy{sDMd#|;`aFB>D{eIS-e`vSx|V&3>J+Sl*ptrU+%Sx8?A44Z&eGy`co2yAl~aY@r<=u z!^F{Svvzh@hqOR6NDFYneVmL*W}C06se##Ymeg+WnXFPySyjxvr`|GX8ARlcnKRV4 zp!6}V?+L00Ro5=nGle@d#uGNJ)K{#kf!O{DW+0gUL&{QdxE-Rrs=-e98yt zq(jV&ns2UFNkq;N$U|Of3pLHaAHm3_@TP{0$SMXS>}dnvf-o^wUus8#8Lp7$Z1^|N z7vF0QMj~%#0=6(pChtC=+56SJ5?E*^6tY@!9pF51zqFX&J^{HAN!hzOI*J7p=&~oe5Je6o21>*VPI)R5w3+0~GW8*6mmQc5=5iAL`cngX;l<>(a3#EkDmu)C z)oX`An)a6A?a$yCBHT$>NpTOU>l{ty;vP@NX=Ir!c~zx4YhO1>lhwT&lN`H%+Indj zhhN0efqL>yyzaz#wvls#&;9(eW@%KtMis}12|f~JBGF~}Gf*G5vwR#- z`Cz}~*=|V^HJ`qLT1*`XF(^gN9D+@P>FVoS$=c6VK-N5|M*Uy{;K-N z8eh)Sx}1m|^eCX4d9$id;AsUaNQ6})33GRmZKW=Etidu+)rr3D zeqgQGtl>w8M_hdzZtx~m``h8(%pShN9=|xKD7KS(b_Vj~OkmdNrZMq`EoyomV%P^3f zO8R}EWGg?X4MTQv3hC7s2Hw-=7a}RdF*(c4#~Srwy6G=n9=b!I{Cl}3#BY500N40V zecoc>#q&DZ?Vs+Y(EzOv!E6ONG1ayamB!JZ()R+kez-^cc8B{P-BXL=T)64_t083^4mR z)d@KifFk;llC#!9xR#~_b(+TuCR;#L>A8q94~>#tTN!KTqX^5*J&tWc;RbD+)1JWH z7p`$Os=hU@q{M1i2X5$1zJ3wUk@KGyd&_1=x%r2<0c1mF86okHxS4ddf%WWe zG*+s0^w{|rG>jf%vIck&9=Q?zJ-XU$44xhQ;ieV_;0%LNT?2=7Z=TXH&4bvAXWS`_ zVRNvPHqF_6Q+Z}=15M;yMR>g59(o3P8i>*$>*7eZ`_Q=_1SnoccrqxdEK0H*hRbIt z^U=x`cxlhcbK=vv4l|Gj%A$bk?esR~w(-pa=-eMyBN3yhVS&ty5nqMvMZNsy=4-BZ zT&nF%rxxua``t(9ZZR5>N$k}#&q*HrksE`YM^7`NV^H&BB=uqnd#nL9;qvKLA_Jkx zmmX^T0fQy6qCTB?6cH z!_brz#r7Hg1y3Q7=T6q)!S_+A_cB3&_%C-4Oo6c3+_I1nJZlwxRl~Y?jRSR#_r#gc zUK0p#XM~A|FC>u;t7`0r#1kZc)N@>`Qwsf>Tp^Pz_cfj-Gua5$Mkd;ckIIDC7mt65 zDpoE^+xJa$87rxe5t%@&@AKdU0S{IM9PCWuO!2)Y^ z1~*DB&olUjl3N&J4=v*!f6r*FcMciG4fCap$aIZq$!=$2j*BsnljR*rRuWsv0;p$> zaG<_OfX#%LpIH=y>9PBSSRF87)nR4Fpzl)sXmm=GvV$e~Nc5Gol zHL^Dd36-+Q^|r*~@%#SyVpujWSg-`@Z&2cROQ_^m8vB&U*}l~3)}5#IZLArxZWbJj zH~Kv;O*AM?LMxg5o*!ObmU~`c{v(!f?#=$L3z4Qq4znQDn}^FW{yp3 zSpix_QEWw?V*baYijK#H6NYD9km-)h89udC78sxeloF;^a;99P3;b1~3sFtg#XIS@Z_BF@+&;fU7| z3X$NV*V5iqQybPYwp9~l*Rr%hYgyuI+3sp-N$a?jYJlj32>x}jud+0Tb(DrUBFA<3 z==F5ja5fxBPqJ&Jnd`-ra3n_S>4k9A&>Nl}*J}yY!_XX7TfG4(jI0qX<2G6dHCh=q z+W0rxWjETlH9D>|+Ef%ibwzR(YVtH}^8Q22EpO%h?-g?^ZJl>*VAA#;q4qw*_5uI) zq3rgNw)U}=_VK&+$zv`HapoBz<~b-c^8zXJ5<2tB-P1L6)>+cddFIYVrOsuC&egci z^@`3-q0TeI&d>gxU$Q$d+d8jTI?uDaE-JcUM{jSAyS}w`0We_pvE#WpcteN*SlNL* z28M}L^sx?1mTv4Z8r+i({P=Fddn#fKR+5u$QWi?`Rp%$lJygnIx`3xNl|4+AU{;K7 zcE@hcv2Jdb9^UvKhI?}6lO6$KO8&}Tv6EgA3~CAGKB-k2nfN|AWm1K)J|$%a6^wqh z6JmAce$53+Ttupv|Wv_!Ur4t6VOJ)Dp(SDDU zelLuH7c2w5$^-t61A*}a(BR5}kgcNc-5>>e%@G*d!TbS{O2G1ep(jEapI#+aar~ zko9}WCfWG5@c6FL_MR}CUS27#x8$e2T@tV8H3LzoE@*i{p_kO_qQE<$qfgG2A3F%>|n&yK{^Pf%&V9p4!&WNbYa6@_}Fnf6u zW@M{oPy(l*m9ub=S-|NmBIXzqRFl#bJsZo-sa$DG01oKo(bDP+$4bWR0x-kNpZ zR%KqzY2G0Lc2IR*9Ww8>HtuP>;2pT&le^&8u@JDf5cI#q++t+lVs!3eY{z2!+G66v zViNgM@*iUEP3{tmx#g@aHXe-EEd#fnCv3S?ZEZoei1M~5JGWHUkd4KG8XQ2ar0u7w zz{;M9!0O+#d7Ny(5lSFW-i~1Bj_~@9D0D}hV)yrKUeKDZyE@YQ#eM=p> zMQyUD;k>7HwwyfqQ?~KJ7Jk797Hs>^KnR+YuLHM$S|9{-(O=m-iUap?1SWByN6>*! z-oc+{b4?Dzu@J;JS7M=5^g#$dK?oX@K-N6w1m{CvlY{iUPg$Lxa@Ifn%;udPM0Xw* zv5}fk0-X{MtVMw)`NSq1Ku3xr%fwH$Cda?e=6*ORG&$-_jM3aY48Z#IlnvP9d|cmo zJkkmCTd<+qgAV9%(K=9r^5B^`(8LU=TYb9Pd8(6iS~mVk6b`{9?<6A+aF};?)Oq&j z+1zh=pHHw5=FU!7I6kvYes+ZdV%ScLRDpby2U;K??c_Puk8?~@pw7z!-IpjTUQ9mApzeEZUy?Vex5IP62i(mLTUl2@QoBX&o zdvaqT_A8qgd}H_9Z0^R5^N(xXNq|JxiO7#j53zkI)2p}-*RJE|I6r`z2+c?(+-IlyUF{AWxt3F^cI|-xsp1E|qA`p(gksD)?JKCqQoEV8`T)hw^?~47zIyeXe%z%my@uLz>-yp8bH% zVk6CB9Z-txv)~|kKe+`?+_#XQKKBjP10 z33hgmwaaIVu#Jm+IH#%5g+|(gfXBSb+VSj;;WF7erv{BqYn`xc-kDLW*XeqHw(e(> z&Olf;k4*2}tS18VNqXDs9l|i$)_~{AJ#iTW7(#-TdSBdS`?JYAp>|u_p$WvI;%@_n zyOAQWBEwf5A6ji3bC|Sy+l@)-h^!N>G#B&fDqZG3@T2$@UPu)ZF$xXo|~)2gQ?yZF({|4X5t8E=_h4KY1H4&-W3lB6@;@+ z_g=)6o49UODCD82;N1nb*g9#Ba`n4 zOQNYjM9~_b05bYUHT{`nDqp4ujYB;f6*QC8i-}zb`p^%(t(^HEy)`taqxO{yg(vlS z3J76-W8^N4mQU-TSP~Cr(?ynkGg1&`|L9}+=bmKg*G*@X_|%Walk0w;&4r1%<)+)+ z5DD@(S@C7UHIN%MQ*JBsSW^Kdu(U^1p9?0QW%j)aqN7e)0Iczb)#69=(MP4o5>3QDxHmv(+u zwRo{^NbUA8BY7=vInSeJcVW)ZQf|E{Bj|Y#o0U)~Jc`3BS;6PU88)rYOKPl>5Fg1m zr=XS5tg>*6!_LSK3@06m*X63= zP0$T+<8L=L^yhC1$!>F%<5pohO)zvwlxxlIm6S^hvcKL-Z9?y9Jhf2$RBA9t6S{Df z!nch_2xI^xYg7L2_C?oy~Ls`AkEkGj3A#;*+YF{V0>)S zBuViGHOwX4l5FppoS?-hTIaEur8l0W=*1=yi+qT@_as2Dcr;=W-*jbYL7FrfJ1TMZ zokKY?K3Uc0XMHi4xY$j}vgw~S2!$*ZH;KFW16Zug1&oGOBm3!w%@j;>=Ei(L+$A^? zUiv+F2oVDV)>Bg%U5GXu5l|9V$1O0LNp%llYKyWpMIHLdCrh3t$@fyPos1K*2(F{0 zm=v5n{I9pw>BSU=<1<~Xo;=!)ofIHf_45eCK`;I`Nu0yVF&K1FVWGyi5W(DYT7pb@}mzusS;Znoa*MeT^GeqRYV2N@A+Hngr;~kM<4~Au*LU z*c&(B+)?opT2?VD@RT{0W8RQLuVhJPw!#$Xpx1%MmY6;#Nx_=Z3Zf1{?F;93p=8=Z zOxOHEHO@@1qbmZB1Z|FPpp7%)f|80ygd3TIF?6>(1x z3#6g>gG3O1+Ohntb?imaCZU3-IU28gxX#j{Y)#{QgDY;BiA8qC(spsEb4j?^Q;jq#0X1I*qk-75ZtTxb;utq#Q6`!c*fg9l5)w%)!K5ng3IWy^c=3pS+K_ z(A>4~E^q{{m!Qb?12ODKfMEoR!-mG{cZ!V0n+Db(w+hp>i;O1dHS5b6Y9zo)Be+?l z+8KXr1$fuk4Gye!rBPl*?QQJ2?5H+GQ8sOKTm%mrJ4cgG8%6hR0`Q|>!lP`45{-$s z@e6!XG8MLjK3)iKTf2UrBFQkSpV*W?+|%vHtM#^#mVlTupH*3>It4jr zt5H0&TSGQ3jXZv@+K!~h2q`Xu4rBjgv@aMy#FiCPVY9Qo0Qnwx8MISrh!f}2LaRdr zk5L`^nyh?)hl#o$Dr_ftfH;^HVa<|47r_=iIH&2$`Fb1qIzbs_X8@ZQtq4b^7$Q8p4;8*1?_GADt zIxL$P%-2n|{yOX<-8wdjckfRz7k9lyN=#aznU8@`|5MEQj{Tg?U0B`c|0U*r&gLF) z9Po|^XduKBbsVCy`%b5IUYX_@9pc-1$t3(an}_Uwk!Nz6#0?X3azbZ0qBpo7b5C8O z{8#tbu4><}oxK=rt6vrMj+t2d9E=>WDP{Dvop}8`N^EBRZC9 z>lYbf@!JSM1fq|Wz_-YOXa@OdqbyLDy?1hfzp{Bv>(?Kn0#B@e%jPu=2A+AD`j1$y zf9*oN`QCdEL>*+Cv zq7j!;jx@U#5_cVk%C0oVrL=NREr?bI0bPbKN9tK>FMlPDP-UNnBbR3CPbkNjEn`^O z&)gc^#cAA_=rL32uoKLtBl}9yx#MK_4qQHmg!f z=^komC78w&C8SR>h-WBFTHY$Io20UvpijaY)H7-p5?(YETQ46iDXzE@7PmW;cr|pj z!cUCT{fc%tnP<3YSU#x@oMJVc?x`T4FdVfQ0t^_=svpkANP6QLP5OxSXEqN}v3pWM zti1FLeWXx&q-cyk8l8*jC4fU5u{d?4OnKy80164{9TQ4hUeU;hs}b1QOyu+E_H&$|9~1r_@pp6LU(pI|v@bqqxVT-L%TbVW9)~ z?JX=n#oUP07+7;`04C<7g=CsTKF75W75x-*uQd@FUxrjB2}4fCrg>EScMzbAD1d!b z5h6R$37^iju#Op+m?IOg>Q+u_L;F$(S-(;_@&`~dq7yZTAl*WCFql=Y(DqiPdB?a8 zPPh*5dt6zhj)bL-uh3Qz#U4nzyslIO@5g=n24AcW`m;;~5KLUsPMq_o-AGT|AWnQ! zR{LtC_C5S(Hje|ppJio&?O5$0T*in1WI_fqV*yzRgRFAmILshKdc%m?16C(}mhm8z zTo5Wy2CV~x4gq1zRsUe&#xYjKU6aOp=)=YY0kqW-jMWjHrg-|sx#Ok|a;6R|r#_L% zxfRKglTY|*sXZxHql8S{_DxWCOwa^Q(9&tp8f(xIYS4ITP&`1@nJ_h;l20>OYp}?S zv+hl^T~D(EXE+FFIO%4%{&O)mBYHg}2AmZqoRy%PmE@h3l9`p(o|UnlmGzpHiDRcx45>Yr7fn^oDHRlS~7E7sg6(Eh~2tzoRH=`>Ets;w=et)ntWR;8-fp{gID zZjh#KSgdZ;pl%GabqU(0x!Pt`+U6bF77%UAHEpZYIo;VwtUVBclaAf>eTR;djIQ&Vj*GFbtCOxSq)3s{YyD>OSyYXdDlyCfy?=X%kSux3wW0cWtNMy zmy4~JOT3ofM=Y17EteH9mp3fKPNA-xTdpE+QTNjRxHqSbxuQe9qN}Y_BVt&qVpxZ% zp9IlsTGMMj)k_T2i)k=?m8;iUrPtA+*HUHJ-eK7JuxR0A*wfMHp}pW~t=sRVI}o8e zn6}{4u;6Yz|Gdg*L}b;kW7T)fX!z7||=Ls*TcM2x46jc3SZW}Vi+ z*DD>lYn{BS%^hnkRcqZM^F60)O^~%N!qxUQ<84fnWf7B=2jf*^lQk8SbrqeB1d~lC zlPy-0r9hLNDwEy4<+JPc&%ljy!i_I<8yCDAmoghy+8fu_8#i7XUn4fYrEPpK-nebp zxa;4zpWArY+kjqg`~Ysk5pBZLZvyx>5o9+JbvA)En@HZ9$WQ|<;7UWT*(YP2qg<1H zh}prK$=;gTF~sEL)aUW6nlo zG54_jgx-Sa18kAklAzO^OULlBi6yD1C2^wpBUMWhXG`u6mOMe0gn5<%#Afi2W z`aKQ4Jx$p?E&9g)93TFYhj1WWJcg&lc-XioNCXrVXo{M!wcg)GdSTZvZTP!9bp18h zYZ(V;^9s(Z7%mPBmpTHMGX=<-Lyexma2g`f?_n@67PpC$w+WZGfjPqfWxFsHhbWLs zqLxRx&Wk()|5BsCO4HyPlb2P-VU>EZrJAox)Kh=0^~MzIhyLE}gU$9D{5ISB+jVe} zc|cZ-w_QP)MQNN(ajJiIc5>F6pUyBXJuNdcv#_wVxU#;eqCTgrF{!BKpPXS=Q2Cfk z=Z?d~Rp{K8B*;d_@XWix>DuANwvnab(eaAdUn_oj=7)~ko!@ApG@cT*3y zOAj|257&DSS7-NMuJ2FpV5$%bQ-ueAsKU!%{l0&gyPrS&m7x2p+kgAz|2yyf@4cPB zdM|%<`){AX-@Mj8e?+h+f#E~={{#3?|4;aE;TJx1N&krtz5c+5s(*tIG5-=Ds&f5T z@!`Th@S#*`hWGzN_z(w0m+bHGq3+AS$A^e=WPiek{WX7^>-)Lc`;HSJ>H63BFhUkh z|95vAjt{jX6-kZ$z=sz9j1QUMNPPYU zAFBTgKBR!*Lv}cg|9}q_f5V3tyr%yxeAw{lH++cj6CaxX10S0HM||i`^e22s`V$|v z5B@DatbPT}7x-|U_a{F5MhTDF zEDpnmol8Y7fu~_}kE(}4+LJ!R{fK+}cp;pOnHn z5q4MmWb1@?aGmPZBEWZ(oMw@UiG|(D+H!F{HlwY>aWZ6X#gy*aT>*t{(#Ts`|9tn` za10KIS$Euu$w*@_(@lP4dVMG}aJoH@>cVru-r8igL{VwKBBKps8kaPgr|T0Yl7BOm z1R}q}2Xnlr19U3Z6agi}^%^r%%aWs8WVjr!pG83HeW+d+V|hHgHQ3^N0V)Mst%sqd zvN*{{w*j8oFL~dfo@t~Z+Nv$&R*n$F-69mwIo(i5vw~TkM&gQ zcrRYZj1@`0-c# zovsm8o8+*iOy6ndS49i8dxH*7k3I9O2`O=`?ECcI(8*9YwZ`nbwRUT5p@EE4a#uvH z>n%h~3pMMD}Nu|mNSCFN6u^}F7Tvfu<8-@Xe4){HGf6fC5!q$@S%l1 zZ-!>Q$xbXW3?FX$zVs^p7=M=IU|j5~%ToIp`S{*~glep_1Cg)FF8nx*CScP6^ejFO zvu1R*e7u9FG5_%1*5pc#ColQBh8dGdfPYj!sHe%1@5+uz%1irE++_VO!BD-~odi6t zZ^~SOQ(V|5L3#u;M;0BbWk=o7>Z3jMPb$w32rQYwHRdZdux8TKR^^uh#{xr*&RTr^P=% zwFt$$vujJo{^(F_3t(B3X_h_f$r|S zMr=Z_9UssR-yn1CcfuR2&|pqxJ=tCfeRS<~>TJ^9vDN|E`{rPo-qiH|6Nnl6HU@pA zDP6ry*@GyN9VeZ+=-|kl!`@&k)5JB5+js(7t)@3V(zCSK>?l^qsHYUmw;8I~ZVyjg zw9M(9!$Wi7V4yackM<1igF^t$#Qw8>rU}PaU-2Bx>u!|#=ik}CUURHr%RVgG^G$Kf zbVyUfERG0jNY%C55IV13o7|;R*`hyB&?k=wY<%=0lhm~qSFjbZk?f_GcjL~7xehz( ztb<G=)m8!Vw+fDOf=FkU>bLWCyZUhe%O#~ zmn4HBQozKQ$An^s8e60ZkCIe}dt#0!>STmUvff11@g3UBurbY7tHy?W!}YqKCs2Y~ zhOKd?2A%yJ@T(lXB@G*y>7(;si*i42BDogGkl#JR`WE8hpB`Y^p?V1g?&Z}^cM`<0 ze&fc5}AgoS^!Cl2Ml-Ne#7(^fB?FDR@+F9zPj@{A8Xjz%3&b!*} z`W#=mdghxY^SeDr+N0XpQxv*|&H1J*JO?uRJw{*jCn2AFq?UNnzw z4oMzjB}c)%(w45uP>$Z`X_r(FN(p`X%%61;t z%eQafq3c~g5(70nxiq7Xx$5#RSLb_m(9*qUc!Ukw31_T5mZaEi60 zw}37NR_6YlzVTvZ-c=KOfO64_~92#QDOM-J6D<>4v61L>5YHG3+oYv zxJtb^h`cb7?`tvLI2b{kljCJWahxHtCQb_@ElVyxNR#@cU=$O@_QJE8F@0(%yiLzg zfHRWsIo`7+D)`bU?Upz3OR~Ao4B8elZjduY7&Af@SR6{lto2bGIQ$KzwCzz}+h(RX z52uUUWOnN&*EB1Fr8C$ElIKdZEEEz=tTH=?_?uFlBZhIKd?{mmT@y%hdYG7X6>!#2 zQn;FN24gaOQE`d%Q6j`q>?u893UQ#;gMcYB1iBOZ;d_egesTpW#oBlMW`+R1EpD3T z>?c#%NPw^=m_p>rf#v#sDZ~uiVfBHfg6RW%f-(}+?_^B^qvyw2)_5eB{DcF!HdbajSZbz zLbj(YLgpxihAqGUE)bA+St4j(TGH}f{;1T@@4d15`(%SM^Vjd)%S*9qN|4{d0m_lk z%n)mv;4%cV1Io)lkKenFlrAgKy=g5^Hz+oIR8jw!_+x8nsbXkS77iL*X_Ggcm3>K0 zY(-mESwC9Epkn2t+tSg;WexU(skfEWiiAzAW##3S(Ic=2mp6OE$#LYOb5zcclw;g7 zTeyGV;i^){tvXu%prT$?ruYH!9S7Of0bmZdvJ6C~{O~2K!Y-?F=jh`DYW0I+b?eaw zQ1=IvwrbfeB$*@%9MT#XJ|s}8N%&Gtm|gQ&sD`+$hJv{Uc@ijXK>O&fhMu{G+`smz zQY|wKA2O}f(%;o`9M^CO)jb}qMir`f)>fykUdz{31Kg?;%dU|Ss>fGCM6QNIDyNWi zs3%jxQ8}*1HLTY#tkE)TP!qyYk89A4YtS66Yk5chXME^<*XT;x4s?ue%rP45u?}3vZv1;HLJU^ov2GF;O44>4 za+aPaEMS^|r&KU!7!PJX0kbN1vsZR=V)Sr3_R!svGmZ7|3sdsO_lk`53Sm%-vGhr- z(nvY>$taV`RrV<;Gbo+(shkkQW`NXlhy_+@j@oSW<9iI_!NwxzE2vA@8F6GB7bM*p|s!xM=139*YZ>1SnzFDK(LCwct~A3~W2 z@BRuOI!*kB58+q4@E^MFlzLAC`Z;o@G#&fN$tj*xO>vD)(K>)>B;%?3_}PEPhjM{aS}If8PE$I$b1;0U z5IARC^%EZ|oz7YQ!iOp<^Ur_bL$#`TmyU6Fk%j+1@!`jnaUJ1_uH1=pmers5kZh_q zVf80IWSv7fUHw;lh`FF%wWbO4k*D)3r)yi7>uW0O6Oc7Zky+V}bwT6VQ^>mT>G~JU z4bin3ai$ZV4I0SCqtgvOj7`zX_0Ptemrk44tQ)AR8(*t7F~>K*Cv4n_teYEe z**a}GC2Va}Z4m@*QRHnYks~WiA}WCqRb00j*AXiVCft&K-|S`YL|mvwv^joeEh7WxxjtV=EpAI3$e>g}?+%_^f zu1P!|2s#Hs>L2C-Vpb!3c_%QgQxbuWAAL)rZ@W=W-<0b&We$I0*O1wSP{k*SccBShIl>LF|`C}h9_=}G-Kq>#qyc0nXbncyZ?fBzc(v$DM;X~uk zHzC2t?(CGp*azOhU)yuPI&}ij-U2Aj5d$|6Da>wBy8s0n`?xN^St}%86F@K4VWP|T z)~>sD7(RS*^QP;BKL2t%`TJY!+t!C$bJbglYCs^=1*mHVoD2qzeZKV){TBA|fR^LR z7wc>r3!&=?^d~-ax#^zRR{{Y8yPzk(@S(2jrPKHqa}$6r$Je~z!=bnLZsYf*rl)XQ z-M#qCy2&U;Q+)%Hk(h5!I4>sUrD6%C7%SgQ4J6{xsh;RH(;#A?{Ks6Mauz*#Wqz{e zfhr6iiiT{#(IMa{J!Wf3)+(ERLX<8Vfi}k|g-@lLZ>A>+;r(FT;oia3K#fLh3d#G= z@!^)mShHk))Kgs||7r_sH^~HaI>kyyT(|uQ2IT;#D-Hq>i-2CfwhxRT87VAoSL@A+ z?+yFw*l@YT7;mIOyoSms>7wE5(LC{Cl0eJWtD`wvX}GV((-LZksCWeDnGXk(1sJvj z@ymN~sik}G3^H-K`qCWiJx_32BAxUStS~nQ-ib+ja3UHa%j5_7T$5)pj5SG5v7>>Hx!FgGN(4iqKA;KogyW-SsLf8;vu6~LK{ z;wLx@S;0!z4@IO(u{{kKf+C+{azo``hUEn4!J*N_-Qxg|l=Uvko>cbohF}+Ld%Pna zDb$Ghi1w+linrYnMVT+dy73QuXgvyvz%!yM8=_W1Gjw1LL*bTyKTScDw6sWIX4lIu zs91ctV=s_u6ZZA-u3`aa68*(y$ol39kQ4jGOvk=VC_4SOe!o4LGLv1DPGVDHH3M}` z%7SXG7Q#c0xY=YMz&4y_nYi{`UaTG5z^QUp!+dG`Gc&Zy<|K0}qV0J5r}&Ba$BVa> z&>}v&cTx1Mc7?ClZdVXR?3Yt$#e<@4j5!*pJljRZU5GN$`G)syBe7BOCZcw>qpx`rDH(%g>G z)>TmD6{5BuJ&U1jGmKU!4Orw=qz&Lzv%T3bV5cE?DckC`U>YUjy<{7FY$*8Tl9Fi^ zS+dc7T-DB^oV;An{8*3tL6C1z^a0Z)CEfO$?0$cv|8%O}P7ST!kNM7qr8lOqap7zF zduCtOv%7vZxj2xg5{~r4UW?+ja(s{{AY`LYqZe$ z#h)&ItMY%a$Gp_R1AdT>mnJ<_bg{XV{MhH}#&eZ-ZD7@RK#1(Zd`m#En%?p1RNDQr zB4>~2eeOe=v;xNW4MOKMX5-8QlxITua|Dlwk%ERp2!F?i^Ir^AnvIc&FT-g)tHW3s zB~X;%p5QkR8!?lSEjyx=kx@@Y$oEms9(WzFp zVN0P@KuLX4+>(UX{2XK~rCUJJ(7wf?k-V0={*9W1DUEiVH}@(PN3A}@*&Q!u7r}^e zicfJ<*<4^!;jN;NMy>YnXYI_DoYC}cTE;ytMJ)pwqks~@dBT~W_)wbeHp9i(0aXQT zC(GH2h^0DHNK_vEyc#v-e2&#Q*TUA*hTvHP$)HoT<@3$HL9(mj)Mp*2Ph3IEs@-KO z>S<_t%Q;QW4y!3x<-TOQKA|ruF+aUE!eC^5I~_Jja+ROErLX%9jNDYusgId!r`Ip2 zQ>$2CKq12%A+GouKW8)!&lMGW*lfDvA?|&c$6~RMC3Hf*u{0_N!@_a*=-CHENmL(F z$Bwfj-IsL98WGtU_=O(ND0WL_K8HQ=s+1~v4@eCLG}zlkFjP7aP@^jA!RxkZz2#4z zYxwA;M08HQ(l$BI)>wt^{Hb82d4t1g5rE{G@8rHS?ya6aWFRTwPnP!ds+Ni#3^0tn zr>nNtgIouC1am)Zs314bba&LlT${~edX~3)o`=D)5eXsM^4!NrUL`U!OUX+_Mw&G3 z9~x`j#&|6m72ICGa(zPRb8UJ1j-=Qo{3F_?^Cyj|MKI92>-e2ASlQ=D*K{4>}0%6O(< z)S}_z+An+neJ_wJGr z$JvALf8s;2dMyAnrBwd10;_ z7_ALyKG%FKd>BgFhk&*Eh+J4Q`mXzDu8*bNB?cUk1i*@yBrS#ZRJrxA%=SD` z*0G~EFx~ZFq4&~~_R=%=!VC2>-w`p1BSiW{Q@;%5L(DLF&Zh2BCln6Dhdd&?Jfc@T zVu%guO574g+~TynQe@K7EPcXOeIky1q5*yMDYaPHeY6$Q3MV}daNKDBA9eQu)a0V5 zdq0GP4g%792Wf(Ubfot#p@q;vq$o;JDM|+s5Cv4KfFM$(3(|Xs&`}b4Z-Vp|zZYF= zpS8ramV%^$S9_%&)in2@jMAtoAWCN5W%dze? zDQa@Gaq_8{Wwmktj1PH##)ter<3qup@u3i(sxE`7U8{<8RI9v^vbL|Pqi5^w5M}4H z7Dom_o^l1gtY(FoIKBcUAr57y)^=t74j@6iC8KsQgkdZXfZJ3@>)LpiR~#4FI1D=^gJFfK%qTLYWDol$3M zULshOBfw^FS8P`LX@10IkirXKv)8CAowe&~S6)I$*PHk*vD+GvGgyL&T`417sgT$t z*9a<8a2iE-21j?}wniAJn+sW=Y2W?cQ}dIA<~NB9j;bKphu!(DnmJM3Z)I4yKsD*T z-Nh6=0;p~yrOp!No^nrxf~U0v20fobdPrS^oSe17Bzmd>(hyy59XM`qL|Tc zAiCiCbYhkhj>9jwzF6s32dCuUup3a2{+Y8nc4Xj7201>`{sqrM z?FE9RkycUuvU?#Nj}|(73i^Gs`ZrMZvDP_WO_YKh_@D zwIA3o*F9?0-HX@T&l))O(=*UkwU=qvL+Sn4&?9=*=CGgwhN@l<(zz@j^n*elXS7(q z_8K1g8vgk;f=vQFS0ue)h$Wo!lDqzUgH^>SbVn+;dI1F)n4e``r1{vLk zu80{fwhr-+4*eg955>Lu^+I*8#t+hX85o8dh%ms6e#VEQ+AtFY%+zg^k8qT*aCE75 zblDFEym)gZ3TAnJ(I47m57Jf`*tIF+rd}g-({&tGzSV{#h8dft7;7ycDS`fQbj)>e z3=l9uDh7AkjPIe1?{6BrpN|m{n|Lyscng?3kTvnrF}Xd8bYLvAfR0*Hj#^{T<2IY) zwqmdV2UuVNEC_1+qypxzWBM3j8qx*}^*0Rz;=@tc(?Zk8K9gsCrcr&Py89E)pCSraRG2>u4m4H}0M=TRtt}t4z30RiO!V5;HHW#P#Yg;tqJ8U*L5z+LsCo2RX588e@n6$%gbq&6h)R)^_Jy~Hk5)F zAtDWvg;Sf&aD~N~4uZ)NF}`WTf|(tpM0dC$*yL>4No+6TL#9Yu?kOAA7+bE#bNxED ze0Oa5i{^$LECjjG_@g#-mNxWvY_2`FDI>NK!B~qG*@(v22&dUlTiS{1+DLHCO24v^ zshpQtnwLGWle}X`q-!T7Xs0M=r|{TLp2<$>&Wx(}!oL+CdKdo7@{k+{LVbytm{$m- zqz*EMg8=!^?$`0RabV!et>113-V2Nd0|Uap4$nZaM=;nm3d=1O>s~STgF1pcO>`!$ zd=|wDHZN42LV@5=%qX*v(c^B{php~WI^XhL-+U}+QOdRu9m*GLS%Ew zSnI2)winCYFLscx4#zT1CJTVJ@MNLoc(s3bb!=l9y|@63124?Y|Be>^?aIO;dS!E9 zYrp0DN$uWw^U+!F+3Cpn(IjSn9<#rW+4+vyI>xM>V}O<5UqitFS9tulF7A(4{vx9L zvv>X3?SIVb{`eGsy#7CRU*L22v#0*E+y8TS`Sr#A#bf^MVS$eU%0t%wf$~uQpUT75 zpXK4z_>1z8^Y`*_%Rs+mz9W+Ma)@?f=|W(Fh}xZkYLD3-uE>82)@ z&y16vb}yY$S8h&fo0)87{JTTJt$!;Ir9Qmo`hTcAjKwwFOJ7d&J6K(Q8-T;Rk{&|k zypj>YmA8@^b$yK|-SFXGmxmOpbpKQyW|RG8dH4{EzRZgitZ4J+<>4q4*ZH^dkeW&S zqC8YX`6`kBLwR`bS9$27Mhvl;!4dwgJgf-SR3ZJnJT(2g@(@C6^mpZ<+8@iqBKnK+ z5Tfx91Ii*>+JL zu2X`Dfb!5A0t$e-|5wXHyuV-%$Ep5Bc?kcL@{mdRqC7-_K%mAyl!q{?V)c;PSiOH$ z9+Lfad6>)bzfvBK0p+3nUzUe%c=!IIJj9|l?6Jw~MKP~mu!jzWru|x3;_VD%|4=2>8{(?Om_y_jT_$Pa~@E`19*Kh10u?K78g3a&j;b(?KMoH7wr`OAq zKV><09K9^Xjz1Io7%Z8>t-9sim=M0zQfdzz`xviB{jmyA6l292&boF8V4Fi~U` z_F-0B*pr9ix<_I!(>jy5T#?Bzbh#Ta?=~X$swIeD82f&}Z|vbheC?mHhj>5P!%tO| zO261cTQRQ`M&5o~b%B`Z&2T-A{3UlEV_OR{>>quEGSGD0{e+U#``Iq!8wBlqN#CA1 z)Uur(d^ai2+$r4f5Ta+BZTltNt0`t70>XvT;Hwd>1qte4c?8m2wlbxAcTJ&CN$1j;vk+g zEYoiFyRxGhcUwQR`T<)}f6sS&*I3Y-gVK~b;TWred8B4hS4jJ&s@Ahu7WPMRmt7oQ z(09R#1(Pj4;vB$m(at>LA=v>UB43IaECepfL$K2uT=J#*W3x#%V*MoM=E)$6|0oa9 zM=mxO<>427UfhfFQ2f>1zJVrAsjGBF#TL>sv+DU?LmAhna|U^45AK-`#w?ZRFzXIP z>J2u&zbFq?Q-Jai@<_zd6*slL5#C%~ijN-v!fVv0fAZn0z>ip-o4xC!ihaoTEn(M| zybU{%nzuu`x4Rkn`r-^HOUYimp?f%S$LYKKd-uyn?eAlnW#O(hJ;V}UAjF8kySbma z#ib>aaqb4L`+lu;bLigkukmwvG)0;9KH&);xJHjYr#X1;LH%I`?_-134R}=t!TKd`b*K2W0H{-SwAXHb2wwYru)hE}OT4cD4hT!s+Oxfmdr4m5 zvHw2ZaU7FhhlWRA=C^8Pww&u*pG7wYQaPudH)yX&Cgv0r zTy0~*xGd94yv=lyOGqMa9=e^kiN1#;@%HY_GL;_D00CJ!>42=(ao!VTJLJjq9-j)Y z;hPbY5YA}05stTsxO*^_)bjjq@*(r@&EeN@e~T9HvIWbzQN%ZxqNcZ|ud&g>drKR2qggLu zTcA0laNJZ3oiXtbe&9~0`e+9jJo;e6Kox-h@R9$Djq!pF)S=`u=_hVisSmzwIl;Hu@8%qFK8KOsD~r5A z^HliA^7%uugG@DzVLxQJm)3+*%eYw@jen`5x!f=`XU{E{=CQ}M#|vsYX%UYZc0&Xx z%=K4vWfp?QMyQ?HqrZh3%sV>zEa3!+OQ>zD&F!j$@2gN*LkaQpQn{SBB241B?lIsx zXGzeLOoz$y`Pkj`EHcFovzm9$P+ER+! ztra`C?Rqe7S0wDc>K%i*HMHmO$lko6_94Z=o}qhmtnI2HCdtk6>cb1E z))$mdIOqBOzQ55VUAH1s5w-x*AY)fw5uV@hhnx za#IQNNWVWyU(ldhx{@psi$mp;@mK8OT80QRf&efN!S5(pgHF2Mdc@*jzNB<0zFlQ| zM`0i-yOwzgE9-`{8`)>d%RX6}1T-kxEWE`mRl5|i?zguCaBNATU{HDk8<)lBY|+vz z#EUFzsrUB=vs8GqNEEUzlYzPeVms| zcJBij87N8<1a{9hTg#5)&Gn+oZvy8%ycb&TlW%YEAv@_q&F35E8~;vPmoOy%dIj8;_AW?0;gU2l^Fo8!+%39~8VWelu}lX(ACHngp5%RuHu!jY@)4B$@f=_e>5Cz(Aj6rr(3)bf zG%cpPm~@@#5`77wG;mV4n98>V3dDyl#otdTwogjf_$V$HMyp( zrlw=Ert7q(hrYH?y0)FZu9L5>TdS@Y<5JiEtPUw%hl1Ckee0%^>t<`}rr`B68B{gN zRI7ZoJs;}p*6SMx8=CkUkcthr9UJDt8#a6D&4TK`^)$%LHS7>JGP5=AYBhpw8~2|z zF6TF#uQy^5H9`5C@U?;duyH!0@$gv_wrvx@9y0bev4ES|`I}`Go4H+^%LAMF3YtBe zo3Cy(KgMbi;ct1A(RA$6GCSKO<<~Nh?0AF!u|jQ>5~@Lkp;67EQ6r^M%dcK1rAbeQ z#ej(ICW;-VO>d&jZMH!T-)Q+t*lNY!YNOq1=i2I^UGtwA3jROF9#*4TW(V7b{n|BM z`?RC_bPM|Qd;1JG`izMBjrsdcwfoIo`z@mSEoJJhd;4uS`t6AZ9Qg;-3;IX32gaiY zz7z~d)HbZ24*VcQV)G+$wULCbNct$GWC0Sx0GzQ$UP2(r{E?Sak(6~vYBZ9xZjiih zkYaO?iWpdW9HK)Ha@F;nL}7-O`0Dv|>Srd0Hi?G6@el845AV7T@23o*3x=nAhi5m2 z=ZQuZ`A3$uM^;@&)}w}x3r0?RM|jVN^!tX8GNVR_QDgs6)6`M(x={=CsO9;nHRBj? zM%n(4L&4~=JLhBWjN|{+@(@uyboOP0=<5OhS9SjZ-MZl%^lSR^jq_F>FUEyRy-=xUqWD7CsN-y$KLCbjxs*|y)Tc<^w2rZ2{170bP zx@>`_?L&RpM2#VuCUl0r5>KJ((Bo({wd)k~8Je4MXkB(_6EVbmJ~b;aU95u=bDI{A zo|Z&RzAv2C+ML!oAG%!(xj_n%-^RvEo4L`*tB{IAfSDm>nk6ThRgfoA5Spb)o29Ft zWtf^}!pyQT&HXkMY&l2CgyOYCHTzGuZ_Wv%O%D8Olz5PYesUb2~*2ju?sp|*a3o&BFtJ56GVFk z+b0dIxwYy}0{&dTUOTm3k6CYI+Gv*BXtmtjJT0CelS?67aRyZzuKN z&ZdCjmv12EZSak4h}AaElWn}W+XU0!0(93nSa6t!AR|Q!V=@P51DrrpYOf6vj=9|(J9)~ z8u+5~aX}HZ#Z!!>NV-4u_;6Yf;_-1|c?vSp3N@AkJ3n8vdU6oia1=Ft6l1k}TW^gM zv;$_t3BS8`@8g#zmlnJluy{!K(=VN*emh)>*)n;u$P}<+GPQpr?dbWBlVax6(kHtw zm=_d*-)V18f%5S4+cmBJ69IX!j{Dx-C!2{Mk9DVx6-f8rG4IP^kcY{a7EGR;95S72 z>waUh27gZj7u`6W`f(m@h4rZc0?wd>m{Z;0}G&gK{&!eP+}%!U?>0`I5ZR9CH5k8X zi9^1nfXnEHIe}^f8eeNx@nx`kiE~?{D&Z)bx4PfvoXs7JT*_Arsth1d09FL!jj#<< zJQIAzpmNujW@V07z#*;}97c1|9txHu(#ykaDyu>y$ren!q>HX!E8M2rQ{jhqrt18E z;OGv0K)x2fHB|o8qe?$r{yB-jiG>qBtrK74wh;T8Y2gF>vV9Uu8F(qG;dxFhHSTz| z(FeL6!s}N{_6<)l+4}Z(EzfR-$`oakaDt0ju3@u33(V`bc9|6!OlnjBaWZ9*in1DC zYYGY4TgeC^|Lz{$lxj~{qE5Kmyl4;0pI@(yqqmR2fin z$1BxX;BPKo`BMJUZu;jMdub`%8bw*kdff+kw%EAG6V_}(r)Mt-p6*}UewoL@(1R7g zN>XDJ@Pj18x;N*rJiZ*myIKsf?pJR}>sw=I zT+8+$3I~l@u<3X+PX_W5PWic(=C0N5D)55eY&Y>ZS?5k8t@#4+pHazn4{B38R@sCz zhe_B*s3CHzi1jBx1I&WPchugdz$+juj!svgR59SDQQn%KZmlErH|r+s{riHB)h{QW z6CZw$)ZNIQHMnuF zQs7XO`(`mm|NPg!mZ622#*t-4xI&p(^X2k>hOF&rDhLzJo$4!@(v@oG?Q*`GpO))S zr$7y>?mI5`Ep}ixL2Niw+S`rTmxI)6L*w6;%kUSYqkxUx-T9x z^SWuGpYQqcSMtwPIdXL0T$7)Y?h$CPDh}$iJ=LDr=cv}X<2{@_O@z-$PZ7c#Kb*2i zqu<}i;%$Ls$Ja&_O(OQ$7~Ml3?q&vD($*^_Jrj{&FA&0+cGt4Tv{HQ>gjs8WKVpeGYCBKf_XS0l%a{JMY%Mdyc z7Ec0|Or@xsGpy$8PKrk1M-`$)su0?$u}V%lXD}%qG&8KAoYT*%(;=A8bdJ2TDoj?; zHZFf+@mghdOa(thNDb+#t_ka?Sb=Am3p&J_y5#G*-~+NbL|f3O+BsRgN3vr#k$tRg8(nbg!ONgiAAosg!CC|ucbpTCF1@ht=0r-?6|ayXc)G>fRN5JwJf)nR z?mlp~VKO`otdZM$f0rH;h%^1y+Z3LitmVRlW>7!SQtF6SC%2 z;==p3@!|FE#=EMgW-llzJ$?=aD-jGlb6kFY%HX8?;Op>P!Q@O~|9Dk#`(DLB&umzo zv+<{->#vzAjt|aKbb`N*eQNh|*5g?-{gyRCB)P9^xcQ4c48tq%_0KcY6CA%_58F!D z9m0E)@bSIhbw|10c`!MdZw#=91-Ci1CQ-`=q7`j@D=rvzj!AyngHIRbVT~wiJuK$^ z(|cBrf%5PNz#c;7+=Hl5Gq`F$hl0a?Oujo}($wvj-0_g}ncQ!G*e+Jo;;WRxbAyY! z?dMQ1YJpqrQ8%pqS9$mY>!U15_rtpv?BOw5N^bY)J8Jm`t`9P_J}+q*wW6lxljSY9 z>v##hsu%7vA`ainGC{AI9QF;#l7JJn(Cb#X(j&PsUZp^J$UZ1F7&nJST8`e-lqvNz z1WDS~Ua*J0Q~UM6xzbi}EmB?QG`iWAApLJfzg9c|LY)fk}cj8`mc2W{hnR z+1besz#gusTpjMz!sI|WwiW2K8AGb#aPG?mY_I%c4}G(zYj3j+LHa(;K$x~`H$!ju z%~Ag_tWp!h^Ama@32E9?sH)xh#U8HrTvs4?=;FWiVES~r0h1eJ9nQ!Aj1qyKoQyU+ zKJaa=o4?vXCX3uU7@x)*-u-df^+cKU1JjQmxQ(E4xqJ7qZ5xBRCK{-CsBLG!tXNoB zA&q$P@?YL@h`$L+a1TDW3&t^$C&{Y7hcuB=DCA=^9KrE9SZ-W)#iCSBB=c;dt|g|R z7iMTFkjz(LYEf7$RS@Y>5EbEXQ~+PKewsEB$WGdv07|5C#iP|0rdv>8+)xmErg%MB zQ9K``C{d#**`p{G3=9P;T#Z*0%2E_ASG?8=Yzhn05PsaWZ4vWq*>zTu@N3z>Um^4;aBt9^VkhZ6BaEkSEP$ToGD^s+4 z3l8?8(@c}OC=VyKf>RhYj~{jCm3I#kX69Ppzpn+@L(S6l&l&UG7wlncwTymrE`wH? zeNSb|C&`sS3W>n6-Om-CJvFUbc3Qzqc;L=QHDs|2%(JzvyEV0Hzx-WMwTg=DMQ%t-1`#>QTBY z_WjE#%38I$5l-L+j=;ygx;kgNx*GfwaSD+TF;#+5 zeL}Q8k$~F zru{)?=nxC#e{m>S$FN^U$I$QQ&8VA3DK}w8`Xp^P$sP1%Q;{-agVKw`gy+LV`!^+^ zBMRsG%ESgLj0UO#21=YG@|*f<=$o3G!xV9PYuzL3Uq`mqMs`j{_6SA^=|@TUV2eP7 zX*7D)3Z#>;9Y5H23z$hN%(M_@<}eDE9WX`15D2~V6um~m}>NxTEb1o!ZGyOISB!aank0#tB&(RDz)Yka#(lg@QbSGB z6HMM_n`BU$ygN5bD>TclGkf1>mV-7MD7cxMYW9KHJfG1#tM8`58O(Ci+zPGtkr-ag zXlyNDY$FS|T{N=O8LO;-Ikdq(MNfW8n6wOq*Az~Etb^C}O_reH4V#mtl<+3b$#Mbn z0$JeO)I4v~tT17u#Q~Kaje4Jo$|*#BfcE9~q4Mfb`J1Q$m_;WV)lQ7YbcmtvQX&RN zEJhbmg9#Sn*%ogS(EsjGu-DXb=+sKW)N1zBTE*0Q+tkKCmWNhD=crcM>9$Zr55lU~ z0kP|5H4tru)R`XP>>Kl+9`Bo;KwBMbS{>F|9i3YpGg_adTJ6bN?+aK%fYk?*nM;f2 zjoFjq}gy2IAR9F;tVlY%>C0u47ZNZ&bNBbE$uZX3Ls3 zY?iiimacu4?C~t_k`>c|6*JBZmj!}_%bM-_3{IsLYr7S@qcxYeo;4?xHMg#9Vze#K znAH_I^rJr8Otfu>3R+MQeU-{ifNB1_*u049yr}WKnB)9)?|JdCd5Kr^lJDoGD(9u! z=Viv`WtZmV4(4y**uN&g1F;@MfFUUmh#z*^RK0%PO2FMrzvbT^I!=!NP8q2UM>mA7v_JbklzRN-{n1p-`s~P0rtsIr{M_8Hle`!i5gM=Yy($0T&kjDO{*Z{_nztFaMSg zDtvhD`2SKqNC5v!xDfu~uk*o?uz!XNyYBsEKB(TrTsCS0R&@LGd=Q39==Xa*$S!x0 z59*`VmHr+sL_))U<%7>~@gZ*V5gfnegPdWSH0pD|ttMOlF(1qYQ@j6NKB)i4eDLRL z@<*`2Kjed|zpW;7ApUdt;BRmt-$g#CrTF`5vdKTfh1dQWE+o8w3tj(zR+9m^kn1O0 zm`@ENCGB+e4gm$=hW=OcLFixPgRg1+MLuZzC;4C+$3;FE0sNAjxX1^8ttJy-Q;7hp z$@u?jHCf}YSCc9KmsXR>fz@Q#U#=!MHIn}MYBEJYnZO@clU0cRu$l~FdB@TFf7@!Z z(?6~z>va;!yq$sWX6zQMS>$uHK2#OFqu?(o;bOjf|0i6y9nUR0on%tJmi^JJHOH1Z zf1vR;02iL}l(swS|AGr60JxANS&Aa5k;CBwS7fzHQvM6;!f|F$-eB*`oAL#+7#{T- z6!6URo0i-Ow^_NbjW7%uK2*#en*tq9e(>iHhnmen_dqabx1vXa3=vnJxHPeOuYADY zS>5{XP!UhOpL5(ytDV7Zd3j{dmid|BeLnBb(%C4x$;G9%g2gWxbNpc=a}yJfkCaQC zNpc(#S}DbatSfBEAZtduNOTisYqh*U!n^a%}tyG!-=a`tEzb{qFXGSeo~1?@Qx$HknNcN}T~E5@i_D3I=mV z8*0{uwt)UjoO0v5FWwK@O;Gh*%Hsx}EQ9+Z_22nxq=u;L2$dX#e^`+IFgC_=K)6UR zOR1K5zi0~c5(>eJHTKaxDfAU{4;ARO+4rIYdBJj)v~}i;KlQfyY3yje07}BP2W*u< zN$46?10t2rq~@E9c_cGG`1QMVhLL>TC$7zjF&IESG~|D;p@WZ{djsQEpxl; zZ2VA$y9hM0}JVh~sJ16jo-|MwkQ9q7tzn%_PH0O0u(_o4An>>)m&g16f!aCO3 z4tK)+NyNPeJVU+DVQl_0P?L}JOzE+VwhA=rFEN#nIf)Pk$5M2Ho+8I(+1 zufvZR_d)fFdCG+6Xx48d%FZ{vtty{!zd@vPYWT;S%iYAiy=YV^dKbzT_UX+-(_3K- z!}3z|(G+o7GV#H%QEC$}*HTdf0&f4(Sv9xtfX5ti6bB}3hbmUqrkOY(yfKw+23z0rDt5bjB*6x1umWM_s#-NZRDYDov@Z-&8rh;*n(86o_UGt!tJ6UtPV!w zPr~D0&{e-+CiRqf7(A^aMidhBQpACi$G)*Dl<#)j{Aj&Ly}UGAdDBSMLbVr-|Fhe&v!#{WJil{xG3G%kMqZ zmHFk1E4k*OW?t|EtrC1QdG)wkk4RIi6OFkphp)cj#7cy+C6eDtY=4we8k9)Z6>6&X zEWJ8Zo$EDTf}ny>Ka-U#%FDXkRRm%43?Em6#eKggd$VO2y8#usVre<*gA{ z>dGNV<2fOS4VKw>h;lk@a?n3s@aLADWzA90l8te{92aecrwdpN;aQtb4}`2@@xg?>sEPJvE;K< zd2!vWam-jiz?qSo-C35J*_GVcP`dY2)!D4(cfFHxs+!(=5af{Vyn{-;SJA}5sPTfr zoIkjnq_};~xV!fLS+}ds+6Vu<9K?(4c%NMBrW`%Z98!W@13FMJ9Y_V~i!INYWS*U( znGtpJA%`v}_iNf4XUbP}`Q=HJg(o@pKj%JPdpG(N&wj>*CEz`lbzY=YZoYFtT6bPs zUjEDOf(qXJhX7n?PW7of|D$HwJ{hRt#D%dsHCu|mCo->wH)}j8d4_;>n2xe6sc0jK zes(Qyp5XmX-c|673-}%cERO>hDp&?^!|xw4n(Uiv6zfvOIB*KrbnMlVi`8V3)8b2$ zGz5et6z~!fz7neB5~@iWmSU(zUI|N2F%5kw2b|+Fyp&bCl!vgC7k~?CCrbt4CAfr? zQ0cPk>zBFd%jmU8CG*QDey%2y^^{4ofS5_k74w;Zf{>7~T>G?4=Cqu2z1+~Z!~kAF z>|3Uj!DumAVR>3%P5)Qfr6^`CIz3Vp*GU&Dr0!J0cJm4QW(jGZ+9r*

#^hElvQ7Zipo3}x#-5{5kU|trAL@6wuy9OE2d(qdRve8+PZpxbH_=^g zXgWYAL`;dE4==k-U5}nxFPxI_AC@AXmZ=-2)R|^?YB_)X@8LqZtvM`KNJ=DAtP?Ip={h^GErwc?6D$+GLzN-WdrOS#o}%hgwpSG_RHLG`Pp z3Q)}e?0Zv-Rz=hRTxcJ&>N2(Tp?_`d7=hg5K*chYQXbZ>>FN`aK^M zTo15ZPmzOa#x99BLSQoxz3mMoWvh3(o7`6pG!UYuI6!-eLN&!@~TX?ZzMB!s(qfxeY#f9A;bS;hiOcbnKJ*RW0ky zTb5AB^e)&6dQP$&(g^kF2Zt9eiU3JxBbfTziVzEyKJ&iejeR4led8zlrf>KE2p1ZD z1Mv#&HekLB-#vg^?us{jbKZi;-h~40A>7RMZb*>-RDAGqC})VaH)$FePg#L{Cq)J9?@GjHp;AHVsC3yXbd z%d+giy!Sxx=-ID)@W!dx^pW7D-MP7=c&p=bofCN4F=GJseJg0I74-h4vv=Q?9=$#E zNCQh^ZY)m}Z3gR|j#!4PQo0`)YnZzGpmX40um3yhRo%7-7*4_Fk_AvUBY%a zks`1-@SPLmbDx7vbVE3^6~^yme{=ARwylh zvbyM?R1&G!fJE7c=I7443Yp_o5qJb>xqO|MB+T7z;`l;Uh1V%r$#Xf#UM7Pf1g~0N zWKpx-pQ#SCO)4V1^r5q;bJy8AFf@}~!4^tIF07XuG}Q7@lka2eH7$Wp3#D3D8~ijI zf{r|zBYBT}6+d&FkbCqt;VJ8Jws9>ar1E<=<5j+NF)riRC8t#F0KMM@9`5=B163$lF^lVkW? z6GE2XAN!Jpw`rlm#Oew3x~WY#XJy{?%#DlL|T%ylY*ZZ30DAYqa@26jf(s1Dw zl4e#-Xh&x1`bG0-u#*>BXx#Drpsf04;$4WR4g575VJ&BOxNpNKk(EYc8@006K(sn~ z@}Q8KO+|xH+3G7@7`T;kvynA6r?r@ZEzS=F8onaBxW~apfU}>q#KJZ@vRZW{Pq0yr zv?(%$ng>P}xvN|aw|%fwee3NL433mjdPZSj1Bv5Gx;Eb%38{~uOZ4vM&L&l_Sav`z z5tB%vT53CdW&T+)?~HA_%z;*K;#ewdtddGHNu^{ZC9Jyf+5QF0$!0$i^LZm2sd|bG zy*Zpb_>g<5ukE8=R40d?7LHl<7{C73Lb$o188?|}Uq4=;b!v4OW$pZ0XSO-g%xTo* zR^0_$$XL{p(#dx<(fEVxszt6!ER^eEQWG~-ahN_kKB44J8O5X<4Wj>*8iP;q4e60% z>PIcbK~c9R6+~BdVvO1-pgEs-H0U>lY+J>4iK`Sj-Oq+!h@!0}wXX1dv1dY@804%K z^^o)eo2-|a?_Uik67qN4CvUX);nXY)DKSuWcr!xnnNJDvK`%MmFo4%7fu@K zsZfvbE5u_ZIFkBJdaY$acDH*%E(c{yv+dQgzITrhwa6sCYA0N$k$$~2gDK3`iHy2C zHX`VRo+Tc+nS)b9|F}xu?B0`)DNkb~M0?n} zB0b?vi5B{YTEDF(KPHIB<`lYEO?JY4TWvtjlz(kxBmxD(7ngr1klH_qH8ZlLURh#v zm$%R6Na9Ov+|)C%`@Yc{WrzQ`avxEW{QXHA6i1zh+FR-ioZWKQUro?Q&mBYV_{EtHug6y32c}+&VsU<>`O?93dJzH9Dn6S@W?Ii8FygTbD$=K9)4NjO;_dN%wqO<0e%z2oBJ?3Rf9WKWt}@3MowAx@Ed8W;(RRvF%{uj znV>)BgMVC2uI|p3x?jBjdUxZ;afO1MXC}4(YqsU;z!-!tS09h9TvS~8S+!} zo1=XDu;J%waxEP1V-uAq7nG;bZ^@uID3qV;Ax~_`lFALAq1XQ!E^J_$cyY0s{3D^O z<2DYzz5+>%J9HFqlNGSE?M&T~Xz}S|050srss~fDD3FY8oyp6+g|Mmt`5^9-BhHCa za0v+7o1;k?I}jg|Zguu89Dob2@_%Q3551xuWW1Cf(#w}|vCAdg?pPT>?x{&O`MY9y#= z8qF);L|06sL5dB*s`~{Ot|;*-PJjbhAQVI)4CM+O6rX;rCO5Jtkx=0A#L8dc$0X6U zCS9y1dtMSgy=DlkCd>R>P39N5sU;#BC6E~yB-P2%L=(jA-qIMG#Lu84#xJIODk@7P zCdVKqL!=~Mt8_y~M1fyPNk&OgTS=w0T*sqT*REBj;M!Gwf@^U?nj8dLSwh>2=QCDNb=LkMktwtT$b)FH7HlXu4&_FX+w;(S-M`c1oFYC zYt{^^Hbf$}GOBhV#TG>Ej{JZ~*s4yXe47EN5|vywlw8l0oTJ)Nk5ZCO^aCSCI-?iVBd*C;n+8&DbiM#qlcUm~yXKRMb|nC- z$^2CDDK7~;yArdyl0++gTd;Uax>6Uq(o!zH;m3>o-UYygnMQ=^9C(qoLF*zwKG>a8 zOOVA8!F)4_qd4eCaCgCo=DYarbczhl2`SEr?h+2Ipp9aO+b zuJ;mHtk!O>%lT$?>`)ARZ|w*iQTr~Vx4)pax2JXpQ9qziKaNs6(bn5_)dTFp^QZv< zyY^cUq~`50Ta1jp$p`LhAS-^`i6*QjoASJuG5ZTP`9qhMQS9d|FHq_kV^S=o${NYap;N_|Cib8m09sH9UJTw{}jfO`7-r)J9k#d_RKT2B$rK@dWpK5%& z(72<{xU` zn}1A2l$@KF6`G*xOg_uPYc>(J=ZLyKcs-*iBZSGYfGvld z?TC&omu0l=sJ|`i9b29|2=*dd&U#z!ep}wh2)->_evGXEiJf4KHBp+iNRc&(oSm4i z9VtK--m#-dv!U;|p{k!m(`0#hB@b}vAk4)iD#E?*2iky!25soj$63GchzUb5JmI`$HbW^2zow8txg|f82#RurBgnb>v+2;9TXXJjK{N z*j6(n*U&%9Iw1X9P>SEr=(tGV^k~nt*r0y{4&&n!lH#*7(+dj<(hDmh@|(kQ+e32N z{Igo^GP)EBhuO#U`s2!pmpjzFsfxRCOY#+~>46VC%c`j1B8P6EJCJ=th*b8%# zo|M0mp@h^3NpGvMO<<*iOT~qM%T5pD zvkg=$1$S>_Y&Y&^eONWW&O9Q0{I14onJJHYGn5A9+HR`octKfJEOpWo_u>H=U^TN8 zdPX0_3kUkiGH3}vtYUB3BxZ3Q4#mMGnDC<7HvNtA9JAu^$4ig@f)4p3tcORg=7~k|{lNRcb z1isy48Y7M*&veWS2B(G?At|M-GzEb8w|889rcv?xzjL`FE0UoNhhoVERJA_8{dty5 ze2X;r-h!Jk;zNtxLWi$}kDDTko&otq*lp&^uT?q>RvV~FLE9UCn3Yb9gCe7eXgZOu2%)$5{RKx zL1aB>4OZ;~^7H%%|odkH`DsN;3Nl=k-Lm@pCi^->t?hB}7%iJUIgZX&44 zF6*FRA4y3{IjZQTCL}pu2!VF=KyBIuA(K!xHn_xpyDC>?GgoMAVI;1x+(xye5C@B` zR0GAt6UbJ?l#Wc2yEqbiDQ&z_5Ze@I@h$n4t7P*44SOIty79?_md3AZw#u9G5*j3v zLHz*EI(dgY_=N>+rM{W!tPyP<^kQUv@tV>yG>6wcWYpB$5i-iEeuISOZ%8W!w;Ly- zQA`V75e;?i92i6oyxK8UDZmZ;!4`m6%VHa=L#HHOx+VFsq$>AJ zwem$A8)nhc>*$mTDyL>-Gu)56r37ujLGEjW5({yAOO8pMfg|zJ!0%!Uw?J-*7xI_9 zmDgk+5e^6at5~za0ml;P%Zi))*ck-Y704JU%J89VT||1UXtd2zZA@IXWUKQQ_nV6$ zpsF}dLYPyWap1*eUHuC$K_Pnr-Hoqr6H-TPY<|}-X9?dHj9FiB7ZTRktws+}s9eY( zJ8hnPbz)dmL;9}q(7PnZ9a`AT_Wi?cE5Wz17K@oGVi`w;D{to!cydN)EZp*Vi!Ns- zV%@o@T(J_Dh-Ouc|9QYc%0d_l`xssxYrwtiA|@e$ZVC05JItwVLfZQX%!@+oLBbv* zo_;uth%dTI2+J6m^TFI{rP=$y%(a7f?r|vwW za-RA=Y0v8ve;J4IDxIapP$-?(-(8@lrF90d5R*U=E`CZ+{*0OItYXSSa_U0l6(DQd zRK!vC$rfW%fO06tA&sH7r2UFpO@$*8p0UcYJoJnA8LwxfFGB>>0X^;wtzUb6n>OfI zUe#5|*v>W~3-WR^=6#w5BI_KSn+DCv!|UdDZ>DX5d-W3;m&dBNd@g~##EN{pn%&!{ z6&Y`l_Z>y_y84nITIyevxhmus@Y3MUYgn<{UQ%~FaQebeDcQklnDYC$ z1lv$-npx|U-btf)K~lY5zU77I`0VccZ!fb~U)LOMrSc(vm|rFgf1i3Qyw~HRIo?Qn za@r{GX5-9H;bxlOe$t@p4L;59_y3~52wh6mciU{U{w_cYO}p_!yC!qJZLq}}>=86t zdz?qVzsGnvutT#p7+NpAg^zB{uP<{6oe`i^8T}RNsS@tmDcTEGI2Gmm5c^T3=ZhQG zM;kk9Kp#l_N+^*-`5=!^``qxgxHR!=X>?4bIwuE7N@d(%3ivxVgbtdFqTaprJ`G>p zw8hja{Z*xLR0kdG%6Bm(s~o4}%} zz1ho6Sl$i@UeJ2B++c?M;=hyl;D+sgBf$#0Yc&z~!9ayI<(Gf&jmW8~zGZ`u(5;9F zVj!`JCgb=dxwp_}=>yhw0t*Y8}!e7Sez1=TnV zHN;-_TS%J9t%Cg90~Ct;oH%m1e1jB#PW~EiJt^4&t>Xeq=0lhU7<$D*HuEtn3tXxP zFll{*f*Wu>1Q8NnTOJr&l)TpKp$_f?2X8sC$0LPs4DgQMIAza3S^<4N?r2|fQ5 zqU;?)krjey7+8k)V{@L~RT6U#6h0}*XiH5fsLA8ijUTd)=x&E-Y+!d5WDLv-{r<@> z0ncQ5=BFV<72qthhZitX5U$o4P7HLCx(hF1`+z4H6Qeiw# zz`gvA=!l7UU10tS%kMrY47oGHcpwb>mOLc^syx0EHJA{&pAe38kBxG`^ELuO;67Rq zKSr24MpP?C+&M-vF-E#E2Iel5zmHMGk5x90d0X)r>*Br1r`Sj{QcK(@N_<3fFYwJ9 zEKTRA(}dW1`=7*(jGxToxPx(c@8iBY;~W;m;SI)VFWBlH#C`$9eP%^aKL>nnjDtA@ zNfP6Ho#Xwr;)A*4m9XM};3q0}CfEcg#7ZTEOX0m>{prYxU~mt}Ku${3ivDh%XtEHO zpBT>-l%!$qA61AQai3I`h#ixdl(&#nbkC|w7iGK-5E69H4Ni64xQz~CS30L1nv>)- zCY)%cv`3}Br2$}If~fIRdbm>pg3})l()t$|kLa)u@H0T#ug2-pHl)(F8k15k0Kez} zm=UR39e^k243wk{w5E(Etu*@J6fg=l{6i+i;Y%|w_=7K5Z<4a;o3a=d@o0wrRFmls zv)Ht=*`%}SngCj4aWD!o`XY;;Acr<2TbMpaR6B>?B}Y;_Te>OdEl-vRR+b`9E-hS+ z{7??aFjwOtN2@89QyWt|iG-^IfQp$XiIS%uk_&H`XC9LEc`=XmAfAgN@isbplaWbC12f}nJYrxc=HI_pw8pH#ZoRJy!ay82MM zPEfYVQ?{*Lw!8Qi2Fe}qFdWe{oDeXap)g!L(EmbVI&>*N4k4*K-}!6QDN8Gc>>pH;@@M@cT5>WH#7$ zHGEmB_=ei(z|iO<)97s3=o;F%*VLG@)R^|zm_gW-#oLsl)0F4hRFK?M)ZA3E)KvD^ zR6*EW#oJt?(_H7;+>qSd)ZET;wQWDS?XbD+c&Y95vF)6&{gSu+N~itCwf!!+{h_)2X{jCh*bX4-0JgN* z4cGm!>_~d7MO@-P+&(Omv)5B@m!x!44 zSlnYX-1GLhhaIh#kFi(!s9VUbS0t=gtfW_Bq?b9R5(l*pm$%Yrq|@}c^AlQ^Ib)Zl zY?rlF7ZY0N7sk$SvYifAolaq$&Ly3;C0*_#T~N=bUK73nL)igi-GLy!j{j}$!U>|$ zDZbG@?T(Ev9dmA73oZR`hz7nMkJ_V+IWmrYmmPDl8gsK6Fe@4RJThi+JZ6P9Zo@ck z7dEycJMIxS?o~4GlQM90JgzU(E6XsUYT2vhHlY(Xp;s~?b=)g+JRyfRslYg?Bnyir zPpZjIs25La4^P5{Pr{>5flnrlWTwn4rz}FDQ}3VZ=B-AVSEg7?M_HJrT_X_`1wrD9 zAkm6xJ~Ajm&;KBRR%Y-Rq(^LzyHLKOc(jNU?=`$AkPkW+9p<(XW>0K}0o&jB08`Lr_@ zBqMww)P25aWwGpev4VK1ihrpFeIaROp@E4|$pGY8I`5P^=Ryt^Tc4}dn=8><9!Omt zYF!>#Sq^hwY9wBbg+crJPRvG*#IOl zv3k0)DozF#QCz890Wx6DFSRbxR;)d(tU;gG03_=`fpw7nI)cYK%w34mwvGl}qqkdK z4+kQo0Wq29x8zn+;)3(^cJO#V zmLPKT%4D0Q>u@9;JIWOsVJ8SoWAk(d@R)5t#t0yt!B$xK7B=Sp2p_KQc|iBPNcMdM z_OQHwDkK|<%w)>)JL(=g`1>*k60zR(f&dt+xa79{Rb1$jX2ucAyx25J?7*%mZX2Fi*=2p11*r zTkmI+EZD6cPLP~T37kOE_R2|C=_2;mg%E09%)^Sy)4IprrAMR{z!+xmJ~KE*{tSxb^a!NEm!~KF71!I(9Pq-%N?YYaT+7=m%H%exiTggM}Lk@f9{PSxLSTE z8U1vM@$|RArV1JOxa?HqeB(ra{_Mx*kJPmgIq24#2q0Sv48t*A8br0sdA7`lbl{QU>?Y3+Vm(_KOD`Ckv1f1ouAu{=FxN zZ|%V083?pJ*E$EZ>0gPlfIUlrw15j^MRw^K2h5$94gc@&=^j zbjr(E35tfo^y0dFes_w!;r{<~cVVLPj&vN8UYj4j%C2k@X|QOI^L95PrAp5Jlbz^L z3_0)56xOtDA;rRb~(Z|^R3l-G>9>jaL)2wdE6A~+b-OEqgOSK9oC z>yDS|z8s99hjs?XRS+)j3m$0<;bQB=j?h)s2LGt`>m~4hi9hrcL5gDUJDJumv#}&o zKWKPF*G6}mimbxqq~P@-dcGcfFkW}<(Ij06V~cShW#Xh1?JS5y_s(v!H=I-=P51um z?x-<^KZ?D-Io(X4Je&)p2sK~6ek(=$x>*(9;N*utr6TGAEi%5!1OsNJZuP~q!^Yuz zVqywA>6%)M548hde|Fg4v7HOT-&ffRR08=JS|2YLi_6=AkHyGsZ@8@dIqAQK6_486 z0fGnKRENDIyF5e-p%i?Do;78bEF6lNmT^(TXy=90Ph=TtM75fw+=;OFLzGR5I^Lv8 ziZJ+M?u-LJP1D>kr9`_ICqhj2nvf-#F%7e6=>+ZQ8ygRbHks9$Dntu>bDBU!#^ zR@d1qz4}VHD*hbeBoILN21jjFwU(=QOcy8R-A_7zR^NiMj$EzoH#8X7WofCEW0)Dj z{b}_5Udy-f4~Q$-siXu(+UeE)C7);X3gEzBr)3R4mEc z1>0&BRd~lt8A-#JXwjTr+=|XvM614>V(Cr?JID@SeY9?N>($hD*>H|X?gT{`dYMk) zl>|S&kb^I|#wzys05Zb#=Mtqr+4jJw^u`LR5T#+BL=vSWgHx!e#*UG&2(Ma6OIc4q z7z$VPIGj#j#4O-MJ5x453vI#fBj1Xowho^{#pTBn=OGBQvDC^oobpa+OAYal!h!=) zbbF!pum)^olba9RauKItNTPJYlkj}yUc)X9itjO@;b>!wqCJG-Pd z&7+*-a?+?8_ararqTB;=(#h`kB!GvJ-i|pLMBMx073)%poY?ePvO_2)0N+wsK>$J! z;DkMd8QlhwO$siQApa&8WwWbG8agSWZ%1s)sf@z%MujI&5k#rFLq@1XJF+aH=zJ5C zCQwVOctNM?{xUXQ{F+vo$p@UbSY3GMRwR%;G+y{nT?A+?60DYX0 zqrs+>H7yXCL8+arU5EW9UT|m?HPHd8*?KwIde==*jW%W2*8y9Zm;th_7m9NCT^CR- zv}xF^Oe7PQ=rl)NBCB{Ds$_^Q#pzLJhSg1~l~0a^1!QI>=uK+WnXHB7LuVi;CbcnY zMS{k|)9JIE1$D&qHlam29(fL>FZ|!^ZifJIuq(>k`7xGg{B(CYZ{=pujyW&_8)AgF zk(3M$3_nr&XNJ>))$AA_brq?+#%42i#ooB!6zNx0X;h!`Gq@Q(%0GOas&5CI+KD*p z?%m9_|IS?jLkU*G@Zr4QVY7I&%J`o@RJ36P*!fYTZ9LLzhTMh|cyY8CzHs77My{(+ zQ|>Sb=c|i)CH^Hut!490jjN|<`pk*#*bquEH{VAlw;bBcv58vpB(ag=5=KaE;(cncS?(){FR|`WLeP82(jZNr=@w%Vfzb5pyY`k&O>Y*A73ZA<+ zW~yHpwGF7=A8DDT(%AtWL|CR>w|o+~{mWelgAYFo<1S7FirZ)1myB|Y^diXlvFG&4 zta52APQ^REiziHt;gJvvjzn-M5aYK{j$ef2i#rtk!(E6(wt7WN7jCXSw>bN1*1m*% z%3SYuajqS~v7*?`(g=5HUTnmn+?mPhPc?ZQVW;FLzqN(N(zn6cYh(j->p$+oiMYDj zUVfXeET~IjD&9i6PC!R!JujHyZVaU__J`x#(&}xWQ`_|)`0ziu3%NQLbZr9OFK|x}j6$TWSwg~Nae@4S58Kc7vrFKFi`pE@oK}u9 ze=)taTP}{<$++$5tok5Mque(jhOY%WQp{ zRH<62TRgq%_>_K4-Fv1}<8d9&)pBHmhE9GhO_A{k6SyRio`X8U=bMJzKT6$M_&r>@ihET6_A5>8bY6b?aN;ooqq7 zQ^%_6|lhY^Yn_?UJ$S;2DQj;n7S*RCBmp&hr$9e2for51unkdCug zA9jxf_Z|gd7vWeX0xw(IFxd+xMfj$SeR$S!W^|%YMLJKCh49%sFN%d;v#9@ge_gXe61=i z_UnAbg5FH*-S0$2l6kAJ1%27=yWjhD)9Q*ehIaGRbn}9;ihqSycXtb1b$@sw;+G96 zf$tG!?-8+jEz}cCfJrNA-y`8CN~P2jQ~*b<>?_&RBMT8-Pv{9!WTeFNp=;=oqv};= z7mM5%O{wsvWc8u2bi*(-EqoK_kINRF;e-wJLnB+=rs`S zGx6iYr4u(+?fc}{*CqoGlNjQ1^}!m+R!>b+h2oZwK3hew-XL{PkV7fXU@87|MQeqT|^fGu=KKm2&# zMn9Ol@T%zzW(J!O9AN=bFl2z-mw#@G|0h-ZJzLi$p;V-*FtLd+$uZKZ0k^YEQ=nB> z3~Zts)J2{%NWnKq*)mAAJV;$Lm>wpTp(>S`B9&D#m?1ipDLa$}>HxF1qpAuPm4#=mp0KWG3llrg>y$q-Ex`hwU*t3S)-ypN0xjWEx6j z8e4{1MxTWGnUN)(k!8z~6$YuEFxlP|*}f9l{ubGR z5vizU+2~`b7#*I?CT7<@=Iw#h!WB|5gPI<{jnwrfAO=Qp+=Gj@`^&7v78Na6*>#P~?Y8meb4UR02kHyIT&XEPw z%EI-^0%t}hw`D=sBh#Q!2(}yowHzXc9I}|)tm^1&&jjks1Y+(40*7G7)raEcVXPCG zHqdaxlMFVF3>K5pOMazxT_sFwX&iLf*X~NMa%G5WWr%xaa7UF$SCq(Lg$C*=LYygV z|4FFo#Bbdxfb|rd`xG!7ItA}P0V;*ffJ`9OD!y2mLOz*78C7IPS79MmVO>#V<5ziy zGtGWI!Dg+(IivhOT!kxloTql0w|AOvW}1IzTHt#60~jKR0}-Nz2y;M0#2}(-5HVAT zxC2DOA0inGk;;Wg*Ft1^A+j?NxgCi7HADeCqlh!3L_MR-F{2_jqpCKeW;&zpFe5su z0A-ie3Ri zsdM;p$}X)MuFz2pH+K!^6Ah2&IfB|*tK3;b4t3vNb-!4ZfZS;#YZ&i0uS=~SBBvS1 zq!|{g?!TiM&aW9fsu{7O`BP6b@>w%9Tr(zhUawR$u616+e<2}uAu)F$sdgc`cOhkF zA$4aV?Rp^{yqJNrm`S~u#j%(zwwR-~m}|P2=dhUXzgQ5vSeUz5RJ&N*yI3-_Sh}-V zcD)Fjysf~|;VYS;Yn_QZQLA}Yt3{uUS6hg1Uy9^dhzehdc36mMU5b^{sUOv8IMHb= z)oFUxX5i^hwX8nay6iZ! z{GEC}%>8=Vggn&n(#5Izu$1x<@v2s>+6jlwDOmlOU;o@)|A2Vul4I?c z*xHra+O_H0jlU>+r579a^@?o54EOq~tP9L-IwO)XrEY6)hHo~7lLqvf3od;EjN)Ar7VSpZcc@|2?URDb5dUcwT?dR~Pv9iWkS zdghNW#Sx!!qwM1oBI4s<4#0%el(hW3;{3vj?4qjlqMF#e`jE`Vz^s z&eqQU=HAif?&0S4?w^|Q=GOY=cH7FK=hThEA2fMYjGOSS^`zIVM_fPmv{%_#B z)_)1#$+P{hn*YlG9ljGOh?oDr3BE(t{#)~(cEsPqclH7J|3f%9vGVWXyH29&YZ!d@ z>0iTlGZIMZ|Ag43jxKKLyYyuY%n0N34o}JWb);sXGX?E2g1sT#@G{rEav#mklSg2z}a;f zG0|De8Sv#e!dGEYkrNgo6-reHh%0f*wU8R&_6375uij+eC9~bHLDbCA$o`Lke3JwC zjdIhA^w+3YP$Au61cW*kMCQA7KSYvuRWDtYs;sOCv2TE(x4Cx=p14=vn-oy7YbWq> z#Qyo^(1&^w=3~Km zm9aDZK2+?RP1^pC_Y;ZlAhye*sKmXCwS3T0I(ujQm2-hPI*6KrgNd=`GD21D{D!<` z?a|^1^JgA?oDuETYK`aDfXYBJ3|q_4MMy+{ZJy8%56}fZUQ9n7pqHrtT zYZecv>*Okfa=q8-2^a|g5JafDYCR7xciRh{!HwGYZgH~(2%4n7uAgs{x*q*bt)oBF z7x31X(Z&<|I9*s;T=eBBs%vbu2HXi^Q|N`5x2Z`+BatNL&wFMJX7+UwriP9=j)(|v zS>ybHgv!-cRu-e}2xQb?Vctt>0~-;t0g8BufcxSAoJK>DsJ^=J4KfU8q3oHLnoY0s zM)iqO@aY5Z1WAob3_gCN?ldT<3-$Kae(`IY$=sRmyx=RD_(&*e6q3M&dqMEn@hmo+ zVy}ko+fdz+JWib*0ZR7^GGiI4$?fkE?+BEgEYUW(-#b(=tXm4?P8;sBR95FS_;`4LW&`O zBo&re_{~9feAX!S7;OTg0{u-I1s`Vi+@F4#069B_)*392J`mBzw*Cj!779baj3?U)L2*2|lOpCr7M zGu2v~!~9m}Acl%sXYOPON~Z%ZFxPOV%H1&x1PDNyK)JI!E2&2J%cR&GN1 zN`cI@HF_fdqbU`{G+R^1)}}MKF8NE`tSr^?t4F(!|WBd=||))TE83 zd7{1cC_y0kq*wZJG1NLPqo@^sK(e^H66>vh-!VDcZJ{WYxI+^BXS4evB)Mz~oEOp@ zYs3+6AO}%$&8~?>IB;IQnQ1?p?a4?v+6jBhn&wPJO?UO%LLvq-9jy8&wL9YiTc6TS z^K9H1G;xzy7!v^66RU8@xji$Yn+w1Ukl zW1*V#a8R$98Y6252E8VyIqg`bs(XJ}iudt7g0Q$=pw`dY$U4lPN?~7J&e0^mK-Eb0 z%w5yaLPl+naxXpmPwCzZp2{Z8+^@>Xi943^&IO^b$~gv65m|pa56iRvg1XMNRNY`@=--x_a>) z^BFD0B^=S7rZEm7l_#CLMD0d|&b%i@$H6T1g@R)-(m1$@@*}hQk8`3%*fTn#EkTV% zdNkE_ll|75$-KIk?$uo{Dfak(jm`l0GpH>`j>M}~03bk(7Z1}J21nJ@vlVMJe)zi7 zEz_rnzM5P>u%+zn(?1>OQ)D ztI{KXaPtmr0C&ziv-NT~ULV#EwXAA#rAE!Vn*%=@abrsPPfx^JFZfAo`uTUywcjWOK0bUNyVA9*yJRhw-ScssEgH5M77w?jIv zf9adjLYBsd-_6=6Na&>N$Su#w^fnojih-q{)V5^YxXeUx>FfSrYQA7tgFV|VbZ9KE zF0OLebi=hVv0Sm5t(ft;M1=T$=(g#qo%$vi8*OsCNkFU!dZX0Fr!{4R+rhBj2G?Cj zT!!+3iq^l*$?vZ9;v-MP`W}IK4*}6Sc<|{S@oAvtCVewHhM!a9GjpsI3IhA3=-U-U z=kyt8_zUMyaVEiR!&-6K60nZ?E9ZC#jWndLO_&n1LE>;)yXY)X5SsKLuFeUBQqi#RL;PpDgTi;*TX$9YMZBmT zym+F$B>F6{oSfRt5F2iZ7pKKnvh{Ux^>I5?sNczL`@0nlsB*pWi^x%{?o=7sbJN5Q zRdn!cLV9;(hI!+o{+d%0jnf?djk;n34IY_?I-ZlezjD`SC*Y;6G>stwZGicJr<^)x zmwh-gxuvy0UQoCk*Y_4 z<}z!YCWh0>-iSYXg!xpsB9S5^%UO{uyll_vJy{QIiSYxdxMNid0wf^rEQK!Kx8bS_ zE~MPi?1fmI&e3lpqrp|t%y-dt`0B`$m?A!lJBbtq7E;E= zC&Hw3KP9CiJ%S^hu@ZbL5M9X-{GG!B@xwKO!_&;eWSygS-^Y33rg-LK79jsf3dZ&O z9?fNdFm|6ZfuB0XoeI%Popnx~PfT5eHl{8wq^{nluH&a|nx}G2gkpW+Udk6gKu)fb zN_H_oP`67iJV;6~PQ&z0bIeP-H&4e<5+20INx4r4O5+qYrtPbyBU)szQ36gH5zn*` zEF!@05v<5f={WRQcfpwtg_%$Iw(vzM`N~10JXvZ=8Lt;%C}tK)2qTazq4quv9y9x` zbSAw^R?l4$u1gwWQ8uwf0u>4l+(Wjo3pUMACbvsEZ%7Uvcd`)~K-|v%IWb3RF`L~b zo6aJaf#63kTaE%&j_yOQpi&N>OOA?k9!XP1ZLlp6GZUzo$6=9U3#$ni<(M62Yg%L* zgkb9@<+~-lGLp{!c9`dck`HBE%+cfmNEjq*e$Lkp$@X^1^QF&^L@9`-FL2k!c6BLC zqJQOS0jnYxhP&jNaslpWFhOJhqYSY1P(k`o(N$t@sdjEAN^yBeelh`eq6-YZduc8R zI=J{Z_^x{quTA<7eAi`BGPGDSG*mLi1JK4yAA2aC&@P>~D2@J7vXE3dw^%v@7@qSYoRcGn0bQx%)?98R?f~R~;8}l-$M3@W!p8;IeF28vw0T5OUgp`A1 z%Hbo+5sOQan=5*T$_$H$U-JGj|G}!kc(7`4b0yJICCOtY8DSL#FUs&4bHcK-DztOAxD&pslWen-AJ|nx-eoV`g{<3z z8rFqg(uFb7g>~HZ3a#6dx0_wJo71hEE2W#KrJHZLTi~f%kO=nA(<7?eBktBCnbITO z(j&XvBmdN+NYty$*Q=`AtM1mTnbND>(yP1NtN+vs3l16a^_l4QnYs1-e;N+v8$gon zpgA67bL-4Z>CA5F%w6uxf9fnG>MG{zD%I^Ock3!k?y7F-s$K4?f9h%^>TcHUtVA1X zWgP019qP6k>eTI64(%8?ZXF`(03DBPz>N;0wTx32Cc?M!p0yaW1E(v3r}N9XyYr4<7=|xeMHTrq2uMvO%Jle&sM{~!-nBXhv7$u z!6(DLVMEBJL#U%e=qE!M=)+h{!-z~HIC3Mn?&D7_llLQ&kIR!}t%DT&Q&f6WH11Px zQlV4yty7FEQ_Rm(ti;o7{L}1u)12)x*}+HWZ-i;?Nx^ z@I_D{>jaST{FsL1Gyk2xAOoIw>>ae7 zlAf)fy?~yXTb~n+fv)Ajs)}aR9cAb*wU($HazG>g!%Q#{I0A)KaGLQkWBjA}Q;F&6b;TRWyN+Ewg^zVL>f`7uneqanXzxfFR(GV1{dW)t~cCv;y ziF60%-poKG2{OTmAYxe83lD^sXd)Eb5`NejqMgC7zyJW~D-=XeKGNvD! zUM`h$hHZUNrAVz9@H*L%~Fv=LTK==%nH)niocW;TJqggo%hqL&|xId3-x;rX&g!641WLe#y_2>2kEx zaQ9bxI9#HTnzs~)FG5}@OhMjYIoYh%(u&utBpVKqp^AJ}+V9KljwuhJw7ReA9*SXk z#ReDB^(h8`>*s+h&6}xI!yBh*O<>}MeRWcpW!>qsO-99_j+Etk!>-f+{QMh{RS*u5 zszMMRLzGnrjH5DIGbm`_gHpm}e26^8rxVUTrT%E;M^m-QT8d?tAxMrQe|3_v?x&-~ zg^O!})wiY(8ExQ-kO|`2-A|yP+1C}`58vcGSISKO`V#0xWcOeQI8Pgq;`1AjIcmxG zTBnl%2v-!<)Yu4OFujg@BNM@YXq4SDaHmrt_kPXqojmtm4zyaH_sqVybDU&5lWvsV zGDHDQVOp^UbLJAWM?`|LvL5{uFF4dEi|n8=LL4}i70m2zO6`|~x{b`IS`n_IVCZL` zLq-xFlcD-Cl3i_^YgCn7MUVJEHNr+!QX*y_X%n4DXVd#d{R5d0d4>lP05K&>m#u(; zMp6AuRv&MX^i=~=M)*w)nK0d(E?Eokn>*=m?RDoS^?FWg{_pjj_j2o*`Kh~)!AQwf zifgFcjF4dwC(X=YB8UrIz_cXUq}URPm^yGr6=_iAJ%#*0W{6Ynj~Cm@+G82v!O<6) z5*n#NCcz>CpN)gxihte;H|CSie6M-qkg-oyAP*$RhicCbeu{lM%|>r)b{w*buBs{` zZLmKJ%ITnrUoX3v8fWJ`+G(;ZZ%5#@s%&r5V4`8|E}^TTGxiDgUQ-YCr=4&y1i#eO z)RdN><j=&SNtuH&PzJ4G{l1bwqu7p$I12CbON=g>o+J)3F!TPpe;PjOWz* zUT)-{cVjb0;7ExEM&UjZ35&k3`HZ|nM#PmW3|0L^Qe+?{qhm3SMZwYjgWgOS zMNMSH2wKGkh8<`r5IE4$aIW@-A2u1Y`a`*8jb6Xfcb1iYk#G(&?v zf3dS=2!eI(w^^ks_yB8Po>=%&*c(d~RcPNtySyU-@c|iEgiMsJZo0PmXAwNvD1onbR`iXx<3-8+IS@%+k-97BkN2ARrw!+xHC2 zslqs|q*~WY!f$ihZ~ubt*v|*7KAER+i!NAx%fe~>EIt=C!PxUlH=|`w@DF^~ch!vW zypKbWBobs}{|CMsVvd-G53SLqN$r%aUz{lqsP*D>Kdg6l;mDwID065%%EC*WEtYc7 zRVP*w=wF=g7k8{WxjtfB;<0Ukg@YxmEzHts=I!t~En{0@@Ezeob=ghnpsbGuUdQsD zxKq5aBurA`ACY@Hz(e}*l$4&`8n5Z{~zW*j&mX-IE_wLI-OvAogGr-j8PA0*LfhSTVdlR+(gZ?)5=fGA<9@E+ zhS}&;Dqoe9z9g!w9m?k1_pRxGMbPF$ib}A`Et1Pm531ikr2b95F@HE z(~=Mok?iR>n}$1-H}%Ki$Q`Si!2x`j)Ef zwOeOSP$xcLH}QM~p=<@S6)RU5D|ZPi&j>5;F)N=Nn9+}!m8koJ8!KB1t56H8@G`3i z8ms7tu-LJPcntFgv>w`+E-6qK9k#Fxl`t*4u&k)CbO{5p>Ibx%4#D#%H1-m?s~*|y z9%|iQ8Y?lWk{;FL9!(g98Y8COBBn7SrdiXgt=g+6D)up@_eD+{=|a+goABLYL?!G<9z;LOV$6Cz26AfKW+eb!Q1a>-|uvl zYOnk1$hY4G77jipa1IOG?(X;a6AsRK<*tfKGC=Re{wEv^z#6Do_ck4B`2*j@NOo#U z2I%@=XZe&T!OVXHKion?h$N59eSUuP@wpm^7L~FA4VuXe#@P?Pc#0^nY>0=M|DM`u z-%uqk!+ouWg@Xq#e1UnEJZVpV!ofQ_z6lU12-hF;-y-TzuE|h-&QK8=ez0Y&McRmkm zn8jk4;1AY1)N$9q?*gW z95lEi-L*bDxUn<1cA>qi1=(ZN`O2%aFRgQ64mmWxO8o&#!Gc)Ov(YY8sm>2+=s7~? z0$b%07!D4Cj#3Ry9zj97NG#$(5VbBCSP*v8T@*!OE2Hr8P~Z$*!UPmi845Q6L2`^D z1rL)^50i5aQ-}@!_YDW@OJ*Zvjt~RsI^L(`D6HDR3~XrbYbXsJRdq8^+0}RUfGu;DYXWHJI0fc7%uaC7~8zWPoX`uCglon;IhEess^j9f1b-8jb|9FIQ~8+T=z zaAz8MqCDYYIPuhB;@Q&)&)^BKgbDAw37`M`aPTS5NDSZ-ea8{fQ%J3;LG!7h2%~sk z(}YOV#0=A<45Q>`(-fp>>YQm>nNj+sX$CPYlL_{&*~n#g?6HMW?y;h2wPL}VB5;tX z2x(Y6XIK(xXn=$n&cT54pYbKkgwwF7Z2D6(tdiKw0%}&uWLD?~D|0ie%K)~6l|IRs zy_bPyAZu8^gSrn7ik%iTF8LKm2^V8;n= zM*6`1Z=_i{pY;bB>k6p#N8r$|FAO&d)(~uf&#X<*qSVN=*oa&twzRI^wXSiq#v-x7 zX0`$I+u*#kCfBy15TDw0TiWwo`Wm^k4_-Lywn9-aT!5|7V+-iKh3`lk#&R1b^wK%; z@)6(iPw4Wgg)Q^Eq|Nmf8;+>uA8xi>vbNjZ%e>>ueCx~nC(8mjD}ppDLN``~#s7IY z*e;Ink2ZoaUR7auf5Lc@hy5f8^dtn+BLKq#m;m;>x;%b~;oy8F1%D%hzZLv|1z|Hg zjJq%rJ|Q}wf<%N*3C3c?$EPP{qF`2`Ey-+pB;42{L7^vg$ z+``fOzP+2neQz5VUt{+-Mh_#5JmQSJQcRv_n7+*Zz1MeD?aTYy#Sfr?xxZbEU+3Kg zykJb8-P`vsV-i#2{fgsUKEyf{$3IRON=Z)1$;vG#uE;8`jxA`6%)8Qop*byq z@0%WGb!rqLxIawN*Dv2}*^uwpgY|#&8aoS{Jx`iE$VN5a98D>3-{Wbm)y;44&k z=yf0?GZC-}Glt@2@ZEUp(V~^1i=4#Xmnj@R@)9OUpWW;4 zzu>pK1K0mcQqbm~q+r=EDfl4yN(x5)MGDIPhoqqFzgr5H{k;^7`hQ3YqHxXV{#B;W z?8U#9f}*dP{z(c>DX13E2H#&vPHefhlhpiD!?`g2&^hLVQ9dlOMp@`y~YxhW}g&V%#*FonYqV z60J}W{}wFLib+}Zq+a-)l=IN@W*)p=$*+xmU6uanD3s2*S@0;H9`UgyuAML07>@U> z1`29i^|6U?^2MRzy(g<5Cs=hvAFH^HEZ(sASc>~l-z(T0_jMesbxn^C3H{|8`P>ifHQkSp4fRbX?YgJdk$is4SHHRYArn-sEo2v zz!@E=Q3caD3F0kn0#dLngis1~9QUo!_yFWz_Pu{!pI>yH=$P;nm6c=C7+>2e=FcyX zO_{kN`BZW%&)t^CWu##Bvh70t`Xv#!Vm8^i=gC z-?GSvC>6_A4BUF3V)KJk^bnA@lI;Rl@l4(3_) z^nesRjw0jZU1a7dl%Ej#ixd=^ufLLly7+|Nzoej>6iXk=l@tsQq5f#26kSsjDdA7% ztzb7srY1>~jkII{q+sx78#5pUEdeQLnOqYd`nwdo|4RxgBQ${**}RYcCUkIhoQh9Z zIl>gkC^ei*}uTn7n+y=>;LK}Tw*s6l}e%szPP5-{QEJCEUf)!mG zd4;He+lzNXKYM7u3RPN@V8FFpu z$Iz)b-hG;8J?D7aKTqG12J&PZk~kT4rWTz)=1VNJVfGp_?4um#cfe89|Iip9cJ{E) z+#K0?%sMGbrba)z zB+5Pufc5bD@QsRBRoBL$H}RxXJ`C`WKG>CX9CCjCair(OHiMJP#SKSzWL?Wu3G!aZ z`whbP#=#qdjCJgmTJWJEd8(SBGj(zpz>DNDG#dg> zj+H{YS!{WDO&*_lRuVBe`33e?X{_rdV#_eN(S{7Xm=mpY87XzL8!2{TvhODJ3z+A~ zul?d6{!FgNSjDUWK!d|Iq+Q0*{XJ9UEZ4g8(hC$mC2M4EaTcPqxT%L`AUlr@;hK4S zNgq?!vbhJF#=El7DI-mDjy1N(!^m#~oA9J_qprAK##EP^+4s`NW81*8c*^Hum;x_w zKRvzBW!G`F!8;#gp&BfZyG;K~be+bIw_3FRBz=V}=gv@Ud}%zisfN0wuA4Vxk=I|) zJotu0m54aree!^nO74d~)%kAaddS+LfgTshQL$q1r)65HsWC1R`X>cV`tcTrg=Q*S z&-=F>2#+)yXRF22dY{XlT6)7>Ek%s#`5@Z^XR}Mi4>G6|$)s_89`O09Sss73d%6{q zL96tT=Y}9i>2!Av?0sKH3hC6jr`HiRb`<=@B0%HG^z1C6OY*I+)2HrDOeE${gyTS!u6)W zF+2(Csuey+)wI*8q({}6MTK&%9O!Q+c+Rs?z_hO;Xp~+TR6n#aJm1>M{^O;`d0JhEFVC7yf*R8DNY=&gWfe`|s7zZb)q42E7hzz9{@ShW`!L0q z4b1TIH79!TUV(4CfNP|*`K_&w_*L0^=={3xUy3K>9}7FZR8?EV9CQtlYB~rNxYJH9 z_kE{8|7Q%R^W@51VjTUHTw^(Q9jb4>@wh&WoIWHr=5OO+g&St%VDpNn{;9OKS;6*q zs?0tZiqU^pAgVTz9OZ9Zxz~Nfv}6p~$$M(R;pWm~x%U)e^XvucwXztVl?t{M>ex}j zOLASseatv$?y)bqg87^AXN5rzL4gv79E#ibte;k6&_&aFuwbHlUhQm%yz2D~7&XSb z{YpQX%*l`}vnv=!#Y-&7*;&m6`rWgW@&V>1885Y{bD*X|rQ-WQ@eWa()G-k!7Vx_b zKk)ElG{2{61@)6I4|$)JH#caZhT}$h-6CK*!Du>t^(U?o;@+w^@KkHf-MVCSjtq5j zF=Y*fM?9eJHDNkW1N-hh-2|&!ItZ&6LM>iHzls^EOoj_~x<}KDgH9H!t;t-h^{C&C{D+U5fFf_%V$BaT3=krMy{W?mH-4OL~mY zLwMhK?C{|*UCeFIq*EN5?hbdxDS{BeWH-SCL-k;`A}^Er5b|fS_&1~Idy?$?lhq1d zLhmPi!i;?CMebamC@`FeBkY~tL)(w*On85pZUVgYX z*2yaBeqlAq_^hdp)oC`jQabuWg1{*y*P?VbQ%o^aSu3%gk^KuPD3Q5pnmJXE)ka6I zG3EOOpM2XpxY|3-Qx~^hJ;7!(37)M&^)Zv8{oPj4yPf`YyrZ9I7ZCLjAqU>7(*-SqKiGIA}+rY81ve7dlGj z`==JXN~Q8mElQW9Olrt_+>q`?P^>PA>C8>$GL2)qn6D4ZEBDE}Nst{JR+IswN`sZu z4NyEnVSO3?J=51dP1nSImFa5(uwX-JUvVjdpp=pYr{4Rj*Ec?0GUih@4wU)^N`X=z zQu10iLHT@YiQ=P@_0)1sq4L#+QgD0uu0|O)=7$6B(y!CyGJ=@b9)b=f$&O$j`hjIP zhH|uI#U(e{Pv;7W*b0J@a{2d6WDFnwk5VwhKb5=j)BmCr6tOnAEn@VT`EI;+TTgRbhCy`m%m8C=MCim6I7_X&)OI+b@QW3U1fM< zbsA@FcwPN=V3ehyf+dLQ1JmQL6jzF%I zBG(YejUD6{qQQlTmR&^ilGfm%>tK~MqS$q)G-9Z{bf^L`^l4}4*c<`kLtsG>*uE&7 z4AiMPiZBvIT!uPBpvZSol*Gg5yu-B6;cITgml4BE8T~9wpZ`atphaUpHsgSs??5Ke zL>BKv_67Wr+r*Q|iKoP<8pK51&O`&zWE1aX3viOe&hXEONzAh0>&W3yEY7p9>nzO_ViBpREEsVd+1CK z@pLWUbYA34W7$lB+jJ4r6sgQCHFTE2Z8kD;w!>l;;X8X~j%%8Qt%a@tMserHGqCf# zC!R%PkN=kGW11gBVwcI!E&q`eJhE8$2Av;}nL4wWiY{9~X3YLb>$?=O-@VM$kD!}gg72C+y;mVTFlFR|FN{#*(Uf~2#qq@a2mwuJn$gy7s% z2JKAQim>G}tL$GgeZQn2xAw|y=Cx1n!CKKv9Q;dE<+NrM*mQfVWR|Oz%9FEuMxxaL>J`Bv>n*6&$vJo_aDIWyPMF3fADZP?6FSZWnuKu(6d+zc7SHuJ+a zDqrQRSn|+bWfS~;Blr)b;L9((C~TihP-Z#EZ+_{;{Dycrw)EnXS_L-a!|l4v?b;S> zHTh-jMO@{FSO)t-?Uu`Y(I6@G=4}*+g=P6BKS+}7SEla|rJ&`mLFSg*KC1<4ixF5K z&K%c7ZPK@Z8)U!MwSX(#mjkS^xmrNds4YGWAW#PybYDifW8l2n$9wn3QV{PQ#`UZ{ z&rHw;Kg*ZBrJeb`dot*KM)&Q8L9qEEX2T#h3&2i3k(d8-)LQe`fUrfVM4PGHQF%sUu{F9vDwkvW`dfI50|-6>jHl# z1&OVW*3qnPSx2|qj-YbmIvEe+`cFr8XP=> z^~E@un^c)+f^A{F0ob2ryG%O*z{Gca(b!v+_#N2SlV|0_>ik!qhD8X1*SX>JiR|NEpMw;n@1KJI{Vjc$I^n(*2UbwCO}TP{%B zWP1l?2VY4+D#>S~2u$18QEv#LiikT`Qjo^;X4M=6>i`R$LX-qo-dewWSs1PTm(OjK z379o%wTuUwEQh_eDD#7E^px5xrADkaWd^m(p#=NfSs`Fr}{ zl7qUyH+JrX$yqK%EZkvOi@kx#`|5av>2>&Th`ItPZcY#AFG&+*fNXE_@!@3^fBrnJ zAX8F6>cz%z_ zVtU9n!(uYA)N@&$vU80X8F1rqM#X+#!Jd%@kEy6D6M*~-W1c+a(6GAX$~6*~!843A zf>s-?5-mSsSuXsZkVluw1MdrXd5DR1qf+;9>fM_@v8MNhRd<_(gn{!&1%1>s@r7bE z6bM^Jk3N)1PdNNl3YNL(^b3aDDCWm5vMdlQh#tXJ^i2YAt6_diqU6lo!`%um4fe33 z{@O)@D& zYxCyKN9Zu|CT6Fq6P9nE8)CUx8iI!KayuALL#XPeOXNnTb8owp)vjMj!S!j&>f|;e zk$h>c=N)1U4$r|HC}&nMnUSuS1|8E&ch>YLB&+qWUrb6hG_zZ7s?cjP)sK*poVM3A z>*3sO*tF&6QCkm-14*QZN8HcP^!;&mgAqZ<=E6$GIzXE(Uq9_6?Ktx^1!l4wNnX?zIJtyLaB;4YMAfGoW8^m9|hr2pj}y zKK0oOIZ9}H;85w1WL3#yab#(f3u`V073JAw$9$ZuN;!{# zt2POuOchj9B#Fg`^?^cRb$tw3eqJ{NM(6N4n%NS&SbZvU7sbWu{preC+u87_3b5qf zNVmrl3vnvlQKz(m4&!pg^;5&xC<88Z{H$KkVCDo#;uH`18`!+vnMUKi6Vl_0dQ!T= zoKO!OjvPtx-eSM&)fU8IFp@e(#lc?fjYUrOK`dr9vX3kDBliVYLb}g2`1kRT@`bz^ z&8dU={I>_xNwV45utFttiiBQjkl!&lN;`*Ti(u{VB;H;cgtk<|h3Jt5*(g&)KD0Oj+A03t4Lv}j2eeL8V}^k>CZ*&SxJcoLrt)5KvP{8JvZBI-J534aMQFntqQ;JK`^RZ;e;im}F zYHQ{0f#5Y69gdK`4vJL2*HLVgxi^Ac%<(C4+EB*=&yEQ#&jBgevj0@zIhFj4YUBUTwHAcGzI1 zh}}{5gO^`Qm_||)rHQ23>5Zij)k}W(IP4Q9>jC8@&4#sW#JoYcJWCySzgN&0xqGP! z&*Qn6a4=?8yf(vJCJ0aNq7@eksSlrR|5R7OFUuQ2$+Lp){#^I*sf>URYl-E6EC%Sh zlLGsL!iCvB(oBfT<5*7HIP|lG2nQm;&s7!in8pr-u;d)rT@<*XPsoA~?Uo$Kv%VBt zU*{;xpBh)6&HF}<89$%P(_G|l>YywCKJ&J)|5{br zu4|r)u5b~HS5T35a*Kwq!di?+4YQuI)qBu${@a+PboO1p0QN~V=7g(G_)Lua>!I5D z;}5Sd)09ZFsa@Cj%_=Tl$Y-5Rp3a}P;g;l`I8Z@0Ec((X!BUrX6f?NYOMe7stO`Z3N5xY$=tyC@IGRep7md z{(3zxVDSx~bt{8Bjfi}_*LEwmK^wTM#fbu2NS;8!x>a6K9#q<9WYJ7 zJO{LYE}u)MK(yLM2~ofy|43RXG;do;`@EeFShP)Rr!Q&m*<$Bb3#`H;W=jrWf`pL@ zDb$;^le;LeNq5w7b#Q8RtUD`i`Y3LPbx=1d(0ZUNg&R9W;2okf9b(%Z;?FCnD3!L@ zly6Jw6mA(!rur&EIUnnq3$FsWfQ@ij=6LpI22+9%($?*!wLxdC%f{Nz6 zG8~E!14ZSgPBBQQxPg)qLP<3OqPC;NaG^+tfLxn}(C>D;}hF6PGB{L@3`xD09s!-`Y{;zJM4Lsqk^s?~n})9C45KdL@|qDBX}KPO9HkU?LtX!J|1aK@~BDeJz_ z+`ceIqSso4Sau+eMNnu}-&^ed=of?$04{U_-7o``2G|v1y0@E zGEGA4+^daXbRctjd}$`t!25_+UK8f5F6L~5fxJ;!NfWAEEsgy6fg<4FM*bS^*;gCE z6P1#ABmHIA@QRBD#YN1~nT8Kk@G1k%ES?~CYkz7%c!?6c8aNL$zE1K^0J9oqohD|( zEph~dbWS;UC{YaPc)>!IHbrs zq~xl-AFq8}s(sR=ePFKh-Bsu8h0bAw&N)ZVauD<~9*WLIuFUFS?CM}%4lRmmV-f3O z16#m+s3k33Tnk-1HxyQau1z|W@K}e4Qn2_DOWom8eQBhwR31v!S641lS3UzJ$2ls`H>w~u3Q-wWES<~NxX=_4tes~N)$40fghkl3-ofD0nT^MNd8R{?@>M9TIX>|c) z&=_i{4|q9?v2W=RBMXRehM`HBq28|H-8n-Er2gl0{Xt%%A!#ENqtR^(qdRU!Hgozi z#CrFc^qiaZZGDX-BaK|=j2w53?p*@yJ|lM~;|F}k4`qNxozY{%k^f>T7)?DD!#Ncz zHbrbd;wom8plpK+#_=8shDx9vT>T>giD!eMzd)q(p0s~K%E$-QEimP2UBC3 zRyUl^b(qefh81wao*8OeTpAiS8=4(!TQ$SVkTB~qnCT@922AxbnU(CqD%}jt-5}K& zuo?&L+HQk7>JOS3X2pDF70qTJWz3r9%$j{oQ!GrAiOt*GOxyX)J1))AGfdxEnCB$G zdgo00c1`;)O>={%^O|S#ea+!>vjw}eg^|BDf|)GPs0{OAnYpdY1W4micj3_Nf0%3a&`x zuSnLcNcF5pkFUtA+j;yk9Q-Q^1U|62hXJ@i%X=7iO$h{r$tfvFz+fgkyjv6`BFt1= z0(|ruy2SUMU_J5$SmAGpLE!oqH1x-K6o_FLgW-~a;ZcDR+>Q|k$9y-6^=^_VVwBc- z;FfNixPFnmMS_|`Ffi_`;rL4ZUXYe^F!aG|{U?#e-YKw`*=AQ{@b{Hp_LSM=kMEv1!;u&zjbGGz+x%J0J|M%_BM_c2&>oY6A-hQFLD;l`6vI@Kdt-E_a99%S=T=ZX@qb`4pU*!akm(fRi=x?X!{fn#J-wiZ+ z8;w3hqmO~L-#;gU=zk&P{wHq&)ZM>$y8qT&|Lnp4^REYZ1ON_V{Vya24gLuZ{+1XN z_>~wm{0kgZ`4@1I=}!}bDs2D%6N8F{Nk;z7K!Qe+A#nR>C-J02F+q<=k0kzwO{ju9cpQwel*P};HsB!QOeusk-*X6DfgAZoU zmHsg?sQY_ju=@ajgKj`#(Cil+^!>xc;9<>*JH0$E>?$$nd-Ugt!3P+BNen*t^kxDlIg~|&0D&kw7IIBKzzgB&{qQ~JnNvHsr5us!7Ry>E#tK^~NP z;CPn-&ov;HnxQ`r#%JimDN_KCB;|B%dFv@nXh#2jnsdx zE+s%3-xMmEczQTyUoQf?PAY8DLu1r&UC|W`&Rz1woUDx76)JQr6uQ95m2?Gb% zrp889e&Q`t(hiTNer5fDVus<^IzoW?Cq_>Bc4_ZyvKijVo%bsIGxv0KS53Euo&6ow zT&H1>;=2dLC)21npB>I$!$oT8ZiSR=^j{4fiQy z%oqI+lx0J;vb&$Ly&NPYCw{RQs8wZ85*^^`h&zNU!jHksAZYET9!;<^Qc)e@pl~ak z_tu63q3G^DtpuIv%~S7KlKulMzB7BO9Jg+5v=HAbYjX}I$sS=xyhu`zOTc8LPeqGc zg?|6E2gT?!u!PXZ*D|`alu2$CFUu9Gz8l3KC^vbiebuufUl3+EhRBDM zcCh@KhBV*X89$p_TE1^}q(u%4|2(KeZ(s@(+1Xi5w__aWXn+ z-mV+*g{R~zM}CQ$idz;w|5j$^yhSdTYklrg=8jg_sX$J{yp_gH%hqnUMy%7bHj1l# zcrYMjP5Img-XanHwERm1-*=aRsH{Od87-Lp_SBt?x+>2Wu(Q7V^YU$G@2@Xf+&pLC z_9V5*6B*sl^q(NDdW+LXm~cOsQO`SV&}43uRRm2wUwQ*S?L1iGw&`@|ieyFM%=t+!iTrUOIG?tBb!n~nX+1Yey$gFL&I&cke5=oIn)~&lzqrL=B!frC-(zUY zQKg0QBL0j^ zg%a3g`1xEx@|I{PJI6ut&%0d=ZzrI)X_g6$$#P$Nswlq1xA9BAK`w6~!F%jO6(}!H zsYCVTWtu9i@HSbo@%>Sd==BqqZYr~C2eI^JuS9Zks;(?gja# zuBQ^rj7u)cDe4lZso1HQ9Vgz2?M%BWg0>Na(bnmeQSgbWXa*+R9)4DGbP^%O5luC6 zJDL!Q8o!&s<*()F!f?~8-x0SH$PKQj+)}c%R<^vB1-3G>KzLYai$cw+F%t7; zr?(>hZ*i7A3{+xhfqmb4Xj8{s#V>ILtO+8Mv20(I%nQA2zj@v|BM7v{;ZaXW{~kNb z6(yn`^(mv`gGmT5SpV)8)9q3PX ztTut4rJ$zL2-?%0*QM$Wrxu|Vu}VJwB{BF54z7D=Zl+{z)o1QZW$vA2?we+cW<>zq z!L?eIQ}uT?TUqE8JAt{$Pwr0sUr($&WBAISfal7s&c1D`A#Up}LgB3Fby&znB-ZgGK_ zPrm&?wjZ$Xs~MATAesB*b>Wwd0<0JelYv;ghuE%dc|UJwJ$Ej86;`A>P>|$Y=&n(y zrk9^3SuDI%L_3{dP+Z8_UkC#J)aNF9Jb+`YTVO$-U(>+vm0Faqk(;YQl|5b3)r6|cV6nEKZaVg0|u)!k6fOFZzkFxHqvc(@|Kw@wdnD~X2 z#SNE!@hNZTrfU6BeyBmQGhIFcBRh8fFckLT$5uJe6kH#`BH0HB1HcL^F6ql~(<-)p zd?0H4KzLq(vt2>aSo$q2e>&z*6N7&T2TQJ1OZ<-~2G48#80rF~>VnMb_>{m^0d(UtNGo+t(WlDs-;#;qBakD`5u~TL+6GP!?<;kLaK*?Vv_<(C&0xBkE+}?PSvGyzbh` z>RR`IUt+MSKYg|zNC#vw4kRFeZ?&V!X22t0ATOem9WlVUGjP+q@fI(fM+?s93Kxig z3zfn}5OA>__-!JD1TUgY3-Q4f@iC&YssvHP)3~iUK=PsmRoX_ZgkZ}TsrY$X2ukz``l-@#Zlimf|rYgnTvKzctE*NBl-#v3O!t+jlzJLVM#dQLraU2AV04QRiseP8st4F87d9=3+{@*Nbm zZ8=uN{ANT8wjK)Gf_aS}1!8a6;CBc8L1OSP`@Zi6SNzLCc`cyVmdm_?n?dLm7WZW! zx5$RtZb5H1w_rotmJ1EAg%)wH+wJhpgLtB`gsi^|MS<>Rei7CEq<=%ScuAbob zt8$R*KC6D#9=qjsZPeOR%Vj-`o$q_wdW$>!?zpBHE4=cnwDTZ=HW07iE}uI{)Ee_o z5`zbf3kM|EF}X3m`VQ{x@uLsv_`iPJTfviCZX(&y7X*LjU*fmi5oA8Rklm*zSt0oP zcW{vOfaSrVyY?aIaPLOc;Vpp)9)V@a#cfs=kmmkjlk9PGIhKyVav>GC3L8ft6XdPE zA|-d^_*-I7=Ro=A*6y#q;E?+^lyt)E)smh7NMip`4|S@yf9U<;n8$KQ^ye~{?pJ=x zFG(%?F2CSl^s56m(qrBIQ-NP_F!kM;9tK!aei;?D#4QNsY(4U@I(7Fw6^cGJ6j(R? zd8!tDTznlX=pF9B-tuRX6~JlUY6GF>K@Qi?I^?b@gA$9_I?)#ctrv)e3nY30TT~vC zRPKzn96RmjVb!zC>9=S5B-4mgin!9!yo?YaF{luLLn~`L7rF+ITGGF|EQ#(>px1Z@l=A)e@+ZC$&JH65}&G}GZBd@nQS@XK`Lcb;LXuELsW&$h)UQs(Hr6r(p?vlyG4epJKFl8 zIEODhHZZExguKsvdeoiu-y{ZU?W2Xp6-%^&IP>4IbugwXc2wdji6E=S6_sp48D;Hx z!1P>dZ$Q)!;?(Nq%^CT7-gs!@^(n}JDnuz>>nZIl!m*I1w1x&!hm!xe90I!iccy)VlX%_F#TH&zO+#rkQk&6 zi05EFcte#J%i(aG03-%QfyChM==hyjrNTO9f3HB}B=an+a&}Szf;V8NzWe<*g4wbI zf;#lGrE|*-bi#2my}lBh#by~FIPlGts2;tvxJ8$8M4J2iQ(BtNs9N` zMsd|l+A?|?k~mnY=4tnB-wAMsWo3@`PwhWL%NJrf!vSW=`{A%%^LvD@20|zS#!Aro zT?r}Y{h>$l7aZI!`(o&9h2(wW>h8x zqG##rYlcrkPO0Z4>flcAw%rGDf$7=}NkbHe#!;~&Gkqz`SwdWyX%^O42UNB4P0l5} z^kyZw1hr;ob-t1zg$3Hr`AV95WIX47!NG4JsgOa$4NHJW8%mwg#P%(LX>`^6!JN)- zS(oS@VU@p+8eD$bLmD;8e4+QP{P_K@4)tDOtZawd^U8(-?H4`DDqOw6yvF?xSOcpU z9fPG`Q*366QDu3zc|b&9iRijf$~=oTJW3zZl-zOJ;^6gXt)135Vs$`bkW8T+I5ZPh zkisd=>V4B(lf=L;fSS$~e58muXW1qAI_RwjX@A}1=2R)>i zT7tCnb_O&Ny$lzbVrUX9wao~&?S~~|_QHqqpGIeW-@$(u_Zd?!sjax8SLU9y z9X(vRnXW1(sukPuS7J~ataD2OfN$~jS`OTp-a$e6_?yS6kP{sHsc$BXepCb9)kJoX zSvn@&b)>$6y9x^-r-Cd&@EN1SnQUyc>S;GH=*}D7=1z_aNkOqE}CQy1QP|{B*4&-cR1@F zy~Qbm*UfFvQY{^e-GT4(!pVYdATiW&wDcY|5%uSW@wUS1GFNbf*$Tl#YhQJ_$8osD zw+8fZ)Je72bz&$W2fH!oFhIhJJMN+>COzWgA3N1!4LGGZT{2$ZGDSKYxt@kebK5|8 zQEyGWO~)HHs|E7c2%S%}Va*ld0_EL=u3y>A8c{V>UNU^{`Xw`Uy6v@(F5N5w(OcDKx#pP7d`YZn@HpVJx@@qh!4Ma{o#ltkW<5#WwEi)aIB#IE z(egyr2tO`Zz`NLkFThqjDX!iB-b8l5r%{JUe_u)uHy+vrlDgW73{8K37wbAMlR6^V z@W4<)n@Y9GIx7Cq;FxfmSSOSEnze@^-ZRtWtu`3!ZEQRD1dxhEDOCK@X% z3oIn~;Q8y7mej4uUb*}}=pxTpw!t%DjkXBiF-kDk{-9%3-fdw7f~I#crVsEHT*WjBljTPN%3%s|CJ*=p1AqGw&(Q7Geyxn-1^Pd0o~76 z`@WP6{>5RE-ic9%^`OgN`@XgAT7?!F(su!la<%Wv+OZ}5bz00flQ5r9+{OHA-#6sM z+{0}La!fB4N%O3xn(w}?zL|AjV)&=pjvc3@nc0o?qpIdhV-a-PA~lYmXVaR@AHl(m zxvi%KH*gVJC!{)?WxYCRWreJDMhT6g0~i@? z2yDbOsaD6|QI%rMhV;Hz7i&F(v1dZKbulT%$=0f9(M0a*n*tk#tylZL*_jWB2^(UQ zxZ=^?iJrcDPg|eQ+mW5PLi|&XvT-@%E%2ki`W_|#_)%$YlBchoIaSVg%Xs0(me0ZC zAVD>1#-$$%xUar<%Vq7H+MIJ~wXgNIzC5X2xO{f&=b4UEz;NpV`n31wkK4|#jW1XU z){Vm?Snvf4Yc53EupshlA~&SkKzS8d80lD`2!A|-O6;mO!Y+9PA@i<2!EHe~k_b#P zNHP&eJB3y>*|wmNiy(D`AWf+tEtL=-obQ@e+2W%>!S9K~WC6F^6!P|?TWy8t&H3oG z6j(Wg*hPgnazF9db?~}$@aZd3hj*~N=(tvj?wCvMm>KBck1HqpCb)j6h|Ml2BwZmW z+6h+b#MSJ?$Kq$$X{SReFe4Non2I}Woj8r1c<@ewnNFhZPLlIZ2rvB1Vk_$q8Z=8!`Q)hA*@X#qO-%tMg`G>C@9RzV-U5IUSJ85 zx4Yyh-V9Ra8tr0F@8&4&=8RD0K`8S!b!*LbLwCB3cMB5`^^7t>> zc5~YBrW{;%ooA;T_dU5dL99ZL8__+LSpJdxhM8li9rd)-u|{` z&)loT;CyJW*0+}Dt3YB<)eGIPTJz8!^`kccNDM~A`Dw9o%J+qM^t~n`3zp8ehpE1) z>I?5uYmM&9OJ5EiAW?s$xf-VlD9%nT#-KleS2b2z#M7=nIbNNDgRV4%P|Nh4SsPM9=YG9@DLs(5%kq*m+>h{?piCOi{j<4=Xr z)Q|&jqtZ$;i|enToQE;MJS+GwJ?sgFu_pJ<))v!k-UV;5NpdKp>i1`($u3eOrx@VqjEB%^4&_`w1!kHbX47R)O>YL zceFK_bTs*N_7MgLvj*R*lz?Rh-ADty3z4^cMavc^%cd8lw^z`P$OmKaYsX=d%(nR!njl3xNWeJONNna z*|-&_kvr7D4Qwn#J@JTh;<4Doe|2K8TTaw%gm7&Pmv{>A(nN&M^exjA5p;^!!c^SN z^ft9oOr&Y7uW59KX+pDUBGNQz&NO*<-1>6L=F;ea#rVUrF#}FRGp4aTzOh_oSia$O ze(-cb!gO)ubV(kp)WXm(($MJA;3_dlY-Y-&q?<8a_7qknGgH1c{qcC(RLm@O*EEe7 zmQrR`-)xqSG|QMX%iJ}4#{|nFHh<3t%WgL6L>hGgp+P?L9vSmqsCl1-d55q0K%_Z5 z!@QBn9Jw|*csx41 zuxZS|H)e#j7C-q~<62tdWm@CAFDge`6O~&Nw^++W%wUKwVv;O@92bwpY>s4Xj+K|F zjh1N2|3B*90;;XGQM84S;1b-uNU@^DDH13y#a)V(0;LovP@uR&X>oTe?ykk%-Q8UZ zh4hB*{oDKZ-uJwB&UxqFjBg|vSy@?;F(O~)nsXV?!-dDRaSa3L+c{Q2#V~vWP+R9tK0j_JBRbTCzA)~11DGGmlxAFXY)T!mhXPY^@XeJYN+8{L0~FMK$&>uw99G}I$Ix8G_{{b);}bGy1RRHW2B=)QVz{Eq~& z!2e|lVq}%?Y1=7oSG(J(o`_64X}$zjJL!S+Uw1M>pYAcHsd)Z1ADAUY`fq$-mGNKl zfqZSG6+vzA;#Pky7Nqk>e)Bi6AjQ)MK2UDqH3IIxhy^1+p1;I`91nb;dh6f#K)TaE z6$^TTe(`}$BY(&TvQhqPf*AMzZG!j@`M`fm5aa$cAIOah;{#9szw?1*9ls@r5%gFR z$>HFryeR)``M^I)5dS$J_>dsZM%*kAjcF!qo{boG+wqyahO_f+bW{3|CWr-2A1eTz z$f(Ilr6HegFu`oxX?1Jw*+-+*0rjX^MK;g4X(6_Yuuw`}Vbb z1-F}e;?4znjsTe`gkwF?2KwLzV@10tjK`be{=JF?GDEQ>kbDC&`u;}G&``Eya$)RS z<#{?hf4~Nu{H2L}(3l|lF;(Q+Q7mbzMtZWt9@*QGC!Pjslx`ZoY00gi6A%onZ0vG;8Y#45IGG@r$q%OX6MpoJ{4TwV{!1B- zNa4Wk4{aHz?~%ah9y6}$Z}U2X)#-Q%LGK0h0>n=;v(6+y|g#5 zW~(w>z&MA-ulJkB48}gWD(Ye1zLgpi@wHT;UGqc<)%11!@&rClOm|sR6;)`c3cQ9 zUoo)&?n8-leyG_+F>&ICk zAW>Be{mHAWL1@}l+I3lGp|4~VtFxI!AT7srwOw)};LToh$)u!EWb8w-)kV;Anb6L?2mGt zaW@_V2Y6?{g=^tekNpaV6ug8bB+`CwiG|Tiwc1szlv8i5=0mBk9^w~D*MV?l_FVYC zXg~=iJRkS)To>w1D=aU)&mB4$xm;zADs4P2pC#>oLjgvnT(VUq|V(hoyKfr)cpq6mZch}kXs&129AMx2kEIsA? zEyJFhx|M=@a)fOrgq658BsTPQ*v&OH^qY9qzY#j_L=$R);L>^sRXZGo0woI>HN>1l z*duLW9H3p5mj9#?60A6j80y=l+fb{CC*h}F`^MvvI^b#OK9aF949DA1HIsN@9S3%g zwDZhW*2@d?BJ>-Wa3U*{@YKRhdJmTId5ayVvAPqEIw|K`YvmZ{c{0QOs0!5gGQ1MP zFQ)n78NP$KUkFe;VmOxtH`j`;$96J~TV~7HM4E+h(s%y7q2G5MKzeBZOsId3)i{IJ zSX>zW_rUv|upp_A+KeA3;#{3BBG8EKHshdH+tRqZGt`NEW{B~T0(GnsT3{~xH`v-? zep?VjXFvCC2|Vr3$ndHN++k>GpJ5yzfF0pv3Wh6MO7>bZ^M7&kbEhFTJI(omo)3O@ z^M$<*`;IS?LnRW)K9aHaAwgU|7P-bq+VY)`HJh8*JPId>zdjD!$A|14fn>%Wjk*=u z5$ONn+9OhfHB`o!h#(5>bF2%aKL>xP6$-BPE2?Fr&xmDA_QVMpzaT)9$MNWI6Le+h z+KB>T<1fzJZPeETk*Cn8)C%lb|e^C}s9SN|GNb0Lg8kkM` z(**HoJm4b=wgV6L`eW=(l(-VO#Ijz**LENc=O~y=aEc*yLnd|WRVucMb_WW6S6wPp z8^1_9b=Ae<`{NXlD;Pd4#icdH$_`N-RtZ*RLD&Otze>ZswIy^_`pJ)fUzbj?hX?PP zO8nJ#ZzGm&FTqD9?%**TOJ4>yNh)nZoH$A*15+9gQwAjoK6yf>kSiW_LMoDMx>#^J zFKS#lF`O{fdrI~!5|U8v+YEZt>~rEw&Dl)(vP_MHY|+z90-Y>o}eRb*r!wB zQCq=~YvBM%(Kmsj3E9F(_@e3HqEZsP;<=&~S)950qGlcNx@>WsRq+l};a+`l4HLo* zJ;LE$@vba*TehT9pyaz%!EJrXja3O0wQ%(ocTS}g@k1$cVkv4vDf)aV=8w`p5(^S% z-uyok#Q($x{`V({S>J&w#cL`|YRbK9$}(z7+iObJYDQkvcz>wzNv!c}s0o;_3HnhJ zLR#zlqt+j-E|9q{SgtPg^+SI+L9i}Sw=VfZU1}n%MO+Uf09_IZa?xtvnbdy>sV^$1 z*KV(O->UTvIO;CKD8E>=Iz(bm0k}CVh0!*xZmsn{{RQN zq&E$QG+pfzhV5J3GY9@`sD~$OKyYgSEi@nrH9mxelbSGusIbs!uoq}?+?X#CO8KRVxk@u8)SjN;ot|2Wz}Pf~r~U46e^!(d~>Fj?cMTjO|R(_~W1^g#dY zUH`n>z@lDL@4&#?!N5BD;3mu9c2a*9TKzsteaie$F8Xjj%W#4GaFO+JN$7A{Xn*3s zaPq-$D*8w|%SfjDNOs|HRp>}f;mF?I5a!?z*5MFXcr;vZl)!zID0!5mX_Rbnl;VE$ zzga9uUKK$`@r7loTz(2sxF3CS_|^UJYw{5r;gL7`BX8YDu*ruVg@@nk54*Sze@Gs7 zZyJ6VHuW)i#HVS*Z*c_AW;!UjdD*Qg?Eb-|_{C-@GHfVXVQ|-aFg|QBv1l-Pa4_|7 zFdbv)6M1vCesk{NOy=QC0mf|pVsi<3OPPL41?#}A;FNLld~MUbS6NJ39gJINQP+!tq(7w7(#AYLI~S`%K{U|oVxjqVi9 z?1oK;6ipuvP9GmmpJL1e6iunKA}dh=B~JiPMgR;a%Rd(Z?4m#=82iT#WM5f^YhFQL zTET>_Fs#5!z^&pLtP*&v5~ci2EC^ktqFAGWjT3;O`x+%D@Q42D6J;PIZJ{n>?FsuD z0oy99EezuW1)A4|mexg@SLwpn#9{cKC=k_P6`%-IP9u~|S$T%J@)Wx9zy}&^YItlC zQfx>xZ^BZ;5cYNArM2#+H8qM&Esx*%K!V~;J+=)cWgtwLC!xF{X}9ehzO4)ggtD!y z)3&ad8>~~npgw~gm{>3{Whc0K2gV16Lw6!5cE5=1MtSVeP;I})1cXxn;+9ryp<4_h zK%=D<2`V6w-CkbGUalfgRC!fO6iLVqfD?&SX1huY2jGHkGq3}^3|1*30Id`U?IH&q z1_xap2R$hVea#00O9w;HgAt0u4opyT$`+L}A|)qivU!CDmX>GRfQ)QoVuHRJ9OYqx z*gaR>B0$6x0Cvw^T2TNE7=RnT+5(09o^pKKe0;Zb422%UQJw&vod69_eiIAcQovJ{ z9$I)D&K{loTs&M3U%Nb7fhZrnpaPMk?Xh{RmKf|4E}iVcULx8NK&HX^coWsZHPfj&4PXQT+Sc<3kKPL&7S0p|6q&(pzOHXq|E^-Zk&z4t8C_n{3L?TRp zA?Dh($hpSHORdyP9jp_c;VnKa3Ui}#Si4xi=>m=7f@lRmN(r*21d)Eal2uxzraU7) zf?q9Ot;gJCZn<<@zV`Tejj()a@e^pRYoQiJQXpDVN{@RVRc{m}jgtnbA?Z*`a9q)vd9hCix5{-{m; z0f_)$lpcHkT$U{P{=&|x-S95J@Q`{19>z4nK`)n~>F1atS1~1%*&hLxpWuB{_moAC zQlDIxDqde1++$DxHkRR-TJLD!07c8k_$L4?BY1l%1SG7VXND&i!)J$BCpW`qvL_su zKjGlS(tDY`fu}vrMq=TisBX8yHAv+nO-Q^Drez zU!z#R$pb{HaiCRhHkcxr2