From e45190922ec934ba581241d0c871fe623b365d13 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Thu, 16 Jun 2016 08:51:37 -0700 Subject: [PATCH 01/37] 0.2.167 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b0783fb8..f999d07f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pxt-microbit", - "version": "0.2.166", + "version": "0.2.167", "description": "BBC micro:bit target for PXT", "keywords": [ "JavaScript", From 20d4e473ff49037965317cfafa0a42ab95bd8292 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Thu, 16 Jun 2016 09:50:12 -0700 Subject: [PATCH 02/37] finishing with link to projects --- docs/getting-started.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/getting-started.md b/docs/getting-started.md index 543860c4..e917f6df 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -498,5 +498,5 @@ Click **Compile** to move your program to the BBC micro:bit! ## Your turn! -How else can you make your game better? -Ever hear of [Rock Paper Scissors Spock Lizard](http://www.samkass.com/theories/RPSSL.html)? +Well done! Are your ready for more fun? [Try tons of fun projects using the micro:bit](/projects). + From 4f822e3cda6650ef33e3acde77df62c4d63609b0 Mon Sep 17 00:00:00 2001 From: Tom Ball Date: Thu, 16 Jun 2016 14:46:48 -0400 Subject: [PATCH 03/37] update --- docs/getting-started.md | 6 +++--- docs/reference.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/getting-started.md b/docs/getting-started.md index 543860c4..a55aa187 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -496,7 +496,7 @@ input.onButtonPressed(Button.B, () => { ``` Click **Compile** to move your program to the BBC micro:bit! -## Your turn! -How else can you make your game better? -Ever hear of [Rock Paper Scissors Spock Lizard](http://www.samkass.com/theories/RPSSL.html)? +# Want to do more? + +There are [10 great projects](/projects) waiting for you. diff --git a/docs/reference.md b/docs/reference.md index c031ca4b..0cbbf586 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -1,4 +1,4 @@ -# Micro:bit APIs +# Reference ```namespaces basic.showNumber(0); From c660277a2376845e6f885293f834b85cd6a258ef Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Thu, 16 Jun 2016 12:12:46 -0700 Subject: [PATCH 04/37] Bump pxt-core to 0.2.180 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f999d07f..95efeab5 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,6 @@ "typescript": "^1.8.7" }, "dependencies": { - "pxt-core": "0.2.179" + "pxt-core": "0.2.180" } } From b664df4208f06b0b4a109846cd61be7f80cec073 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Thu, 16 Jun 2016 12:12:48 -0700 Subject: [PATCH 05/37] 0.2.168 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 95efeab5..44b82d48 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pxt-microbit", - "version": "0.2.167", + "version": "0.2.168", "description": "BBC micro:bit target for PXT", "keywords": [ "JavaScript", From 910870e46fc86e0b2986d40ec42b2b70264e1fb8 Mon Sep 17 00:00:00 2001 From: Ron Hale-Evans Date: Thu, 16 Jun 2016 12:52:47 -0700 Subject: [PATCH 06/37] Edited for simpler language --- docs/reference/basic/clear-screen.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/reference/basic/clear-screen.md b/docs/reference/basic/clear-screen.md index 81c3b37d..7194348a 100644 --- a/docs/reference/basic/clear-screen.md +++ b/docs/reference/basic/clear-screen.md @@ -6,9 +6,9 @@ Turn off all the LED lights on the [LED screen](/device/screen). basic.clearScreen() ``` -### Example: vanishing heart +### Example: Vanishing heart -The following code shows a heart on the screen and then turns off all the LED lights using `clear screen`: +The following code shows a heart on the screen and then turns off all the LED lights. ```blocks basic.showLeds(` @@ -23,5 +23,5 @@ basic.clearScreen() ### See also -[set brightness](/reference/led/set-brightness), [unplot](/reference/led/unplot), [plot](/reference/led/plot), [Image](/reference/images/image), [clear](/reference/basic/clear-screen) +[set brightness](/reference/led/set-brightness), [unplot](/reference/led/unplot), [plot](/reference/led/plot), [Image](/reference/images/image) From 4d9450dd06e83d0f8b90461c798a08b6cbda965f Mon Sep 17 00:00:00 2001 From: Tom Ball Date: Thu, 16 Jun 2016 16:15:24 -0400 Subject: [PATCH 07/37] getting started --- docs/getting-started.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/getting-started.md b/docs/getting-started.md index a55aa187..005a229e 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -11,8 +11,9 @@ to make real programs that work! ### Happy face -There are three blocks in the editor (the area to the left). -Arrange them to look like this: +Use the **Basic** drawer in the editor (to the left) +to drag out and arrange three blocks (two ``show leds` and one ``forever) +to create this program: ```blocks basic.forever(() => { @@ -33,7 +34,7 @@ basic.forever(() => { }); ``` -When you run this program, you will see a smiley face, then a blank +When you run this program (click the **Play** button) you will see a smiley face, then a blank screen, then a smiley again -- it never stops! (That's because of the ``forever`` block.) @@ -69,7 +70,7 @@ Click **Compile** to move your program to the BBC micro:bit! ### Your turn! -Pile up more ``show leds`` blocks to create your animation! Create an +Pile up more ``show leds`` blocks to create an animation! Create an animation with at least 5 pictures. What does this animation show? ```blocks From 4b7e415ae786d2be97f4a4d5f757d8be5ad05f87 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Thu, 16 Jun 2016 13:18:37 -0700 Subject: [PATCH 08/37] fixing package --- package.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/package.json b/package.json index a0b1f2d5..44b82d48 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,6 @@ { "name": "pxt-microbit", -<<<<<<< HEAD - "version": "0.2.166", -======= "version": "0.2.168", ->>>>>>> origin/master "description": "BBC micro:bit target for PXT", "keywords": [ "JavaScript", From 741f94ce6c9f10a90345483187a90066443295d3 Mon Sep 17 00:00:00 2001 From: Tom Ball Date: Thu, 16 Jun 2016 16:21:59 -0400 Subject: [PATCH 09/37] typo fixed --- docs/getting-started.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting-started.md b/docs/getting-started.md index 005a229e..c7438317 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -12,7 +12,7 @@ to make real programs that work! ### Happy face Use the **Basic** drawer in the editor (to the left) -to drag out and arrange three blocks (two ``show leds` and one ``forever) +to drag out and arrange three blocks (two `show leds` and one `forever` block) to create this program: ```blocks From 2ce2fd95ba54c0d8f8c46356ca2b6a7a85fe5767 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Thu, 16 Jun 2016 13:24:52 -0700 Subject: [PATCH 10/37] Bump pxt-core to 0.2.181 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 44b82d48..6fd19b08 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,6 @@ "typescript": "^1.8.7" }, "dependencies": { - "pxt-core": "0.2.180" + "pxt-core": "0.2.181" } } From f1ee861eb49d70d96fa72b4152b22fb26557efd7 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Thu, 16 Jun 2016 13:24:54 -0700 Subject: [PATCH 11/37] 0.2.169 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6fd19b08..6b44dbec 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pxt-microbit", - "version": "0.2.168", + "version": "0.2.169", "description": "BBC micro:bit target for PXT", "keywords": [ "JavaScript", From ed5263f2482f39d97f24220e63b5dc88e890af23 Mon Sep 17 00:00:00 2001 From: Ron Hale-Evans Date: Thu, 16 Jun 2016 15:15:14 -0700 Subject: [PATCH 12/37] First draft; need to debug examples --- docs/reference/radio/send-value.md | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/docs/reference/radio/send-value.md b/docs/reference/radio/send-value.md index 63a432bc..82caf6e9 100644 --- a/docs/reference/radio/send-value.md +++ b/docs/reference/radio/send-value.md @@ -1,11 +1,11 @@ -# Send Number +# Send Value -Broadcast a (name,number) pair to other micro:bits connected via ``radio``. +Send a [string]() and [number]() together by ``radio`` to other micro:bits. ### Parameters -* name - a string to send -* num - a number to send. +* a [string](/reference/types/string) to send by radio +* a [number](/reference/types/number) to send by radio ### Simulator @@ -13,9 +13,10 @@ This function only works on the micro:bit, not in browsers. ### Example: Broadcasting acceleration -This example broadcasts the value of your micro:bit's ``acceleration`` in the `x` direction -(left and right) to other micro:bits. -This kind of program might be useful in a model car or model rocket. +This program sends your micro:bit's **acceleration** (amount it is +speeding up or slowing down) in the `x` direction (left and right) to +other micro:bits. This kind of program might be useful in a model car +or model rocket. ```blocks input.onButtonPressed(Button.A, () => { @@ -23,6 +24,16 @@ input.onButtonPressed(Button.A, () => { }) ``` +This program receives the string and number sent by the last program. +Then it shows them on the LED screen. + +```blocks +radio.onDataReceived(() => { + basic.showString(radio.receiveString()); + basic.showNumber(radio.receiveNumber()); +}); +``` + ### See also [receive number](/reference/radio/receive-number), [on data received](/reference/radio/on-data-received) From 6ae39f192b61c24061f5dce551cabf918c86a9a2 Mon Sep 17 00:00:00 2001 From: Ron Hale-Evans Date: Thu, 16 Jun 2016 15:33:35 -0700 Subject: [PATCH 13/37] Examples now set to same radio group --- docs/reference/radio/send-value.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/reference/radio/send-value.md b/docs/reference/radio/send-value.md index 82caf6e9..a9ad5a83 100644 --- a/docs/reference/radio/send-value.md +++ b/docs/reference/radio/send-value.md @@ -19,6 +19,7 @@ other micro:bits. This kind of program might be useful in a model car or model rocket. ```blocks +radio.setGroup(99) input.onButtonPressed(Button.A, () => { radio.sendValue("acc",input.acceleration(Dimension.X)) }) @@ -28,6 +29,7 @@ This program receives the string and number sent by the last program. Then it shows them on the LED screen. ```blocks +radio.setGroup(99) radio.onDataReceived(() => { basic.showString(radio.receiveString()); basic.showNumber(radio.receiveNumber()); From 081244218f1e15460614f9094770ad6d41baa40e Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Thu, 16 Jun 2016 16:09:20 -0700 Subject: [PATCH 14/37] Bump pxt-core to 0.2.182 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6b44dbec..7685251f 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,6 @@ "typescript": "^1.8.7" }, "dependencies": { - "pxt-core": "0.2.181" + "pxt-core": "0.2.182" } } From 43456e9a53f5afc9f55071548d9c1c4c7fa89470 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Thu, 16 Jun 2016 16:09:22 -0700 Subject: [PATCH 15/37] 0.2.170 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7685251f..5afaefa0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pxt-microbit", - "version": "0.2.169", + "version": "0.2.170", "description": "BBC micro:bit target for PXT", "keywords": [ "JavaScript", From d7c3433bb210e9ce2ed93de5d3df3d726e7aa393 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Thu, 16 Jun 2016 22:42:29 -0700 Subject: [PATCH 16/37] updated project page --- docs/projects.md | 85 +++++++++++++++++++++++++++--------------------- 1 file changed, 48 insertions(+), 37 deletions(-) diff --git a/docs/projects.md b/docs/projects.md index 21f5af18..d751c552 100644 --- a/docs/projects.md +++ b/docs/projects.md @@ -1,46 +1,57 @@ # Ten Projects +### ~avatar avatar + +Here are some cool projects that you can build with your micro:bit! + ![](/static/mb/projects/all10.png) -## [Flashing Heart](/projects/flashing-heart) +### ~ -![](/static/mb/projects/a1-display.png) -## [Smiley Buttons](/projects/smiley-buttons) - -![](/static/mb/projects/a2-buttons.png) - -## [Love Meter](/projects/love-meter) - -![](/static/mb/projects/a3-pins.png) - -## [Rock Paper Scissors](/projects/rock-paper-scissors) - -![](/static/mb/projects/a4-motion.png) - -## [Compass](/projects/compass) - -![](/static/mb/projects/a5-compass.png) - -## [Hack your headphones](/projects/hack-your-headphones) - -![](/static/mb/projects/a6-music.png) - -## [Banana keyboard](/projects/banana-keyboard) - -![](/static/mb/projects/a7-conductive.png) - -## [Telegraph](/projects/telegraph) - -![](/static/mb/projects/a8-network.png) - -## [Radio](/projects/radio) - -![](/static/mb/projects/a9-radio.png) - -## [Watch](/projects/the-watch) - -![](/static/mb/projects/a10-watch.png) +```codecard +[{ + "name": "Flashing Heart", + "url":"/projects/flashing-heart", + "imageUrl": "/static/mb/projects/a1-display.png" +},{ + "name": "Smiley Buttons", + "url":"/projects/smiley-buttons", + "imageUrl": "/static/mb/projects/a2-buttons.png" +},{ + "name": "Love Meter", + "url":"/projects/lover-meter", + "imageUrl":"/static/mb/projects/a3-pins.png" +},{ + "name": "Rock Paper Scissors", + "url":"/projects/rock-paper-scissors", + "imageUrl":"/static/mb/projects/a4-motion.png" +},{ + "name": "Compass", + "url":"/projects/compass", + "imageUrl":"/static/mb/projects/a5-compass.png" +},{ + "name": "Hack your headphones", + "url":"/projects/hack-your-headphones", + "imageUrl":"/static/mb/projects/a6-music.png" +},{ + "name": "Banana keyboard", + "url":"/projects/banana-keyboard", + "imageUrl":"/static/mb/projects/a7-conductive.png" +},{ + "name": "Telegraph", + "url":"/projects/telegraph", + "imageUrl":"/static/mb/projects/a8-network.png" +},{ + "name": "Radio", + "url":"/projects/radio", + "imageUrl":"/static/mb/projects/a9-radio.png" +},{ + "name": "Watch", + "url":"/projects/the-watch", + "imageUrl":"/static/mb/projects/a10-watch.png" +}] +``` From b91de5bad205c1b24af34605b83c586483c5cbec Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Thu, 16 Jun 2016 23:11:00 -0700 Subject: [PATCH 17/37] moving win10 app, bringing back uploader --- .gitignore | 8 +- {win10 => clients/win10}/app.sln | 0 .../AppPackages/latest/Add-AppDevPackage.ps1 | Bin .../Add-AppDevPackage.psd1 | Bin .../cs-CZ/Add-AppDevPackage.psd1 | Bin .../de-DE/Add-AppDevPackage.psd1 | Bin .../en-US/Add-AppDevPackage.psd1 | Bin .../es-ES/Add-AppDevPackage.psd1 | Bin .../fr-FR/Add-AppDevPackage.psd1 | Bin .../it-IT/Add-AppDevPackage.psd1 | Bin .../ja-JP/Add-AppDevPackage.psd1 | Bin .../ko-KR/Add-AppDevPackage.psd1 | Bin .../pl-PL/Add-AppDevPackage.psd1 | Bin .../pt-BR/Add-AppDevPackage.psd1 | Bin .../ru-RU/Add-AppDevPackage.psd1 | Bin .../tr-TR/Add-AppDevPackage.psd1 | Bin .../zh-CN/Add-AppDevPackage.psd1 | Bin .../zh-TW/Add-AppDevPackage.psd1 | Bin .../m.pxt.io_0.1.4.0_AnyCPU_Debug.appxbundle | Bin .../latest/m.pxt.io_0.1.4.0_AnyCPU_Debug.cer | Bin .../win10}/app/BundleArtifacts/neutral.txt | 0 .../app/images/LockScreenLogo.scale-200.png | Bin .../app/images/SplashScreen.scale-200.png | Bin .../images/Square150x150Logo.scale-200.png | Bin .../app/images/Square44x44Logo.scale-200.png | Bin ...x44Logo.targetsize-24_altform-unplated.png | Bin .../win10}/app/images/StoreLogo.png | Bin .../app/images/Wide310x150Logo.scale-200.png | Bin {win10 => clients/win10}/app/m.pxt.io.jsproj | 0 {win10 => clients/win10}/app/msapp-error.css | 0 {win10 => clients/win10}/app/msapp-error.html | 0 {win10 => clients/win10}/app/msapp-error.js | 0 .../win10}/app/package.appxmanifest | 0 .../win10}/app/pxtwinapp_TemporaryKey.pfx | Bin .../winuploader/CodeTheMicroBit.Loader.sln | 22 ++ .../winuploader/Microbit.Uploader/App.config | 7 + .../CodeTheMicrobit.Uploader.csproj | 123 ++++++++ .../Microbit.Uploader/GlobalSuppressions.cs | Bin 0 -> 2144 bytes .../Microbit.Uploader/KnownFolders.cs | 33 +++ .../LicenseDialog.Designer.cs | 93 ++++++ .../Microbit.Uploader/LicenseDialog.cs | 32 +++ .../Microbit.Uploader/LicenseDialog.resx | 120 ++++++++ .../Microbit.Uploader/MSFT_logo_png.png | Bin 0 -> 6983 bytes .../Microbit.Uploader/MainForm.Designer.cs | 172 +++++++++++ .../winuploader/Microbit.Uploader/MainForm.cs | 266 ++++++++++++++++++ .../Microbit.Uploader/MainForm.resx | 172 +++++++++++ .../winuploader/Microbit.Uploader/Program.cs | 30 ++ .../Properties/AssemblyInfo.cs | 40 +++ .../Properties/Resources.Designer.cs | 93 ++++++ .../Properties/Resources.resx | 130 +++++++++ .../Resources/MSR-LA - 2576.rtf | 1 + .../Microbit.Uploader/Settings.Designer.cs | 76 +++++ .../winuploader/Microbit.Uploader/Settings.cs | 37 +++ .../Microbit.Uploader/Settings.resx | 120 ++++++++ .../SingleInstanceAppHelper.cs | 39 +++ .../SingleInstanceAppStarter.cs | 39 +++ .../winuploader/Microbit.Uploader/favicon.ico | Bin 0 -> 1150 bytes .../Microbit.Uploader/microbit.red.png | Bin 0 -> 21078 bytes 58 files changed, 1650 insertions(+), 3 deletions(-) rename {win10 => clients/win10}/app.sln (100%) rename {win10 => clients/win10}/app/AppPackages/latest/Add-AppDevPackage.ps1 (100%) rename {win10 => clients/win10}/app/AppPackages/latest/Add-AppDevPackage.resources/Add-AppDevPackage.psd1 (100%) rename {win10 => clients/win10}/app/AppPackages/latest/Add-AppDevPackage.resources/cs-CZ/Add-AppDevPackage.psd1 (100%) rename {win10 => clients/win10}/app/AppPackages/latest/Add-AppDevPackage.resources/de-DE/Add-AppDevPackage.psd1 (100%) rename {win10 => clients/win10}/app/AppPackages/latest/Add-AppDevPackage.resources/en-US/Add-AppDevPackage.psd1 (100%) rename {win10 => clients/win10}/app/AppPackages/latest/Add-AppDevPackage.resources/es-ES/Add-AppDevPackage.psd1 (100%) rename {win10 => clients/win10}/app/AppPackages/latest/Add-AppDevPackage.resources/fr-FR/Add-AppDevPackage.psd1 (100%) rename {win10 => clients/win10}/app/AppPackages/latest/Add-AppDevPackage.resources/it-IT/Add-AppDevPackage.psd1 (100%) rename {win10 => clients/win10}/app/AppPackages/latest/Add-AppDevPackage.resources/ja-JP/Add-AppDevPackage.psd1 (100%) rename {win10 => clients/win10}/app/AppPackages/latest/Add-AppDevPackage.resources/ko-KR/Add-AppDevPackage.psd1 (100%) rename {win10 => clients/win10}/app/AppPackages/latest/Add-AppDevPackage.resources/pl-PL/Add-AppDevPackage.psd1 (100%) rename {win10 => clients/win10}/app/AppPackages/latest/Add-AppDevPackage.resources/pt-BR/Add-AppDevPackage.psd1 (100%) rename {win10 => clients/win10}/app/AppPackages/latest/Add-AppDevPackage.resources/ru-RU/Add-AppDevPackage.psd1 (100%) rename {win10 => clients/win10}/app/AppPackages/latest/Add-AppDevPackage.resources/tr-TR/Add-AppDevPackage.psd1 (100%) rename {win10 => clients/win10}/app/AppPackages/latest/Add-AppDevPackage.resources/zh-CN/Add-AppDevPackage.psd1 (100%) rename {win10 => clients/win10}/app/AppPackages/latest/Add-AppDevPackage.resources/zh-TW/Add-AppDevPackage.psd1 (100%) rename {win10 => clients/win10}/app/AppPackages/latest/m.pxt.io_0.1.4.0_AnyCPU_Debug.appxbundle (100%) rename {win10 => clients/win10}/app/AppPackages/latest/m.pxt.io_0.1.4.0_AnyCPU_Debug.cer (100%) rename {win10 => clients/win10}/app/BundleArtifacts/neutral.txt (100%) rename {win10 => clients/win10}/app/images/LockScreenLogo.scale-200.png (100%) rename {win10 => clients/win10}/app/images/SplashScreen.scale-200.png (100%) rename {win10 => clients/win10}/app/images/Square150x150Logo.scale-200.png (100%) rename {win10 => clients/win10}/app/images/Square44x44Logo.scale-200.png (100%) rename {win10 => clients/win10}/app/images/Square44x44Logo.targetsize-24_altform-unplated.png (100%) rename {win10 => clients/win10}/app/images/StoreLogo.png (100%) rename {win10 => clients/win10}/app/images/Wide310x150Logo.scale-200.png (100%) rename {win10 => clients/win10}/app/m.pxt.io.jsproj (100%) rename {win10 => clients/win10}/app/msapp-error.css (100%) rename {win10 => clients/win10}/app/msapp-error.html (100%) rename {win10 => clients/win10}/app/msapp-error.js (100%) rename {win10 => clients/win10}/app/package.appxmanifest (100%) rename {win10 => clients/win10}/app/pxtwinapp_TemporaryKey.pfx (100%) create mode 100644 clients/winuploader/CodeTheMicroBit.Loader.sln create mode 100644 clients/winuploader/Microbit.Uploader/App.config create mode 100644 clients/winuploader/Microbit.Uploader/CodeTheMicrobit.Uploader.csproj create mode 100644 clients/winuploader/Microbit.Uploader/GlobalSuppressions.cs create mode 100644 clients/winuploader/Microbit.Uploader/KnownFolders.cs create mode 100644 clients/winuploader/Microbit.Uploader/LicenseDialog.Designer.cs create mode 100644 clients/winuploader/Microbit.Uploader/LicenseDialog.cs create mode 100644 clients/winuploader/Microbit.Uploader/LicenseDialog.resx create mode 100644 clients/winuploader/Microbit.Uploader/MSFT_logo_png.png create mode 100644 clients/winuploader/Microbit.Uploader/MainForm.Designer.cs create mode 100644 clients/winuploader/Microbit.Uploader/MainForm.cs create mode 100644 clients/winuploader/Microbit.Uploader/MainForm.resx create mode 100644 clients/winuploader/Microbit.Uploader/Program.cs create mode 100644 clients/winuploader/Microbit.Uploader/Properties/AssemblyInfo.cs create mode 100644 clients/winuploader/Microbit.Uploader/Properties/Resources.Designer.cs create mode 100644 clients/winuploader/Microbit.Uploader/Properties/Resources.resx create mode 100644 clients/winuploader/Microbit.Uploader/Resources/MSR-LA - 2576.rtf create mode 100644 clients/winuploader/Microbit.Uploader/Settings.Designer.cs create mode 100644 clients/winuploader/Microbit.Uploader/Settings.cs create mode 100644 clients/winuploader/Microbit.Uploader/Settings.resx create mode 100644 clients/winuploader/Microbit.Uploader/SingleInstanceAppHelper.cs create mode 100644 clients/winuploader/Microbit.Uploader/SingleInstanceAppStarter.cs create mode 100644 clients/winuploader/Microbit.Uploader/favicon.ico create mode 100644 clients/winuploader/Microbit.Uploader/microbit.red.png diff --git a/.gitignore b/.gitignore index 46028121..a380d480 100644 --- a/.gitignore +++ b/.gitignore @@ -6,9 +6,11 @@ typings tmp temp projects/** -win10/app/bin -win10/app/bld -win10/*.opendb +clients/win10/app/bin +clients/win10/app/bld +clients/win10/*.opendb +clients/**/bin/** +clients/**/obj/** *.user *.sw? diff --git a/win10/app.sln b/clients/win10/app.sln similarity index 100% rename from win10/app.sln rename to clients/win10/app.sln diff --git a/win10/app/AppPackages/latest/Add-AppDevPackage.ps1 b/clients/win10/app/AppPackages/latest/Add-AppDevPackage.ps1 similarity index 100% rename from win10/app/AppPackages/latest/Add-AppDevPackage.ps1 rename to clients/win10/app/AppPackages/latest/Add-AppDevPackage.ps1 diff --git a/win10/app/AppPackages/latest/Add-AppDevPackage.resources/Add-AppDevPackage.psd1 b/clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/Add-AppDevPackage.psd1 similarity index 100% rename from win10/app/AppPackages/latest/Add-AppDevPackage.resources/Add-AppDevPackage.psd1 rename to clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/Add-AppDevPackage.psd1 diff --git a/win10/app/AppPackages/latest/Add-AppDevPackage.resources/cs-CZ/Add-AppDevPackage.psd1 b/clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/cs-CZ/Add-AppDevPackage.psd1 similarity index 100% rename from win10/app/AppPackages/latest/Add-AppDevPackage.resources/cs-CZ/Add-AppDevPackage.psd1 rename to clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/cs-CZ/Add-AppDevPackage.psd1 diff --git a/win10/app/AppPackages/latest/Add-AppDevPackage.resources/de-DE/Add-AppDevPackage.psd1 b/clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/de-DE/Add-AppDevPackage.psd1 similarity index 100% rename from win10/app/AppPackages/latest/Add-AppDevPackage.resources/de-DE/Add-AppDevPackage.psd1 rename to clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/de-DE/Add-AppDevPackage.psd1 diff --git a/win10/app/AppPackages/latest/Add-AppDevPackage.resources/en-US/Add-AppDevPackage.psd1 b/clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/en-US/Add-AppDevPackage.psd1 similarity index 100% rename from win10/app/AppPackages/latest/Add-AppDevPackage.resources/en-US/Add-AppDevPackage.psd1 rename to clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/en-US/Add-AppDevPackage.psd1 diff --git a/win10/app/AppPackages/latest/Add-AppDevPackage.resources/es-ES/Add-AppDevPackage.psd1 b/clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/es-ES/Add-AppDevPackage.psd1 similarity index 100% rename from win10/app/AppPackages/latest/Add-AppDevPackage.resources/es-ES/Add-AppDevPackage.psd1 rename to clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/es-ES/Add-AppDevPackage.psd1 diff --git a/win10/app/AppPackages/latest/Add-AppDevPackage.resources/fr-FR/Add-AppDevPackage.psd1 b/clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/fr-FR/Add-AppDevPackage.psd1 similarity index 100% rename from win10/app/AppPackages/latest/Add-AppDevPackage.resources/fr-FR/Add-AppDevPackage.psd1 rename to clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/fr-FR/Add-AppDevPackage.psd1 diff --git a/win10/app/AppPackages/latest/Add-AppDevPackage.resources/it-IT/Add-AppDevPackage.psd1 b/clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/it-IT/Add-AppDevPackage.psd1 similarity index 100% rename from win10/app/AppPackages/latest/Add-AppDevPackage.resources/it-IT/Add-AppDevPackage.psd1 rename to clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/it-IT/Add-AppDevPackage.psd1 diff --git a/win10/app/AppPackages/latest/Add-AppDevPackage.resources/ja-JP/Add-AppDevPackage.psd1 b/clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/ja-JP/Add-AppDevPackage.psd1 similarity index 100% rename from win10/app/AppPackages/latest/Add-AppDevPackage.resources/ja-JP/Add-AppDevPackage.psd1 rename to clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/ja-JP/Add-AppDevPackage.psd1 diff --git a/win10/app/AppPackages/latest/Add-AppDevPackage.resources/ko-KR/Add-AppDevPackage.psd1 b/clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/ko-KR/Add-AppDevPackage.psd1 similarity index 100% rename from win10/app/AppPackages/latest/Add-AppDevPackage.resources/ko-KR/Add-AppDevPackage.psd1 rename to clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/ko-KR/Add-AppDevPackage.psd1 diff --git a/win10/app/AppPackages/latest/Add-AppDevPackage.resources/pl-PL/Add-AppDevPackage.psd1 b/clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/pl-PL/Add-AppDevPackage.psd1 similarity index 100% rename from win10/app/AppPackages/latest/Add-AppDevPackage.resources/pl-PL/Add-AppDevPackage.psd1 rename to clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/pl-PL/Add-AppDevPackage.psd1 diff --git a/win10/app/AppPackages/latest/Add-AppDevPackage.resources/pt-BR/Add-AppDevPackage.psd1 b/clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/pt-BR/Add-AppDevPackage.psd1 similarity index 100% rename from win10/app/AppPackages/latest/Add-AppDevPackage.resources/pt-BR/Add-AppDevPackage.psd1 rename to clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/pt-BR/Add-AppDevPackage.psd1 diff --git a/win10/app/AppPackages/latest/Add-AppDevPackage.resources/ru-RU/Add-AppDevPackage.psd1 b/clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/ru-RU/Add-AppDevPackage.psd1 similarity index 100% rename from win10/app/AppPackages/latest/Add-AppDevPackage.resources/ru-RU/Add-AppDevPackage.psd1 rename to clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/ru-RU/Add-AppDevPackage.psd1 diff --git a/win10/app/AppPackages/latest/Add-AppDevPackage.resources/tr-TR/Add-AppDevPackage.psd1 b/clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/tr-TR/Add-AppDevPackage.psd1 similarity index 100% rename from win10/app/AppPackages/latest/Add-AppDevPackage.resources/tr-TR/Add-AppDevPackage.psd1 rename to clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/tr-TR/Add-AppDevPackage.psd1 diff --git a/win10/app/AppPackages/latest/Add-AppDevPackage.resources/zh-CN/Add-AppDevPackage.psd1 b/clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/zh-CN/Add-AppDevPackage.psd1 similarity index 100% rename from win10/app/AppPackages/latest/Add-AppDevPackage.resources/zh-CN/Add-AppDevPackage.psd1 rename to clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/zh-CN/Add-AppDevPackage.psd1 diff --git a/win10/app/AppPackages/latest/Add-AppDevPackage.resources/zh-TW/Add-AppDevPackage.psd1 b/clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/zh-TW/Add-AppDevPackage.psd1 similarity index 100% rename from win10/app/AppPackages/latest/Add-AppDevPackage.resources/zh-TW/Add-AppDevPackage.psd1 rename to clients/win10/app/AppPackages/latest/Add-AppDevPackage.resources/zh-TW/Add-AppDevPackage.psd1 diff --git a/win10/app/AppPackages/latest/m.pxt.io_0.1.4.0_AnyCPU_Debug.appxbundle b/clients/win10/app/AppPackages/latest/m.pxt.io_0.1.4.0_AnyCPU_Debug.appxbundle similarity index 100% rename from win10/app/AppPackages/latest/m.pxt.io_0.1.4.0_AnyCPU_Debug.appxbundle rename to clients/win10/app/AppPackages/latest/m.pxt.io_0.1.4.0_AnyCPU_Debug.appxbundle diff --git a/win10/app/AppPackages/latest/m.pxt.io_0.1.4.0_AnyCPU_Debug.cer b/clients/win10/app/AppPackages/latest/m.pxt.io_0.1.4.0_AnyCPU_Debug.cer similarity index 100% rename from win10/app/AppPackages/latest/m.pxt.io_0.1.4.0_AnyCPU_Debug.cer rename to clients/win10/app/AppPackages/latest/m.pxt.io_0.1.4.0_AnyCPU_Debug.cer diff --git a/win10/app/BundleArtifacts/neutral.txt b/clients/win10/app/BundleArtifacts/neutral.txt similarity index 100% rename from win10/app/BundleArtifacts/neutral.txt rename to clients/win10/app/BundleArtifacts/neutral.txt diff --git a/win10/app/images/LockScreenLogo.scale-200.png b/clients/win10/app/images/LockScreenLogo.scale-200.png similarity index 100% rename from win10/app/images/LockScreenLogo.scale-200.png rename to clients/win10/app/images/LockScreenLogo.scale-200.png diff --git a/win10/app/images/SplashScreen.scale-200.png b/clients/win10/app/images/SplashScreen.scale-200.png similarity index 100% rename from win10/app/images/SplashScreen.scale-200.png rename to clients/win10/app/images/SplashScreen.scale-200.png diff --git a/win10/app/images/Square150x150Logo.scale-200.png b/clients/win10/app/images/Square150x150Logo.scale-200.png similarity index 100% rename from win10/app/images/Square150x150Logo.scale-200.png rename to clients/win10/app/images/Square150x150Logo.scale-200.png diff --git a/win10/app/images/Square44x44Logo.scale-200.png b/clients/win10/app/images/Square44x44Logo.scale-200.png similarity index 100% rename from win10/app/images/Square44x44Logo.scale-200.png rename to clients/win10/app/images/Square44x44Logo.scale-200.png diff --git a/win10/app/images/Square44x44Logo.targetsize-24_altform-unplated.png b/clients/win10/app/images/Square44x44Logo.targetsize-24_altform-unplated.png similarity index 100% rename from win10/app/images/Square44x44Logo.targetsize-24_altform-unplated.png rename to clients/win10/app/images/Square44x44Logo.targetsize-24_altform-unplated.png diff --git a/win10/app/images/StoreLogo.png b/clients/win10/app/images/StoreLogo.png similarity index 100% rename from win10/app/images/StoreLogo.png rename to clients/win10/app/images/StoreLogo.png diff --git a/win10/app/images/Wide310x150Logo.scale-200.png b/clients/win10/app/images/Wide310x150Logo.scale-200.png similarity index 100% rename from win10/app/images/Wide310x150Logo.scale-200.png rename to clients/win10/app/images/Wide310x150Logo.scale-200.png diff --git a/win10/app/m.pxt.io.jsproj b/clients/win10/app/m.pxt.io.jsproj similarity index 100% rename from win10/app/m.pxt.io.jsproj rename to clients/win10/app/m.pxt.io.jsproj diff --git a/win10/app/msapp-error.css b/clients/win10/app/msapp-error.css similarity index 100% rename from win10/app/msapp-error.css rename to clients/win10/app/msapp-error.css diff --git a/win10/app/msapp-error.html b/clients/win10/app/msapp-error.html similarity index 100% rename from win10/app/msapp-error.html rename to clients/win10/app/msapp-error.html diff --git a/win10/app/msapp-error.js b/clients/win10/app/msapp-error.js similarity index 100% rename from win10/app/msapp-error.js rename to clients/win10/app/msapp-error.js diff --git a/win10/app/package.appxmanifest b/clients/win10/app/package.appxmanifest similarity index 100% rename from win10/app/package.appxmanifest rename to clients/win10/app/package.appxmanifest diff --git a/win10/app/pxtwinapp_TemporaryKey.pfx b/clients/win10/app/pxtwinapp_TemporaryKey.pfx similarity index 100% rename from win10/app/pxtwinapp_TemporaryKey.pfx rename to clients/win10/app/pxtwinapp_TemporaryKey.pfx diff --git a/clients/winuploader/CodeTheMicroBit.Loader.sln b/clients/winuploader/CodeTheMicroBit.Loader.sln new file mode 100644 index 00000000..9c82e656 --- /dev/null +++ b/clients/winuploader/CodeTheMicroBit.Loader.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25123.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeTheMicrobit.Uploader", "Microbit.Uploader\CodeTheMicrobit.Uploader.csproj", "{7DC6CA45-FD75-44BC-805E-708C812CD4BF}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7DC6CA45-FD75-44BC-805E-708C812CD4BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7DC6CA45-FD75-44BC-805E-708C812CD4BF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7DC6CA45-FD75-44BC-805E-708C812CD4BF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7DC6CA45-FD75-44BC-805E-708C812CD4BF}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/clients/winuploader/Microbit.Uploader/App.config b/clients/winuploader/Microbit.Uploader/App.config new file mode 100644 index 00000000..99844edd --- /dev/null +++ b/clients/winuploader/Microbit.Uploader/App.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/clients/winuploader/Microbit.Uploader/CodeTheMicrobit.Uploader.csproj b/clients/winuploader/Microbit.Uploader/CodeTheMicrobit.Uploader.csproj new file mode 100644 index 00000000..077710b6 --- /dev/null +++ b/clients/winuploader/Microbit.Uploader/CodeTheMicrobit.Uploader.csproj @@ -0,0 +1,123 @@ + + + + + Debug + AnyCPU + {7DC6CA45-FD75-44BC-805E-708C812CD4BF} + WinExe + Properties + Microsoft.MicroBit + Microbit.Uploader + v2.0 + 512 + true + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + true + AllRules.ruleset + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + false + + + false + + + + + + + + + + + + + + + Form + + + Settings.cs + + + + + Form + + + LicenseDialog.cs + + + Form + + + MainForm.cs + + + + + + + LicenseDialog.cs + + + MainForm.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + Settings.cs + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/clients/winuploader/Microbit.Uploader/GlobalSuppressions.cs b/clients/winuploader/Microbit.Uploader/GlobalSuppressions.cs new file mode 100644 index 0000000000000000000000000000000000000000..8122d89bcdd68f5aef2c3dc8641a3a9fe0517eb6 GIT binary patch literal 2144 zcmdT`(TdYR6g|&^|1ji9!OglT2!ap0D}oP-n1YD-kfyOln`B8+VSipd=iZKqP3i7y zDKyQ@opaAUbLLL}{QiO*JwGLCEV02YULqjlv&UegDPE&u)EW(18?8|Anc|x7E5=-M zCbzXcBQ=v@iyMAA&I$fc*Cd!Psk%-j!RtN1)kzL znZ31q4Wlcrsfg7PJ;Qh6Y{_7SD~@H%T=H$h@0GFaj7hLTV(q*6yuCMm4rcTnWVeOyztK)O7=CwKGn35UMThlx$ z==&~g&+LjXh}4+_h67rQsrz8m|H|}F@qz0+LuY%hy3$#F8r#p@pXBa6yJPp}yL3O# zpUO_1~ar4ZI^D5L2Tm0axI#D{w;Qo#?XV$rX zF>XVYevfBGjK&z0#1*=_U@$gX6F94iRq1%zbh<~TYpzsm!!h->Sf{e7cNUyie=TM> zIoGJR{@6ka^_PGp&!;_ zuC%zzFTz*HTT`6@XUwDBDe#lyuAKAH9p!hE941xb?8xSr$Gq$41{#Q@tm>@px5zG; zIWFwoi{2%p!c(pzi-dQe`0cybT@mnxSyg#5Q8eH)*=)ILWs1rl@@>PosZ*oUhgEjZ VyR)LBqt1T58s^ad0Nt_f?!PHAdFcQE literal 0 HcmV?d00001 diff --git a/clients/winuploader/Microbit.Uploader/KnownFolders.cs b/clients/winuploader/Microbit.Uploader/KnownFolders.cs new file mode 100644 index 00000000..0c9f1584 --- /dev/null +++ b/clients/winuploader/Microbit.Uploader/KnownFolders.cs @@ -0,0 +1,33 @@ +using System; +using System.Diagnostics.CodeAnalysis; +using System.Management; +using System.Runtime.InteropServices; +using System.Security; + +namespace Microsoft.MicroBit +{ + /// + /// Class containing methods to retrieve specific file system paths. + /// + internal static class KnownFoldersNativeMethods + { + [SecurityCritical] + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + public static string GetDownloadPath() + { + IntPtr outPath; + int result = SHGetKnownFolderPath(new Guid("{374DE290-123F-4565-9164-39C4925E467B}"), 0x00004000, new IntPtr(0), out outPath); + if (result >= 0) + return Marshal.PtrToStringUni(outPath); + else return null; + } + + [SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule")] + [DllImport("Shell32.dll")] + [SecurityCritical] + private static extern int SHGetKnownFolderPath( + [MarshalAs(UnmanagedType.LPStruct)]Guid rfid, uint dwFlags, IntPtr hToken, + out IntPtr ppszPath); + } + +} \ No newline at end of file diff --git a/clients/winuploader/Microbit.Uploader/LicenseDialog.Designer.cs b/clients/winuploader/Microbit.Uploader/LicenseDialog.Designer.cs new file mode 100644 index 00000000..bf8ed131 --- /dev/null +++ b/clients/winuploader/Microbit.Uploader/LicenseDialog.Designer.cs @@ -0,0 +1,93 @@ +namespace Microsoft.MicroBit +{ + partial class LicenseDialog + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.textBox = new System.Windows.Forms.RichTextBox(); + this.acceptButton = new System.Windows.Forms.Button(); + this.exitButton = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // textBox + // + this.textBox.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.textBox.Location = new System.Drawing.Point(13, 13); + this.textBox.Name = "textBox"; + this.textBox.ReadOnly = true; + this.textBox.Size = new System.Drawing.Size(465, 438); + this.textBox.TabIndex = 0; + this.textBox.Text = ""; + // + // acceptButton + // + this.acceptButton.Location = new System.Drawing.Point(322, 457); + this.acceptButton.Name = "acceptButton"; + this.acceptButton.Size = new System.Drawing.Size(75, 23); + this.acceptButton.TabIndex = 1; + this.acceptButton.Text = "Accept"; + this.acceptButton.UseVisualStyleBackColor = true; + this.acceptButton.Click += new System.EventHandler(this.acceptButton_Click); + // + // exitButton + // + this.exitButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.exitButton.Location = new System.Drawing.Point(403, 457); + this.exitButton.Name = "exitButton"; + this.exitButton.Size = new System.Drawing.Size(75, 23); + this.exitButton.TabIndex = 2; + this.exitButton.Text = "Exit"; + this.exitButton.UseVisualStyleBackColor = true; + this.exitButton.Click += new System.EventHandler(this.exitButton_Click); + // + // LicenseDialog + // + this.AcceptButton = this.acceptButton; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.exitButton; + this.ClientSize = new System.Drawing.Size(490, 492); + this.ControlBox = false; + this.Controls.Add(this.exitButton); + this.Controls.Add(this.acceptButton); + this.Controls.Add(this.textBox); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "LicenseDialog"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "code the micro:bit uploader Terms Of Use"; + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.RichTextBox textBox; + private System.Windows.Forms.Button acceptButton; + private System.Windows.Forms.Button exitButton; + } +} \ No newline at end of file diff --git a/clients/winuploader/Microbit.Uploader/LicenseDialog.cs b/clients/winuploader/Microbit.Uploader/LicenseDialog.cs new file mode 100644 index 00000000..22c7a087 --- /dev/null +++ b/clients/winuploader/Microbit.Uploader/LicenseDialog.cs @@ -0,0 +1,32 @@ +using Microsoft.MicroBit.Properties; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Text; +using System.Windows.Forms; + +namespace Microsoft.MicroBit +{ + public partial class LicenseDialog : Form + { + public LicenseDialog() + { + InitializeComponent(); + this.textBox.Rtf = Resources.MSR_LA___2576; + } + + private void acceptButton_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.Yes; + this.Close(); + } + + private void exitButton_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.No; + this.Close(); + } + } +} diff --git a/clients/winuploader/Microbit.Uploader/LicenseDialog.resx b/clients/winuploader/Microbit.Uploader/LicenseDialog.resx new file mode 100644 index 00000000..7080a7d1 --- /dev/null +++ b/clients/winuploader/Microbit.Uploader/LicenseDialog.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/clients/winuploader/Microbit.Uploader/MSFT_logo_png.png b/clients/winuploader/Microbit.Uploader/MSFT_logo_png.png new file mode 100644 index 0000000000000000000000000000000000000000..60c210e129e60371e9331c75ada23d501615b630 GIT binary patch literal 6983 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 moKO5Od;apDa0LSN_5WOKk + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); + this.statusLabel = new System.Windows.Forms.Label(); + this.backgroundPictureBox = new System.Windows.Forms.PictureBox(); + this.trayIcon = new System.Windows.Forms.NotifyIcon(this.components); + this.versionLabel = new System.Windows.Forms.LinkLabel(); + this.label1 = new System.Windows.Forms.Label(); + this.SettingsLabel = new System.Windows.Forms.LinkLabel(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.linkLabel1 = new System.Windows.Forms.LinkLabel(); + ((System.ComponentModel.ISupportInitialize)(this.backgroundPictureBox)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // statusLabel + // + this.statusLabel.BackColor = System.Drawing.SystemColors.Window; + this.statusLabel.Font = new System.Drawing.Font("Consolas", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.statusLabel.Location = new System.Drawing.Point(11, 30); + this.statusLabel.Name = "statusLabel"; + this.statusLabel.Size = new System.Drawing.Size(364, 23); + this.statusLabel.TabIndex = 1; + this.statusLabel.Text = "loading..."; + // + // backgroundPictureBox + // + this.backgroundPictureBox.BackColor = System.Drawing.Color.White; + this.backgroundPictureBox.Cursor = System.Windows.Forms.Cursors.Hand; + this.backgroundPictureBox.Image = global::Microsoft.MicroBit.Properties.Resources.MSFT_logo_png; + this.backgroundPictureBox.InitialImage = null; + this.backgroundPictureBox.Location = new System.Drawing.Point(226, 91); + this.backgroundPictureBox.Name = "backgroundPictureBox"; + this.backgroundPictureBox.Size = new System.Drawing.Size(149, 52); + this.backgroundPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.backgroundPictureBox.TabIndex = 0; + this.backgroundPictureBox.TabStop = false; + this.backgroundPictureBox.Click += new System.EventHandler(this.backgroundPictureBox_Click); + // + // trayIcon + // + this.trayIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("trayIcon.Icon"))); + this.trayIcon.Visible = true; + this.trayIcon.Click += new System.EventHandler(this.trayIcon_Click); + // + // versionLabel + // + this.versionLabel.AutoSize = true; + this.versionLabel.Location = new System.Drawing.Point(12, 121); + this.versionLabel.Name = "versionLabel"; + this.versionLabel.Size = new System.Drawing.Size(28, 13); + this.versionLabel.TabIndex = 2; + this.versionLabel.TabStop = true; + this.versionLabel.Text = "v0.9"; + this.versionLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.versionLabel_LinkClicked); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label1.Location = new System.Drawing.Point(12, 103); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(169, 15); + this.label1.TabIndex = 3; + this.label1.Text = "Automatic upload of .hex files."; + // + // SettingsLabel + // + this.SettingsLabel.AutoSize = true; + this.SettingsLabel.Location = new System.Drawing.Point(151, 121); + this.SettingsLabel.Name = "SettingsLabel"; + this.SettingsLabel.Size = new System.Drawing.Size(43, 13); + this.SettingsLabel.TabIndex = 4; + this.SettingsLabel.TabStop = true; + this.SettingsLabel.Text = "settings"; + this.SettingsLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.SettingsLabel_LinkClicked); + // + // pictureBox1 + // + this.pictureBox1.BackColor = System.Drawing.Color.White; + this.pictureBox1.Cursor = System.Windows.Forms.Cursors.Hand; + this.pictureBox1.Image = global::Microsoft.MicroBit.Properties.Resources.microbit_red; + this.pictureBox1.InitialImage = null; + this.pictureBox1.Location = new System.Drawing.Point(226, 6); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(149, 79); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox1.TabIndex = 5; + this.pictureBox1.TabStop = false; + // + // linkLabel1 + // + this.linkLabel1.AutoSize = true; + this.linkLabel1.Location = new System.Drawing.Point(62, 121); + this.linkLabel1.Name = "linkLabel1"; + this.linkLabel1.Size = new System.Drawing.Size(60, 13); + this.linkLabel1.TabIndex = 6; + this.linkLabel1.TabStop = true; + this.linkLabel1.Text = "open editor"; + this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); + // + // MainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.ClientSize = new System.Drawing.Size(388, 143); + this.Controls.Add(this.linkLabel1); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.SettingsLabel); + this.Controls.Add(this.label1); + this.Controls.Add(this.versionLabel); + this.Controls.Add(this.statusLabel); + this.Controls.Add(this.backgroundPictureBox); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.Name = "MainForm"; + this.ShowInTaskbar = false; + this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "code the micro:bit uploader"; + this.Load += new System.EventHandler(this.MainForm_Load); + ((System.ComponentModel.ISupportInitialize)(this.backgroundPictureBox)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.PictureBox backgroundPictureBox; + private System.Windows.Forms.Label statusLabel; + private System.Windows.Forms.NotifyIcon trayIcon; + private System.Windows.Forms.LinkLabel versionLabel; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.LinkLabel SettingsLabel; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.LinkLabel linkLabel1; + } +} + diff --git a/clients/winuploader/Microbit.Uploader/MainForm.cs b/clients/winuploader/Microbit.Uploader/MainForm.cs new file mode 100644 index 00000000..2800bda3 --- /dev/null +++ b/clients/winuploader/Microbit.Uploader/MainForm.cs @@ -0,0 +1,266 @@ +using Microsoft.Win32; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Security; +using System.Threading; +using System.Windows.Forms; + +namespace Microsoft.MicroBit +{ + internal partial class MainForm : Form + { + FileSystemWatcher watcher; + private string customcopypath = ""; + + public MainForm() + { + InitializeComponent(); + var v = typeof(MainForm).Assembly.GetName().Version; + this.versionLabel.Text = "v" + v.Major + "." + v.Minor; + } + + private void MainForm_Load(object sender, EventArgs e) + { + this.initializeFileWatch(); + customcopypath = (string)Application.UserAppDataRegistry.GetValue("CustomDirectory", ""); + this.openEditor(); + } + + private void openEditor() + { + // lanch editor + try { Process.Start("https://codethemicrobit.com"); } catch (Exception) { } + } + + private void initializeFileWatch() + { + if (!checkTOU()) return; + + var downloads = KnownFoldersNativeMethods.GetDownloadPath(); + if (downloads == null) + { + this.updateStatus("oops, can't find the `Downloads` folder"); + return; + } + + this.watcher = new FileSystemWatcher(downloads); + this.watcher.Renamed += (sender, e) => this.handleFileEvent(e); + this.watcher.Created += (sender, e) => this.handleFileEvent(e); + this.watcher.EnableRaisingEvents = true; + + this.waitingForHexFileStatus(); + } + + private void waitingForHexFileStatus() + { + this.updateStatus("waiting for .hex file..."); + this.trayIcon.ShowBalloonTip(3000, "ready...", "waiting for .hex file...", ToolTipIcon.None); + } + + static bool checkTOU() + { + var v = (int)Application.UserAppDataRegistry.GetValue("TermOfUse", 0); + if (v != 1) + { + using (var f = new LicenseDialog()) + { + var r = f.ShowDialog(); + if (r != DialogResult.Yes) + { + Application.Exit(); + return false; + } + } + Application.UserAppDataRegistry.SetValue("TermOfUse", 1, RegistryValueKind.DWord); + } + + return true; + } + + delegate void Callback(); + + private void updateStatus(string value) + { + Callback a = (Callback)(() => + { + this.statusLabel.Text = value; + this.trayIcon.Text = value; + }); + this.Invoke(a); + } + + void handleFileEvent(FileSystemEventArgs e) + { + this.handleFile(e.FullPath); + } + + volatile int copying; + void handleFile(string fullPath) + { + try + { + // In case this is data-url download, at least Chrome will not rename file, but instead write to it + // directly. This mean we may catch it in the act. Let's leave it some time to finish writing. + Thread.Sleep(500); + + var info = new System.IO.FileInfo(fullPath); + Trace.WriteLine("download: " + info.FullName); + + if (info.Extension != ".hex") return; + + var infoName = info.Name; + Trace.WriteLine("download name: " + info.Name); + if (!infoName.StartsWith("microbit-", StringComparison.OrdinalIgnoreCase)) return; + if (info.Name.EndsWith(".uploaded.hex", StringComparison.OrdinalIgnoreCase)) return; + if (info.Length > 1000000) return; // make sure we don't try to copy large files + + + // already copying? + if (Interlocked.Exchange(ref this.copying, 1) == 1) + return; + + try + { + + var driveletters = getMicrobitDrives(); + List drives = new List(); + foreach (var d in driveletters) + { + drives.Add(d.RootDirectory.FullName); + } + if (!String.IsNullOrEmpty(customcopypath) && Directory.Exists(customcopypath)) + { + drives.Add(customcopypath); + } + if (drives.Count == 0) + { + this.updateStatus("no board found"); + this.trayIcon.ShowBalloonTip(3000, "cancelled uploading...", "no board found", ToolTipIcon.None); + return; + } + + this.updateStatus("uploading .hex file"); + this.trayIcon.ShowBalloonTip(3000, "uploading...", "uploading .hex file", ToolTipIcon.None); + + // copy to all boards + copyFirmware(info.FullName, drives); + + // move away hex file + var temp = System.IO.Path.ChangeExtension(info.FullName, ".uploaded.hex"); + try + { + File.Copy(info.FullName, temp, true); + File.Delete(info.FullName); + } + catch (IOException) { } + catch (NotSupportedException) { } + catch (UnauthorizedAccessException) { } + catch (ArgumentException) { } + + // update ui + this.updateStatus("uploading done"); + this.waitingForHexFileStatus(); + } + finally + { + Interlocked.Exchange(ref this.copying, 0); + } + } + catch (IOException) { } + catch (NotSupportedException) { } + catch (UnauthorizedAccessException) { } + catch (ArgumentException) { } + } + + static void copyFirmware(string file, List drives) + { + var waitHandles = new List(); + foreach (var drive in drives) + { + var ev = new AutoResetEvent(false); + waitHandles.Add(ev); + ThreadPool.QueueUserWorkItem((state) => + { + try + { + var trg = System.IO.Path.Combine(drive, "firmware.hex"); + File.Copy(file, trg, true); + } + catch (IOException) { } + catch (NotSupportedException) { } + catch (UnauthorizedAccessException) { } + catch (ArgumentException) { } + ev.Set(); + }, ev); + } + + //waits for all the threads (waitHandles) to call the .Set() method + //and inform that the execution has finished. + WaitHandle.WaitAll(waitHandles.ToArray()); + } + + static DriveInfo[] getMicrobitDrives() + { + var drives = System.IO.DriveInfo.GetDrives(); + var r = new System.Collections.Generic.List(); + foreach (var di in drives) + { + var label = getVolumeLabel(di); + if (label.StartsWith("MICROBIT", StringComparison.Ordinal)) + r.Add(di); + } + return r.ToArray(); + } + + static string getVolumeLabel(DriveInfo di) + { + try { return di.VolumeLabel; } + catch (IOException) { } + catch (SecurityException) { } + catch (UnauthorizedAccessException) { } + return ""; + } + + private void trayIcon_Click(object sender, EventArgs e) + { + this.WindowState = FormWindowState.Minimized; + this.WindowState = FormWindowState.Normal; + this.Show(); + this.Activate(); + } + + private void versionLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + try + { + Process.Start("https://codethemicrobit.com/uploader"); + } + catch (IOException) { } + } + + private void backgroundPictureBox_Click(object sender, EventArgs e) + { + try + { + Process.Start("https://codethemicrobit.com"); + } + catch (IOException) { } + } + + private void SettingsLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + var settings = new Settings(customcopypath); + settings.ShowDialog(); + customcopypath = settings.CustomCopyPath; + Application.UserAppDataRegistry.SetValue("CustomDirectory", customcopypath, RegistryValueKind.String); + } + + private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + this.openEditor(); + } + } +} diff --git a/clients/winuploader/Microbit.Uploader/MainForm.resx b/clients/winuploader/Microbit.Uploader/MainForm.resx new file mode 100644 index 00000000..6a64aeb4 --- /dev/null +++ b/clients/winuploader/Microbit.Uploader/MainForm.resx @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + AAABAAEAEBAAAAAAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAMIOAADCDgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAN6bIZTOkxoUtj62FL5W1hTWpzYUvlbWFLY+thTKgwoUxnb+FLY6shS6TsoUzpMaFL5a1hS2P + rYUxnb6FNZ2+ZTCTsvkriaf/KYKe/yuIpf8uk7L/K4il/ymBnP8tjqz/K4qn/yiBnP8qhaL/KoWh/yqG + o/8ogJv/JXeQ/yqDnvkRMjz/Di02/wofJv8MJS3/Di02/wskLP8HGB3/Di43/w0qM/8HFxz/CyMr/w4s + Nv8MJi7/CiAm/w4sNv8RMTv/BQsN/wUQE/8BAgL/AQQF/wYRFP8EBgf/AgIA/xAYJv8TGy3/AgIA/wMF + Bv8HEhX/AQUG/wECAv8FEBT/BQsN/wYFD/8LByT/AQAC/wAAAP8CAgL/AwMD/woKEv8LCxT/DAwY/woK + Ev8DAwT/AgIC/wAAAP8AAAD/AAAA/wICAv8JCA//IBs//wwMEP8AAAD/AgIC/wQEBv8bGzf/BgYK/wQE + Bf8bGzj/BgYJ/wMDA/8AAAD/CgoK/xEREf8HBwf/Li4u/1FRUf9ERET/AQEA/wwMGf8UFCj/BAQE/wMD + Av8DAwL/BAQE/xAQIP8RESL/AAAA/z8/P/9SUlH/NTU1/y4uLv9QUFD/QUFB/wEBAP8LCxf/EhIk/wIC + Af8JCRH/CwsV/wICAf8PDx3/Dw8f/wAAAP89PT3/UVFQ/zQ0M/8FBQX/DAwM/wgICP8AAAD/CwsW/xIS + JP8FBQb/Dg4b/xERIv8FBQb/Dw8d/w8PHv8AAAD/CAgK/xwXO/8KCRT/BAMI/wAAAP8AAAD/AAAA/wIC + Av8EBAX/HR06/wgIEP8GBgv/HR07/wYGCf8DAwL/AAAA/wAAAP8JBh3/BwUS/y0fhf8FBBD/AAAA/wAA + AP8AAAD/AAAA/xIOMv8fFVz/HhVa/xQPOP8AAQD/AAAA/wAAAP8AAAD/AAAA/wICAv9UO/v/MiKX/wUD + D/8FAw7/AwIK/wAAAP8RCzP/IBZi/yAWYP8TDTr/AAAA/wAAAP8AAAD/AAAA/wAAAP8CAgL/VTz/+FQ6 + /P8yI5j/IBZg/ywehf8MCCX/BAMN/wUEEP8GBBH/AQED/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIC9Vc+ + /2BVOv9+Ujj0fTwptH5ONul9OCapfRUOPn4AAAB+AAAAfQAAAH4AAAB+AAAAfQAAAH4AAAB+AAAAfgQE + BFkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA//8AAA== + + + + + AAABAAEAEBAAAAAAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAMIOAADCDgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAN6bIZTOkxoUtj62FL5W1hTWpzYUvlbWFLY+thTKgwoUxnb+FLY6shS6TsoUzpMaFL5a1hS2P + rYUxnb6FNZ2+ZTCTsvkriaf/KYKe/yuIpf8uk7L/K4il/ymBnP8tjqz/K4qn/yiBnP8qhaL/KoWh/yqG + o/8ogJv/JXeQ/yqDnvkRMjz/Di02/wofJv8MJS3/Di02/wskLP8HGB3/Di43/w0qM/8HFxz/CyMr/w4s + Nv8MJi7/CiAm/w4sNv8RMTv/BQsN/wUQE/8BAgL/AQQF/wYRFP8EBgf/AgIA/xAYJv8TGy3/AgIA/wMF + Bv8HEhX/AQUG/wECAv8FEBT/BQsN/wYFD/8LByT/AQAC/wAAAP8CAgL/AwMD/woKEv8LCxT/DAwY/woK + Ev8DAwT/AgIC/wAAAP8AAAD/AAAA/wICAv8JCA//IBs//wwMEP8AAAD/AgIC/wQEBv8bGzf/BgYK/wQE + Bf8bGzj/BgYJ/wMDA/8AAAD/CgoK/xEREf8HBwf/Li4u/1FRUf9ERET/AQEA/wwMGf8UFCj/BAQE/wMD + Av8DAwL/BAQE/xAQIP8RESL/AAAA/z8/P/9SUlH/NTU1/y4uLv9QUFD/QUFB/wEBAP8LCxf/EhIk/wIC + Af8JCRH/CwsV/wICAf8PDx3/Dw8f/wAAAP89PT3/UVFQ/zQ0M/8FBQX/DAwM/wgICP8AAAD/CwsW/xIS + JP8FBQb/Dg4b/xERIv8FBQb/Dw8d/w8PHv8AAAD/CAgK/xwXO/8KCRT/BAMI/wAAAP8AAAD/AAAA/wIC + Av8EBAX/HR06/wgIEP8GBgv/HR07/wYGCf8DAwL/AAAA/wAAAP8JBh3/BwUS/y0fhf8FBBD/AAAA/wAA + AP8AAAD/AAAA/xIOMv8fFVz/HhVa/xQPOP8AAQD/AAAA/wAAAP8AAAD/AAAA/wICAv9UO/v/MiKX/wUD + D/8FAw7/AwIK/wAAAP8RCzP/IBZi/yAWYP8TDTr/AAAA/wAAAP8AAAD/AAAA/wAAAP8CAgL/VTz/+FQ6 + /P8yI5j/IBZg/ywehf8MCCX/BAMN/wUEEP8GBBH/AQED/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIC9Vc+ + /2BVOv9+Ujj0fTwptH5ONul9OCapfRUOPn4AAAB+AAAAfQAAAH4AAAB+AAAAfQAAAH4AAAB+AAAAfgQE + BFkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA//8AAA== + + + \ No newline at end of file diff --git a/clients/winuploader/Microbit.Uploader/Program.cs b/clients/winuploader/Microbit.Uploader/Program.cs new file mode 100644 index 00000000..8c8cc288 --- /dev/null +++ b/clients/winuploader/Microbit.Uploader/Program.cs @@ -0,0 +1,30 @@ +using Microsoft.VisualBasic.ApplicationServices; +using System; +using System.Windows.Forms; + +namespace Microsoft.MicroBit +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")] + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + SingleInstanceAppStarter.Start(new MainForm(), StartNewInstance); + } + + // The handler when attempting to start another instance of this application + // We can customize the logic here for which form to activate in different + // conditions. Like in this sample, we will be selectively activate the LoginForm + // or MainForm based on the login state of the user. + static void StartNewInstance(object sender, StartupNextInstanceEventArgs e) + { + e.BringToForeground = true; + } + } +} diff --git a/clients/winuploader/Microbit.Uploader/Properties/AssemblyInfo.cs b/clients/winuploader/Microbit.Uploader/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..ef356c48 --- /dev/null +++ b/clients/winuploader/Microbit.Uploader/Properties/AssemblyInfo.cs @@ -0,0 +1,40 @@ +using System; +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Code The micro:bit Uploader")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("MicrosoftMicrobitUploader")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("7dc6ca45-fd75-44bc-805e-708c812cd4bf")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("0.9.0.0")] +[assembly: AssemblyFileVersion("0.9.0.0")] +[assembly: CLSCompliant(true)] +[assembly: NeutralResourcesLanguage("en-US")] \ No newline at end of file diff --git a/clients/winuploader/Microbit.Uploader/Properties/Resources.Designer.cs b/clients/winuploader/Microbit.Uploader/Properties/Resources.Designer.cs new file mode 100644 index 00000000..356a30a3 --- /dev/null +++ b/clients/winuploader/Microbit.Uploader/Properties/Resources.Designer.cs @@ -0,0 +1,93 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Microsoft.MicroBit.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Microsoft.MicroBit.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap microbit_red { + get { + object obj = ResourceManager.GetObject("microbit_red", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap MSFT_logo_png { + get { + object obj = ResourceManager.GetObject("MSFT_logo_png", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized string similar to {\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} + ///{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fbidi \fnil\fcharset2\fp [rest of string was truncated]";. + /// + internal static string MSR_LA___2576 { + get { + return ResourceManager.GetString("MSR_LA___2576", resourceCulture); + } + } + } +} diff --git a/clients/winuploader/Microbit.Uploader/Properties/Resources.resx b/clients/winuploader/Microbit.Uploader/Properties/Resources.resx new file mode 100644 index 00000000..b9194340 --- /dev/null +++ b/clients/winuploader/Microbit.Uploader/Properties/Resources.resx @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\MSR-LA - 2576.rtf;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\MSFT_logo_png.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\microbit.red.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/clients/winuploader/Microbit.Uploader/Resources/MSR-LA - 2576.rtf b/clients/winuploader/Microbit.Uploader/Resources/MSR-LA - 2576.rtf new file mode 100644 index 00000000..2fd9f957 --- /dev/null +++ b/clients/winuploader/Microbit.Uploader/Resources/MSR-LA - 2576.rtf @@ -0,0 +1 @@ +TBD \ No newline at end of file diff --git a/clients/winuploader/Microbit.Uploader/Settings.Designer.cs b/clients/winuploader/Microbit.Uploader/Settings.Designer.cs new file mode 100644 index 00000000..04615446 --- /dev/null +++ b/clients/winuploader/Microbit.Uploader/Settings.Designer.cs @@ -0,0 +1,76 @@ +namespace Microsoft.MicroBit +{ + partial class Settings + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(107, 12); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(100, 20); + this.textBox1.TabIndex = 0; + this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(34, 15); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(67, 13); + this.label1.TabIndex = 1; + this.label1.Text = "Custom Path"; + // + // Settings + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(246, 48); + this.Controls.Add(this.label1); + this.Controls.Add(this.textBox1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "Settings"; + this.ShowIcon = false; + this.Text = "Settings"; + this.Load += new System.EventHandler(this.Settings_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label1; + } +} \ No newline at end of file diff --git a/clients/winuploader/Microbit.Uploader/Settings.cs b/clients/winuploader/Microbit.Uploader/Settings.cs new file mode 100644 index 00000000..e2a4f3a4 --- /dev/null +++ b/clients/winuploader/Microbit.Uploader/Settings.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Security.AccessControl; +using System.Text; +using System.Windows.Forms; + +namespace Microsoft.MicroBit +{ + public partial class Settings : Form + { + public string CustomCopyPath; + public Settings(string currentpath) + { + InitializeComponent(); + CustomCopyPath = currentpath; + + } + + private void Settings_Load(object sender, EventArgs e) + { + textBox1.Text = CustomCopyPath; + } + + private void label1_Click(object sender, EventArgs e) + { + + } + + private void textBox1_TextChanged(object sender, EventArgs e) + { + CustomCopyPath = textBox1.Text; + } + } +} diff --git a/clients/winuploader/Microbit.Uploader/Settings.resx b/clients/winuploader/Microbit.Uploader/Settings.resx new file mode 100644 index 00000000..7080a7d1 --- /dev/null +++ b/clients/winuploader/Microbit.Uploader/Settings.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/clients/winuploader/Microbit.Uploader/SingleInstanceAppHelper.cs b/clients/winuploader/Microbit.Uploader/SingleInstanceAppHelper.cs new file mode 100644 index 00000000..e57d20d2 --- /dev/null +++ b/clients/winuploader/Microbit.Uploader/SingleInstanceAppHelper.cs @@ -0,0 +1,39 @@ +/****************************** Module Header ******************************\ +* Module Name: SingleInstanceAppHelper.cs +* Project: CSWinFormSingleInstanceApp +* Copyright (c) Microsoft Corporation. +* +* The sample demonstrates how to achieve the goal that only +* one instance of the application is allowed in Windows Forms application.. +* +* This source is subject to the Microsoft Public License. +* See http://www.microsoft.com/en-us/openness/resources/licenses.aspx#MPL. +* All other rights reserved. +* +* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +* EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED +* WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. +\***************************************************************************/ + +using System; +using Microsoft.VisualBasic.ApplicationServices; +using System.Windows.Forms; + +namespace Microsoft.MicroBit +{ + // We need to add Microsoft.VisualBasic reference to use + // WindowsFormsApplicationBase type. + class SingleInstanceApp : WindowsFormsApplicationBase + { + public SingleInstanceApp() + { + } + public SingleInstanceApp(Form f) + { + // Set IsSingleInstance property to true to make the application + base.IsSingleInstance = true; + // Set MainForm of the application. + this.MainForm = f; + } + } +} diff --git a/clients/winuploader/Microbit.Uploader/SingleInstanceAppStarter.cs b/clients/winuploader/Microbit.Uploader/SingleInstanceAppStarter.cs new file mode 100644 index 00000000..f3b9b6bb --- /dev/null +++ b/clients/winuploader/Microbit.Uploader/SingleInstanceAppStarter.cs @@ -0,0 +1,39 @@ +/****************************** Module Header ******************************\ +* Module Name: SingleInstanceAppStarter.cs +* Project: CSWinFormSingleInstanceApp +* Copyright (c) Microsoft Corporation. +* +* The sample demonstrates how to achieve the goal that only +* one instance of the application is allowed in Windows Forms application.. +* +* This source is subject to the Microsoft Public License. +* See http://www.microsoft.com/en-us/openness/resources/licenses.aspx#MPL. +* All other rights reserved. +* +* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +* EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED +* WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. +\***************************************************************************/ + +using System; +using System.Windows.Forms; +using Microsoft.VisualBasic.ApplicationServices; + +namespace Microsoft.MicroBit +{ + internal static class SingleInstanceAppStarter + { + static SingleInstanceApp app = null; + + // Construct SingleInstanceApp object, and invoke its run method. + public static void Start(Form f, StartupNextInstanceEventHandler handler) + { + if (app == null && f != null) + app = new SingleInstanceApp(f); + + // Wire up StartupNextInstance event handler. + app.StartupNextInstance += handler; + app.Run(Environment.GetCommandLineArgs()); + } + } +} diff --git a/clients/winuploader/Microbit.Uploader/favicon.ico b/clients/winuploader/Microbit.Uploader/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..f4f666c8367df326b8d24a1e5961bc5e8dc0aed7 GIT binary patch literal 1150 zcmb_bOKTHR7@gOhnarf~NRzfQO%wVEY0{)NY1)vq4TY{HDJ`P7C_=%1;3~lfBkDqh z;sdnBcPZ$m*lmR_#En11y@EyI_}!aUL~*0u;hXQ=x#xVZnUN%!F3*!_rKJm+B=r%> zlJQ4rGFjXS(Ak00HQN1`HT&}YdinXguyFfzIC*z3tn7Rcp6^SK55lR5#v}Aka@U?A zd+8y@F5W@z>eiuOnuAlAftAW2I#v+a9-V+Okc3m5MNh5_qkjCwv&>Iv4R+$bXmViv2bD0+xTAjJDjZw&w0vafB z6{xBT%ZkCa;vac;zPkq#Qf^M2?xO-B&SLf0*5R8tUC2}eX+uC*)+ zzVE{@3>1q+v|24JEiFNoC5m$b@pzVW8u588iol+iCe5(O(P%WVyxc;iQW5%Qvx&vU zMWMIte#By@=Dgr3oy948Pt zIqvF*1jjTj4EEPyMQGM)SNHQwc+bgXjbeJ#w@tWy)PHxzoEy=TFjx$QR0yVZXLlTf z` literal 0 HcmV?d00001 diff --git a/clients/winuploader/Microbit.Uploader/microbit.red.png b/clients/winuploader/Microbit.Uploader/microbit.red.png new file mode 100644 index 0000000000000000000000000000000000000000..9b2a5efa6bfd6a0d1b5abe39a219472eabe0db88 GIT binary patch literal 21078 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 literal 0 HcmV?d00001 From f8d6bd280ea30ce1118fee0d5158906872a4d6d6 Mon Sep 17 00:00:00 2001 From: Tom Ball Date: Fri, 17 Jun 2016 09:01:29 -0700 Subject: [PATCH 18/37] change typescript to javascript --- docs/about.md | 4 ++-- docs/{typescript.md => javascript.md} | 8 ++++---- pxtarget.json | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) rename docs/{typescript.md => javascript.md} (90%) diff --git a/docs/about.md b/docs/about.md index 60b63365..77c0b8fb 100644 --- a/docs/about.md +++ b/docs/about.md @@ -35,7 +35,7 @@ Learn about about the [hardware components](/device) of the micro:bit to make th ## Programming: Blocks or JavaScript -The student can program the BBC micro:bit using [Blocks](/blocks) or [JavaScript](/typescript), via the [micro:bit APIs](/reference): +The student can program the BBC micro:bit using [Blocks](/blocks) or [JavaScript](/javascript), via the [micro:bit APIs](/reference): ```blocks basic.showString("Hi!"); @@ -45,7 +45,7 @@ basic.showString("Hi!"); When a user has her code ready, she can connect her BBC micro:bit to a computer via a USB cable, so it appears as a mounted drive (named MICROBIT). -Compilation to ARM thumb machine code from [Blocks](/blocks) or [JavaScript](/typescript) happens in the browser. +Compilation to ARM thumb machine code from [Blocks](/blocks) or [JavaScript](/javascript) happens in the browser. The student is prompted to save the ARM binary program to a file, which she then simply drags to the micro:bit mounted drive, which flashes the micro:bit device with the new program. diff --git a/docs/typescript.md b/docs/javascript.md similarity index 90% rename from docs/typescript.md rename to docs/javascript.md index 71e06854..9cb3e54e 100644 --- a/docs/typescript.md +++ b/docs/javascript.md @@ -1,8 +1,8 @@ -# TypeScript +# JavaScript -You can write micro:bit programs in a subset of [TypeScript](https://www.typescriptlang.org). -TypeScript itself is a superset of JavaScript, and many micro:bit programs, -especially at the beginner's level, are also just plain JavaScript. +You can write micro:bit programs in a subset of [TypeScript](https://www.typescriptlang.org), a superset of JavaScript. +Many micro:bit programs, especially at the beginner's level, are just plain JavaScript. TypeScript introduces class-based +object-oriented programming, such as: ```js class Greeter { diff --git a/pxtarget.json b/pxtarget.json index bfe28e6c..1cd50988 100644 --- a/pxtarget.json +++ b/pxtarget.json @@ -110,8 +110,8 @@ "path": "/blocks" }, { - "name": "TypeScript", - "path": "/typescript" + "name": "JavaScript", + "path": "/javascript" } ], "sideDoc": "getting-started" From 637ea17f8edaf0d93d20256ba99e04f38459ad37 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Fri, 17 Jun 2016 11:34:10 -0700 Subject: [PATCH 19/37] removing large image --- docs/projects.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/projects.md b/docs/projects.md index d751c552..68c023c6 100644 --- a/docs/projects.md +++ b/docs/projects.md @@ -4,8 +4,6 @@ Here are some cool projects that you can build with your micro:bit! -![](/static/mb/projects/all10.png) - ### ~ From 733996f83ef3166406f289715f395570672806a2 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Fri, 17 Jun 2016 11:40:07 -0700 Subject: [PATCH 20/37] 0.2.171 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5afaefa0..ef0db810 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pxt-microbit", - "version": "0.2.170", + "version": "0.2.171", "description": "BBC micro:bit target for PXT", "keywords": [ "JavaScript", From d1db619c8d0ad7371f515f3bea25cd794c4d3aed Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Fri, 17 Jun 2016 11:44:05 -0700 Subject: [PATCH 21/37] added entry to troubleshoot --- docs/faq.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/faq.md b/docs/faq.md index 340c0453..76337f92 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -1,6 +1,12 @@ # Frequently Asked Questions -## Where can I get a BBC micro:bit? +### Where can I get a BBC micro:bit? More information at [http://uk.farnell.com/bbc-microbit](http://uk.farnell.com/bbc-microbit). + +## Troubleshooting + +### My micro:bit does not show up as a drive when I connect it to my computer. + +A common cause for this is a broken cable. Pick another USB cable and try it. Otherwise, try another computer as well. \ No newline at end of file From 491ff29e40d85cb6757cea2a2a02e6248cf20f43 Mon Sep 17 00:00:00 2001 From: Tom Ball Date: Fri, 17 Jun 2016 12:45:55 -0700 Subject: [PATCH 22/37] 0.2.172 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ef0db810..099fe4c1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pxt-microbit", - "version": "0.2.171", + "version": "0.2.172", "description": "BBC micro:bit target for PXT", "keywords": [ "JavaScript", From 74b6d99ab1bb6b32f09de813da71dfec35be751b Mon Sep 17 00:00:00 2001 From: Ron Hale-Evans Date: Fri, 17 Jun 2016 13:42:01 -0700 Subject: [PATCH 23/37] Rewrote in simple language. Added blocks example. --- docs/reference/images/create-image.md | 43 +++++++++++++++++---------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/docs/reference/images/create-image.md b/docs/reference/images/create-image.md index a5b5eb09..c8549770 100644 --- a/docs/reference/images/create-image.md +++ b/docs/reference/images/create-image.md @@ -1,6 +1,7 @@ # Create Image -Create an [Image](/reference/images/image) to show on the [LED screen](/device/screen). +Make an [image](/reference/images/image) (picture) for the micro:bit +[LED screen](/device/screen). ```sig images.createImage(` @@ -12,24 +13,34 @@ images.createImage(` `) ``` -### Example: rock, paper, scissors +### Example: Flip-flopping arrow -The following example shows one of three images (rock, paper, or scissors) when you shake the micro:bit: +If you press button `A`, this program will make a picture of an +arrow and show it on the LED screen. If you press button `B`, the +program will show a picture of the button upside-down. -``` -input.onGesture(Gesture.Shake, () => { - let rockpaper = images.createImage(` -. . . . . # # # # # . . . . # -. # # # . # . . . # # # . # . -. # # # . # . . . # . # # . . -. # # # . # . . . # # # . # . -. . . . . # # # # # . . . . # -`) - rockpaper.showFrame(Math.random(3)) -}) +```blocks +input.onButtonPressed(Button.A, () => { + images.createImage(` + . . # . . + . # # # . + # . # . # + . . # . . + . . # . . + `).showImage(0); +}); +input.onButtonPressed(Button.B, () => { + images.createImage(` + . . # . . + . . # . . + # . # . # + . # # # . + . . # . . + `).showImage(0); +}); ``` ### See also -[show animation](/reference/basic/show-animation), [image](/reference/images/image), [show image](/reference/image/show-image), [scroll image](/reference/image/scroll-image) - +[Getting Started](/reference/getting-started), [image](/reference/images/image), [show image](/reference/image/show-image), +[scroll image](/reference/image/scroll-image), [show animation](/reference/basic/show-animation) From 7cb85ff4599a5024a7c975f60f97af6c1f0a8700 Mon Sep 17 00:00:00 2001 From: Ron Hale-Evans Date: Fri, 17 Jun 2016 15:00:24 -0700 Subject: [PATCH 24/37] New page for 'create big image' --- docs/reference/images/create-big-image.md | 46 +++++++++++++++++++++++ docs/reference/images/create-image.md | 7 +++- 2 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 docs/reference/images/create-big-image.md diff --git a/docs/reference/images/create-big-image.md b/docs/reference/images/create-big-image.md new file mode 100644 index 00000000..e1d6b7b5 --- /dev/null +++ b/docs/reference/images/create-big-image.md @@ -0,0 +1,46 @@ +# Create Big Image + +Make a big [image](/reference/images/image) (picture) for the micro:bit +[LED screen](/device/screen). The big image made of two squares. +Each of the squares is five LEDs on a side, like a regular image. + +```blocks +images.createBigImage(` + . . # . . . . # . . + . # # # . . . # . . + # . # . # # . # . # + . . # . . . # # # . + . . # . . . . # . . + `); +``` + +### Example: Flip-flopping arrow + +This program makes a big image with a picture of an arrow pointing up, +and an arrow pointing down. If you press button `A`, the program will +show the arrow pointing up, which starts `0` LEDs from the left in the +big image. If you press button `B`, the program will show the arrow +pointing down, which starts `5` LEDs from the left. + +```blocks +let arrows = images.createBigImage(` + . . # . . . . # . . + . # # # . . . # . . + # . # . # # . # . # + . . # . . . # # # . + . . # . . . . # . . + `); +input.onButtonPressed(Button.A, () => { + arrows.showImage(0); +}); +input.onButtonPressed(Button.B, () => { + arrows.showImage(5); +}); +``` + +### See also + +[Getting Started](/reference/getting-started), [image](/reference/images/image), +[create image](/reference/images/create-image), +[show image](/reference/image/show-image), +[scroll image](/reference/image/scroll-image), [show animation](/reference/basic/show-animation) diff --git a/docs/reference/images/create-image.md b/docs/reference/images/create-image.md index c8549770..0bdbac2c 100644 --- a/docs/reference/images/create-image.md +++ b/docs/reference/images/create-image.md @@ -17,7 +17,7 @@ images.createImage(` If you press button `A`, this program will make a picture of an arrow and show it on the LED screen. If you press button `B`, the -program will show a picture of the button upside-down. +program will show a picture of the arrow upside-down. ```blocks input.onButtonPressed(Button.A, () => { @@ -42,5 +42,8 @@ input.onButtonPressed(Button.B, () => { ### See also -[Getting Started](/reference/getting-started), [image](/reference/images/image), [show image](/reference/image/show-image), +[Getting Started](/reference/getting-started), [image](/reference/images/image), +[create big image](/reference/images/create-big-image), +[show image](/reference/image/show-image), [scroll image](/reference/image/scroll-image), [show animation](/reference/basic/show-animation) + From 25d6746b7e7b1d1b61cd32f84edf980a10e2c5f1 Mon Sep 17 00:00:00 2001 From: Ron Hale-Evans Date: Fri, 17 Jun 2016 16:20:17 -0700 Subject: [PATCH 25/37] Rewrote in simple language. Fixed broken links. --- docs/reference/images/create-big-image.md | 4 +- docs/reference/images/create-image.md | 4 +- docs/reference/images/show-image.md | 69 ++++++++++------------- 3 files changed, 34 insertions(+), 43 deletions(-) diff --git a/docs/reference/images/create-big-image.md b/docs/reference/images/create-big-image.md index e1d6b7b5..ca4e6416 100644 --- a/docs/reference/images/create-big-image.md +++ b/docs/reference/images/create-big-image.md @@ -42,5 +42,5 @@ input.onButtonPressed(Button.B, () => { [Getting Started](/reference/getting-started), [image](/reference/images/image), [create image](/reference/images/create-image), -[show image](/reference/image/show-image), -[scroll image](/reference/image/scroll-image), [show animation](/reference/basic/show-animation) +[show image](/reference/images/show-image), +[scroll image](/reference/images/scroll-image), [show animation](/reference/basic/show-animation) diff --git a/docs/reference/images/create-image.md b/docs/reference/images/create-image.md index 0bdbac2c..2c4566d8 100644 --- a/docs/reference/images/create-image.md +++ b/docs/reference/images/create-image.md @@ -44,6 +44,6 @@ input.onButtonPressed(Button.B, () => { [Getting Started](/reference/getting-started), [image](/reference/images/image), [create big image](/reference/images/create-big-image), -[show image](/reference/image/show-image), -[scroll image](/reference/image/scroll-image), [show animation](/reference/basic/show-animation) +[show image](/reference/images/show-image), +[scroll image](/reference/images/scroll-image), [show animation](/reference/basic/show-animation) diff --git a/docs/reference/images/show-image.md b/docs/reference/images/show-image.md index 753db150..3114daff 100644 --- a/docs/reference/images/show-image.md +++ b/docs/reference/images/show-image.md @@ -1,51 +1,42 @@ # Show Image -The show image function. - -Show an [Image](/reference/images/image) on the [LED screen](/device/screen), followed by a 400ms pause. - -``` -export function showImage(_this: micro_bit.Image, xOffset: number) -``` +Show an [image](/reference/images/image) (picture) on the +[LED screen](/device/screen). After the micro:bit shows an image, it +will pause for 400 milliseconds (1000 milliseconds is one second). ### Parameters -* x offset - [Number](/reference/types/number); the horizontal starting point of an image; use 0 for the first frame of the image, 5 for the second frame of the image, 10 for the third frame and so on. +* an [image](/reference/images/image) (picture). It is usually a square with five LEDs on a side, but it might be wider. +* a [number](/reference/types/number) that says how many LEDs from the left of the picture the micro:bit should start. `0` means start at the first **frame** of the picture, `5` means start at the second frame, `10` means start at the third, and so on. -### Create image and show image +### Example: Flip-flopping arrow -Use the [image editor](/reference/images/image) to create images using the [create image](/reference/images/create-image) function, and then use `show image` like this: +This program makes a big image with a frame of an arrow pointing up, +and a frame of an arrow pointing down. If you press button `A`, the +program will use ``show image`` to show the arrow pointing up. (It +starts `0` LEDs from the left in the big image.) If you press button +`B`, the program will use ``show image`` to show the arrow pointing +down, which starts `5` LEDs from the left. -``` -let img = images.createImage(` -. . # . . -. # . # . -. . # . . -. # . # . -. . # . . -`) -img.showImage(0) -``` - -### Example: display numbers 1-5 - -The following example creates an image with 5 frames and then uses a [for loop](/blocks/loops/for) to show each frame on the screen: - -``` -let img2 = images.createImage(` -. . # . . . # # # # . # # # . . . . # . . # # # . -. # # . . . . . . # . . . # . . . # # . . # . . . -. . # . . . . . # . . . # . . . # # # # . # # # . -. . # . . . . # . . . . . # . . . . # . . . . # . -. . # . . . # # # # . # # # . . . . # . . # # # . -`) -for (let i = 0; i < 5; i++) { - img2.showImage(i * 5) - basic.pause(1000) -} +```blocks +let arrows = images.createBigImage(` + . . # . . . . # . . + . # # # . . . # . . + # . # . # # . # . # + . . # . . . # # # . + . . # . . . . # . . + `); +input.onButtonPressed(Button.A, () => { + arrows.showImage(0); +}); +input.onButtonPressed(Button.B, () => { + arrows.showImage(5); +}); ``` ### See also -[show animation](/reference/basic/show-animation), [image](/reference/images/image), [create image](/reference/images/create-image), [scroll image](/reference/images/scroll-image) - +[Getting Started](/reference/getting-started), [image](/reference/images/image), +[create image](/reference/images/create-image), +[create big image](/reference/images/create-big-image), +[scroll image](/reference/images/scroll-image), [show animation](/reference/basic/show-animation) From 947d69da4868c4ce9a7a352682d2d90347a5d82d Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Fri, 17 Jun 2016 22:11:32 -0700 Subject: [PATCH 26/37] added strings for block in microbit project --- .../_locales/microbit-blocks-strings.json | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 libs/microbit/_locales/microbit-blocks-strings.json diff --git a/libs/microbit/_locales/microbit-blocks-strings.json b/libs/microbit/_locales/microbit-blocks-strings.json new file mode 100644 index 00000000..6e521a8a --- /dev/null +++ b/libs/microbit/_locales/microbit-blocks-strings.json @@ -0,0 +1,65 @@ +{ + "Math.randomBoolean": "pick random true or false", + "String.fromCharCode": "text from char code %code", + "basic.clearScreen": "clear screen", + "basic.forever": "forever", + "basic.pause": "pause (ms) %pause", + "basic.showLeds": "show leds", + "basic.showNumber": "show|number %number", + "basic.showString": "show|string %text", + "control.inBackground": "run in background", + "control.reset": "reset", + "game.addScore": "change score by|%points", + "game.gameOver": "game over", + "game.score": "score", + "game.startCountdown": "start countdown|(ms) %duration", + "images.createBigImage": "create big image", + "images.createImage": "create image", + "input.acceleration": "acceleration (mg)|%NAME", + "input.buttonIsPressed": "button|%NAME|is pressed", + "input.compassHeading": "compass heading (°)", + "input.lightLevel": "light level", + "input.magneticForce": "magnetic force (µT)|%NAME", + "input.onButtonPressed": "on button|%NAME|pressed", + "input.onGesture": "on |%NAME", + "input.onPinPressed": "on pin|%NAME|pressed", + "input.pinIsPressed": "pin|%NAME|is pressed", + "input.rotation": "rotation (°)|%NAME", + "input.runningTime": "running time (ms)", + "input.setAccelerometerRange": "set accelerometer|range %range", + "input.temperature": "temperature (°C)", + "led.brightness": "brightness", + "led.plot": "plot|x %x|y %y", + "led.plotBarGraph": "plot bar graph of %value |up to %high", + "led.point": "point|x %x|y %y", + "led.setBrightness": "set brightness %value", + "led.stopAnimation": "stop animation", + "led.unplot": "unplot|x %x|y %y", + "music.beat": "%fraction|beat", + "music.changeTempoBy": "change tempo by (bpm)|%value", + "music.noteFrequency": "%note", + "music.playTone": "play|tone %note=device_note|for %duration=device_beat", + "music.rest": "rest(ms)|%duration=device_beat", + "music.ringTone": "ring tone (Hz)|%note=device_note", + "music.setTempo": "set tempo to (bpm)|%value", + "music.tempo": "tempo (bpm)", + "pins.analogReadPin": "analog read|pin %name", + "pins.analogSetPeriod": "analog set period|pin %pin|to (µs)%micros", + "pins.analogWritePin": "analog write|pin %name|to %value", + "pins.digitalReadPin": "digital read|pin %name", + "pins.digitalWritePin": "digital write|pin %name|to %value", + "pins.i2cReadNumber": "i2c read number|at address %address|of format %format=i2c_sizeof", + "pins.i2cWriteNumber": "i2c write number|at address %address|with value %value|of format %format=i2c_sizeof", + "pins.map": "map %value|from low %fromLow|from high %fromHigh|to low %toLow|to high %toHigh", + "pins.onPulsed": "on|pin %pin|pulsed %pulse", + "pins.pulseDuration": "pulse duration (µs)", + "pins.servoSetPulse": "servo set pulse|pin %value|to (µs) %micros", + "pins.servoWritePin": "servo write|pin %name|to %value", + "pins.setPull": "set pull|pin %pin|to %pull", + "serial.readLine": "serial read line", + "serial.redirect": "serial redirect to|TX %tx|RX %rx|at baud rate %rate", + "serial.writeLine": "serial|write line %text", + "serial.writeNumber": "serial|write number %value", + "serial.writeString": "serial write string %text", + "serial.writeValue": "serial|write value %name|= %value" +} \ No newline at end of file From e0554844922f960f05833e1c1dbcc62e19e8ab14 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Sun, 19 Jun 2016 05:14:46 -0700 Subject: [PATCH 27/37] updated loc strings --- docs/reference/images/create-image.md | 2 +- libs/microbit/_locales/microbit-strings.json | 150 ++++++++++++++++++- 2 files changed, 150 insertions(+), 2 deletions(-) diff --git a/docs/reference/images/create-image.md b/docs/reference/images/create-image.md index 2c4566d8..550f0f93 100644 --- a/docs/reference/images/create-image.md +++ b/docs/reference/images/create-image.md @@ -42,7 +42,7 @@ input.onButtonPressed(Button.B, () => { ### See also -[Getting Started](/reference/getting-started), [image](/reference/images/image), +[Getting Started](/getting-started), [image](/reference/images/image), [create big image](/reference/images/create-big-image), [show image](/reference/images/show-image), [scroll image](/reference/images/scroll-image), [show animation](/reference/basic/show-animation) diff --git a/libs/microbit/_locales/microbit-strings.json b/libs/microbit/_locales/microbit-strings.json index 90514785..73404cb4 100644 --- a/libs/microbit/_locales/microbit-strings.json +++ b/libs/microbit/_locales/microbit-strings.json @@ -1,92 +1,240 @@ { "Math.randomBoolean": "Generates a `true` or `false` value randomly, just like flipping a coin.", + "Math.randomBoolean|block": "pick random true or false", + "Math|block": "Math", "String.fromCharCode": "Make a string from the given ASCII character code.", + "String.fromCharCode|block": "text from char code %code", + "String|block": "String", "basic": "Provides access to basic micro:bit functionality.", "basic.clearScreen": "Turn off all LEDs", + "basic.clearScreen|block": "clear screen", "basic.forever": "Repeats the code forever in the background. On each iteration, allows other codes to run.", + "basic.forever|block": "forever", "basic.pause": "Pause for the specified time in milliseconds", + "basic.pause|block": "pause (ms) %pause", + "basic.pause|param|ms": "how long to pause for, eg: 100, 200, 500, 1000, 2000", "basic.plotLeds": "Draws an image on the LED screen.", + "basic.plotLeds|param|leds": "pattern of LEDs to turn on/off", "basic.showAnimation": "Shows a sequence of LED screens as an animation.", + "basic.showAnimation|param|interval": "time in milliseconds between each redraw", + "basic.showAnimation|param|leds": "pattern of LEDs to turn on/off", "basic.showLeds": "Draws an image on the LED screen.", + "basic.showLeds|block": "show leds", + "basic.showLeds|param|interval": "time in milliseconds to pause after drawing", + "basic.showLeds|param|leds": "the pattern of LED to turn on/off", "basic.showNumber": "Scroll a number on the screen. If the number fits on the screen (i.e. is a single digit), do not scroll.", + "basic.showNumber|block": "show|number %number", + "basic.showNumber|param|interval": "speed of scroll; eg: 150, 100, 200, -100", "basic.showString": "Display text on the display, one character at a time. If the string fits on the screen (i.e. is one letter), does not scroll.", + "basic.showString|block": "show|string %text", + "basic.showString|param|interval": "how fast to shift characters; eg: 150, 100, 200, -100", + "basic.showString|param|text": "the text to scroll on the screen, eg: \"Hello!\"", + "basic|block": "basic", "control": "Runtime and event utilities.", "control.inBackground": "Schedules code that run in the background.", + "control.inBackground|block": "run in background", "control.reset": "Resets the BBC micro:bit.", + "control.reset|block": "reset", + "control|block": "control", "game": "A single-LED sprite game engine", "game.addScore": "Adds points to the current score", + "game.addScore|block": "change score by|%points", + "game.addScore|param|points": "amount of points to change, eg: 1", "game.gameOver": "Displays a game over animation.", + "game.gameOver|block": "game over", "game.score": "Gets the current score", + "game.score|block": "score", "game.setScore": "Sets the current score value", + "game.setScore|param|value": "TODO", "game.startCountdown": "Starts a game countdown timer", + "game.startCountdown|block": "start countdown|(ms) %duration", + "game.startCountdown|param|ms": "countdown duration in milliseconds, eg: 10000", + "game|block": "game", "images": "Creation, manipulation and display of LED images.", "images.createBigImage": "Creates an image with 2 frames.", + "images.createBigImage|block": "create big image", "images.createImage": "Creates an image that fits on the LED screen.", + "images.createImage|block": "create image", + "images|block": "images", "input": "Events and data from sensors", "input.acceleration": "Get the acceleration value in milli-gravitys (when the board is laying flat with the screen up, x=0, y=0 and z=-1024)", + "input.acceleration|block": "acceleration (mg)|%NAME", + "input.acceleration|param|dimension": "TODO", "input.buttonIsPressed": "Get the button state (pressed or not) for ``A`` and ``B``.", + "input.buttonIsPressed|block": "button|%NAME|is pressed", "input.calibrate": "Obsolete, compass calibration is automatic.", "input.compassHeading": "Get the current compass compass heading in degrees.", + "input.compassHeading|block": "compass heading (°)", "input.lightLevel": "Reads the light level applied to the LED screen in a range from ``0`` (dark) to ``255`` bright.", + "input.lightLevel|block": "light level", "input.magneticForce": "Get the magnetic force value in ``micro-Teslas`` (``µT``). This function is not supported in the simulator.", + "input.magneticForce|block": "magnetic force (µT)|%NAME", + "input.magneticForce|param|dimension": "TODO", "input.onButtonPressed": "Do something when a button (``A``, ``B`` or both ``A+B``) is pressed", + "input.onButtonPressed|block": "on button|%NAME|pressed", + "input.onButtonPressed|param|body": "TODO", + "input.onButtonPressed|param|button": "TODO", "input.onGesture": "Attaches code to run when the screen is facing up.", + "input.onGesture|block": "on |%NAME", + "input.onGesture|param|body": "TODO", "input.onLogoDown": "Attaches code to run when the logo is oriented downwards and the board is vertical.", + "input.onLogoDown|param|body": "TODO", "input.onLogoUp": "Attaches code to run when the logo is oriented upwards and the board is vertical.", + "input.onLogoUp|param|body": "TODO", "input.onPinPressed": "Do something when a pin(``P0``, ``P1`` or both ``P2``) is pressed.", + "input.onPinPressed|block": "on pin|%NAME|pressed", + "input.onPinPressed|param|body": "TODO", + "input.onPinPressed|param|name": "TODO", "input.onScreenDown": "Attaches code to run when the screen is facing down.", + "input.onScreenDown|param|body": "TODO", "input.onScreenUp": "Attaches code to run when the screen is facing up.", + "input.onScreenUp|param|body": "TODO", "input.onShake": "Attaches code to run when the device is shaken.", + "input.onShake|param|body": "TODO", "input.pinIsPressed": "Get the pin state (pressed or not). Requires to hold the ground to close the circuit.", + "input.pinIsPressed|block": "pin|%NAME|is pressed", + "input.pinIsPressed|param|name": "pin used to detect the touch", "input.rotation": "The pitch of the device, rotation along the ``x-axis``, in degrees.", + "input.rotation|block": "rotation (°)|%NAME", + "input.rotation|param|kind": "TODO", "input.runningTime": "Gets the number of milliseconds elapsed since power on.", + "input.runningTime|block": "running time (ms)", "input.setAccelerometerRange": "Sets the accelerometer sample range in gravities.", + "input.setAccelerometerRange|block": "set accelerometer|range %range", + "input.setAccelerometerRange|param|range": "a value describe the maximum strengh of acceleration measured", "input.temperature": "Gets the temperature in Celsius degrees (°C).", + "input.temperature|block": "temperature (°C)", + "input|block": "input", "led": "Control of the LED screen.", "led.brightness": "Get the screen brightness from 0 (off) to 255 (full bright).", + "led.brightness|block": "brightness", "led.fadeIn": "Fades in the screen display.", + "led.fadeIn|param|ms": "TODO", "led.fadeOut": "Fades out the screen brightness.", + "led.fadeOut|param|ms": "TODO", "led.plot": "Turn on the specified LED using x, y coordinates (x is horizontal, y is vertical). (0,0) is upper left.", "led.plotAll": "Turns all LEDS on", "led.plotBarGraph": "Displays a vertical bar graph based on the `value` and `high` value.\nIf `high` is 0, the chart gets adjusted automatically.", + "led.plotBarGraph|block": "plot bar graph of %value |up to %high", + "led.plotBarGraph|param|high": "maximum value. If 0, maximum value adjusted automatically, eg: 0", + "led.plotBarGraph|param|value": "current value to plot", + "led.plot|block": "plot|x %x|y %y", + "led.plot|param|x": "TODO", + "led.plot|param|y": "TODO", "led.point": "Get the on/off state of the specified LED using x, y coordinates. (0,0) is upper left.", + "led.point|block": "point|x %x|y %y", + "led.point|param|x": "TODO", + "led.point|param|y": "TODO", "led.screenshot": "Takes a screenshot of the LED screen and returns an image.", "led.setBrightness": "Set the screen brightness from 0 (off) to 255 (full bright).", + "led.setBrightness|block": "set brightness %value", + "led.setBrightness|param|value": "the brightness value, eg:255, 127, 0", "led.setDisplayMode": "Sets the display mode between black and white and greyscale for rendering LEDs.", + "led.setDisplayMode|param|mode": "TODO", "led.stopAnimation": "Cancels the current animation and clears other pending animations.", + "led.stopAnimation|block": "stop animation", "led.toggle": "Toggles a particular pixel", "led.toggleAll": "Inverts the current LED display", + "led.toggle|param|x": "TODO", + "led.toggle|param|y": "TODO", "led.unplot": "Turn off the specified LED using x, y coordinates (x is horizontal, y is vertical). (0,0) is upper left.", + "led.unplot|block": "unplot|x %x|y %y", + "led.unplot|param|x": "TODO", + "led.unplot|param|y": "TODO", + "led|block": "led", "music": "Generation of music tones through pin ``P0``.", "music.beat": "Returns the duration of a beat in milli-seconds", + "music.beat|block": "%fraction|beat", "music.changeTempoBy": "Change the tempo by the specified amount", + "music.changeTempoBy|block": "change tempo by (bpm)|%value", + "music.changeTempoBy|param|bpm": "The change in beats per minute to the tempo, eg: 20", "music.noteFrequency": "Gets the frequency of a note.", + "music.noteFrequency|block": "%note", + "music.noteFrequency|param|name": "the note name", "music.playTone": "Plays a tone through pin ``P0`` for the given duration.", + "music.playTone|block": "play|tone %note=device_note|for %duration=device_beat", + "music.playTone|param|frequency": "pitch of the tone to play in Hertz (Hz)", + "music.playTone|param|ms": "tone duration in milliseconds (ms)", "music.rest": "Rests (plays nothing) for a specified time through pin ``P0``.", + "music.rest|block": "rest(ms)|%duration=device_beat", + "music.rest|param|ms": "rest duration in milliseconds (ms)", "music.ringTone": "Plays a tone through pin ``P0``.", + "music.ringTone|block": "ring tone (Hz)|%note=device_note", + "music.ringTone|param|frequency": "pitch of the tone to play in Hertz (Hz)", "music.setTempo": "Sets the tempo to the specified amount", + "music.setTempo|block": "set tempo to (bpm)|%value", + "music.setTempo|param|bpm": "The new tempo in beats per minute, eg: 120", "music.tempo": "Returns the tempo in beats per minute. Tempo is the speed (bpm = beats per minute) at which notes play. The larger the tempo value, the faster the notes will play.", + "music.tempo|block": "tempo (bpm)", + "music|block": "music", "pins": "Control currents in Pins for analog/digital signals, servos, i2c, ...", "pins.analogPitch": "Emits a Pulse-width modulation (PWM) signal to the current pitch pin. Use `analog set pitch pin` to define the pitch pin.", + "pins.analogPitch|param|frequency": "TODO", + "pins.analogPitch|param|ms": "TODO", "pins.analogReadPin": "Read the connector value as analog, that is, as a value comprised between 0 and 1023.", + "pins.analogReadPin|block": "analog read|pin %name", + "pins.analogReadPin|param|name": "pin to write to", "pins.analogSetPeriod": "Configures the Pulse-width modulation (PWM) of the analog output to the given value in **microseconds** or `1/1000` milliseconds.\nIf this pin is not configured as an analog output (using `analog write pin`), the operation has no effect.", + "pins.analogSetPeriod|block": "analog set period|pin %pin|to (µs)%micros", + "pins.analogSetPeriod|param|micros": "period in micro seconds. eg:20000", + "pins.analogSetPeriod|param|name": "analog pin to set period to", "pins.analogSetPitchPin": "Sets the pin used when using `pins->analog pitch`.", + "pins.analogSetPitchPin|param|name": "TODO", "pins.analogWritePin": "Set the connector value as analog. Value must be comprised between 0 and 1023.", + "pins.analogWritePin|block": "analog write|pin %name|to %value", + "pins.analogWritePin|param|name": "pin name to write to", + "pins.analogWritePin|param|value": "value to write to the pin between ``0`` and ``1023``. eg:1023,0", "pins.digitalReadPin": "Read the specified pin or connector as either 0 or 1", + "pins.digitalReadPin|block": "digital read|pin %name", + "pins.digitalReadPin|param|name": "pin to read from", "pins.digitalWritePin": "Set a pin or connector value to either 0 or 1.", + "pins.digitalWritePin|block": "digital write|pin %name|to %value", + "pins.digitalWritePin|param|name": "pin to write to", + "pins.digitalWritePin|param|value": "value to set on the pin, 1 eg,0", "pins.i2cReadNumber": "Read one number from 7-bit I2C address.", + "pins.i2cReadNumber|block": "i2c read number|at address %address|of format %format=i2c_sizeof", "pins.i2cWriteNumber": "Write one number to a 7-bit I2C address.", + "pins.i2cWriteNumber|block": "i2c write number|at address %address|with value %value|of format %format=i2c_sizeof", "pins.map": "Re-maps a number from one range to another. That is, a value of ``from low`` would get mapped to ``to low``, a value of ``from high`` to ``to high``, values in-between to values in-between, etc.", + "pins.map|block": "map %value|from low %fromLow|from high %fromHigh|to low %toLow|to high %toHigh", + "pins.map|param|fromHigh": "the upper bound of the value's current range, eg: 1023", + "pins.map|param|fromLow": "the lower bound of the value's current range", + "pins.map|param|toHigh": "the upper bound of the value's target range, eg: 4", + "pins.map|param|toLow": "the lower bound of the value's target range", + "pins.map|param|value": "value to map in ranges", "pins.onPulsed": "Configures this pin to a digital input, and generates events where the timestamp is the duration that this pin was either ``high`` or ``low``.", + "pins.onPulsed|block": "on|pin %pin|pulsed %pulse", "pins.pulseDuration": "Gets the duration of the last pulse in micro-seconds. This function should be called from a ``onPulsed`` handler.", + "pins.pulseDuration|block": "pulse duration (µs)", "pins.servoSetPulse": "Configures this IO pin as an analog/pwm output, configures the period to be 20 ms, and sets the pulse width, based on the value it is given **microseconds** or `1/1000` milliseconds.", + "pins.servoSetPulse|block": "servo set pulse|pin %value|to (µs) %micros", + "pins.servoSetPulse|param|micros": "pulse duration in micro seconds, eg:1500", + "pins.servoSetPulse|param|name": "pin name", "pins.servoWritePin": "Writes a value to the servo, controlling the shaft accordingly. On a standard servo, this will set the angle of the shaft (in degrees), moving the shaft to that orientation. On a continuous rotation servo, this will set the speed of the servo (with ``0`` being full-speed in one direction, ``180`` being full speed in the other, and a value near ``90`` being no movement).", + "pins.servoWritePin|block": "servo write|pin %name|to %value", + "pins.servoWritePin|param|name": "pin to write to", + "pins.servoWritePin|param|value": "angle or rotation speed, eg:180,90,0", "pins.setPull": "Configures the pull of this pin.", + "pins.setPull|block": "set pull|pin %pin|to %pull", + "pins.setPull|param|name": "pin to set the pull mode on", + "pins.setPull|param|pull": "one of the mbed pull configurations: PullUp, PullDown, PullNone ", + "pins|block": "pins", "serial": "Reading and writing data over a serial connection.", "serial.readLine": "Reads a line of text from the serial port.", + "serial.readLine|block": "serial read line", "serial.redirect": "Dynamically configuring the serial instance to use pins other than USBTX and USBRX.", + "serial.redirect|block": "serial redirect to|TX %tx|RX %rx|at baud rate %rate", + "serial.redirect|param|rx": "the new reception pin", + "serial.redirect|param|tx": "the new transmission pins", "serial.writeLine": "Prints a line of text to the serial", + "serial.writeLine|block": "serial|write line %text", "serial.writeNumber": "Prints a numeric value to the serial", + "serial.writeNumber|block": "serial|write number %value", "serial.writeString": "Sends a piece of text through Serial connection.", - "serial.writeValue": "Writes a ``name: value`` pair line to the serial." + "serial.writeString|block": "serial write string %text", + "serial.writeValue": "Writes a ``name: value`` pair line to the serial.", + "serial.writeValue|block": "serial|write value %name|= %value", + "serial.writeValue|param|name": "name of the value stream, eg: x", + "serial.writeValue|param|value": "to write", + "serial|block": "serial" } \ No newline at end of file From d7528c09e356e0d74f3446779f5c392af04acee7 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Sun, 19 Jun 2016 05:15:13 -0700 Subject: [PATCH 28/37] updated transmit power default value --- libs/microbit-radio/radio.cpp | 2 +- libs/microbit-radio/shims.d.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/microbit-radio/radio.cpp b/libs/microbit-radio/radio.cpp index ab682448..e41d6d9c 100644 --- a/libs/microbit-radio/radio.cpp +++ b/libs/microbit-radio/radio.cpp @@ -214,7 +214,7 @@ namespace radio { /** * Change the output power level of the transmitter to the given value. - * @param power a value in the range 0..7, where 0 is the lowest power and 7 is the highest, 7 eg + * @param power a value in the range 0..7, where 0 is the lowest power and 7 is the highest. eg: 7 */ //% help=radio/set-transmit-power //% weight=9 diff --git a/libs/microbit-radio/shims.d.ts b/libs/microbit-radio/shims.d.ts index 4e65dd5b..2391ebc4 100644 --- a/libs/microbit-radio/shims.d.ts +++ b/libs/microbit-radio/shims.d.ts @@ -94,7 +94,7 @@ declare namespace radio { /** * Change the output power level of the transmitter to the given value. - * @param power a value in the range 0..7, where 0 is the lowest power and 7 is the highest, 7 eg + * @param power a value in the range 0..7, where 0 is the lowest power and 7 is the highest. eg: 7 */ //% help=radio/set-transmit-power //% weight=9 From cd0b2a646f1905b80729706789535862c9ab9368 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Sun, 19 Jun 2016 05:28:46 -0700 Subject: [PATCH 29/37] fixing various doc links --- docs/lessons/charting/quiz-answers.md | 2 +- docs/lessons/night-light/challenges.md | 2 - .../night-light/offset-image/activity.md | 94 ------------------- .../night-light/offset-image/quiz-answers.md | 48 ---------- docs/lessons/night-light/offset-image/quiz.md | 36 ------- docs/lessons/seismograph/challenge.md | 2 +- .../devices/on-signal-strength-changed.md | 3 +- docs/reference/devices/raise-alert-to.md | 2 +- docs/reference/devices/signal-strength.md | 2 +- docs/reference/devices/tell-camera-to.md | 2 +- docs/reference/devices/tell-microphone-to.md | 11 --- .../devices/tell-remote-control-to.md | 2 +- docs/reference/images/create-big-image.md | 2 +- docs/reference/images/show-image.md | 2 +- docs/reference/images/width.md | 2 +- docs/reference/types/number.md | 2 +- .../_locales/microbit-blocks-strings.json | 65 ------------- 17 files changed, 11 insertions(+), 268 deletions(-) delete mode 100644 docs/lessons/night-light/offset-image/activity.md delete mode 100644 docs/lessons/night-light/offset-image/quiz-answers.md delete mode 100644 docs/lessons/night-light/offset-image/quiz.md delete mode 100644 libs/microbit/_locales/microbit-blocks-strings.json diff --git a/docs/lessons/charting/quiz-answers.md b/docs/lessons/charting/quiz-answers.md index 684f44d3..b58dd788 100644 --- a/docs/lessons/charting/quiz-answers.md +++ b/docs/lessons/charting/quiz-answers.md @@ -7,7 +7,7 @@ Measure the acceleration on the micro:bit in the "x" direction. ## Directions -Use this activity document to guide your work in the [glowing pendulum activity](/lessons/charting/acceleration) +Use this activity document to guide your work in the [charting activity](/lessons/charting) Answer the questions while completing the tutorial. Pay attention to the dialogues! diff --git a/docs/lessons/night-light/challenges.md b/docs/lessons/night-light/challenges.md index c12fbe86..aa1d09a0 100644 --- a/docs/lessons/night-light/challenges.md +++ b/docs/lessons/night-light/challenges.md @@ -49,5 +49,3 @@ input.onButtonPressed(Button.B, () => { ### Challenge 3 Add an event handler with `on shake` to change the LED brightness back to a `255`. - -* `Run main` your script to see the LEDs change brightness. diff --git a/docs/lessons/night-light/offset-image/activity.md b/docs/lessons/night-light/offset-image/activity.md deleted file mode 100644 index 6dab515e..00000000 --- a/docs/lessons/night-light/offset-image/activity.md +++ /dev/null @@ -1,94 +0,0 @@ -# offset image challenges - -Coding challenges for the offset image tutorial. - -## Before we get started - -Complete the following exercise. Your code should look like this: - -```blocks -offset = 0 -basic.forever(() => { - if (offset == -4) { - basic.showString("Push button A", 150) - } - images.createImage(` -. . # . . -. . # . . -. . # . . -. # # # . -. . # . . -`).showImage(offset) -}) -input.onButtonPressed(Button.A, () => { - offset = offset + 1 -}) -``` - -### Challenge 1 - -Create a condition for if button `B` is pressed. We want the image to move to the left when button `B` is pressed. - -``` -offset = 0 -basic.forever(() => { - if (offset == -4) { - basic.showString("Push button A", 150) - } - images.createImage(` -. . # . . -. . # . . -. . # . . -. # # # . -. . # . . -`).showImage(offset) -}) -input.onButtonPressed(Button.A, () => { - offset = offset + 1 -}) -input.onButtonPressed(Button.B, () => { - offset = offset - 1 // *** -}) // *** -``` - -* Run the code to see if it works as expected. - -### Challenge 2 - - - -Now we want to make sure that the button does not go off the screen to the right. Add a new line that checks to see if offset = 5 after button `A` is pressed. - -If `offset = 5` then prompt the user to move the image to the left by displaying the text: "Push button B". - -``` -offset = 0 -basic.forever(() => { - if (offset == -4) { - basic.showString("Push button A", 150) - } - if (offset == 5) { - basic.showString("Press Button B", 150) // *** - } - images.createImage(` -. . # . . -. . # . . -. . # . . -. # # # . -. . # . . -`).showImage(offset) -}) -input.onButtonPressed(Button.A, () => { - offset = offset + 1 -}) -input.onButtonPressed(Button.B, () => { - offset = offset - 1 -}) -``` - -* Run the code to see if it works as expected. - -### Challenge 3 - -Now make sure the image does not go off the left side and if it does, prompt the user to push button `A`. - diff --git a/docs/lessons/night-light/offset-image/quiz-answers.md b/docs/lessons/night-light/offset-image/quiz-answers.md deleted file mode 100644 index d9b00e48..00000000 --- a/docs/lessons/night-light/offset-image/quiz-answers.md +++ /dev/null @@ -1,48 +0,0 @@ -# offset image quiz answers - -shift an image horizontally across the display with offset. - -This is the answer key for the [offset image quiz](/lessons/offset-image/quiz). - -## 1. What is a 'if, then, else statement' ? - -
- -An if-then statement will run a block of code if the condition specified is true. The statement will run the "else" block of code if that condition is false. - -## 2. Consider the message - -Write the line of code that that will create the message "Push button A" (Hint: This message appears `if` the offset is equal -4 then the BBC micro:bit will state "Push Button A"). - -
- -``` -if (offset == -4) { - basic.showString("Push Button A", 150) -} -``` - -## 3. Consider the following image - -![](/static/mb/lessons/offset-image-0.png) - -When with this image be displayed? - -
- -When the offset is NOT equal to -4 then the BBC micro:bit will show the image above. - -## 4. Consider the following image - -![](/static/mb/lessons/offset-image-1.png) - -Write the two lines of code that cause the `variable` offset to increase by one when button `A` is pressed. - -
- -``` -input.onButtonPressed(Button.A, () => { - offset = offset + 1 -}) -``` - diff --git a/docs/lessons/night-light/offset-image/quiz.md b/docs/lessons/night-light/offset-image/quiz.md deleted file mode 100644 index 690dd10c..00000000 --- a/docs/lessons/night-light/offset-image/quiz.md +++ /dev/null @@ -1,36 +0,0 @@ -# offset image quiz - -shift an image horizontally across the display with offset. - -## Name - -## Directions - -Use this activity document to guide your work in the [offset image activity](/lessons/offset-image/activity). - -Answer the questions while completing the tutorial. Pay attention to the dialogues! - -## 1. What is an 'if, then, else statement' ? - -
- -## 2. Write the line condition that if true, will display the message "Push button A". This message appears if the offset is equal -4 then the BBC micro:bit will state "Push Button A". - -
- -
- -## 3. Write the one line of code to show this image - -![](/static/mb/lessons/offset-image-0.png) - -
- -
- -## 4. Write the two lines of code that trigger the variable offset to increase by one. - -![](/static/mb/lessons/offset-image-1.png) - -
- diff --git a/docs/lessons/seismograph/challenge.md b/docs/lessons/seismograph/challenge.md index 5bc94e34..8c8134a0 100644 --- a/docs/lessons/seismograph/challenge.md +++ b/docs/lessons/seismograph/challenge.md @@ -106,7 +106,7 @@ Science: Welcome! The activity will teach you how to chart the acceleration of t ## 6. First, notice that moving the 1st micro:bit in the simulator in any direction, you will change the acceleration value of the 2nd micro:bit. Also, notice that by moving the micro:bit simulator, there is a changing acceleration value of the second micro:bit. Second, the flat colored horizontal line will start a waving line on the 2nd micro:bit to display the value of the strength as measured in milli-gravities. Finally, notice that the LED display will fluctate based on the movement of the 2nd micro:bit simulator. -![](/static/mb//lessons/seis_challenge02.png) +![](/static/mb/lessons/seis_challenge02.png) ## 7. diff --git a/docs/reference/devices/on-signal-strength-changed.md b/docs/reference/devices/on-signal-strength-changed.md index ddc6d918..99f91a32 100644 --- a/docs/reference/devices/on-signal-strength-changed.md +++ b/docs/reference/devices/on-signal-strength-changed.md @@ -30,5 +30,4 @@ devices.onSignalStrengthChanged(() => { ### See Also -[tell remote control to](/reference/devices/tell-remote-control-to), [raise alert to](/reference/devices/raise-alert-to), [on notified](/reference/devices/on-notified), [signal strength](/reference/devices/signal-strength) - +[tell remote control to](/reference/devices/tell-remote-control-to), [raise alert to](/reference/devices/raise-alert-to), [signal strength](/reference/devices/signal-strength) \ No newline at end of file diff --git a/docs/reference/devices/raise-alert-to.md b/docs/reference/devices/raise-alert-to.md index c467e6af..8d82fbbe 100644 --- a/docs/reference/devices/raise-alert-to.md +++ b/docs/reference/devices/raise-alert-to.md @@ -59,5 +59,5 @@ devices.raiseAlertTo("ring alarm") ### See also -[tell remote control to](/reference/devices/tell-remote-control-to), [tell camera to](/reference/devices/tell-camera-to), [on notified](/reference/devices/on-notified) +[tell remote control to](/reference/devices/tell-remote-control-to), [tell camera to](/reference/devices/tell-camera-to) diff --git a/docs/reference/devices/signal-strength.md b/docs/reference/devices/signal-strength.md index 549a2fe7..bb8a9c77 100644 --- a/docs/reference/devices/signal-strength.md +++ b/docs/reference/devices/signal-strength.md @@ -30,5 +30,5 @@ devices.onSignalStrengthChanged(() => { ### See Also -[tell remote control to](/reference/devices/tell-remote-control-to), [raise alert to](/reference/devices/raise-alert-to), [on notified](/reference/devices/on-notified), [on signal strength changed](/reference/devices/on-signal-strength-changed) +[tell remote control to](/reference/devices/tell-remote-control-to), [raise alert to](/reference/devices/raise-alert-to), [on signal strength changed](/reference/devices/on-signal-strength-changed) diff --git a/docs/reference/devices/tell-camera-to.md b/docs/reference/devices/tell-camera-to.md index 4ac69338..56041304 100644 --- a/docs/reference/devices/tell-camera-to.md +++ b/docs/reference/devices/tell-camera-to.md @@ -76,5 +76,5 @@ devices.tellCameraTo("stop video mode") ### See Also -[tell remote control to](/reference/devices/tell-remote-control-to), [raise alert to](/reference/devices/raise-alert-to), [on notified](/reference/devices/on-notified) +[tell remote control to](/reference/devices/tell-remote-control-to), [raise alert to](/reference/devices/raise-alert-to) diff --git a/docs/reference/devices/tell-microphone-to.md b/docs/reference/devices/tell-microphone-to.md index b4b82ddf..52879fef 100644 --- a/docs/reference/devices/tell-microphone-to.md +++ b/docs/reference/devices/tell-microphone-to.md @@ -45,14 +45,3 @@ To tell the connected device to stop recording audio ``` devices.tellMicrophoneTo("stop capture") ``` - -### Other show functions - -* use [tell remote control to](/reference/devices/tell-remote-control-to) to control presentation of media content -* use [tell camera to](/reference/devices/tell-camera-to) to control the photo/video recording of connected devices -* use [raise alert to](/reference/devices/raise-alert-to) to control the microphone of connected devices - -### See also - -[Devices](/reference/devices) - diff --git a/docs/reference/devices/tell-remote-control-to.md b/docs/reference/devices/tell-remote-control-to.md index 25549eeb..5062310c 100644 --- a/docs/reference/devices/tell-remote-control-to.md +++ b/docs/reference/devices/tell-remote-control-to.md @@ -88,5 +88,5 @@ devices.tellRemoteControlTo("volume down") ### See also -[tell camera to](/reference/devices/tell-camera-to), [raise alert to](/reference/devices/raise-alert-to), [on notified](/reference/devices/on-notified) +[tell camera to](/reference/devices/tell-camera-to), [raise alert to](/reference/devices/raise-alert-to) diff --git a/docs/reference/images/create-big-image.md b/docs/reference/images/create-big-image.md index ca4e6416..8ac17640 100644 --- a/docs/reference/images/create-big-image.md +++ b/docs/reference/images/create-big-image.md @@ -40,7 +40,7 @@ input.onButtonPressed(Button.B, () => { ### See also -[Getting Started](/reference/getting-started), [image](/reference/images/image), +[Getting Started](/getting-started), [image](/reference/images/image), [create image](/reference/images/create-image), [show image](/reference/images/show-image), [scroll image](/reference/images/scroll-image), [show animation](/reference/basic/show-animation) diff --git a/docs/reference/images/show-image.md b/docs/reference/images/show-image.md index 3114daff..8ce2f38c 100644 --- a/docs/reference/images/show-image.md +++ b/docs/reference/images/show-image.md @@ -36,7 +36,7 @@ input.onButtonPressed(Button.B, () => { ### See also -[Getting Started](/reference/getting-started), [image](/reference/images/image), +[Getting Started](/getting-started), [image](/reference/images/image), [create image](/reference/images/create-image), [create big image](/reference/images/create-big-image), [scroll image](/reference/images/scroll-image), [show animation](/reference/basic/show-animation) diff --git a/docs/reference/images/width.md b/docs/reference/images/width.md index ed980fe3..41d1f6e0 100644 --- a/docs/reference/images/width.md +++ b/docs/reference/images/width.md @@ -56,5 +56,5 @@ for (let i = 0; i < img2.width() / 5; i++) { ### See also -[show image](/reference/images/show-image), [image](/reference/image/image), [create image](/reference/images/create-image), [scroll image](/reference/images/scroll-image), [show animation](/reference/basic/show-animation) +[show image](/reference/images/show-image), [image](/reference/images/image), [create image](/reference/images/create-image), [scroll image](/reference/images/scroll-image), [show animation](/reference/basic/show-animation) diff --git a/docs/reference/types/number.md b/docs/reference/types/number.md index 970416ae..8d7cde64 100644 --- a/docs/reference/types/number.md +++ b/docs/reference/types/number.md @@ -57,7 +57,7 @@ let brightness = led.brightness() ### Math functions -The [math library](/reference/math) includes math related functions. +The [math library](/blocks/math) includes math related functions. For example, the `absolute` function returns the returns the absolute value of input parameter `x`: ```blocks diff --git a/libs/microbit/_locales/microbit-blocks-strings.json b/libs/microbit/_locales/microbit-blocks-strings.json deleted file mode 100644 index 6e521a8a..00000000 --- a/libs/microbit/_locales/microbit-blocks-strings.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "Math.randomBoolean": "pick random true or false", - "String.fromCharCode": "text from char code %code", - "basic.clearScreen": "clear screen", - "basic.forever": "forever", - "basic.pause": "pause (ms) %pause", - "basic.showLeds": "show leds", - "basic.showNumber": "show|number %number", - "basic.showString": "show|string %text", - "control.inBackground": "run in background", - "control.reset": "reset", - "game.addScore": "change score by|%points", - "game.gameOver": "game over", - "game.score": "score", - "game.startCountdown": "start countdown|(ms) %duration", - "images.createBigImage": "create big image", - "images.createImage": "create image", - "input.acceleration": "acceleration (mg)|%NAME", - "input.buttonIsPressed": "button|%NAME|is pressed", - "input.compassHeading": "compass heading (°)", - "input.lightLevel": "light level", - "input.magneticForce": "magnetic force (µT)|%NAME", - "input.onButtonPressed": "on button|%NAME|pressed", - "input.onGesture": "on |%NAME", - "input.onPinPressed": "on pin|%NAME|pressed", - "input.pinIsPressed": "pin|%NAME|is pressed", - "input.rotation": "rotation (°)|%NAME", - "input.runningTime": "running time (ms)", - "input.setAccelerometerRange": "set accelerometer|range %range", - "input.temperature": "temperature (°C)", - "led.brightness": "brightness", - "led.plot": "plot|x %x|y %y", - "led.plotBarGraph": "plot bar graph of %value |up to %high", - "led.point": "point|x %x|y %y", - "led.setBrightness": "set brightness %value", - "led.stopAnimation": "stop animation", - "led.unplot": "unplot|x %x|y %y", - "music.beat": "%fraction|beat", - "music.changeTempoBy": "change tempo by (bpm)|%value", - "music.noteFrequency": "%note", - "music.playTone": "play|tone %note=device_note|for %duration=device_beat", - "music.rest": "rest(ms)|%duration=device_beat", - "music.ringTone": "ring tone (Hz)|%note=device_note", - "music.setTempo": "set tempo to (bpm)|%value", - "music.tempo": "tempo (bpm)", - "pins.analogReadPin": "analog read|pin %name", - "pins.analogSetPeriod": "analog set period|pin %pin|to (µs)%micros", - "pins.analogWritePin": "analog write|pin %name|to %value", - "pins.digitalReadPin": "digital read|pin %name", - "pins.digitalWritePin": "digital write|pin %name|to %value", - "pins.i2cReadNumber": "i2c read number|at address %address|of format %format=i2c_sizeof", - "pins.i2cWriteNumber": "i2c write number|at address %address|with value %value|of format %format=i2c_sizeof", - "pins.map": "map %value|from low %fromLow|from high %fromHigh|to low %toLow|to high %toHigh", - "pins.onPulsed": "on|pin %pin|pulsed %pulse", - "pins.pulseDuration": "pulse duration (µs)", - "pins.servoSetPulse": "servo set pulse|pin %value|to (µs) %micros", - "pins.servoWritePin": "servo write|pin %name|to %value", - "pins.setPull": "set pull|pin %pin|to %pull", - "serial.readLine": "serial read line", - "serial.redirect": "serial redirect to|TX %tx|RX %rx|at baud rate %rate", - "serial.writeLine": "serial|write line %text", - "serial.writeNumber": "serial|write number %value", - "serial.writeString": "serial write string %text", - "serial.writeValue": "serial|write value %name|= %value" -} \ No newline at end of file From cf3e8684d5095542ce227eaaa484afa470b22213 Mon Sep 17 00:00:00 2001 From: Tom Ball Date: Sun, 19 Jun 2016 17:50:22 -0700 Subject: [PATCH 30/37] all pix are 300px wide --- docs/javascript.md | 2 +- docs/static/mb/projects/a1-display.png | Bin 14439 -> 19960 bytes docs/static/mb/projects/a10-watch.png | Bin 16808 -> 16667 bytes docs/static/mb/projects/a2-buttons.png | Bin 13690 -> 14222 bytes docs/static/mb/projects/a3-pins.png | Bin 20002 -> 20139 bytes docs/static/mb/projects/a4-motion.png | Bin 11112 -> 11429 bytes docs/static/mb/projects/a5-compass.png | Bin 12415 -> 38881 bytes docs/static/mb/projects/a6-music.png | Bin 10825 -> 29242 bytes docs/static/mb/projects/a7-conductive.png | Bin 10631 -> 28124 bytes docs/static/mb/projects/a8-network.png | Bin 15733 -> 18577 bytes docs/static/mb/projects/a9-radio.png | Bin 33556 -> 18829 bytes 11 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/javascript.md b/docs/javascript.md index 9cb3e54e..ca3815f0 100644 --- a/docs/javascript.md +++ b/docs/javascript.md @@ -4,7 +4,7 @@ You can write micro:bit programs in a subset of [TypeScript](https://www.typescr Many micro:bit programs, especially at the beginner's level, are just plain JavaScript. TypeScript introduces class-based object-oriented programming, such as: -```js +```typescript class Greeter { greeting: string; constructor(message: string) { diff --git a/docs/static/mb/projects/a1-display.png b/docs/static/mb/projects/a1-display.png index 55da986bc956d085024f54f81b1e3fb3959f1e8b..c835b4fa026e88e0cf34d55ff97b14fddc33457c 100644 GIT binary patch literal 19960 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 WLJgRE3jwWdmn-_1Q=>z0)_(vSA5HrJ literal 14439 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 diff --git a/docs/static/mb/projects/a10-watch.png b/docs/static/mb/projects/a10-watch.png index a27b18917cb7c2b5c5b083ee15c153e23c2b493e..9781b7592b0254a749058161321d10a303cbb8c3 100644 GIT binary patch literal 16667 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 QXz=2loSJNvv}y4F0az?>@Bjb+ literal 16808 zcmbt+bx_q`^ex>X5|V;+NrQBEUm67IZUH5vQ@Xp6?(PohymW(fEA^#($2afy_nSA* z8OGuAiE}=mbM{_)t+nrWRb?4WG-5Ou7#K`BSxGe*7}!kkgNp(OK8YHnGX?*_x~R#B z!&FU@9)VvFEX9<>U|?!v(4UME!SAR}vbruXFl3?seqdwvuFPRz#DwG|#WdVMon>Jw z>TCO4lzy5hn=)^#(A4Za~2mDmsq$sY3*)p zb-CcPJRe^ZSQF`vQN^3$b2)h7JMi-DcJVp*`a7EwqaOiT2sP~flIFgB@98uW3~Z@qy66wA2>cfK0G|^>FHTpBlR9&6AqG! z^60(4cXxJn{uB@r5)u`K$!JPw2<{?isISjVPfsDFFg-gfK8Uf)qytSos2P(Ti8nTl zx}svXF}8GZaapV~pf(+mEP#{^u)X+8O{mz}+gDas&xw$lSXhK`jl+ePyzak8CgApk z;X64!g-Umom6yMH^QM%-*3;9I3$=b{tC~%5(g^YgS(QsIowu;C(21m!S%4zWb=vIr zpFbXo|NCCTM%LD-uO&B(Bhd)%H9%?~G5Rk83V2VY$|gYk9+NKGIQ5B;uR%nA=j z10T=NYyQv27+6^Gv()g-i8f{k7()E9!M}fh27mJj{CA3USDpR{7dyKca-GxFj@18r zK48NBI>RhIJ-tL)I<-$SQuN~A+%XBb$!ltB#Y_?um6R~&hfxOo(sxe?2x%>AO8$cf zC&()(l=6Bfr=%Rw6EHF{mBwfMdxjMi(;|dJd^*r4F*!L@xoCeo$;#&DlxUN@_Vx_M zR`_wzr=X@^t&huImgdBBDndP;$L>gYW)-*fw zKKO`q5hqpX7Sin9doC_6RT`PN_rr@@Kei+5|J@H+%HGvAvCAb�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

PXeecB?EI`r74pQR1)2r1{Bwq;DAI%S~xT@vv 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 z zCgQxmHTCr?(5raZ>Xd>lzKcsBtd1aUc(26~^f9j9lvI>j{9g0Gry>boF(ZHr2HCJ9E8Ha>~q)03i zG}d^xsa!6qg@bvcMjEtl) zBZzkm>b}Q1#ey9cxtto?lRxB6oN8C+hQ|jJe_TMC8HofAfd|U(8S+P7DNW5JL$yLq zX>hGgHcrlj^EE3ZJUl#52OUt1rZ|IU&>>6E86Fm$HNDW_m;A5Q_4fAjK1X+d{?L6q z=xze+Jm@V1=o)k~0(ExIMycej;DRjm?A%;|CX8x7(5>6r+CY*48iws+mDr$DtQFU& z@w30bR1_)}cp8C%K!bHkj$i{<{QvlJfd9wu68N9PUjZYaZzB3TWv;1JSMco$Fmh7L Kl2zhH0sjkz1Qvb( diff --git a/docs/static/mb/projects/a2-buttons.png b/docs/static/mb/projects/a2-buttons.png index 469445ab12cc97c1a2092d1eac026619c9e70b73..ed882419a64e7760f5433f2410e7ddfcf890c57b 100644 GIT binary patch literal 14222 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 U>qU3q3>}J!q9(Lj-U9xA0KrsDX8-^I literal 13690 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 BUt<6O literal 20002 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 literal 11112 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 QSH}{lA++K3FzZ+U3)p9r4FCWD diff --git a/docs/static/mb/projects/a5-compass.png b/docs/static/mb/projects/a5-compass.png index 644008a9119e85e2d1fb7b201d2e131c7220361d..3d7f865530bf99826c9144bf41f92ce812b4a696 100644 GIT binary patch literal 38881 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

}@5xmDe7N7Q!t9H5*O@8Tr;0b$rX8 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�UhwM$fg8n|2?_?w(oR>b^5Va6R(%c7S<=3ndaMX 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 literal 12415 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ˑ`nmbt1#Z@D>@` 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 S%ESLOKmb$MRjUWvM*bgxB*0|= diff --git a/docs/static/mb/projects/a6-music.png b/docs/static/mb/projects/a6-music.png index 2eaa244d206a7f48b3b4a09859ea0f78ac5e71d2..0ec2718c522da77de7ae07f4e56aad0901f01021 100644 GIT binary patch literal 29242 zcmb??^LJd|+jiX8wrw`Hjfu@q?4)thn2l{?qKVZsc4Mn?W250S`M&?c`@^hRd)Asg z`<&VPK9}xjH5FMDL_$Oe2nZB;IVlYY2uNn|iy9sd{7D)sGCueX(p^JV0;29W@iBM+ zVMEgEcx6b{JcySI3#&|Yt4u_%=enoVfRAoV<)TQ{^i`)&pOcT4s`4n7C`<7=8gRON zdp#2LQ`Mf(Kh5{_&2PyM_z)>rwHLOp9|)K>yv^D6oZ{i)qNS9GC*-k+;ww;1ex`0l>pX@&6yg*aG`zm?qr@Q*qsP7c<{{liSB)>Dak#0xs)G_{R-* zRbQj)jTcV+tjy_OXRA#Ex%}>PC7kYulkE0Oz>jYi96{y7pxEq&asqC;;*OV#E-c$` zfg>c|)Rfmjv3P7MB)!$ENxv6$Oh}yCcOv{m_XM4~uZLY;&f6-M$x}vq-|y>PCRp0S z44iv-4E@eqb`Eo#ReFo|w|`#|z=S1g8+k5X6@C$>-?$8XL_+)a3%VbX35b3;m4kN? z^zjmjqhrVcY@SmvYgyD*{J7+rx-#nEPR>61Iq^u<{puTkEu*Y!0Rpr#`xFO zi17CI*!v-z_V4zH?&fK};5~H|CWJwt{_=F;?j3FQ-%sRv-33z5$!W}&tzszBvX&-?{727q zf->tN$-0#jJ?^b$YhTx4{q3%VjD++$N;WJ~^mWH94WKRGtCO;{UrY*U=M>~A2M6ib`L;&T`J-Bar zE{AhX3vuOoF6r%%eLTrh(kN67(f~Q|E&Ig{JIITzGh8|j(iKk>eKz(;@$#Pr>B^6c zrwexSV}`8wnq)4)b0PLgORB*im*+Sk2ED9r_k*u@;;L)=jTN>FwxPo_p4B9NR)Utr zjtL734_jT`Kx;LE$O)f!>)YPlhhCDp6RADsDJqYdG9|iJzPzNw=t*gc3Zm#!9~!2( zRk-K6V_Vtd621v}F|gsrp<-D`2C?Z6&*!TU0lUoWq>*3!=6vKweIqW#LDpSLWlT!RQd!21Xq zE_wWdly6#T>w1K&!213*z8R$WAFqp6O~FgD1y}qi2hoo@;qA~z*O0;gJUD~A-JEZ1 zaIg^LJB;#cMhsU_fmWYkV#YyNiJe7tXeC|>OHt~+3nJ~Tvze-XI~`ItqWV6^Ke zgwQG?=mPJ6Lt|;rn=!hICu|&=!a7YA?FvckC`oZv8Mi#BA}tIAOO0L7sKt$NoxwGU z@uRT06F&vOjTS&IdR&AS@Lx8=?Ut9A!Uzwt;`=yi{5peT|w zn{%?K9Qx#2{CJVc-x<9jb_X~h{MxhNfZsksbQ-%yU4;5N5XYP$I>n==p*vk3q-9n` zR4{FsKU>>>lb`!gMBXO)@o!pw(;9S3QZ~AL*yWF^?t9_NIWMmgkO8^ZgQ#z+u#ZkI`+_Oop%qDaNW=66M0vHsC3wcutiuc zoRaR>n+Z+-lT3>Qd8wgu(}vJWg_9^o^QgEPRJa_+R=pLoNRo?q6MWYW<1L&0yo737 z#v&374Z4h(Z3#$i>ITR`EA)vS2utmQ@dv1fqMoEw^BLb`MH9j$aP=(xm2LEN9Fg6? zXgaumsMkyPW87hzB9a*MxA5bJWg&8#iOb>*Ge$`Y!P`wnuaJD8oq`aeD~tV2P--75 zda^uZC=TUq+kHVrzOUWaqg?l7!jgr=%;lao4((+$bRDmMwT}KfNGABLYj!o3Tv|^a zGhfC_p)|V5UUuJL{g6>txfjyKkwI;fAZGaT3XDb@R+qg-h1pu z(?whcT>8lal0L9;b&3iYCm^+`?{klY=p1_Pmu#ghUB2&OYuA>R}(Lu*9!DcySXaVqO#viD2QBpywHTmT@|MYQtiSydkoabm&EAig{#sI?n&VDQBdSD1LhEsZIdwW=q%=21f zU}?x_^=ebX!YyfNiDmXYiP7RaxknoA+g$fK%DY4?1fj z*ZXg(`HELn{4u-C;ZXG_HjkA8fms%8De&Y;E8du#x{m}qDnnzySQ#F{OwF*&iP8-- z#x%w6vd0@y^~ujr-ad<*xovcjs)Z#=`1NWar4v*4lBd0@FDYplPYQ3}e}HH!(XFcc z@MGAAx`u;LOi4~5F+b<2so;&dBWBlVb5M_gX`MUhDwIr#wHSZ-tN9vMx{S0Icv;T< z;6s=WKe4R^U~5YVt7JeNM=lJAHGVtMskrx_=O1VvUI@h_Pc@Tq?R|Stj6Lt7VL=#Q zq7XS?P?g__aYY(b_3H=q8|R(~ZvRu!SD9CYXu|k@1d7^zXl*O=$ICjgh90U1qd49$ zmiFiyV5xY+rITp`kNwl6jR;rw9?2zsm)L8w5eJj5t#C&C9q{}l66h8eQw=K0o)6<` zmmVYRrL7@Mfo=USu^DD0c&z1=R%N_thOLr2pm;mFd~CQmhXy-k_vY>Wu@~(NiHF+P z-6$#zr!>PF<3Z{%C2`j`^hJZMoAj&hBVo3Vp!+kE_$r95CSB51cy;`!F1?Ju0a1#E zO6y=*;}4?x9P%e1-PzSt{?;%CC{ zt#*n31D8taY-whI68t#xL(bM+dBbU4S9zKF9y`PjVY4i0jyHRp?m<<9UU(pputG&3 z5ygKh!mBBU!8c%_6riDV{~Liv1|vOntOb3&T~)#9ML+L%HmyfiUwxLLR3w?;k3IC@mu;bL9oC$=2u`$CrMhN74_ zPqNbe1YC8pDsEnixuld&b@9H&m(7{C}{2X4s{V6h;Mp%-ym zN+-$C}^_jM#xGYP9s`|hldU#qDOk#ybSb4 zl!`G~94p`%MuF39)HYaFGoslKZKf_;)0Q`kwg2lUGy5=-(BMW{X(X1X9SYR)U?Vu) zztXp_O*7XLylA)hc51MlEkl>QQVB=_#JfTliwlsGJI{|X&fRfLzw>s4LS1ZbeV0kpp~*OiclNjNT^KF*?i#bLQn$bk2_{aZ zOs8pO>S$h=+H?Gi2FB{n<6OioG(r|Q1G^^csE6%)35sLR)=+*s22_zUKGS|%DPCIW zHJH$qW7WeR5SLI{j#^Y9wlW>QXJItI*J}fK(qXS;ev7=EU4@|elMe+dCM(>dTr)E& z=PoBu&jpqfQYq^uOUP@Exj>y8_G^GBqa6#(mQ=0Q>&Le}jREmi7;@vJE|*}IF`xdY z%pl~HZMVndWo>!R*tx8+!OX1GLRST=2>A0l-kDl{Jsu>X(mK6jQxMSaUhuNv=dNhC zpo?n;fj0r7s>2~J8&wRN6iBCUGPAHmn1CmD&r3}snp6Ix8qDDgZE?x?{;2f>na56v z=MG8nH_UF=DlUR81~O>{A=PRu>??IoQqiVLEunnk0=TODrZzhz_(jN*E@qKbmqTz~t3LNOCt^U9tYukCmsZs$hn{Z8BreQPiOSRBZhmZT%@uT7-y67w zTD~5)1-?S7(I(JSuVpY^b>m37)SR(S7BZBkimsu^PmTwXoiMDqNmJVdcm^f|;mdSg zizm}cWbK4pa%M@=9j%{)B;@%+RM)z&j=-KFP?+P&FD+ArjKfNpx<8*>;;M`-;CRbZ zv5Z7aEg+Vq6~61d)nMGZUK0-vO~flW=cHOI7aC%Y72S6PhlaN%emqP$2Xe7Q?^dtVNOmHWl*gd( zA|4#@NLiOJ`EuFS7;A};vj2&C(U=^qf$1jSHLs~{Rqz{CrY#?g94C>WxsFt{&<@TW zRTuYKJ@ZTqU?*>G38leb8x;A6T2vP7*fxRV(8e7K>G#9-vMSDb;V&s|?OB!;9hP8r zDl+$4j_``O6=>ae4ktY!WGsHml75%bsKk=H0sZ#eImmCE!e?cGG~Kvn^T$@-TMGW@ zy`(^bsOU*$$s9GjG=NZ(8(vRhC_cCPNhW@)@Lb7XU71v|hlInD>+T^nhdatlnb!O$ zGb+#Ad|sI^FRE@pircQI2qa~$P{4oDzDIjFT_D={-)wQ&wr+_*W!K++Wkau3D=hFC zd>Gt`Bok@e^jcR2wr%-h%|6i<+p#!h9Nx@Cig@gT@#OYk%d&CT-LhSr0HwOJR9oP# ztmyOXAeg6q#Qe-Ie7mapnfE9)GY`t}}@|8Y_zLtKMe7f9z3DXesi z_y1cISuQop7-h1GAWfV#A_+hvN~vD`*JUUsU%WY3Tgu$Mi&HPhG-VGuA%WW0##(VZ znlO2Hi%}&IQ_{505sx#Ho5k+%I<#BDC(Atd91hu3RxrJKS*#CCi$Ta7`&EjWj!LDX zL0FkmO^*NHGAx1CavbGTfBmsWz_P6KbiVE^h%CD?jVQLW+4MWr{JC&iAd$3sg zyZtZ{^4W=f@{<$6bZ~3R`Wp3_*!^=18*v1cpP(8;2SM()W9uqy_gxvAvMn;y8IJ%} zO6s4sGVFB0fJ3eV1i!OJ*)>NEwSbip3QCU~g=hnHi)M0`1O90r6`geoMSBi-m5A|d z@T4KRboBA!lcizNL$%Zq7u~nN&A?|+@!hqyZjFj9YbRzb=lQNel;mNYr{0L?2%aaj+&yKb1-Mi?d)T5iRL`m1+Q^W8>!@6=do7gDTKF8zw7S=rzRmeiZahcb+hd zFp6bMp|*T*Nw^33ru1@{=c`D5KP2{*#ZY3ndSKLUxoE=>XOi3O359p1@W0STE1cBi z+4z^C`z8;WB1>fld}3d9O#7Xm=QUz0VGHtX!TH83O&{y0LCTxset$;_H5S=2al&{Re#FbFE1NMA{i$g zCM6u>)qXkMSs>h(WD^G+WIy_`xH|ov`n-;?GDnfLnVrE+^zKu@YY&i7($U$pxLIL2 z{E$6(#LT=h>q2Jflcp(`7=YB1XX~2&qVKXj6x219ePF?h3E6>bw(>Ot(g;h+%&c$P z!HH4a_`BT6CT{1$P|#wHaoPrSQ;VDekv_6AOU{zh7cLd+9Q@u(>=a_@eJk^HO7)6_ zeo#0f9$hHOY5PPBOQ-6&gA7@;`*{tV_&t3DjVYTyJMi1B8p1?8XV}L}?}uV^G|jJ* z&w3pDm}87fVfD+Q!1unp;A;|uKrv_#il3rtx%-f32Mk7x-H_<3hYwT(Ct5k>K$oG;Cl>nbf#qFCuePjq=68sluc`Z=A`kLKr_AohO)`RF`1#cPWIx^KPg zAt9_xO=hN*k`WkBshTRsUorV4&rXKe0helXx97P%`z zD-)T1iu~OvCCQ;W%B0x1A!{K4bJ4E z_>WsJ^iXA}KBuNCOJg)9V2nlTZh*KjLPj?(^@9nimD-C&gmR`L)nT<0C>hCc&K(yI zS*_zr!%^kkb7~~duUo)yq1LI4*1s!}j!a*tdL}tSR)+eUbhT_y-x9E^a*G)Vrb(sE z7^m!IvHMxN&{3Df56G)p!O1fEH2ivD(JLqHSaOlL1H}*y>gMPAi<6L^Lnujm10)L+ zC#HUWYAoh*0!nGV>OW32iKDYYSFb3}-y{XzmN}6>M(7n!*Izu0&+WKtDJe_1`LNXO zj?^JMtq!v%=pq1|P2mgOXk%k1BH(I27sB8}n<{vm^n8aPjD(feedDz^`DcS3;BP6jF6a#P>;WnsFczva%V%f22P9N%FP;arBH%5Xo4fvx|Vls~iWti=#jXCGu|vrUL~l zp5IURh$LG|6pLc=9+b=^+DH2l>7984GPFc?Uu-*mI2G-=c`m{N(r{9r|6_*3b8Q$l zPZZC@&KCO#`A7YSua-tvNqMUwnzUn+a;PSbnYtydn-D5hp4FegjNg(1oDs>)HaO-- z5)g%h$=2b7!!canxw3T!X6Lc>P2QcInLV^C1UForjH$b&iob*$>F<67I-cx z@dkgBNLk(-w%>0kmfBuj2bI9zTg}*O{W$+ax=EyQ!JT*?6M}`C%;`&?uM^UjG5}~& z;kiJ{n>w_mnV@S9&5Y-aQYoq(q*uU|Aj)&J(&W?>(i2mw%XyaU9vCNJgbnw6+KHqy zCzHmpYZ&0}d26DSRS zGPdqK!kB*{nZ}2y)bueQ@ES=>edc6}F8!2OB12IH=>0$GAXwxdnWv2|5ptQpXp%Gb z%P>{5`$+&z!%S5vr9KFNIxz*wwjIOeLFftZAgIz)0>#UCgCS*)YMzZAOygJSF>#ae z%f~B3lCTB&sBC|{v4Mq4v-+L~g>`x#qt|M?R?q5?8D)^#0u2T64!LDG7978zkV`)( zuzJCHQLY62j@X9#_X?m2=A05=pi=z@C#yUu4kfxC^ye@1%z2b z{4e}s{bFFjSw5I4Z+u@Nm6~knKeW7fMa}HScy>5x;sqlFb*PfGW`V!tXXJ&f3MZj? zhoLe_m>Da>29IjmhN5*Z?UI6B&Sj-j;ZV%;3^?pG;GJ<$=qDc` z7~wS^7iegCO)s(O%A&A|WJ!ZJVbOb)BVaccOch9T#hSod*D%pfC;D%!;p6?KV(1y_ zsQ%j!Q~#%^)XX*ZDVBS5XTQOCt=U#ID@J7Tl!}ma!=D3DQzJiA&*zu{Thf zLZLbVA~nNYoCHO7-VH&PZ4u_Rlq@BA;Z>pd_pi8*!M>HxM%C--V}@a_;eCLgsi6Vh zU~dTftE>vtalQWm(*Ul4LlXSBMBsz)CY%K?t&I}Haa(9}OI*kzZ84+K6_7&S-o8Vq zepZzFKFz^(@*5n(e2apYBd-9>U*(=wr&_I!l2>NQWH8J%y03n&vr8FeMo}Y9cv%>1ST(ish>P354q0orpB)x1(Gs@9Jud- zYf+bXMR)Kv3e615yeMo?uqhQMvcD8>y%)ntH=?h>PEVTD`ey6p70-!(pUXmzzJ&l) zH^E-gzzH7`$O%Jhz{b*pLr@-KL9?!aIm0@dmeH16o?yisVi>bc-O zbef784*Mk5?V-kKPwo&>snFJEwX)=-uEzuS1+LUd5iVHBPcu1C1D0gv5>Y^BXc}f~ zTHqAe%%)>ox7CnzJ5Y_C?#q&elJ|SGbQ8t(XdyzJ;Uok@``7`Z1eciAmBP;BODO>4 zoa6=a`|d>qQ_0L_4Y&~2NL>0A?D&@t(Mh+eU!wxPrrIe3mfW#bTSDIfg%5dr2~I+n zu-k(t5Or<|(f&%UjYbgdKe`a_)9&Z+Cm87TVhw>1$_N=N6p5XCB$8^&r3EnqkdvEU zaD$}nA7RyD6mxs0Opku^h1NOzgPx#aoQ1`d{JYY-6@;ko_SXA*qz{DHG>_p>DuU{xrni8?Htb^ezkzUv&v@32{AWc@1_kZKexp zfkAB0If#$#^=s25Sa7x3Rw2HESv%j|aFAPM+aX-(Ttaj0cH2EJ{N-P4ojGbQ{f`89 zh_;_(zCNs2q|7n?WB$*Z>K5!4XFsr4z*S(@bq$h)0gX@lyrLz_c@+l);)T>Xzj{cR zgr&XB&nb6O$EG_}8I*Xd>HKEoX8&t=zTupgN(2Ukz7eGxRhp{8JXK6Jgs(@@!|y40k?s9^wv z=Q$14IQBaY+mfZLzh9Qwi=CH98|m$DDgPpl{vQ(sYX}HnSItw`x#ylylZ_U7b67)B z@Gt1Q(@BYmRoZM@e{o$U5Hmcy(oRp$r=emC+$UtqZ*~ z7uC=!HQcu%DVe#hk{mQx%j$MkBXQRIE}*$gW7mxsfPu@eY?Nl*K?FFh+S!39f-g1k zIY?vpZFv;&sY#@1PD35a$^BHS_?;PDYXE{eHv-*HS%yxfGfz~_lA)(Df1mqiMt3Kz zD`RCqnM24n*2E54njnJvLOrBB563z31MC1aBb9Hm=lOWQUXSSfhOjQK(MM8{SA;n8 zLLm>gNhBN^OBcFXuCDS^8+~?-*09zwFAM#u)W+7&xu(DC3bsDIiG4OxX8~0e;V+RY zG8hQyK^N`?NcDc3r*rSS-&bWxJhfuv)g?!PQo{HS)m{|R{yoI~<1CwC_?*&D2+P+n zY#IzKLxSKQQ^yX*3gD?5jF93~en0fPv|*)GT|x5r$Sw{|!3F`P5NzuAJmCa(cJj1>*L}Jjdy^OauV)Pd$siIKPBV4gb2w7Ou}KR6IvKJ8 z?#RW@mx~=`XJ1V#O#Aq27!V;*|IJ?6(d1Y!2wSo$MW!oKCSBc$VX{K>?f44p4)D=9 zJrMnxym}i|Flc>IsoUf#_%|sfHCh8;p0nSOp(90l7et*91E6WlqhU9pt45DlHngm4 z#>A);m0;c}>3*;Ow8Cda_*SFRs*FW>6U3-R->-iRe445IsHl{fbMp~Ey{(cN>W&!xu~ zKlZ3J>X1Fem#5e+FG1V+xO{|ILHfKR%N_d*^aVgoQiqJq%5XRn{YdpTMm0_;5jk0? ze8t1H2twf{n4|aS`&|%hJukJDBYRo>5Pp!WpzQs4yF^nBIMJNXL+Di3jkiU~qdiiX!81!Ejf`#`Hqjr%bUi4eA+8f^~n}P{k8CrWt51y#;^hsj6);!dR zX9i()x-5_8&uA7%`!UHGProb90l;8Yr#!CVwO!0HZP4A~H%HB_OK0S;wC+PKW7Y;e zENG7ON5GlIz=ZJws5umBQ7hZ6c-~HDo8qcEuDDB8nSx4TTmgdLUK_IeW%E*n3Gye{ zp{k%75jZHYda4tjbW_IrFQ^7j;R{1+9Mf~{z)$8$X)TU&0?PTF`y#AO@g6q-cZ21O zIP7Xt8nrPiaq;u0tO(|(!=7ZoJJ05Uy88YZqWOPF4Ab=E?NN2`z_UqP2*wgH7c%JJ zr}rdm)R(Xlr*XnaHk;KJbkW3aYcAxvk-s;y$6Mu8OzTP<0(LU>-GVxeVxnr znTpyi#=8Up_`sY8uP}!*s#{DT-q|wd;4?I8hF+vH02!^)lCr)nY=pZ8cQO%lD46~E zlkeQRYCQ&v-J6{NHX`i8DuF?zYA@mY`gK+nix3lpcea+{%?dEleNa1(dn|W@l=vDA zJz)%E(yXH%?)(ubQbXkJ3p7O6p5HqwN~v57>!WV7jgrwyZk7bBh)(qVF|SK23XpUV*1v5 ztzcD{JKV6km2v9$p4|K0Hpw&dz#b!ZLam!P8NS9 zY|gGydqD@sm6u4jppcLbeNt`NG^zrw91cbr61q-ZVd2piblLCxFBC}5zgV9 zVPI$qa`szap9{gp#%Tk2@Y)a;QH@rOA2FjU=GkAe zVAgnfeG_lk;AO!jI|8~*f4csgM=gfbZu)J<4PTsgJjj?~T&ED-_@0ewmJm*oDuSQv znL{8Oa>N_9!MRE14sD$`Nm+3jGH}3Z0Pp8jIJQ=+d+1U5#pAkjZv!}mK$qd7cdBMi z1$gnfN8*ip?UGM7#ARPKFQud9C`J%Ve=07e9Mk=w@FpJF=pmEn{&v5ts&}H5A^Q@i zM@S_?vm#=&`O^!%o->pWxRTu2=2O&eIwmj06A_sYuNe2M?+cCQuz)Jb0HM%AO`oYA zRfRVDKdMbrwHipy6_#R7qzK?yp0irzssG7LQ~$}Z*a=)6hf-!{;wj&MIG2JZSKskU z%Y;9nil$P-19myCFvb#j@f(jFGGh6{7oRwxgU(?>`!Hp`O>SkoeMk3`Jk1JH;TPK$ zyJ`+b_7>LG{l?`PNw3BsgO1>2&&Msl%d1_y-mi|g4&|*fAAkAeOunSs#R=aekSFxB zZO$`6t5Z;oO)cqA(s$`*#-|ZV*itkKz^#ia%_*<$9ue}$z{-upKtzKKoI0#1>$?m5 zxzN#QXumnFrVuP0fh{9j{vU6RLQbEV7x{S)gP+|0?RPTMc%)ESd%R>3S0U64H$%8# z*nld!nS%)4Yj4U1yBz8*I#O7?DjDhuLV1XblWu`0iLyL5%yzb~iGoqhcH!U{DNOOs z5|8y8Qno>46@30nSEDY@A1=c&?HHhpUnSf61U-#sWW#g3*;JIt%sro>=OSQiIZ`0Wg@vd2aj4DG__MU2mZxyOkm8GbP@K*t3 zX8_`JO?xNQLXXAf_Td1FHAswTb-lZ(sV3OF6!6n_pYw#>T*usSmyJj7K0&CdIyD(B zV+rTkeq)GJbJNg|MuCQmh`mjY!WW_JMShqcw0c@TND(GF$ zvp)h;lP_gpoe1Ws(z<(-dTZnF^l8a+T8zM&Fhk|anLuJ6RLjN>B_$ub<&v+_#H1XU z1$bQ7`tmLynRwUlwUr;A=D}yIGEK@-&}szO1Fr6u0ye0=l+0c6Yg>a$wE5oO?{%V- zUriZzVev^Y)P=QD5CP~(DO$P4j%YNTi(qgW-G4*cXCSpSE<0TpF=810Pnh(!(n2x0 zLg;|O7EjF;+Z87|W@=lfWVn6ztZ7=sz@^~ZZgd(E<;uzW+GJbr+xf9i+u!I0kDE`1 zyz?g%O{GqqZiVIcY5+}DZ$NTAor*CxTJR$7teG7HGNG40d1^}Cw^O?b5Byc<0WxrW z>dsqRs}?(bgtWSpCDBM*w>9{GQGoJg483^5dB~%JpunfkJVq*tnx{lkp0hWY=u5eH zO`qcm4>fr7JE^!4P(wCDf%LJN9A^n^BBXl-nI=U~&#rC@-nq|i`_Ljby|;w{<h#`uoLa+%J%lY{PUsZZXN84<2AS%%gayV+T1lA zHdUzp<7mt>4)Q3Bs{W5Md2#T#7ojcR%lGR?Ggp6AMJ}O=$ico=uJRFt(mwYj34@~8 zEQKQD4-gS=(lU6jj+$j)`VA9EP^Kv8Zq&``g%nY0FBDJI!Qb}YEnYoJq9NJ%KaRTm z@lJpzdmS#?$t)lxa%#VLE^{U(!4KzlvV{iEa$-7PhKOWymtxKdg;^yVC1~Vl)V?1n zifAHwzr2GI)bq9boGb`M)+A8A{c4M?-avvR6cu&HbHP>PV zQFsb78-bmwVcFQPtfWG)k9p@a>-4}#ILJ%^()YNX+UXX}#X=SN>%Oz1se*ia*&R?S zUyWh?C2!Ed?1IVU-+04ewms`x0pUD`KvS+r3}p=x*D!YLLUzdy5rJI4i;kU}2{zS1 zO{h1y&crP5i8%CMTBHfCpFCBFIYnW#1Iyu!YT%cW58JZf=>Ude0bXcL`0;^}>61!> z^@KL*0~2E&z#%ev2y5q%=qU1bnx8KB;dFjrw)ZQ=>+SIANCc2GPRd%(vCp7_Pf1jb z2+oa>o{4Tc?Nj}gC!pXYd0nyiq0GQ{B$eX@&)fn4_(yh2yv;y@tc#rEDJg5a#S+@K zF%DVV1t&|*X({eZxnKhEft~ zS;Jp8e(SwiMEHuUZ)nNM?Q#AJhKyGvKFbKLr9jY0^^Vyo5Q~%)=Ou-#+v};mg_M}I zd#I^@94$aDb5pjLDFpcu&HoSd&Vr_DZEp0mKY4U#hSW_yd~CJA%_x=TO~z}nO5!T` z*aiva6)m5lCdg2AXwc=lNIc#3eThVRj{Eq}Wx2QykgW?B74=Cl#IO z;E)Fk!@!jiO{Z}@oKcz(zNA=RWbHtq5!f?cZ8lPCjLy4G;mda_3`T@a^JWlc7;Nx0 zcEw0!m1O=iu_KEqihoNt=T!t*{?&mC;p{%3-WQ-Rx!`y-(>Q8Vf=)Tp2Mg@_T@lkO z==YG@um)T;yI*OrmoE0%pjAa=Td~gBPw(JWXv9Gn*JvXubM)X_`>(_!u`15gbGO!2|nhR+t!Ff>V z0=)|L;#l?tJ(HIKpha^fIC@#P!siqnbH0}2jCk~VFn2XEuYz)v?`@1IO#gi|)XBc? zLKU1Dqs(YXLh}_@)ybDVNk){_$ZXC?GW>o3ZY+4a`t+8qqH;*CyNsyb->Ykc$%QT< z?IYT1pMPCdwJamN^xmKE+}HaVQBn%3AcnOA%_dlBRW0wCa4eZhriB}!bBr^`zfLd{#cAPv<}els;|uCYIyMhi*^ zh&c5Dr(7dU-fuD_ZBHFOX#O7d)Xs33wGi^dAy6%Vdnme^b0}yk<^f|=qX{ zW@$c55hxiZ6b?UMyRRlYZu<}249Z-tI=#IQ1A~XWE;wg*VG1f z*%sZpD-b=2Go9AK(X7P#t`c`U43saQGrG!#5ws!>~%JGXKju+~hmY zr!1usBKKFf+dltQgT6~2t={w)7+6EsKS!a^#(%zqvrt73ffL)TwC*LD(6oD5E9@P9 zb+fnxZxZ$XEPj1?^g9!Wl<>p3j2**T@%xn#qa%aa{v0B_vIS8U=w%sobED=`8vBjg zn5mLUs_cD#*dN^G)6G{t_hfJ}a@m&SP&rF*qSsSx@~~D%x{6%v29xz#LY459vSSwx z!+;Ozr|R&2qNOU z!S@)o>kOorO~C8A2LWfxLiYAob^t6+66b%Wh~MTEwD6z|&%v!bH7srZnSwS>nFQxT zgxhl;wQv&24JVzBZDC)*i8gOqD6Hi>{kFG+DaAJi8fMB;o#hU?ehph0xF30iR63py z$d^>gx4g^(CT+U*9UVJmHCv+H+`PM?d(NHwMlGB5U3H8Z=+&t>PajS;rV1xz*l|kV zi-pGrnI@sUI@u8Xt?jX=M=(Nxy-wosYP2UEBrD%LJ=;&$?CS&S0~&Bb!}NB&!Rgy* z`p;}!c}Rr)A_9}N`M0I{0@D2JKOcBYfxoiNw%(TDxoqxvC*p)|n1!5&8FW7bww-NG ze|{=V(=Kd3%O8QEmzM7_E=HM5*+7<8MZ;RvcQ0KLxRC zT%(|>9|iHQoJBkFx-v?T080}bDLzWVDVB5gHTwxyNX&94dik)Ts1Y@|R7o~gWj<51 zz)%Ctdp|8%k=zzN9~)^WBv-*X0kWi6-9_9{vz|y{A)$cqwEm{_9K3uUZ{u$=%`frh zdX8H$W?pAsxQZ)gQC4_!C~$v+87DWz-n+s}9i%WDAEUUuiCrXE=0?w~Az5)3>}l1ILyZFk$Df!nQ${Taz+O=Jjk36p#^Y z_#y?s9Kh)U8Eg4hAg&e4!3;haSpDnR3CD^ZFh;@)gWlc#QhyVCwe?a@kbfK8(r=*? zV5-ZNymH3-UlNPt40VW`MW#^lPQ5rf^|M4~<=4SKzfZXS$9&-(Si?pCa1 z?9#!YH*Fvua6$wZ;bb0mCVRX<>b>D()BaQ(JJ9_%NtgHIk1nZ*yY@E~=9iIa5=@*G zKOF<%SDiDwn!$ID8pW2O`7uRDC3-aw+?h)2I5b0E*Z@h{g$2`{lrEuII-id|EJ=#r zvV6dQ-{1krv#|CSZs}j_)T^9*GKlL#> z(sP?MaGEsP0GDH?_%aR2GENcpMWsrbin`4et-Un@6-n{y6xzj9D0aWHkkxpw_cMOp zm2sCWeycwjfPvGQ?W4p#8UgoWrIN=^zHS%(5=kmk*-U8oMyAb9ucdh${3ieaJ-V4h z%-VYfa?xqd8A^&++> zsie^15nNjIZFC@%x4*^CEWqRa;ZzJDJDoJ(5OTS=sbT|&=c(7`VOlJP`Z0I32{mN6 z$bN1=HT`Q=V9MmZus~gS3e8-=qVAZ%lpci;TRP6(wh`aQ-r^UN#UW;EMJgJhhnyaCvj|{e-wGmgFDQzFAFE*zBtTXw7?C^g3lW-We$^n%MVmtZ=%|<~;cFbdvW$0%>FL zG3AVv{|%NwaC;$in?PtOiMwQ(|97t^B`+>-uwov|GS^Cm=t)zqk(T*2##Hj=-LN;0 zqtn%9k;q#n`RHZ)al+VlpuP5h%D{w6U zs%3?pxTTi(11C4giMeZN`0GxN^jE3n>ml1z)FqDD@RP=htH%1 z1eE;}e0ni5bqXg*2UIa- zMvfNL#fc5^arOAN5mOWPG7^)&8uC>kiBUHiXA7Y&C0Az+BYoMEvZPw07|MUx+nZ7x zo$VjE`7^)#O0Z*UA*GD0{GNf)M{I#5l+YU=g4#?Y-feV4r_I#D(2i)dN|h^WbFhUz z`fSPb`*XQl*OaTI7Hw0tgDm*~Hsx4VQ;*d z^{0q^QL<@D1x~LoRo{&_ScBiT_RmMGB@df+!ff#~R-T%1U)|K-wdx|mqFE1MG0ZRc zZ9v)DD_Pqr)VfL@k{;o#l`<7eglJx&NR?D*NHjE89zbuWwr~%D(!G8vSpA`lapDCT z|Ev&eCFJ2hZ3U5$gf)twx^XZ6f%wM4DPuwQSoh_*kbHcS3FQm}5h3f2jz;H}cNwqB z0*$h>hUVXJ@eDLTV4VW=^sPBhy=dcCAUYY3c2L+N$qoFRE%j_=T&;)JRM=+KwI@1f zuHuS{(LdoAUv)CD2`^OnhViboa|W}&ko^Id(b#mfqBFj@=(k! zkfb8hMACqAUg2Tqe5olAa=wjT+w0$1&hv_RV#M&im2kb~m9Xp?l%nDIXRSsD z+J;x(RmaqR|0b5^){d7%uN@`xFS9ak5|uM+j2ei^uI40GfdWZXgxWOd^d-b6#9Th9 z7CCRcfztzg+rqiXbRo&xHh|TkJl5*3${k+R zHe~1wuXW5|sditVhgY@S_3ClxJ?Z=s0$z2f=eQ&TY)R6#xRsW74ryCh?o9)*MHh2glnXV7DqKp-X)*Ru?jnBF|VvZ^0;2cFeiUKeV$ zVG*)GNz33N4n4h7ZMn>KJ#d!G z%rm)_K!BiZHm2D>JxQxWioo51M#N({mwjAM>Y^#5(67Rmo2XopH#rGIS0s5A^qD(7 z{#$BA5H$fRc?5^3Y$dxtTeIbT(i3rqsIf$9!c}H|);e^+{A*gv)v%Y={pG|MG+=Yt zLU4J0p3P~9FxH^p|4^!{&7rxnL%5LjHGK@}{~9~Xuc+Ry4~rrt-7O*AE!{QrNcYg) zLxUil(g;ZRP(wFJcXvxSNFyP?;rsjp&&yeB);afC>*U^_>)PGY!Wo!{^$soKD#6K2 zomv$14mscMmw61S&3J@4c}HEU)jNGIH_2y_<&B8pZ_^-;jcwbol83{hQxDqt8jf%6 z7_Wju&V9_)TEBhiSWfQxTvtDdwcVjj^ zmdz3xXR6eg^DWgS{r)6Y+D_SnfJ+N`R0aLv>3HQ@byV&2?$?Tc9bMBq_!Hefp?qzW z3}xn&78)pEO3;_#p4Uh+=Tq}2wk64SNhE?Owvl?J(uVIFqYq&) zh0&t_w`T!wf6P+IBsgq( z%m4Oe%S2+>P?7&lrUq{9Q;az?o+WtX60d$uyrI3ZhqH?^mv2xmE3Mg~yvd8HY8-y<(JiYa->aj%TJ5Z`ueZse7cNzSy+a95@fAWOZ5B1rekO+i z0owlZRzw<#4b4`B4tmMQdm^PW)@USlP;u`Q`16U%>WvZ(PcuF6Dn6eoMV62KKB5D) zR?%=QBC@?mc*8uR?+AN&zlZ4Of3-g9nynM*Wb;{b{-9c)>i$XmIfMLXd(vB1*$d+w>t|tg)7^Ds_=~a@V}a z&*RT=%?4li!ryB-O%lyf;u=sXI?Yy(&x5?cc^VWGud_1}s_yUl?r>J1bjw14LRY2= z)rHwj{t$wKRxteIvK>MIx1P`x{@55~b?DtdJVRhtY$JGqdY)s6EBP-6(M6NILRg5~ z|KgU*vJkmSO>E-X=vVtEq;eeF02!KHFZXHzEHP?sxxM=u74>&ZmlI{-3op$Zz;Cx5 z)AGn*Nr3AITjrGrcwkS(Q3o8~Y{hHe_X34YV%ERg zo3Y%UAmgHTqv`cK>@gZ~3Spl^kKM8_%>)d%YFx6{ZHMIK*;Bh~gyhNQv>W0d0TJDt zR#!^HPl;!nk65{Hp5EnmFT3r|bpxs=RCpfpMuF4T>RNH4T9-?p?xj#U>9napC}A8K zff6?Nh62}PfVbp%Mguq1Te;&wp#9|K78mQjqf4a3^BrQ_#{3zvB1=cA z7?-;WNSX#s7i{iyO=H}#wFUddI908g?fHB^XUb%d(gj3#mvQ)YS;Wn&-$rN}Pt;nD zq1#s0Ym%-OyMM@s6&9%CRMdD{3*mahiDl97;smXc;ZQ%sv-X^L`njScnWD7YNz-k0#9xB2eWv~`s~?62w7@Ynv!>XlihQJ9 z{ic1c%T$5A2bQDAM1^fF9K!fjZo47UH6|m^scN<$tqu6Dp#T1n<^pNMkxY}%mdRF8 zWRas!f3C<*KxNuZQky?iBX8#>z3twM(>qSk-E_45i3+(H%L7m@~EX zo8mfllgzLzL$l$znkbF9hw*QuGIwNIlBKLAKRQ)SS}W9p%e8QorL`lw&~6D8l&=! z<#dl_fs|^108%563i7^GOW#?#>3%EfTsU36n&9rgs_#Ym)(#;Zl|sdVWz2$E*G;q0 zWBAg1uW++yanmBddL^lOq82bo5jFW6nbwk!70DqZfY04f!pG%r)CotFWU4QAKupGXW56*vpz@q zG*VFSr^?i-CV;kiXnC9nXjad;kNwVkB`nQZ%9RXe3)0tJSwxW$iO4YlqWiGFb%!{G z7AGF4-+rh9pw#ycDZj1RK8;h^0b-|h5l zAh!g@47xvvf`jV%WbJ+OvN+SI1#S*H;v^dH_J}|IrSj^WLU(5aFP8b;ogz%#3uYY? z;1BZokROp<*pw-6V91%?w&C>%)b0oGtBfKwd^~A2s(YuG-RRr2jZ6~yrSd_xNnn0A z&$B}L{1CtU(=8XVdFpSneb5;G;{~3l!0%fPI zqa!u69micZ!+GYFi@iVJG_&=_@^1&)1}AsERIooz9T&$w!5TDzV5iImqUhsSy^SY~ z9wT>$MWxN+GLz(JnZw*348e2As{yaz9?uS}o|W;>A$VgN&R+gFS_0m@aiDzgsnbGT z=uVeaK)#W{P`6@*Vz>)1kBONOd0!T{;sa$(5vX?z^%G4NQvdGyrmm%s|#N z#M3TtAr}6ATAChq#lfhubB=lswCB&V(iSiWyq4SMS|o z`0Ag+h-9%lRF{_{8Hx=}YQs>UN&XrIwYM@52LRFsXH_(St0a}&(a~#f&xHW9IKCt4 zb8E$z2(kM9r9j*IPt54#qVuQlq0UtiLCTrT8tS|he7Qty0axXS9tDhGj3~mmF~82YS*N23<2P@%LsuerxRuT6!v z-|yKDKCi5?)Bulo|D__{8O{w%Vm=;8opeV1^Y;4DbkktAaH z6HR!^07Vk8pEI)^VG=urjWM^{&h~Zf^o_)*bEnCYr<%PUnRXEre(fA`v`7`-Eu8aq z5%A{2S|arvIgBMO+R;0st~ZlFVo)=~h2*#IOgEp8@ohYb+zs8ZocbO~`Y@gz$*hpL zwP;{8+61YroOI9ccRT3pLj%gfK&O(c;QZ=| znjrfbEU3o@4uIIqlnlyFpS+5Bk_6S?lQ~WZ-=V^&*r*rN-aCWK0>u#@^zc#FX5f)Z zu`SPOtXVT1d2O}l4g{zwvfX+)%5t*>zGDZ7?eJSFVo@jTZSvgw=Ha(Go3lL%Qi%2B z8Y0xE;V3h@a};x~D$E=lWhkUOTypfN(R=sH5>~a5%32?=c#6HXPL|nzz!1KkbQ+`# zE7&-MkH~jD>+}YYK3{L8^(c|XERaA$i#K;03do?;*lBvlr^nZ?a1U=;v$qxP-xgTi!1LO!3} zrLG6qrexq)hA8j@M_OT;KsszL&xb6BbG%Z*pJ?QAHHnW!F{raABApYC zl)!hAwUC)?-zq$8greARUO^5^cTcOQjta|B^s?T8tYlfNya%5@>7Zsy2l7hYI`#@x z4xhEdf3Ox*ZTr5^KL5~qi?op>{WgA`db*%?s9Is>1Z2wXM}lXs)KhFoyyEmjAuDP* z&ShhXRI=7CK0CclQ9=A_)%i>{U|S5yD8;=shsjh{Ux#I9|H!cT&krLH6+qeDPTqRE zCZSXL((QI4JV5gEL{ zkF6pi`tDkSFW$Zwv;>RHGHyU|{px?lih&7piTs(G*ttF~#aIW&t}^@sf3!*(Jn0G8 zU_+*&GVGcK-its=xW&q2&A=W^wYJe1kikA6@){a&`bKTrsWvj=EO#qzkmp;9^pLZ#%1Bg#;^^xh$RZ6f@vjl4@iau1q9M0 z7jq#i_&Al_Qk^Ov7Fef10L6>MH6uZ7x6uEIUfRgOdB9oW67t>X5UUyN4Kuj?VsjI32aAv4TFC-t9;Pr|iOB0*eXr zOQeFeo7B9z&c^OvND4HKEtq8ZM0GasF9R&h?QlA03FyHEh%TE7n|BJxg)7Wvcl48b z#3wf-*mAbh=^Y2Nn@e)mU*!tssI9MqLY!6Gw;NWvx9~w(*iD^VK6c$=5AEa1{S8NP ztmOvOp6zS)wuuWLg&W zr0^L8`MvD*wtY5m0(x$UxDz;wnrt@QWDsUIP-K9(W@?T5D^W?8aaog%784+g#OgR6 zVzZ0S*W+Gv6M#6Sd=}4d~I<71w=&aDmk$9^CkonEIZVwO z%lrs$@HK6tGvCBr+80BL612Kt*s=*N^$Kz&B%-9Y1%Et^L!0pcCeqvu4YIua(Kfx#VTs3^mN3lBK@&VZ3xxKY z8=JI5ZP%|8BA$>qrhi17E3KXg#7rS#UpiZ3WFGYQk(| z4!Ys-F;hKm<6LIkJ9|P7z>-N*P+2ZoZqPjx$XkPkN>bmTL9Smck6~~1haru5`nDTs zQb^l;g^;dkT`%8${pU&Tovp{YXRZO6M>mXh+pgF3Ll^MeMt?W_U1=0??ZaFZRZp-wMRE_WfKII&q6qr%&nQRBD7*V&U z_*-$`Uqh#xufe^2@<{52V^u@8Lpubr&V{FSJ5zzvrnnSacTp`_pa+#I?Uv#1EQSfg zws6=%$A?B*@oX1wr|H-hL+LT1iiK0e_!`aw>rc4lRIag^HmJt?w4Q_&R~vQ+nb3eo zSt+ro>tO{Y6YeN=L`OsGXQxMHGLDn{%q?If$SKHu)p_7gLTcM580~{@?b`ca^bRH* z^<0E`=Xzdi`Qu;h8XdTCG$Y8|yeFEl=GQ#fkSt|gUY;GtQ5!w5h^<2f(tsiF-_E0# zUN0h*+tt|=6VjJWlaT}{x6-F5m>enul`x@pa>K+|0)-Z4W~ni`$#EIyWx5pWNM{i< z`Yme}H8QqlA?L=^Js6@w@$u~wq=NuZsjc1zH3NMKA3OfX$+QrJWl(OmvLGI&Q|IAX zYxlXzBly0jw795u%5XF5CL5NX$@F{G@_ipWaC26dEq!#Q?7W6jF1X$?gio}|ziHFbHMyKzwUB8+BcOgWO%KBz*^{#hf111qt*L5|aX~;OV zgXcWd9HzqE(7Sy8{TyC`2jXyIElp$QNPCUVlC`rcb14#7%;p-v!*=th`w#4#`<#jQ z2j*nt?8|R6JhD)zu8ygxh|vq-;~YxDRvOCTJ#s?y=v{fXKXK%9YjO+{o&xe5Jicrh zFr>4qc6X=W&NNK8yI<9OJHpL(xrlX;@YFD-mph)=uJ06R4s$Q!m z*52z`zem!KIP<;#?xu$QM|{32pCB2D$^r~ZogTo_m_d|9aq7WXG@lBh<+XrZ^`!vb z1-eCbhOV37>$RT0{_S0S8`wifEg23-9&A>^KBwe!1g&K)u*=?X&^ISIgdYqTpyLNb z6lh*{p`GS{PP+`!m)~&5UWanJ+M%VLMZr8;(EFn@sQB*S8{$uhYYI%OK3I)dt!C;| zLzrJ`6C|Ys^7L~*ur^V|r)$6$XZw2}mBYgPTCm9ByJ=MIR))WaNWIsuSl;`&LKdf& zI6uBm@rWz0Fw5buNX;@{u@$79)N+|g1_kWUM=GxD)BP(v<4qTGw%9uGBb9UU{HM$i zd1U@Fg3VM0E$y7ZpN0t&eqVk@?OQBUwkoXkc6=6X?1g>9>>n0}<7L#WnWhnCD^!$l zvgR{#9`q0T%22B%ke3DEUQHRqOd>ab1!x+rGmS}{rI^l;Hp>Ju;A-(Pny!lJAQuQG z54K0?-AK%yOl-Lwq3GUN6zfO(m9k+Lv7s z((!fplu0xwC6TI};-1Wb{a1#edNu!0+d4JQbd?$HQ?(<1?BM$S9Whd-`=k(x>xsXR zi{x8Gl1FCVqy;an(QH&O2T_LP1XT-HFH|(H3y>kt%O4)wHLHt@Q-8pA|t$9sB$ zH=ODF-fW^LXKXEGVH-%i%_Y0`F;j6vo#{tV))o-*V$tEu4%Fh2F2`{tYE{$z_Vrsp z<3P({S}ie5JwBR}_ArKNRO1$E!^p8L({0n3FU^ISykX^zj3rPHsiX4fl=hPMZ@ZpW z=&>%&Oxej^2XX6!BdulGaDdf(f*mhYvjvkkmv&^EI|PU*ml)Vbf9 zAaRdUY`wfr-AC^QI$}q)0c%Bq1gm6~vB{pc<%)AFY}U;P1rRqXD(Y69Vqo|1pZ3DL zl(lgSE%b}?x*6q77=&$3br0Dn{@mOAbMpAwp3D_io04}Xk1SKCi6zEt)|tjp{!H0d z2C#e+c!Z^I1hfDB=RiH- z&y?*KaStK`F0VS`GaNz9`cPW83%PwTX$XvQ!o-YeC>^Olnbg|8stx6*mx$eSRw*VQ}L@ zQEdG1YTW$;(@@isrT&ANn??In6t)?TfR9Y=ZcWZ_n532X#(!e5ewPAwRb2ICk{zXe zuzxo}D#unjVmRb)hV+4JrCuCeD`ExSLu$H(LbC*ZT6{Gec2{R?CyR#0z+E`VmDR;x z(yuGSHOrvnk`NHc%g=NW(s!257pNuHFi43os#i^$|45B>I-jumr zJxactZaba#1Wh#{aM-Z*eY09182dpq{v9m*RlNL|w>Ib(*YK_O^vAl7D`$oOWJ00Q zzV7ym#zAP2Gb9d?z?&vP2jtX&VSPfT$n}HbF&E>uNTix6_xzf+stlMqtl$ooLf*oq zW_C7BrKjT$-O5ejI!s)9v9P@^` zWQcPqeu1Zb4XFEBA1%Ta&=1nJub&3Libg&wq;>A>HbB7%M4Aq{{`!SaH`xw|KcnL* z%Y|C$bL<)_gOTw2NjeTH1$#i%z!xkgPxta8f20p;91henbY>rga5U%Yy^S;-X&ipu ztwc7HMf`B~gQ1ROucAhE%Wr=TnZQ^KEY;aYFAodWT5pGnVNmhM{?NL`$U-g&BqVvd zp-*{eOW(m2B=&V`p4%iFKfYbjlJ%CAFq&yVwld;ZT6;ypP&y}YnvSyLbz+gZ@{YbE zK(9r8!dhGC{`nZ5e6bwsWYzbDJu54DyWF#oYB;NlD$%G;su|&aW>Pg8BCNzyGWYjm zuGLxZCHy8^b)Wd=boq4LGxXsc{cEg9Bjj{0>50}lN?QOfSB`w{LIIVp^&2td`q@8! z4XL2A7y6pie8rn7ePJvAFPIE07H~XtbP{ykYg>}ysC0(ufK&{0>F$g8+8O$C-F~3) zt+ETUmj%`+MIkz)iRk>Zt*6`b}RJ57f+-US%dJCCYRfu31zS;_!4 z&%E6?M7Sq3ulu8!n`loNH&eB01kog1t{W1hen$nFH(5J}GA1X2vJX4ibTQG>ngo4? zr{~5l>W|Kri5b60Yc&UlGg=B93w?p>EQ=+-YZ{=rQ$2dcr_-=0TAOM6!+k57aTbX8 z$W?=ayWYzmvRjDQf4q8SG~(}G9iXp-WijSEpCj{6j)*tr6xMSQh=Gcl$-(dc5^ssE zwa&ee{MBRb!LsUPz}6Hb^kwk55PRlP(Ik=^ZPDeJWV{2u)OeW;F?%pYlY-(SVF4RM zXVMR6>Dr{M`c597_p@4ilB?0VP1(kZ^Y_zYl?Pe%Xv-my=Y=3ZmmGJ8z=~b%ST}5Z z!gT>{OQ~q)#Pidk%2z<-h#y*+Bsw+%zKwo&UZL@s-*yb2awS!xBcTmI&xLO8k$rj2 z49tt9bz z9?OiO;-F@#wH+Ir1F#J+)h+QS7@B1m6*^LMB=17&Y@X=ia?l~DL71+-Fb=9NL$l^6 ze?eTJ$1+)Oiy#v-0%Ai#bm!PJzBlwCD7?dV?#=GwD~Eh4rFh}8QQ^UpbFJ$^Evrqe zNE%T-@LQTs28~%Cx3XnB)@f8}q4>Fm)|-N*(>}O_c+CZM#B_*WP{*bZ%!S}E{c2aO zGm};fgp05TfAh($#7ucVH^y(wlM)aU{?R=VaRJS@IHw-CT-us#+sdX5HAYIOpDD!3_gxFd#C(63+JJ(wBg#AXQZKN*KUJ38wNbKjB;<(c%H=BT**jnkx? zwvaRlPXN3>STgT)=Sc|eBV@mZjWR?vvQ^lcg#pRssfL-!fs66YoFiK?ocWk$D z9K%B^_#I}lC+M(uk%FV9UCC4p*{m?YWp30UbhVrWe-&?!Elcj7Un5`1_8y@`>r_6+ zg}pX43tvJ;(e*aaqK}5qUfs;fVj&K@ewVxy(Dmh<<7)dxjdtr0)jk&ufMGEO;8v*8 zJaA2@WXtB@(kDJWX;}1FKK1IO4OR?CmM~#NsE=;|;9aFJw9)?USfgiIX*R?q5oZV9 zw`KHSlMJF**FOq>+I23a9{CAtWwSAg%mtk0`>uNjMhwYs>MxldJDfBH0{= zO%FjH1kR!1VzZ>uhYn>c+5vxYBA37L%B2j{%~*c=HNR5dL-9^~8m0OJkS8^c1*1;G>-DJV>wB@J(SoUpr zQaWC4Z=;rC72EHk)x^hRCJ9yAl>RjOeIQa>1`Dn!M9p*(GXXjWY)$L-QbTscMZ82a z?ffBF?5$^FJm#%}k|?#(!Qb)c(dP_hf5UHK+HZF`=#sZ7dG7}8gQ>W7K;4d$XStMJ zo8Y+);dqq2r@tL-6u;h=iLY-dH4Ay(yxXi{2vQg0v3XM^@fLa=x+i53beR9~779J> zSwNo9-3|mfe2P<68&^~(r_nIN89J)E_$#lb=691q(sSdnwxpIzNspW-fjm2>ZeoWt z5>8z;Xo_4Jadb4}JbQ0uH~hgu21Aq=`=PW26k}@BoY*}q=1@;ke-ao&uW<|4j&3o( zr<30}K<-mO;jzvXTYOP>fZ}gl)!zN(wNd9ikO>M+CRY+olxGx3zUZ_lct4if|L@OO z--jN(EuQwHv(_HNt168Bb+Bv`o%g3qq$oLPfs9ad-3#pSCAABx-?1vBGB198ID(x7 zbgRC8iyq@rpDpJ{=>tADV4qj! zZDPB(iP~qulnK~c`(aW?aXoFH$!X&84s|pa&1Shpl{WNMQ!-0+ zf8B#`VphkWH9a>t&GWpVW;b25IC*ma+!)Wo!I#GVL2%rzF&u<&@eC;L2L)UF z0a#pccDdJCd9EY77uAoJF0lC22^N|+CzA@4;T7cl_>@Kv5nMjJ zXZGeclBUlY32i|(Ly*(o|6I=z#pmTX{ZD&FpiGTIDW@uqv@`PjKXLl zIMtT^$V0M!5feYIXp!7G*@P;g_cXrF-)F#nGilMdxZlOX4mz^^vc_R*AwX_j6z{^o zKp{h&vE_vqht;b>|g&acNBFd4Wmqc72x`e(`f zV|_XL<(9R5RvA@gggxSz-yvY%Ww4pldZx(x(t2?FOf8bCZh+!WXJ{Tp-mE2Ey)FMs z8w($7KG*0=+2MwqYxWts)yQY?u>;&Q2Rgs^l=~DrlTT^jdt9-}hHlk#J?%6lO|a&J zs+qhxag0o+Zj%-(Nq$Mq_X`er9KX&nMY<35uDo^}knezu38L*RpR`dF#tap&ok2AW zb@y0A6f{;r$smi)VAE%3QtUl%p%LkHy2x`@; zDPl~2HsUQRK0%z1NQc2cm^}OdgBCij=Wf}<)ihQI6%Dg|3>5LzJkOjk8|>pGb(4}e zB!GrryvgKN;6PLwQZ}cRYkFQ7`FRjxj)q`qRzbxtS;G-@SwAd}i$3hEkb3?OJQRB$ zI1k(YEiLWe*HJH}75m-$`$-ObwO=t^^54Owie`;zCoa1_A z8H1eFeM)2+qYu!`wSHU~Siug9Qo+JSC+ItMFLrqH3b7Bpt25vvk26`-AB=WfmWpOWTE zEdbT)Xvok-2(w!C7^~TTo795PHWf-F;J?llwKdJ2^dbLhS4Ko@t>6jK!G|!0FtxAe};z*bP z?O1n}(5!!%DZIU9l1|Wd?vMTxpv~)b-?BOP@x@Ae|KdBwUDT((`Tooj<39IXk9I z!C-8v)o`3536mU4V(Q&qTAGl;jGUE>%8^pO&-Wi+OzZ!yy!?%xccyiTQhi5=$CLJ!S02 zt~lrXyGTE;j})X4{$3H^&M$Sh!_(v=u!xoLSWC}M?RZTS^>%+DzUSv?BgL(Vuz3pf zUBnZdDZKpMhk%*%l2|2u_+i$_sq6h6ZFmh$_K^FpEL=cF=8wMGtw1!F)85<~lslqx z9e(t0xG7qe_o7^*7lK73DahS62&SC1gW*CzjU}aP4_+$v1aq*I_3n{Pc|$q0re;{? z=#dZ?m_jLU|-Lbk^tkNh6sU6gA0!21gy)ygg^#>*j&+vx%Iaik$IdNJz6^<6HU zvVI~ON|Dbfimgr$r#x($AS&@#@EmGyNOX;hgj{$O?5!~*sV!_I6?x?9znN#Sf4tEM zey@Y4raz0znb%KZ&|N+%Bx^VVNw5h^hr;IAya6CFbt;4Aj!OAv1$*X7I3jX>D)xGo zPYK&}!`{Eda&mM_nW~UmT%VgfzwMdm@U+Mpz$Qtc5~ei~BQqneGzao)YUKOOa+DME zAiOymD$gdw=a~x^lKhb?yx@~ZmmP+z|dHkI{w$#bQ t5Ss?QE~SKnw*Nb}@pl0OA$uz8Pf8?)rp#@q*gh1e)C)a^v3VT6gXP0udADkQ=5%alAqVdZa`U|VSsN4CWyg}9ZhRn_ zMOn)SEpOShJh<7p&VxQVJ}kJo{BddB<_ACp9e$G?58Y3&9lbut>=fP0mw4=mJ0`jl z_j^o!?<@T6Os(y6d3<@%%dMH3AWb_Ejr?}q{3DzFc$?E<(~g6Z%_j$ge9V#0chNsz zmgT-4jg=Cq`wp5>9=eH( z<-Y#jsVw`0@3L`B&RycWZO~3rV|&mE&{BdgMsz9LF8yq#r9*nL*>iFG+pEw+B~BTs zJolOEto9wxSC*dzBRe+pgOGqc9APZp-LHpZ^T#`j%ti0;;aT5OWk9&-`%F?SptR15 zZdbwezq0w=N2XV`AZHa?kK)b6vkVOIw`I#lLpx+nEsD_;X75{>hO z8f_h>7we$|nC9?Ad&)r!fGCfs-T?y16YxRzuJ=j4%t*90M{~hk*FNE>P;x4n|7z;S z=tpAjJgU~;>~XsCAA7nfdd;376%v9R zV21_D3R?z4>Y1wz@kKDEU5+~(Yx)qe&byMl52&MKpJ!eqSNKSzJ;m{z8tW_g?gyFq z%SCW|_tJ@7`L8xIA)k=H%}`s@r1D?w2%&mj6*%u3C%$j^z3|T*i$R0HKcXcU{hSFI z@_7HQ!IkE&FQ7dqMk}57j6g5=L+ht+o|R@BOC){1wUA_(t09Uc@zncvR-SZbt*eKw zzRG5EI*Yt7r06{2LKbwqZC>3&_j>9UFgooZm4)vipVbR|w%Gu$N#rfFoF5{?znMf| ziT6tX$^Ka+-uz@Mg9#`WRrlp#$8=nV`+5^zyekNOF#L$w*v5m>cXlA!Jn7Fesv4Gc z+kPG_Hl!s-%t;K@>aXkGj-`2o^gIFrmg?+#T+~)F?gN>6T0_k`I^IM+W8~tdHDBaLW=!sA~`H+xoyqpG%W8mbS5+yTVnp+)<#379DXUIIgV|1mR8u3Z2X!B#VrEj3l*?W$&^ht*Df|Bzr-k2JYh%2=kI=ZMLMwpLO zh__r)GW*W%0E0d$#GtkRL3Bd0iL?f*X6G zJSY0mDzC1CVA?qb<{)x%vf|#$N06HzS^qYl^d&X8)fXa z6Pz}BeRKYM$BF6~C#o-5->fP@Lsj0D6^Q2mPG%shtjF&;m+E!e= zp+{A=-%wvRvgcbmuXg4+{g)(ycE4;Q!-ialPyGN>PPd~L)C4gCF;4_MDWTIJWF6h^ z(=F*t8|oUZvXuZY}vWXm4Sh4D}SO(lNWM4-_RaEIGFPuxIm0+ zu3T3Bao|B!L&-eQbgmR{{#h)_eAsu^S~h4eX!X(J@QceN)}8Rw>4rXvEnG9`V-4l3 zMXE%?G11$hHvheR&Y*;InC4(>G3 zvc)UIGi6w6{F#qL-^{lqDfiuzTWmDY;CCT@w!-80A1-9Ev7x)9GRi!lleCX zN=2BGVnpEYlWMi{$(7WqRunS=FHW>}*bZxu$zW%dc zUrs&aSQ5_X?4^yQ&D%>1aTad8`mUZqm-_=FGI6Pcf_Ge5GrZ6^(tx|_4%rvC`D*Ar zH5_UOavyZRnWrb6FD5IIz*!V&mP#(%KDrpuSnE6KIBB0J2;TVh1qZ?fZvh(O#S`o7 zU=M{F{KD2E$dJxSG~0z$p_$_kN6<14t+Y|R5wpf-i*janjW`AdSy8rtj|y1nkhFtY zGBew%O<{spQ?pY^P8p#0@zk^|xsiqUN4uMUy#G)}Ks>P0@9#SZ8mK4thd;n`pu;b- zhrA@ejB-dEy0CLUYMHt7v`AZ6>i?QF44k$;&eJTzH*jlX6eIL>r$xm)s%_o}RbcSl%wcuI?wB`bPK*aLp8kPCN zj`!E$Y;-{BPt(M5e&#}fadkSGThR|KL`OnOP9=PGg{{G{zRp112c;x)(b}JzVG^@d zv4>BwM>SDStyZ#+C7O}^S`}h%QYqjWS;Yw*-8SFwXTc7=l?e-&rqQkW^&otgZ{b3J zy_bu_XyEdu3t0AFBjPiA-+l~zfRpg-boBF^~4GCl2 z#VVf_A}A3M@TJz&jK#O;|V4kyD4Qt~51M z*}_7~Qi3V#dPf@JKO$k!qmqSkFWHxCufRLM8ufk`^(m@a`OMmR*5vm&b91LRE8_Fd z6G2<&uOCrm-eb~UcQ4A{{$O7(I=ioHK@ARJ&`cI!TiY;~E?;GBNNOo*fC1pRQsfhE z;?M;%&R?y_RWl=n?FAYwP+j1?f!1z8Wfjq0#+i4o%0-vvM#4>P0@e?HQ^%UQI4skp zR;J)v2}98u?_ZyE+Ja)C_aTZgq%U*uE$7uzbr7aqB*5}l&nbs?`$r&Mj*KL)>5;X= z9bOIt>si4Uc>4NfGSm7e9en~|XJK=5^ry4`C#Y-YG6q?6$v*dUe^5p%8w;1YColi*60n<{a{1o=s z@O_gjlL8k1s!wS!0FA1RLrjdSi&Go(Xu-F6YA$;w>-XR)#OG^3V9=M~h8 z9m71*wIK2G-~NzXgWiH2M8_PB{MVre*X~n0q6M80qUdLGe0R32{7}X_8!U}L%N8l$ zZFgDXk!rhPOigyCr6#)mbBSESE`&slE%K2NPtk%-y@!Q1NtkaEFK2n}#FQ|V|JC`? z!O3~GMQ?2y49d7zW`mt1>yHH!r$Ohnb?5zC#uZ+diCSsXs+D0>Kj3*dDjIVoEWw_2 z(H)HS)m`jgn((?58z@Qrx7#o+F}|ecB`zm zsYaOzb^R>~;(w~agmNnQC_Eqp{UXq%)TGVG2zQ~WVO?s@bO~h%b5KzrX(MI-VUnrVoDKRGJCD`KIbIq zF8L7suU91{aZhI)dX)}t|LTkdf9>L3lGszRCDo?Lsa%gvgR^S`yY7G>W=5Pfz2%Q* zUIW364~WRz14T<{P)74?+(_%YLisi%LzqPK^qhqo9}hdv#pw+b!GhoeA$h6DJ{KnK zPvrBPGao!7vyugDz6^htB-js`y>pasq-%p)GMINkVngC*vJPW4bUCp-mO4ScE?!L5 z9F6Y>m9<7Rm8=*eiVqWYKby5|?e@>Ab5^75C@|$lC?QR>hhB}>_Iur~()dcgd;D~v z8fpSmr-S0k2AzU%gqD-{JT!)2-2%HjnrLL7AC?vcQOx*AWwaBs_DYw;{X8AL#d5JA z(dlVMjfA|OeIK15giQ=F(KWUp5qC3Fe^A;tZNAHgMNydXwiucDUt|lQevl_Ew%3-q*@paR^PRgN2HYFiZFQ{Lj>xY?* zlZ^A}v&D6Aw|~e%rN_((dAI~iN2`Ep z8Q+K-U{WFxa~|4^${J(he?qE20FwvWT21f9MJhrF34BI`;k&_);*a8U9ZP$v?dON= zhPxE-Er~x;)w#YrTS!uakA%Kpox0QECSop5pA6V&)mrF*Qc(-E-OqUY$EyMt&a30ID;sG`==B0ywY?J>2-#kbI^C zP)y~wY90g29?kou-6ENYXO*3;_pGy|Wk-LIJhMlX7*Mabh?Y_)WU>;TT(CweTA7)!wArh=O(0G<+9IZX=O)zSwaJN+Twf)UmQ#)v zKkr-+GALhI`=G0JL>M$YJDT}Y-}?I7{Axj1Xu#}-U6x20{vlyc6jXTOea7<@MvA5s zr7vV=8w*Z*1@BRIJP?lxq7RPXo->-xd9sAq4KLubuk@cJ{S(&q{CK}#_I3-oEJRil z({$=>+&xlZX&B)tFl6*)Et2ZjDvp4nWX$s=KQq$ktsXm^H@Si?geQ{;Xqh&3z(ic$ zKRjX8v!7Z_=km7-{*&1nrJDBLA=S7-KG|OMV@F-931XmH{$+CzLA#-{n^Y&uooKG2 zGC8Ku^Qi)4q_3#_Y$`OHlsgI*h1V8qe{(kLdV5ml%b`8Qh@tk~WTpZPdlXX2`v);s zIwO3BW?`+Yc23TtI*KW=;{;#?#w;ji>fLb-Hb8d6?0i%r1#&(ax_Im9omJWjQ$eCl zgw$Bd>~U6nv6RESk~_ijxXkZ~20$>3jU6aP$AZWv%goay}=(`2EM#Y+Pi zEE44#W%bH_G3xAoWxx^gZ}K2mqYjQ&ek)YjPuIKfKxVDmgjihk;wSQ~NPM^4=SBXr zSG^Zs)e`q>PcGkhUrFM)2*43xRieLD90oh&YQUw#!z*Sd;-jUGKI`n%n?IH~r*AGt z(HPHMImL|ow{KZD&~%e+J`2(FwLxr8m_@I^NBXe3AxMSrk~o`}zb$jGXpdGM z2>TRdEL+yF>z3JIgQsVrs^x>IRIa95@Rde}sz#q6f*$n%WYeH*gpA{%EJRzg35)ZS_qoFNoYc1t7 z_PeoGxY%wSk)lx@#g?C^{4n;hkrM0|_03DU3~icrEgE$Ai2-DbSSCuHh_VCV`Zqt@ zm`=(cEr~~JPTrqojFzt|kg)Ft% zQwKaI9oJ?=YFoY;01P0qB%FOq80*4xeN`KlNSWzdeRH6Utf}XKx<93c)h9(kkj|{c zb6e_HF)Sl9!IU~uSYHkauJgT09d!Mi9kWQzu>1xhWN^A#ROW}t{H@~qIMC(ao`boR zP13s=FYv~F(LpE6{@ni#lr4@!5_L(SyTIyfs5VV?c41F|N&4BE{plp&P;j8ZdyM{S zK&y0I@LL6HOC#(=;w_FzK~cvbNk<(FHJ^)yK@H_o#KPztfF%;~GZAzWz6;bfZHIkU ziMX~vLZX`K%oYCurcZYz2uBNJeK~vFgo_w~N+kHx6dJO->6nMn+A?u+8Jb@KqILJ*a@M~JK51Lc2s`}mxFw+6g0Jx9B6emoiGNE!DjB)b z?Iwp^Lg#M<_girxL|NDED0A?~_`u$Fi+_cc#kpy%u|-b!{P#-y_-5*8ttCNlYaJEs*?l79nUw&%4O270nu@5+(WX}3@NFU<>=%&chcOo>UCPVO|58>_-dRWb! zM^G(B;{pN&A(A3c@U${`RXS4%k39n*RzPz8yD!w|W0m3xE!;zIY>S z^%1qhvgkH7N&h%461GS$@uqrP#yGo zaK!X8`D{ZhKsW@!z;7|Jukn3tA%%`qnRMr;#yNY&L!Ke(Y5Iq4#p7Bjm!wD%Gq<6t z^{3|7wD$e4ew;j=8H)R%T)r@$>Ina)PJSi02>*Gm8%50!@Js4_=+beTB>#KNk#r$e`FDD`MD~hsl$Zv zz{)xzRi-)i6@n#KG{@mqGzx_qY{Hy82IEXB;@>F&2-y{2F+hj4Of-?af~A%Xqb0c1 zP!ZtqQ%rs2<&Z}i{q2!5xn|+-9oCTP@&-;fIzZ~nID@>c!GF(!^_3ZcjeNf2lFdLX zrb&FiLCKMMm`X;CdN5&bPrFw4ll(aj4id`8PRuv?AhFh-ru2^t@`vkYU~wNF(d@_W zxs+pcms?2)vGpmnyva8FiP2ka>F5kGkl&g> z{|qy3MC?;ZvFMa0_i1XC83RD&GvxSJMU+_u?<2Z261zCWk&*h7Wg)AKOGV00sw6Tgls-*dqIivb+z53;&6&SuxTe3H1dHfg4eUBL+*mf)RzW)%0dmoBfGqx6BN= zxmbPv-!!W$(Lw~$OiUl~r*lJVQ2U<(=diHrGe=xyd5- z3(c!j7hE#qbat0)?_<*of1&21!MF=eR%m{9X!lRpDlQh9f+30J4n+qOttZFV$a4x` z6|!Mo2rkWyZOlw}tX?0t99*Wbe&d0l|Go;lSUlLy^uE|>895BmGeN7ud+1!r6KwC! zPz1ffIGq=xc2419!AgGNDde&**P~T0W*v)*;$Z~^`r69rBot@ht8xlnD{V%`f;@^A zAu-b$Z-6oLDPWS^L=MNxPjI~MZrqrr$Dyd`NsdbL6PmEo9>Re2&f{DGp&Hoa><1Xg z$s?#UX8E)0`(PpgD|Z#cyu{92SVU`ck+d>7&Z0SWTTaL!!%!97dG_rU(wUpu_kRfO z7;%zOx=KzsCP+|kB|C<#?%JF%>Nz1o>sRjZs3eY7K_k;uE>W!C!o%-k`;+hrjGoG$ z#%L;Xm|RE zvnR85&_o2eVC=+h?OaS?)Z2nu$b^$5a$H}e=|U&%eFp{#dJfkJF| zxyNrt5A^n5KgAP{9E4kiIj8aM!h+G}INP$vcN-;^d{yHpGUpQm^+gUf^07*kkP{Tlp(IsV@8=10I$SAC|LgQOcD%@ zB}(k9063AKx|3GR_>mes{QgybS*G~kZ&5DfRAFJmgrfiBgkA58BJL{lT+vdfr5JVF4ck)xaG5tV7LuDl;bIgCL4JikDyH*Bu ze-gJJuzc0-d-l(Jn#oHjO|r3By8E)?qeOM^ekw8QmQ7tNsz`d0s9$tCCD(%FQ)QhF z^n-byA!|#lfYX%V3Y?dDOoaU8^eMJ|jeYf0?QAb8PdDQhlfsR*(c>SHa|=_c%k7Y& z-qYEj&{nj*4tn)+Lw23u>cAKSilew0{|I~W1gte1mD$J-(#GD`vAt`icPP86d^pY& zEB)^%mmexug21uKV->qUPYKNzHrH*?G7L%a0gf%w37%IYp9PUN_#(nmPph48+8*3D zCq#rrk*em=_E5jz-XcdNlxcOpVtMq8_K>uW-*AsS2K!?Aj0ZvpdzO7FFBD(qjH+Q* zIgE$zOY>UQh230}jM!C}Qj1Zt^=dIIFlz6#{Rb3`m?9w4;bybSy)*sMP7R|h@5AXl zA*N)8F7-ywe3#ye5n%fR5i(k-J4)2qmE4f^`u})?eo5d;KN6}<6U`CB6tc*LlR}yh zjgDZ|1hLF}%)Bx?KEJdP(%u?JCGmFVGC~It4Iede{VKO@(R-ou$(4UMo)QAUfPs2v zt+P0P5i2`@?JyzkGhoewL47?}31zFH%vzUs@(?8!Chj_Ygq@S2YDkgRHy6=wsw77Y z4n#J)`5FkZejIN8;3G)e0jWCdlS2@Ucq0byWBHLV&XAZr*yqs zZ~WX##Hci-VlnNM0I){YI9b#Pzf-lVbQwZW4!L}5kG(CDkeOR z1_F9=@#je_Jm#$tobrByP!4%*$@2JgVg4yvtX(`oB6fkBHL~X^oDcY=6A6nv68ssF z4{2U4&WrhV;l$s^*c(euCsoy5U};)+&sskN!mYLL>O%@?gI_PU* z$%hW^_)MaQh%n*bs%V6wFywD_sI@H`aSv~iWMYf*t@Oy7k@V!Xl@h=UEm?U$3`^c5 zLWPzHtwO`@rhO(WU*{l)Hv3HkEcaj;1 zoR{=As8IF|Ptk#3&v=Yyix{k0)E-Fe6x`1K_tR)X$-2jx6SpE+Mo8BCu`=2x#}BRS z60Kv9Z=TztKYD;$OoBXKS5|j12*3QQHNWpQ>SBa0I2(2TB^^9Nx2s9eh}`#a`GUrv4mUz;FoS24|3#zSWF)UGdUro z2|Wc=M!|WjRBYmoLQ4&_?WJ%_SwUt#(reHQfh=LW^q-x^x5o#P9>S~QpPdqBe8fYg zUtnxKMfW^-@wYX)t93?R-lZ$05H=G0#RS)n5#*$p9xRW22&V!|C=axJT?aJK^u1lq z#Rr1g#2?;!ftH}EPQ4EptNu-5 z?e1>%sS_Ax3){;Qyzu_MNm=Kq-+A(va^HyU* zQ%#Ruw0j;mgd1O^yL5rkl4{E~hw1prswL??0(sp%bMCb}`@da9_jx2-rhs zdI03%5&`cC8%uw{S~_9Pbe97Gb2XSDt2B&1Jq!4G9?(_@gEDPh>~-4u-7ctiV@nEt zD~ackQU0Wo5~yCMgQnC%Ps=5!Dl^t^J;>@NXI{H7N~Hfe765&Z_^b0^>BDa@8M$lC z`z8_i+PR9y41CD%3wu}EfNWuD&7{Is1|?6-ZFOpD(haHAhD8{a7anR0-wurVp}meybE^u!APnA<4VLJlLq zdxfrP0WzfzvI%fT1Xy15i*-9VuHRuDF*7b|xI?KbWql3@*Ba=;nQBg}<-QNT`xTsp_EhpI`ku82rOS zB@3;KqmY%(c$JYtD8iW0HmUr|6`L903i7ajlZ{`PA^gDyjUL2&8)V`6uOy-tM_`7a jP?wmPyAKClHYN{*X<51!tAtB)_DavUfAt7@j4j>i=;*Js4PeQ~A z*+WY~2B~hE>Hu+pW-qNKjfB*gjQePbj=08lRW$TKLZXiP??5&!A`V4D`sk)4C#~aa zc9M@7qOJSy`wXwFeMn&(D_sv3mf|T2`yu-h5bgM<>8~a$GB2V4u>Q;2^j0!7PF7Yc z>BcWuq;WXxbjrY#oR_J_6$-@22`?hcdR>BcFve9c1ugwxp2(4dH%9xHBS zU|_%~&S`0AU{Heh|Mzq}PZgg&l0+?P^K^gR<#Mru+{+~>&ELudVMu!6z6?{KAZ^M9ah&T6y*pyWjYWp&zGu* zkKz3Oks}%0>nC|Q32LVf)y_M-PmE;sPP;FY{D!FDt+mGOl#9TK`|G0# zuVqsfmOR%mK4LB{vdjifWhzhUQOr#eIk}-%x@git4=3$S&g&wwChClYw7O=Ry@7rQ zn|*y^XZ@)26_Dbe)ufeJDh8y(IHPty%GAE=6d#?tu*~0#u@sE{a_QshdwK2>#t3tt zC&39zNWgPgX(|=FoD^WTijmy_30h)L6#WdTcR1e~zL-;>9rM`?vcD+TRF!-@3qJ=J zmb~va``P~|Y5OTfmH684xK~4E*+bgc{G|9`hK2psm3tvs2=A?j0cNXG?u;2tmo^f zlUe{Z2eEcV@&El!irFSFnm&V_Bok*m2ovp_6+Da(G2;}3Z`MwJ?e7hGQ0{|1Omfd4yK2rGrMm75WePs42rB>m!ZKC72}c0+vF${r;4^0oE0($g zyU8DgU;FU?HfTT!N#t9-dTl_-oQ{paPvpLQf|ILU#WGzAFde9fl% zKLe9W8Dx1%ot!3qk^SfVBLFF&F)la)vv)roc!)$N%pRS)}>+eaSrS|7KuQPiDtvGp%r~ z)mHIxF~KvHX>t5j7Ht+3^xx_-2)Qq8l96tnpclKS_*s9p^T|AOg1bv~T6mAj@3?UU z&ywh=S<(D|Yf9>k25CwEsd>@a2>czLKfiFz{m4sXn`jf7&d{QnI*0i<2{s z^uH(LTTV*H4AsukjvpfcFdcEMrGxEUWRw`go$3!vXh9^I3nn50P}n0v@i}%mAt0Euxf@@JUk4s ztgKKE*%d7pF<8+~=1X;;qhPtrA)FW6jFKG zfa6B@$Mccg9=zJG%4+{-OTBbvf;5(${&RcbIF7#GRBAbIVB1Ne(;rTTX=3$EOPP;N zn_1nZ^ccPBj9S?>?5G_uOK3?L(UGmJj(FQ}zcJ!zpQl$aPCt1aEoIxaqp8sRH!k2y z30-AD@UtN)rvcr6;U*H7YEP%6EB z8j2;}iDmhm(!L2b?!DW6eYc$~d5m%dh+4l}DN;l-l-5jR(a1yq-}rb2N1|k0D->#4 zhghn1iFC;X2HpZ*hdP~yRn-ZX;+&e=)FPfKxz1me{BQnJEBdnb2b}ikOFZ9N%c@Vy zIJOa4-#Dm_7bl5~mw*k@@oEsWeq*6rSfR;!+WX+_Y#nf4-+Mo+6Z$oV&FTyQ0gI|K0kN4tvdQ(pOUN%~0BpxOoF`&427V%^} z)61!J@nH;?BH-iBNN{g||L~sdJ#yUP048lZB8G0@IfDZI&XHj(*EfAHrij1*3}8Bp z236^|JDVEz26pmI&@qls%yjy}1xFJ-r1V${0-NxtMHX%w-Yvai?MK85aw~TRz0s^h z4muuyA-#GMy~ZRq0SP0o1rfm#V+$+cz674@A!OZcggUC_r#`RbggsqZ+s9wy9y8+h zZB@yb1*qrJA?CqPtq_TLQZ9aG(1bS~o?_CC&%r#{sNMPFt_g)T9mb$Ap2cT983htjW*km;v_p{m$bve5=_8f=9?Y(r> zyR(3+eR}(XptfT~8j#s?fpz4m;l|4vWA}&ic~A1ifxq*79T6wS@FXVli%^)%?IyD< zC!51kffo3d5C2Z4tlh$obW%EhDQ(lu#}p)9VFj9;biG(+M)FKuJ^Ro+BjJ>{ z09A*Fh0O3Igc2B1yY?fyk1>5BpJ!JVSi;YmRga9>Lb}09EpPk8RMR~G(8ESj;3IJ4 zSH}87>`yBR?Ou6e;+Ye)b0i_4mYib@Z&8FYT18iCksKmN3&8kkE^$UfZx$;c-zus& z>btct@W=^8W~z8YU9d6z-2hAl2SBx!v#1^;CZs@>3J^&9a&JaRDI?;-kBf(y>NWrG zuE9@mbPRb2vhF+r)B>|z3DF!6|4W;KpN`Du+g;4JQ@F=ZkI*HWJ7Q6rKqrGD>z5cR z2E%ynnN*U*5#blo_%My3RKkla-jhM3od||yryv?sB9HQlR7wiZg$$7DjC}<1X7rGH zOr3tc*?hgZpH5@}azPRkwq%!W7$xhON=Kj_wVOemN5 zBf=17$#7oEObMH~gM*A>x4*-uwruJLM(jn8&PR1cwqh9I zTk$-Z@!Ve(lO*on3;3!4RLLtAigz$D%d>U_wlp=hHeWoz}u zVW4LYtnh0WPL@KCu1W$#=9rbL0|?m%3EaH1+k=7;e&gnP-68o_Ao(~y?j(-Tn=%SPkT}X=C#>AR^u5+DgwE}r? ztJ!WURe{EDC`ApV`9_DV<7!?dvC0h<4QGYVpuqo-jo47G_FTkqKS5xcS63vwir7`G zBsz8?WTd3@Jnu%vB#_pKpHK%xcZkc~(Vr4*Nle<85r742?uA7_n(pX*od|ZRml!$a zXZ^zMbTIJP6Lwo=@!&|7e=xT@Uz5|>XvvZ~TYLtM$6zZ1wkNX%)cnyM0Jp>M`edV| zJt+Hd`3E^|@M(2{qq|X_hW61YvV5doyFt(a!JA9;UCg9{I3qJO(rNJTYT=5H7+m3)*Wk;Xld+&8IvOIGNeZC`RkW8>{W+1CzqRcfsa>bN zzc}la9yuRH3I70D={p5l>VO$Z zNZQcUd&RcQIqfwae)_b)jF>eIF(#HBZEk96h063 z?&WzTe7!;$lC&8m6uw^2p1L;r>RCxIGIFYjgaRI>92N08RGi8Y^a%2ULZ#xn2eg9t zP&0ORa#1{?7^vYRQ*r~UL!OsfdPwdAg-365w_OGwEe{9?ym^{rD2S#8mj^9W^<5KV z$G@5$`F=@&DAst{@YAo5p?fVE+Gk_Oj3APsY^_N-q?HFk^zW_BHoCqD>rRF=(`X$fjEIN*+Ur&J=DZm4~6svC9$jd*I1#ds*uvof@72ZLLo|A-(8<3u*azxoak04s+i@oOoaH6ay){~JX_{1E5IY%&S2?iL4DN^D{?mDi47 z2OSNI9}F2|%#B8QN$mM{+iof^H}$tTBlxrDypkQn{VQ`UGfLAIC1!TG$*YSw-S! z^5~!)d-hhByS81*Yam4oo)sxZcGW=?Zy8U?-%MsJ$Rolb~xu|Um$F?}z zxq~`rm!fqq{u|CUZ_N)PfJZ7h!m~>UzNnz==c^DY=yD^AM{ zr2WS%Zzw8~f@|OwD}ni>q9XI$=~e~DJb)L|k4JEOeNqZDt2ir}FtflRr>cKhVK`pj z%nw}m^^jegIr`o*YkZoqzqRx}(j&2_KWOXTc#z%izi;>@Rgo!#^$|n*ar0f~BYRPZ zPC$Q2$)5l#^FD2L;bD^G@JXt)9}|0U)BA6a37Ie=SUB>8IyQV>r1ng4 z`?8%Zqvm&4I2d9apB!}wSXGEDB%e>Lpwf&5Hsy%0`)_iw+Z(N7wd7!GQHvXDS)z*xlph zjG7WP%gB`BRz&LHkVjEz3gxfy=3IfpIK?l5$Z3eWBNeNJj<>&pPd$BNtclrj&W8@X z6!)Q^Oyeg$rIqx%H26Me`jT;8qb}`|$B1?P@b7Wi`)9n3dO2NY1=?2IcLg)TW1q`2 z$;!xP(o`zaz7L4V#F0+t2u`GDFvq6D4c+J7lW5v_A;q>JkiSIDSP^P4s0?T*iTHZN z(|s0($W}%;&Az{}+@y4gg%ES8|c9Y zPVeie?+d8eyZ6yOBlhPWmm#`*kr@x2h|#qJo}8S5To`nDvdjs|Mm{VP!?Xys1MUH_ z_v(kAgp1t^JlcHsmjyPt0DmlEVC>j)2~RaOs^S`kW0O`y{BVi~vpW0v%ZefyLm2;7 zSwlzWo30AsRtsznY$+`kNg3WM2|~oIh=GoYfZ_-^+v8tQzguVq*feqi-m%xKziRL&R|)~W>UnzjKbMr3mWqv2YCq>+ez z4HI4)rnNgbD>SV99tZq18<^^dpli2C(V(_5#RvsTuXv zUQA6TlP?WQa1oeH*m0Z{nzFE{Z~jqnqTWo@)`BMBnD1bj3|oz(?u5#O9k3**tEa@aI<(29 zSX!%Brmbq8U#n9qQ-Xcv;B_&hyzH2COXh+WdS-(%*1J$QtWDQ%_{=#w3VI>){OK^u zeEL)CUv-F%3}qy^$35^(DK%@SGEhLr)RI|GyQ!*frnyAcSdmju9b2(ZLGk}luJKA2BT^ zY==KbO=p;ldJNG`VmnOb{!C02I9la;h6gLHc~tJM=nkt@ap}50ASIvLKCiAiSuZ;s zVXDag^fzEaD$*m#&VA=r6pImsJngMamqs=Az>CclHsIOq=OOoO&}<65^J;#)`hjtG z((cvdG(xNO)+yt|tw(2#NvF))r%sir!q_Rexd60ISKsa2%2C^tl-j6phNd zh;B()RfB(kt#YDKYw1R>c&S}2R7qp35zRk<$`LtcWwbjAq!_$tK!{ zcCrL`we%ITl(p_Qx>c5x3I0Q;T`SoHc7=b^<>xR~S5kX{X^R{C`^>=puIH*eBz-H9 z4xiR)bVt=SO;>Ik(gh$;9O?Idl;>#n7Jn*K3RI*$|Bj|wzy7VQ#+f*x3#B%dx@i@R zjp=9u;m@9DF*rXyG%;wORuccs_naR4k`zrG^o9+WiY!1JtCFNOVzjAwg`l?k%||VT zY0>IP&lA78g<1scP`;kAVmBgTLDa>loKIiScourfG2s-#zdS5KU)KRKDU^Rd$naSXqGgK*w6Wcf_$Z0dq$#}m z6vvK+SGeEru@F915J!wjao_GvRb56D%wW!OkNMR8oTz&1`<9=vEct$p**@+@w||Nl z1s?SACm~a#lM8)x^gI@POk z8RQdbF`S3P2nxhta2&NmCk4OMS7|FE(BK}~0SPN^(lc-Sm~*XA7LzHIvpA{(4auPs z{Li(7_=%xDZuMyTZfn4AbYRQlJRH#m9Xqz`wi;Gmx!S{EO4Ze>JNCAo-aoMElLt-Z z$^{8#c&aW|a%r_^K69~DQAx>-vB)Mzw@^jyq!7PK8r<6PJ!@YlA>E7bnR#`7I)Uqb zqUk+{Yz>yQ_lF3>)nm+2AG|s`=5hdu+RN{E;I9~-$%JbYp zo-Z8%E1T6`OX&V!uyBnp3Sp{A>DMW?d-t#o=^au-9}b^qQlR!qPoNZ3{@Z=2-aIB} z)e9`6+fg%+Rb&>8&!guQk_uCxa*I%+VTvVjJu;Z>4my$<`w0z8pLpcf7e7JX<1Rm3 zPhwf>*qbB^7M3F|Z}4Unu7#i&-=_g`+R&>;dyN^JAZl99)KwqiX{;4%knC(DacoPV zJvj5VP8`BFkCyXII~J9CJ(a0By2fDS+-M+51?vKl&4BlwWl;bjdX7nT`$xaw%$_WEhyPq zq(5gtX<2(C7LE}^_12)oULVGte|2pK5_Y87ZvPfB zJ*TI}*G^*&938s9{wQO;f*w z=(hk)S10mew5>pToMD%DZFTm@TQfvsr(~=#>~~n^^6!xguE?VBDYQCYPPOd_m5I`L zr}U>mwCTDpXqjB|Uy>AacR@i9agQggFzp$_&O=97z$q}>HF@--P^^i#5&TS6PVFe` zfa-$M-RWhmMRs?_oc@*MMN-0RpX$e}Zzw$l&+KcUQ&#kdVb4za+*R~0XhQ4Gy~xm| zBp_5XX04M5H|gTPo;jhW+0t=ggKt4D$m3s+hqo<#>i)kKf;>e~vU7iEQf#;eZGoDz z5*v-mHsefb$-#*agCL2+re2AU1`OKMdJWw zO~Gbt-s|ESllDmNy0GeSXSIAmy_NM%Nw!jj4IngT>1Z40q{K1m(fBiK-y-Fdou-7X#<+btDa_{`plENn%jLH=x& zCmc=gx(hR4bi9H)8==SRWxYFx75B<)ZN0-~7djxj-cm1`sSyc@1Kd*|w9;vi3z(m- zZ)KB)h`d96Kmur^7r*?fqxO2r{Mz(q2Bxh3(dJ;D>tdWk8$Q9aN5K?fesK2f)u%t- zqI2gvQ}7S4tiLDl0i|)b-7S|O%W;8K8$AK90TDH<^U?K__~}Y^xK)Unc2;aeby&=_ z+qY3Q=PC<2Qf}LmO6`DpYgwfiUll!o%BIH9w7elgr_05tr#KxcOL|^XICIy@45a^; zii*X1u0=Su%@mW`C!C=soM|ETSm_f^6Ya{FGv;$6#!VDRUd#JC@cl7tvq4G8aSQ;{ zXO36Rrc9LAGUrSfwe~+wv(_z3F z+3=K&CJ=;jkg`j@JYM=utKWnXpEJPzV*{CyuMWx!-pcHrIxXz%LFef3VH|1A^KJjV09N~h9YJ}aeCi4MDI zeGv~dg%U-}Dt4xF%gvgTB`zJ61UvR~;43Xo!bqB>8ev+cI(Wi)kbu(2tXrb6yd%nH z_)Sq*-pp^+3ER0YlVX~zlJxf^%?05+RGqwMbtqp=CGPJv%+G>q<_bK=_Q~hu;_x($$O{t zlHM0}n{zE#Wqo{&0man3UD;LBUpg-D=h6h+GCIQ@xR@mrNb+ua1u4{oyG>?5!A=*hmi)L=I+~is_it)hTb*<>rcDV_eyI29oCZ62NFLyl`pL!-lNMXS{=FYP zR9oqFN_#A11l#q?wBnfOGhdVvNRXgFu|y=v1*KaRR*GV$j`6kB}wXM;u% z>|7}JYM<$1ff15H+N18YB)Vc8+~KVM#e;h)nnNgzZ{L)#1y1w5Y|8~GQyc^&lKla3;*Gavh!Vju{ch=WwAol7d5U{_o^h?$hxZJ`f{DL~9~0=|4t9 zR)T={=yT9NL+!{nP>81(9cv~Eda2|sJqL&EzuE$}>!VoJ+vL%`%b}WK5A|rJ??36U zl4r01U;be2U9Xj)4fKOg&S;F3)B{|FDyeQaI!r6TRPcgedj4(d6JnPGc&iL{b(y#C z(=#D~2l}R{)cK4*4|X&=yGqBZ1(W(oFC+EZO6?oQmZ0edZ&zUg^5yta$Z}p zELB<$E}wspKZg9EDmq-QH+OETK-Hq;C3ZX8QxJ|szn;RR&EfiF(hZ^U_l*vGY{b#& zG5bC_e=ft<)pHp0#tGmB75L)z>(7mcZ@RVLRK!CDBT_GWtIkU~cgOQ;$E%u$ZQn-= zD*L?sN7I2$-)X0;A}V8&9wOpY&VTZWI;K^IYw}Yg&g(@he{DuiNh3x%I%w{nZIxqY z#91ynaG=bpP;Ej@Jyy;zF0t?B)dn35e%SG~%RZ9}W{(li3t_qD?X4XUach^vW5u(&k3O8nVg~G(*XRLw8XTlmQZ*2t_>2bL%C-ajy&yYl{iGicQ*H|v{K>3E21BsVU20<_ z(L(saOqD=OE28T|dF-PG2DyLQ%}JN9=f_Xq&z{OR{hg!$-KZ1Z{VuMErNk&{)7-|2)ZZN_TEu${bPb; z>2;t5{_Ojx;h+_4|Hf3>d|Ab5l3BGS@Rb1>xy)SdceL;-erC%&c2ue~C%|FPIx;d_ zC*&sXVcciXKC|}l)uMi+SZ&sQ_=jco6)qzxF1BV9Y!_IL_3M2Rf9|6EW6wlN)#IHC zF4fKLBqHH|9q%I=;{a`)9Mg^1r`UtsPwGck0((`JK}V)@y?43LKDtZ7up&oH4hluQ zGDb+?OT#T~YC%I=a>j|M{wR(h2NW{a;|m*g`cW)E-kZVOi-LKDObj09=E$gC&=ja` z#G`s=Kp=YTDllPL)~G9{R9wRETghT4tt#(c3B8prl}0*K({$WL$fSgTWPpL^u&fA@ zvk6=}iOgG9b&&e+Nr9QGH?|(wM~#xDm4GE@)TRo5WJdBAa-?1ixZOO(m9UF|#M_T} zmUUTyDVmFt`zktP&k{~gQarhIGpR*ms65gYKRM3@ z>uaZVbOR_04m$b!aqpRww9Klu0yClitclMd@{6>6V;@_xt6tyRy7q6sr3;FTU9i$% zbW2Zp|8rSHbUL-3^qI|PgX`jqVQ%eHeQy%;N#wN#aR`0Q`g=)OZ;xEmt96xW@l#F; zkq;49`)&<6PHG8`GF*`MLxis3Mvcb;+QltzLtcqKxBjV!v(UhpDLCV)oNQ@u(hK_55F;dJo z@kwlVGEqK@>>v;M;G=xT!QK{T^v_BAs8AXOomRUfDAWl?K;2q!xF@Zb%d0P5gUqbp ze$0EI6hwbIT~#9vYl#5He#p2!>Pz>rpU!j|d1e#XOcYsy-TLt%k4-t0Q{RML%5i@+ zusO2?J-n@82eNy^PJZ2JrT(n^SbM<9*<%?*JMB_m<6RVBpXV0Ehpoh3`Z<8`jO&~x z?usd@{*J0BB5xx8JpdUQFjiuzEc1nMv)k_yo+z}z+c%64LKH#)MsP;rB@l!oK9a>&s*b62vL);D6QLUfMiU! z^Lww6-Wk~Utq< z$oi&lN7mMpcIL%hP^^+2Xsqg?gx4mIzK}A6yc8x)w zOqlr(vQI8n_Bh~(?o8EJLmLu;+#CtSYs#kvbY8nAwK=b^!gbtK$!}h9Be5B zV}66)s#WQ!?cbuR&ZU5c8UH2Wk@h4hBdU_#0t6w~V$fD?H3b^<8}B{v6>)wNujdc$0BLUwA|r8{*Pa;LGh%q z-6eKgwx6oAZ&OEw;=y{gi%v6eGCRftzpBITQjgDX=EoLQZ0E>+o~Baw8q(+)RCCQE zD=8SfqjvL;&Nnm|-jowvFMS~t)+&X11epo6Wg`W7?C^k+C1|E%v9&7)a0v<2JxJ8e ziiF;+xTOZv0zIf|EwSQBqMn}~axa;nm{{pZA?ADXmb&$N+*J)>oo}BCKdqg+E$W9I z&W5%S>T2!9QwgC7z82-ixENJbeY)U)1<(+7UV9^SuSACD)z68-bVFkOroXB`k4iCd zW#amUJ}5fkJE?w?D^kHtO=@7x2DEwN2 z^QL0rqAcLskt^j?fJAi2Bhedwf4Bh&$FOr+!WLHL%Y$i%2Oc`@pqtp`0XxcusRw^l zCL*m5--XXsyWx#|Z`VQlWcGju=^>qx^Y>0(@;zNOEQw0h+p7IG+}~z-+Q-AMvM4GX z`hmr+o6O`Bl8#p6x_59@*gn%`r`;89m=vL2)-!|>;T(}l;leT5aC8yE<{zQ?a@@UA zzal}`|K@X(!?t=IS?Er8a!=)$#QUU*BG@r z+V-l54FV9-+?{lR>6>*ao){-}zu$tna!@m_i*R-<8vUxfX8-U}qoDi?c4M7MScii| zhW0#QdS@kXyT?dL>Oocb=@`SY4xgNr|K17~eho|Ty*Czf%eGbUH?<3*bDziuC0ED2 zDC>%$6D7J#;QIHlSN+`R`{;SzYS?^${Flw{8L@N2a&!W;>XnL9fp(~Qm;Ls(hJdDo zdWRHdovfSI5W3-O_tqXTZ+@LiP^Ul}zw{l4ehDSCie5NPp_hRuj}90^>7kQN_6`%f zKzeV`et7=1`&Yms;pNY-F3ds6<%;N(yOmq>?AO145Kpn8{1rzr0{4$-aPO!;MWY}T?XAz&7>2uOn zv5Wldb1ly#%+w($vb%I7)&h}C_VUTSK60KL`RKn%CsE|`Mw?jT-_yVMU{yOg;)$a@ zP0{Lj_L}o;IhwEf@S*ME2_LEnnoGjcVahS|%^0!UhSAQw1F!6oKI7nERd`oe!JNU2 z7mP+@fnTB(M58K|Ug(FYhY}WvZ6Ro4-e1jpqC#wmIYMg0)n zpY*>};>^E^9Hm&L-&aM~{c&4BSFM!BOc5<~r>=ups?545(-YEn)bc}JU=d7DDMU!r z^E(U|ju47n=w@(cl|}G(>c)aX91!dw6zkG|sH=|NbItLW0 z8GWV;z2>M5<{pib{4+|XWTMaS+SvS#Z>gr7{MDzm^^)nm@O#VS&~_z=iAVl21N^KZ zS6e?_ti<6n9N-P83X62+DyLRtr&+LuOyAbc+YJpHxRUaPecS@G?o9D14E&Otx{mrv zUf)%dLi9Y4z~HU?Q}91z))S`phy^~#iT3@mYZnJrxXM=ri$7RGCt$Aqt2;x;9sU4krORJ;KF*aZJ|91>uB z`55swAH=e-j!vWLs)wot$e{}hMeQ2P_@tjUnJ)lu=2;pu7AXGJUJNi`#gj%T7R~|% z9jkK%gGGK4c@W~YuHN~jP>;N;8l)l?U81MfM*V!bZ`0Dg;nXx`+?wF*s@%g3kl2eRQ7j@v4p`_-~IX=m@%8 z|5DzDKi8&R;4)VxUT1Wr`g|XxSNF3pu~p)K+3f?0O;-mmF}rxtT?5 zXCcYvw^g>8$mH4$ip6>esMe_jP)G#&+T302H2VA{&~+fvEhQ4vH{H~zHWOz-NcLqx z3>uEq4x4Qza!Qg#WnOZaok!f?QW+u=>%jan?;J_`|(`LaYV3`T_LO{u}t zG$dj_{A%O!URGi8q*0;y?Mtv7KhR=r)kH}6Sa&HNcpHbF8Q*?DquI6s&8fr zx+MD`l)?Qoi6eU*lvEHCp!PeWwd8m=T&XN<;W+H-)Ohhx#2g+`2x1|KuOkDS&fFO+ z-oJvFuNnzDjb*rB$DbP+R7`HEFI7{lQ`}z!$F6yN8dY14dy{+#F6`K?$`+S5FLM2<5ovnh_>EwEw->ykA-*T)YsmZadPr4vzSB?dcqH7iMJ}J1JpZ=Q**|j@$Y^hm zdRRlBs_d3sUN1b(Bba}Y44F$+Gym+BSB=g|09^){#8WzNa{Rp>wG;LHAdhb|;BZ~p zk*Alj$v1n$WABm*AwsE&qmp>H+FdoyD-A_3SiLGE%BYCdPTns~Bw+EKin^wz&A|R! z0dKH$3-Eg!23FWfuOhh@{~~=2?;*~YSvrpT77Qp010C&JR6Z$?1#U>m#tz6I-pH zp%U0&ErQqS$`$Vik;DV1-jIgN*OfvawH9?!W;y98>5##}G4*e6&;r}(1W`4uq1eTA zRsN40oJiB5!iQxGbn1Gy(e$(P7~I%TmU95Xxt99wa`vNjpW?&_jY|{r2gNCcqT(7p zL7$9?;}$xUAJ7p>X)T%sM2yO#mNcWgBsl@tbIJYv1?__TSxWaC!?~%a1XPS3ppvw ztJn=xq1jUd61B@Jzs$diRVYwAlW}zG>f)B}5aH1RuOdFBcu6j6dm9)FvtzWj2X6$J z0_WW?B_#_Fobq(s`A39;;FDpq-5pec1d>c6ZZrEu`ZF6o+_e!Xk^N*AmpC&NEq{n= zX9?QxK%hyQu*dHH7uWW1Va$kVL)^JcHewi6{#1qr{<-UkB9Jcny;LwP?U~#CdnKqm z55%v7N&lSv4I`FnLDa~+W+K$8t(Rp`eJ&=Ca?Y0dLu;0{xVAB{(yS*(r&@19r{lK~ zVb08S9SAu7N&8}E;WV`rC-dIq4fSun^Y`vXUW8?yu7ur74)rP)#sxdOZqONE22+K&x5jiIg&;hZDb8?Sjcn z;holMpbqm7c1r0xJNm^JUA%$g6%?u9)2~O|&2DHfWgb%e3+}-PrZI@DRE8TN1W#Jg zp@Y7X!8Gw6y^A1L=N)S@Yey~;L+pBlN4<9DHI8HoJMugqCd)nAZ4C@Z)B9&UObL6&p&n{0K2tG`u1Q@pFFFiJ@0xw*ef_}*h)(VX# zofxOfwU1^_RgvhsWKfF+!)pDlcEh;tJt_#|vb-e1*FDK^!HZ7xOjzkA{9%Ld=3gDM zxF@ieM^%Y9?d@+uH26TuXcO+5cC=7Be)YwLa^=8Sl$;s5m$W#LP?d=V3Y`)8+zt1# z((QP)oLP2J#33JTlUO`dP{%&4A(HV2Iszyv@TlU~u==F)uv7v3mDw3M6D=%}A&Cq> z%L%vKL$DR(g|l~{O2xN5KbPY1(bq(P%{#{{&9(~_kh1g`GEKjQ59LGdkIr)hKRd$I z43xyKwHyekOMLDR%16R5e=Q#WsiC znKu_%E`q9UI8({b2r^WD@5PiVtoRc6MdGxo-uAUe#_4x>ll92kl}fH62Iw-k^3}f2 zQk!%%|r{Tw;ZEO5C+S4x=@!{``lSp$VzS zbAnY8#wYbpYA%&*9N+Dk1G&d!KFFOP*w0aZIOZC>QM;<$vfW>ih1-dj<+JN4rfv#& z<&4@|r+2TBab@+65s2Pw2KQm(WH2*kD8+;g6slcoWY$C^2J)$&YoK*xOy0SDj;5Cx zwfxy&S$1m{c)~`qgvfEGZZ18#FQJNI`I=PGL1J{GBeZ`M0&fR?_J=V^$3F8;ieg=5 z+kZZ<<MHcVty8~uA+yya0ADVEe>*$jhBICd;eZkbu+l;^Bx+T_A}!c=d%9HFOy&&!H+xmO7d#+ zaaBfD`yth3wO`GaDU~qvZC;d;j_KrqoMcLqg0Y` zLKuUt+RYJ=tE2of?6Z(#sun?%tyBhwyg7q>DCnwFE%Zxu%0^Tc^KAH!yiyfGUB5ry zzS*dv!DKV3&esW!Ip@2x0iPxI#NPeOcUB8#(nLG|Tiw^10}WQ>(C!m;AkRv6-pt1i zkpO3Z(6dZuZst9BTiCxj@Krc-Hzf@SU&AQV^IK81#<_PRO7h5@u<*yoC$s$~B1QH0 zJVMrhqK`Nk+Rr$2Dt9i?zE86Y*VYiX#c8=K6`ZBl5Wm)ueG^MfED(ReaGc%@?eW>7 zaGLw+K{Wrc=>nm!7_@kNU0Q;sE04`lUEW)x1!~Tf(2p8DtXBJ2q-q=6q~IVb{|l?t zGU}jsRmt$Fl`U7w-}c{+?>S0}1Utj_5s@3orvI<3vkYkJecw1pcc&mQx=UJmgVCKz z$w-w3>FyDuJETFRLy(*xqa~!21}Tx2hX48g-u_?h<=Htqd!FaM@9X+pJOypNB@*tR z=+3WNM-KXi+Lgy^-ZG+oWGF9E#Wa2UWOU^-Umvhw4Y)>s__Uzb&_M;#D(`*lcNhd@ zr2h`` zZ2{h>{& zPeA}{4W-^`Qn%;(21AFts}nMIlle=TPXU*IQ%K~lm`g-G{}co-ls~SPyo+e_Zfvvs zS+pen=4Z{&pM+=TRo{==?l++@+aoAUxc~|aVh`JUXXVCOC9 z)-DVAwNDt>XTOnPM+5d9ZAz~Dc1K!^a|QL4M4n+Pj>qR-9VgWzPtcw)P{BgFJ@Y2u z6GH4w$h2j{GSrE!NtCrIN2y?ms$9*sAagd-tbIb}1BG|^KFdbTBuWrD)EFqo!JCwcCo%MwGps;f%P!_D~($F0)!dEZ#e%OX_f|N(bZOAfe+AkKI;mzt&c5v&!C^oVtiP^a@forAn_+ zhj^UGI1-+zOG{h|GDvt7mtXfo^x1)=fNW z1Gu~zT2oD&-0~LXhuVxe63z~vHLaLxLgW>a4K}{5GqIx2V-E?r4$?o>f$g~pzO0DP zbs2AUz0g&Xw%niVP{@@yaIQPCiDBf(dgT%K%VTu>baHe;pW=*JtQ~4M<#`n5Ui_^0H|i}HaJhen1>8Zmb7?(6{*Ey+y2%sYb4G&1F%dD%_w76yXS-NQ z>{OvczQrp@LmY2h!IOL9W3$Gep5Id$dY^>e8LuSkpWiG8%GIR)zOYCoSYk{Z(I3pO zW|jV!EPm(Ek}XJ7lzS~P@$k2wzqws*|Ky99ERL4+!H$v0eDoT2eEIu&%cb5MrvsiK ze~Hw8??&mFOiAZi|AgFHXiEKEJc5ti>Kjp<(U)yMSIP6~#^;Ge`N6kAJ5PS71k?7I z#)?#OTnhag!gQNF8N9i;_5uUEg{je>?{k}43o_D78AFbiK@@-Op4QiR9Pr1Ceo)Ql zr{ejIxgtr4eXYC2gGEM+8I~rK!o?gbGzyB1ZG7tan%fp~-09aj8lBLt?)8p*a{5%3IO5qdw+Aq)j zuG8t>rgBvp-4-7rF^W=?<6 zHiU86qQ(2dsis)u=RxU`b=Oc=dsv&le-HiA=iV&!7e*&N&1-hs_b(nu^vh3E?rY_GI)#ftLn!ouh+AN}gCCY2?G~xAMlG2~`+wJhpv!5nBMpBS}uA;^QpBrKlzIM~V*JHlbBV&}fEO5HYd6E4z{WJZ( zM3Of_CPrh$j245k;rWN+^L#JmR0`^X)Uv^fC9h~o`(e4ImlLyls+Aya2ZqU_pno~8 zr|h9GbWIVuv`F>y+v8`_c>KHf*>0A>tmH4`0er&h5!^HXGOcBwn$auJS}_>#A6M}6 zPt~^IV!Z8JN;UguUH$S%o6Zf@;jtQYxE(*$TIRW<*^F9z`+48pX`Ot(>C=M+Y>+2q zP@@!rQ{QF0B`QXhFJV^`^Yj-_Af|O`W*+s(X!Bo#qnr zsx(Ls4qc8~p&)4s#1_5=jv3vLiKJCz%Y6$8*&#gFC)+`B!oe`!;C1#T=CU<3Jipwx zsn|0zWvz-86-Hg8(swI_g9lL#wA=~f!fR|+#s_a^Q1}0)%0^mp6Lpb@B39AdI}3(D zf}#2g?q9kMC#7`ETm4P3pZQ1R`%P4fJp3jGT8)g|E9)FsziFEmTp2h;9*k35Gk4#3 z#avBQSx{P02aAH+ejb+UWVX#lvvKl;xRoL$pScG&|0GNX?g_j@`{yJge-ii0x>JcX z#?^w`!c2Jnp<#@*`^P*fTxJ>R8Y_qG+vaE?v4X?l1X_2ywlw^Vq%`_g6^-_1B*R(~ z79ha8X9Ces`?F>PsiT5mSouS?3Io#ndZ-PWq=M1`B;}XipBBL&1fH6AmM53Ff zefFd`<86?JDFo}UAbLuteqG?py`>Ayj?I6!uvxm0tbd1>S=dDTYQW&;qA)kYqW{pA zk;QwL378lBFoDcXi*2kJnC;XOA9{g2)$CQP0Z(eT;XBQg>Bzy*3yplQzBR}@1zf-? zsUGf#;?rTvZ)m0)`NqGPcBDpypPSW7^x94)kaKipG=ac&PANZs2!76oPm$x_`v#hK zFN2~h6-a&Q+6@utxT4%!?5;4Z*>#Pd@vc^sw=;ik@F2nS{5WReXVpp{K1t?2+mrI7 zH=&>;MO$VI#A#&I241HbX@;m93q$WF3to~I8v$o|zaS3|Gkqr7AO-anaz{V++hpXn zr&`Rhc|69|-@q85Ub-imY?km6A4`b)Y}mTzyiYz|jPWSQVSYKq_F(fR7ulrB#k9X0; zD12lDGG`U2lSl}|2e^S&LlM2lMR=M&x)b}&bKYGisT< z#;oC6=$DtF7{te2lK_rLh309&H53nCE;HiEu_-Ie`9tsc4-x6?&@?)?hG`X}csMSI z3|kObUsbam@kipf#(kq8F@1ytrxeG91IQ3A1#zhhb!sdGYY|-wGzZGQ8lfsLM9VCH z(5o&dO=ACpsP=v-Us&3(a8`9lAEAAg5fV={OqT& zjFq**E2{UHUVDS^3t<-*_L*+mfRx-nEtzOHoB^1mvv~Wf)k*0beEaHHWX4@;CRTe_okL1>0fCi=lp?XCls$i$5!{B zUkK<|E!TD7AE^-OP5wqKE37J6M43rv?nBLx8{c$EMvkzjq@YMIN*zS+s8r#QuYy09 znEVBXq<|a}cNhx`E7Z2_8?UHD@iCH17CYkSQ3IFX_n2(mU(_fWA$yjmb>F<7{&NKI zbi-W#l%BXHMxHcRNb6@d2qlN}B$m|XS231_Ax~LruQoUPdxw)xSt+HNdRUXZaS6f+ zYw$-J5d;Jo_Y;$sza?<4*Cm-&(V5}^UQ;T8<^33X4{!cahfD$)w;{5|#LBQ=l>$oP z%3t%8CeF%A1E&m@>~mTldvi^O*nGMnOz2mfRJD(ARA0v^-6GgId2(%%9%=L2i}c$L z=5WeHDED6F8nZp;%azIJ-lrYmV;b;O4CjK23QP3N0-j=t+GIKDVuyx|pj#i%yO+Fs z?54M$8Gla}9d$IwSs+p)vCuIy=&%v!Pqj{IGaJZf$k8;s7rv+OYQL^QtBKvUoGg^J z0}SdFyM-9`-ORmDFeLyZ^m6P3kqxUN!WlqB1r7fwfrV91+@FXnHtq*Mh~3bV+?f*E5M1TvN$lAt2p7`L$jZF>6e2OdYQ)lxE{lFQ=wY?T}bdNTd{dM zgV2x7pn|w!bBq9n-^TA^!vgul>)n20M#zP`&P;9q?=ypq;tMYJ+|{??(^CHyY>8~# zDfBqH=HV~UV4HmD+L$Bw9-TXd0b38ZM_KNh--aXcD7OA1SN%r_BQ*!@DbNS2g=dEW z#6n+}PXYk3=44*cJeZNZBno^@6s*SuPsO??pb4LsErD_Hu$&)kgt~PTJ{k z24oqA0<%q^Jc5{!sIrZz1071Z?L96wj{@%hZ7kg11onX`W z!CPPZ%AI#oRG;O1e1%w1d})D|<9dx%_AR>VKSJRPzB$DP*Mglqx7G3 zK@ChYJ?b_Q&zo&esmKFF3*DhuOU!nSzS zn2->p{piawY`4#k4>5Am_yoJQ(LB836$=5bM$UMijMYRo)Jv5j`q2%v4T@hFm7$~= z2CXxC01Q%6YMEg(blx-|Ms3@nFatAxHkLW(=n4`}nFsL*?HTSq)i?7xu`<~$)kqSO zGQC(}m$vCqPP7dY>bS+q(x>BAHbuQscf87&QZTc@|CSd)%v}2)TPN~PI8QPYTdk4( zj?N+9CP__v&5=aiAryAq?ZQn*J&ZToY67N5JYFxp2-5tsKcZ}8WFz(_+#|W08e>Y4 zT=m4e;^U?)J1%@NyoxzR1iRh@$@RcV4snXBVC0FfVsXMNRZY$$V^u)`Fx73~$!7uN zxcR$rt)L9HW3%<eXU%2NwUf8UW8d>_IJkVbr11501LSn$j2TFpuMu$!Iv| z=QsaeSt>Xb5y#lBrmOE=1Nz@Jy|A$bMPpwU;*sZ3V$W@LY=0I)02;bfps{OI_jv=K zPSidjAHZ00_^aZmxAkl9*h&%akLYYrQ2qJYUVnX0U5y@?7>w8Bb&~iL9Q>d-t~5Yy zktR^g@w$!NNR*w=<$cL!!ATg^MwVg02ow+LkslW<(I1y870e}g>ORJqRBA)bk+(Vm z2;9iam_12np2Wya1i@#~oD1VpA9jA2aEmsB@kVC{J&5(Dkzy}DbwbbV19GDhsP^m4 zkUWY))_{eSbyN5J2@ghdY=0iH+n9B5dr?>AS0)b>i;9uCr;v9jM4^ZsYlzo>oTsU% z3ckJJ>!2K8k$B0*_X~H63)^T;%ZN?ZM%c|AB=W|W9qw^Dgw9TMpEQTk=!_9zH{7Lxez+@C+1nQ4`U17ae($s}5 z@PGyiLS&|mAoi`7nFHuU_+g?|+)q&E&`>B`KczUK zV@bmyu2JB~R@p=)-%nKMEiG8AMJ?$UVVOn*!n@o?x(>dz>NOj7TBc^_IV2~bi5#o|^p1kC>FkT!n;O?DH&4QVfkHc&*;X5i>3LoJ5Q*! z!mAA`M?xOXm<+tb|9w{`$thRB+!Y3x^F}XxO(<7WLh21Dmzf@+71> z&RVlSF!R(pJGDA_$-NjjtEURAwXDw2XdaU6_vywx0OD~A(9oyL9Cgh|o&n3as`6`0 zQDznTc{&IA`8z<+B3$P4^IbdL+0;!-JT@C&yX$Ijayg9n^PfM(&2Rl$KD}aZ@?qQ~ zXvEm)>wv1*k@bq*r?7^zfMD7`&-c$0ia*HIsW52yYdUb?=aX0^hN$U zDV7A7(${W$K1LFZ+xP5|^Xq{1A9cC?;}S?W(G~Zc49+uSkjlPt{7BYMo540D^HELzB%A zM}6!Erd^Dx7Jz8E@S@_Y>9Nu@Idud)Y*gWlo-11=0*6F957NuUdS_C_EQomT4Twmd z%0uoF60Q>j@kNt1LP@D2t#nh@@6+3JUHWq5=L za%~^g9O)izYV+H$U(A}*#jS8^YDioeE1w~@9KATUf=n2_dDpH8($(8x%drnB%A3;27@ACJP zt`j?1g=Y!0KS*h6qDF22a63Mr$slAF`MHe$?*jufH+GVh*`gr^Sg~a?SqK?=ur4{L zBehMr`2}BOIe&02u+0h|Pm#Dr8FSm&%#>0rHNGL=k#1rKd=|4_LH3u}VD14M(@+pO!QHs}KU7PtgVvUiz#>8z-* zR;tDyLLM(eI1U(B$;-(9vyB;4!iQj({>eMi1!fU+q_2 zXq_kXq?1y4FP)evT3-)~t6HS|nCQ6kL56YZz0>xOG%}$c4lm3ZtgH8o4D zbG|3!Sm?WfSE@42{y2gTxNOs^-a)=eaeyAU;|~-~s~DO_-5Y4qC1d*lxbvpH19a6k2H~vr61JyuB2zgJ*pGx$2tQp82jV0G__qc&^g7_}f`}v6iktlkD*9B12)wa`{h8o0KK4lj=0HA}wWrZta)W zmyIgA(zz2S)WRvY*43T;hg%^>!AU-2Qy-LL=!-tE^TJ`u zapcrVKBtI<+O&Hdig^+d#7Q|Ro(3>E9mJ~>oKFwrZL4w^FSf$R!i>XTn>%E#j zbz_rHSm94BGMb+f2O3{ta7V@-#jEv?Qby+Mn$%LUO^#Z+!eNj&GU_Dz{6k9_#?3GN zA&>=mL9<`fdPP()Nbv?B+!4+*y4rrFXw3hz?fLCbvYZyI8@^O3b`{g?&^sNB_Y06txmW*1TH^k;_yy|5RA`Qm1rZ)Qu zdiaY(RlIlH+1z{djC`63&{}e9CyD@~o}2xTDjhcv%oBpw9%%@5>xePGr$D>TJ{{L) z{R@aDc9F?S1BB`ZxiogaQ)YknpPJ8Tfej5(Oz$7{0iE(BF<7P1#yNG)*_uS%ims ztkXEQ_g~ruP;6!|UHzkfSwgGcQ0xq>1l zf?aIOSQg+HSCk2FQEi#xa2fvN{*M)^wT-2IR{ZMI?~Ce52uLlS0ah*e&eNdG}wT)B7!15zSD^9 zM`{h=6X1B3?Z0J6ME@LxkTas;1D@T}_^1XU2i&g)M$a3a(bl~gkU)Zq=u7oRa9Iml z3DWNYP|su!=uq>Pf?2MFf_c#N+=;52+?JdwbL_;$W5z)idRvi$;=5pM;Y-}FLwVv= zybNEtc=uzPZ8e?Zh&?P8`hNpV5#gtA70lUwMC%#8Vx2Rc#x*2llKVv}H+f=WW|aZy zEJ5MH8Esa=ii_{CIx%01n+EjD@b+*pv zN|2ALC7;-N;9jaJmu`W=Wx}7S5XwZPdFA0NF2p$x9r}o<6Oki`gPuw7wRlcg6(qYg{}|Y49Mu zf_k5Bo1~+1tgoc~+J9)J(*<24@h6UY^m=S^d<+K!)OM(Nl*n(F8)OrV*!rbE^4pW!HDc^iFC6>p+&E=7+bL1j!F~kXy!o`QpJtbHYPI;ig z#yduf3m0?QtD$6O3nzqK8oWv_c*AAJz=22UNml}@cRpV0uUPp3oQD$B9EV3ro|k^7 zqSg}{D*{e8LzH{0fkn6@`G~Bj8A--bl$+Ygs-8&!xzH-mMy#?ELy!^l4xe+Ls%iyH z%R)^WdUy!nAZ9*FDkCgl33xVt_=Pr|QO4)_#n6dOxvdvL(K0~#&dLs@7Q!HD^HnBS40cqK->DsKD{J-u01iG15+*}1A(FNRpYR~+xqMFj}W z6xYDFsDG-7jog@duEjN`Krqk4xCERc@LXZ6or!{j&Nl?=VPY9x4fw*NxvAT{;6E>~%!u59F>2tz#&2H$LXHbd*+ zjG9GClVWkd>p_#Rf@XG5cE}&=h@zSnYTlLx6feG}X%!yw-+yJYnezs=CZk6kie0^O zBT)MW31B$Kk1B7JzIQ6%#*Z^kNNy6QA+2p}$ev+=_)zg%x*~Hd{O$em+^Ej>QNi9{ zFDeW+Sc7@Vm8!wQPSb2=ttH@)K@y;I_>=Y{(Vz{1}J< z5{ufY+NKQQiH$4M^?>94Xr_Cz&toyh1PU#4Ye?a~=(%hA8J^7yqz|d6{jUOVf2FiCs%dTgN+GA#7%$~uy^&7R}#jZH|Em? z(vtT_D;?$5wW}jY&=E>B!ulV-c?$|wW5Au}uYCd=RA3v5f5ppVqyJB`0EHjS`T2PD z@nJq)jALyLs}76q0H7F+Ct@pEXV&uZoyNRq#!b4|o2krmCUjvBQj2EmjZHK&aj3`Jy!hxfIN^@~@AdnZEHJFYkcEd2bcKVYL z(-!#9+u8hsNVmQun%s-K_lDT)J0te>FHI>K{5bdwF|fAs)jyC@C62w@hc|z~e6v0+ z{6u9jALw&t$5vT+aK)#_GPmx>B`gv85Wta&g?OWj%B0h;(M2Ot&_~1#D05ipL@YF( zQM}C-v5Oauy6+R~pIWKZVe;(eSGuPQ3XGD zEMQJisEhhU>WyE>oIk)?T$!EgZl3PQtWS9QRa zU`i=)3Na-X3ZX44XL%Bx3d3OrdRNS8MM{BJ^|htT$dY3{W+abRA0da$>_;vp=XfpF zBdNP@UN-&jcChnH%kcFKuf<9~p&yf~2I0_2?0 qnO1%Qs@ah~^34DD5wEcIh(7)lw^T@|eF8{iLsNrjgX@&6!~YMmKCSTp literal 10631 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 diff --git a/docs/static/mb/projects/a8-network.png b/docs/static/mb/projects/a8-network.png index 6849a27eb6dbb6d94a06fb2a8b34bfb05667efb1..9ac1f2f5c14922aef596cec55211ddb45868afac 100644 GIT binary patch literal 18577 zcmW(+1yqzx7goAErKCFrN$CcOrIzlG?rs5Tq(M-S?pnG*O1ev0T3SFr`X7GJF*x8G zvorTTb)(c&h(*eeeZ> zmBf3A7cXk!(eF(W!PltH^15y>UQmQT|9)whhaddng*=0Tw1lR&(Qy`P`}?`;@7I3c zxHU9)dFToyO6U?(sF|fwkO~ubQRz#0bN|_C(}^igy)MjvMB$|>r{)gg@X%$v+Y9Qv zJKkFLI}!EjJY6*n63gy?*Zb~z<>ExwsC@#DuE= zL)MfOBRr*>i4A;@ha}9Biv)s{55qu`8a5$F>o$=mjqTwf!C($mhl2lP$%V!$J6~-V#m$zzZ^=(j*XuzcO3+S!AD5j}ooLa3+ej%aLFwaCtCN+M z%^6iOLZvh|+(N}vy!T(<5`H#tjbbuvtzYUj;j)%6C6!G6`qgeMTWsBSDi0A&v}7gl z?l{fCqtt8nVuZ5`ib?i%wi9`OwXLba=ip)kdS#RF*`~nQ z*&5#R*vBZhMp6ac*XZGY(NGbT@qfJ8%d=mswf)p>@**E50&RBAZN5Jr*?9_+7>J|j zPhr-WP3kuJ5DS6&U7rvJJv}s~iw3kpTU-m7^y*8jCv$?WXG;?6|I0MFskfPt{`%Ho z`>?0LZlP-P6aN~Hpr9bQa>Am;#~wYHNw9m(f8&|VYXR4W4fEM`<3dWjHq+9Xo=Y~H zt%p^~Cnf@!{^vsw)GEU^?Ml>a9?Rj#+L~#f1|^4-$zvZzRmuaxwJ{m5;X~ttDol62W<~m%X50~+B}c(=oM4cl#rx$ zlN!+u*Mpu2vxGeG-uySJX19qgsM#M)h%XaOfZOJEN+j%gq^2(!`qk^-MnsJ7Dy@HxiT$$&aV4fO%q*RUE9j;1i^yU+00L5{L$lC!UI~m-K18T)Rno; zuQ@!H9h!z>uMVrbj4D4-RKPCAg;oC^Eo!Ks@{sU+s;`CpW3l??Q7LE$7?<*$?ST6dfp4Yk{l{g2##{}9mB~x|`<)-($6DQ< zHy@7dIOliT!5HsyF~(osaJE(W*+?iOY%XdhEBL#Z|77fFcH)KAwsdeKCa zaTJpnNKYKW!qXf1pUGrAPJ+!4xzg!eV%XM*k#@RRCs&C&_Or&^a`&A_&>6$ z@r2+C$;|NN3!NO0!9Cmc&WUb~L&1jmAuo}LDwyQ8`} zh_~8Mvb{UcRLA#Av%Um!4rAN-3TDy!KT@XpZ*AXqpZ)2@j?s7O&^lW0GUjkvYuCNM zT6Q{b;M8QM_vkShL^&!BQv9$yU#3<5!iy>WXIivB=bYGbqeJ=XfR4T0@a^tbr)@v~ z8&H)h8Qy=fUf1Xf3^=~^9s-NBBgkgZJSlVp>xFCdI$bk#owzJ86kX`~dLyv0VQecQg>St7n3Nl~c`hAK4N^yto4x-gqWi5k ziC(Efuff*l`T`FLX%n|E=>BYAN3h<05z@9g8_aKkrcezd;xwx0P(X(;sAMut^f&&h zU-p1>_o+-mzl|nj9iHgAUh{)*q~7}RDR~()+?{dXP*Tr| z@a<}w7qL^xVv*=V+tnQ}0;yk>!-`dyVG(n==^?hHYF@Rf3(%}_!SH@H#NOG z;e@WT=U}Ed{_2PO_PoB+r)HfTeU!j3z-X4Rj-Ey9L%>c|+X>_pww;m*etifadFkQ(aJc~ANc&tk{YWtO zl^`q?8E>p?ofPHNkTi;vYrscSv}!bY4)$XCn~A+CIjXsnL)KADcLPDT4zM6L*ZCLq z@au+66JMP=ORu;{rau>u)8B*lpDP#VXglH&{QM_P-!aP15|RHeI|j0$%@;K-I)SIB zhtnWrySgAydCd04v%uk?tAPj&1P>P@Nfjlfpv7?T7_ETfWVX`mVm9`L&-VT1@5$Uy zHV^XHt#~n`j`N7ea3hh+S&iCPrJTG~liaS`@|P^w)oC|Zy>cBq&yS%A?G~EJ^xllx z1Z7)C>Cwa|ck=fIF}BjjANUQna}Xt8Ypd$ep;=|4t3unkvdzl{fx~_#Glw=_c=y4=C?$zc!HlV$YPK6idX&~6hqsgY!Fwnij^``CF41Q1jC@vVig$h6sb;$QaJ~K+Q$MRG zfLsHa-W?;no{=*p)u0`8xR(+;((>RD*_IEc9Hme!PJh-&wPE`F&W)HQ-KzCW8n`)AX4FE@qRs;+xP!as7X2 zge)b6{?0AG$5*P2#TtHO%TWbrHnuHvqtJxCWWI5ok|B=bFl-&X;IKYesODrXe1(xA zKF!Q#YqXg5NpJd%&$)%m<(y7=;Uv!F<5As&G=NdFU;K;Sf8Ev9Q2hMgFY!B$kZoR` z9e)}d9$ZefK7<|2aAoRJ0-}6Va3tgOrlqJl^W#PJu3nRKnS9VABS*Wf)N4@WwVo8O z9ExDUnDSIDs{Cmj^iY_#3EzEV9C$--t@lwXU-pwSY&AibX@QIR&zGNvC@*bavx>}i zI_CacQahv~u&J?{*wjt6g(?tEJ zeBEakN^Pis7It~uv~F8YAb@B8Rey64 z@AO@Rjv2Jgvr==db1zakolD}_l&gSW0oT1)tG$XgRto0exVb13{-W70&UoV6yMD2! zd)l^h3@TBBanwvfw<7yLz8hi0WgU3%8JDf7i`~0MuQ2wdb6G0@Mjjd(9U5fJ_Rq_* zR}Mpb)w<@fU|4$qcie{-a&&YQI!ED;IzP8$BF~6sXnJ$?5^wUZU!@`2tiVs zX^ftOh;Eycf}I4eXVRicC$s5Ek5?vS;L=ZMJ48h=5AfkEWFucg+r&Upsz|K_4c%)} zi8@D~$tYr(&tec~u{$FjZ;r(I)8@+=z0SK6;l;R-70{(#8zlpRS zbygEZ>w$Nb^_c)OF&0l$Kx-u1FX#31d@go3OY-CJK*c6XWz``=?2AsjWaK>j-Jh}KgLgbI zj}w&Dvx@zb<+GcySy4BR2N3sX8#JR7HeE;ui@$(sR)15#o#*ASiM$h;2e(jQ|hWdRpf1yj>L1=SGR zeca-GO+3;mFqtON3{v^QuaJr)(w5!nx6=?ysTs3>V zzp;J)8f+H=&=(VK^b6ifL(0M`XVYzdyglp(B(EavJU8Po zPbLO1tArmpu%s~XQBtyH#NkJ%>$}q8BnTe39#`z{bz%`hd6>4 zya2%!ocp;eBx3R6)0dp!#Er;~6AqQ~GWUOCgA_zACHZo(57>QCtLNLt4A-PBCD4Xt zGS<$Ms#_Gqmhx`Irmecqyg$%72<wK&>tvhTgzg0SB#5cHV)(v5N^BJ2fz_(ldO(;^ zVc68fT8Cdu6h31a-(x~35nA;Zo!CI6@;z`=@d4U-Q5aTudD3=T#y9nhOLcMn0H~y9 zhnChKLmY!G`cIr4aZ|WvIi^tQbD7Q~fhIggC^f0PUf9lLsRpC&2)P#v(KD-ZYbhy| zvExvzbzTYi;L6{P!Z-BgV*B2M*Z!y4Gj_->(1Btp+cRWQ&xiQN)~|XlJJkN9dWQr` zpj!jI3zx?a^iI_h2_!t(j zO4k}XY+RH%u%&vN{Iqjs?TU1JHzM0dGcNQoCN?SA?)yy5tr*TulyucS`DBLo6#%MQ zH-#kujtd>2^sBf{`6oHzx11#OPnSZ-9R?V8X(Q5J7_reGVO6=|&zw%|M(xmJuts9c zmZpMgG>di?_T!m?n-gMBv9@|x?-P47ISGs@yXc+3*~z-#aWE!qg99^TBg znxWrYb+#~u>1R?xQCB%T{wD1;03aNdq6OWi@}c)eI_ykVG?58c1gb**JdqpC*4zzf ze%cUi)5Ll4q9!awtm4pq36l=+Y_`k-RDu6;>zmW7djHaeQd21ChI#xnjqr&hfW-CN zJsOsAoA!Ln(S30I9UXAHUmO!hAsntnGHD`D|9rX7ZA(*!m1gxcSruZYxAI%jpxZyp!`aigbkQowWciD?%&4wxB5AfLhUK`Pr~2Z4(_HxjCrj`|r(W zm#yblLSj;4wR~=TS^x)@TMQ-XUCS|or)co?`g;$kzmlGDjX+GSj{A?R02%OHAS0TO0shts7OS4$N&wPet7W&^>TwV`^~PmW`uHqS zRqR3Ym{6EiyJ9jhTqT-_-Bzp0V6hb-{YucC%4h-cQkZ68gIfhHE6xMxcXm#*@`V6| z&Y!Hd%}wPOtLMuuZOwG=0(htGCo=&)RLec8RdA~cDEHxZvT7qo%Ql|RCkz0bnF;5? zvA6fwpO*2f`$2QP;ue4V@plGL_^y7+gLYlf8E{wjj@Al1^?YgZx3YI{j|bEu&40uu z&aZ$EV6F`#e3W{hfXGotTRZKl=rRdtc2EH68md|kSdKl7Nk#peZwr3gEY=oY{fwKf zG88r=cKQ2z>fG;lTtxfbNt>-|D7BlytFQ+9MV>_iO|QBGI$>e`UEL1A?+;LX+<|D( z)>U0^J=L=W4wbLm_C4U1+5nU`3|yrGN(H5rjfFivTpM4Gi+i4|kWL?W{M(F~TSJoi zFPQ)hoqumq3VUv?!jW00Ds!$gz|U@bFp(#r)3g`qFkb92A^3pLZXWuqYI-c$6x*yH zvN8<-XkGRulDze8gx|OvrB4ALXlZspZ#h`?dDgRjQ1GfH_FZY z0?*^6JmaoFNR%2g^_Q6fmxGlSxBe`zHD zT`Ty)4z;Tc1O-vQ49&aSJ_5O{|NiEJ76N7ZQJfv9w*qjL?fZkoy9M8xhiE(LlL>Sg z?Wj#_la{rmE@KM{h+;~Xh{ATJdx(J*m$XzcYXtxvNR^c0TZk2TVDl(h5@JW%1Ux-l zPnRvX`_zHkLXDuhOk@XIxSU&0*5X4AHZ!v9g$#F{S+tGD%lc6LCtTetK9>Zvatl=T zt6pZBz2?bOS}glJog>P3vfCU`x@gaRCPnvFH3x1BAw<2(U~#t+2qTsMpWq6HSDcoJ zP$8&vbNJcEgZ#ctSXE@QOnC)U?dOAGw1T8s`|@GWn@ae!%95ie($_VHx0}aHA2qd` zQ04UQgunb&l<@zA?c`+OirC^*cpUo)7?a0@6 zKgeDsnVDjeaEbrOPl~#j5EIK;(`JDbn8K@XPCGUR>1#rTpYU}p6=P^T4kI_Sgrgx7 z_t{G$Ujx=h@%(;tF@VS6YxDP6{v;x8p;OA>8Sg7|Y&z(UHcIaggpR&vya;*CgnuRB zLSN=6#6dn!=26jkd%(JA81X?gKk8{w^;&ucX!U}>#D~Mke9_~`1tIK(9BB??Ctu$U zG?q0+*|)ms2pMe8R*m)R_<7ga^}R70_%0`Xl`A?XbChj$vNX5p%o<44MD4+h6Lty8 zdNcrsK1jK!RY6yaR<(k*^^RI}ld~`Xu@OY#a}{T=&z5TR4wptFz&%1gH}@9EBnWZa z&9gP|VavWQjT`*s#Ju;JVUbt09*$9<^0oeDiJ zFbZJ5gy9HvX;FB7V#KJPr5f`HfsK#&a0K3p;H_O|fdWH#@7(3k| zClaGCw09mqBVS9_JZG3X^WD1np7FGheqWuwz9Q&;HXZJ_}6G+G}+qCgvtH zbK?qTf^`65OXhc_vi_Oe*zAvg^I9WpGk!&T_0%}3%~dEpDu|a z1$P*|zjw!tgIb$}gW(Cet)e}<5281c|7S%RXw!`ZBbr$E4Ms;#m;8x_RTYDR`_f6X zvuTstk2R1Z|3B(A*ITMBlQbiZ-`LIa{5)fLk{P4S*vB>fUO^H+#^HIMuB~e5azE?< z)lyxl6j2-Bk>aJFEEVcc+GcO2HMNNsSJcVhG|?$A#6JpWF;NUvL39a(@7NM&N=&7P zqrDfZa3`YPoxXopQb8wzQWp~me?h#>P6kQ)$Xr1!6^?+AMgdv}eQ|aI-K*hO3UZmJ zBYk!&^88G!MRcSzTi=V`n>{5NZ%ZGB4x=@%F;$`w&Z0?`CE%$|`si<~l9iE|l>9^*KkWJ6 zoCfLJ9}3k`wuMPann9%^un0j%t_G;~1Fw&2?2nCCf(45AEZ?|<6xc8poPiZ(>mXVn z7E2{&6le0PhxYnftgkA!cZbeCQG;%xww92D-VuxRwq%Lb_3Gig{O9#X@#gn~xt?3E zHcjoopH1r8QAsrA{(>3diCRUm$4lCHGDi`RssD=ivLdMe+pL0-9GBzt{bg8)%&buJ zDC0p~*#bJhw)@dfb)f6zh%!?_^TYqtTpbg)um%#hG$z#m(@*Arl0EvZ;~>7|F|O#{ zvH4N^USQ4BLSYY0)u0s7PQHftiXzlavs64XpIg8@C@`ajGwP^JYc?+2I;u^{8yssu zSly48w4U(?6DyT`fOv3n`EEGwfM!*U7Sw`p3|DY~k~Z3_Q!S<@Kj)|~Uc zHO?*~0zc@;eq!6Sql?VOp)cb;lQJ4m+uzZ=NbE%uFM*n)RU79amp| zPvu8|)wNKxl`&<<>EhlF)t6V9r;QiMo8Jxt@6pxdDeIT`>&-Z5;uX4y%hq=^gPHE;;ql#Q0{{l!=D>&Mv<wwAH$Z~!NF+Mac+|C*%wx%I)=?s!+Bdb0h1RUX>wbt~S~Vd73rl+@6gawtST&!q33attV%RE# zmup9CT+2p}RCP9sVDc|4&ug)4Gm+o-WaPGeJeXg~O#Iy%>R;1^*IVWvS& zmKvrVMoTsHE9cxyde_a|b`)vuV75Mv3{8c1r}Y1Q zP8dcSAa{$kY9dj5!n3|+VK*NPrJ`iU0@MN@sN98mUsZv$R)3O5{jTP5kpU|qq17hY zo%nhpi&2iX(sD%RB&|~N=SdOM7h1y}HY7NEsnOvvLbLV2(ow~gC8d-=GnkOxElyoe z9*Gf9ljoAep7r+nPLiEyjS{vOE6ir%`!6uxG#mX@aPM7FDiX?_#mGR_P78Rm$muF` zG9M&;a*qg(JRf9`f27fHg2ux(il)JK=s&7N&1QK*Gi|6>=0t>q+BI}9U(K*xk`PVO5i!ir=PlVT6(Ow3`Eh!3D9g@Ak6f) z!a+n!I?F<_W}dks&?)}In^{%SHRrVEjgIMkpN?|KLb0L8tv4v5#Gg`=`?0P&VW_VF z2F$bdF$9@@cl_O+ezf5@WoJh-JhqvkJl8GnJ;PS_#HY4gAy$uOK$_@_+SU)FRNHrE zHB>(do}%r1oTjx5=~HNBb{p0FR)iPV-~&{gav&R+%mZ1PC!>T=8z!V}(Wp~ppxY`i zwTW>ta~plm`q|JkV|4GC*IBCQh*UI%Ane41MfMbOw13_-Yg;H`o$-{P<|E-rE%`r5 zV^bRXZIZ$|&x^D&+_WC3{~U3!eNX8gUKAY4F`itJQ!%LHcTiefuu1XOKK%%+I)IcU1v{sM-6|{=pWv^ z;}Vy!vLnFS$sIC~<8G0d${&2T8GxAsBITHNAub$q5yd0j@ zVt=~uyn*bznuPDdwLA&4g5i3$5YR`(!imfC{u*U6K3lpcuR4n%yi1nLjnndaJFnvkbk{gnGcWjq(8D7vul>7WL9k4Hwt9jyZQjQfBF3S5P2)?& zvcm3)IL(+{D8xqIx$PO|>d}apXhY@P$Tya8%aNDT2k?I=JZ9Xjzkk8v zDv`XvG*+9u59mcKPo<2D`u1okPnp*UYtLCQsvk!1N^l%Lp{nHsR@S+l*#?wh2rI2P z?pcvzVe1qweWfB2Lz3l~_eSH}^vf&{nVvHR#;k(05UErgJo{3Vo+l%sAR%$(&nF7u zOaw$|k~&`GD2;DEQdQz@bmTsA#eNe!d+q3GAhpM!s;%}*t6V!(OJ`LeD#zdJI&uS* zG4nNH1}AUX>(x-9Q?j@AYIYj&z(3UO7-lrE9EDF7U?`=&H?nqgJ#JVitK9E@4vC-( zC-DZXdMuPSWGMBap<8b3;3egLQX;PG>7hU)TFALj0fyy0n}8Yh5Y_@hOq82fs8VPT zeffHnF*jmF>3g8gntcBbhlqRHdFQw|fDnAd5iA@%=)>s-yp8#`=P1ZDWW?ax*_r7mn@JnEYDq8a8rBEA&N}cO_EUv zqYow=l#W_uOicX#{BV6I=L6{v4|ms}6$+w0pb?K67wnnxAUG=Qd{1)6AC{CveIxuG zv!)9qfBbeU2?_Yuyz_lik+EMRY3A(!DL|w8yxXA&N1P4kuKjmjOo5W9-nt&*pNfX_#0vG7lEY9yE)w$zw7Upwv&WC;vkHu$EMuh2} zy|kM+E^>9t_ii`Idne&(c+QUf0R$>a3VWo888)bMh4<7ZW1;+)pRhD*wl{JMnzcpf zDE>VNmhzU0YkG+(Dk1aJOI>tEC2WMyxFSPVr7s3lk<@J zJU&d`511j{$tiInDb)<$WV?Dp5WJp%n+#F9L2yF`9xV%*^Y1{_&qltbnQmV&p54uk z;Rweyp=*8upxV`68JVnE)|+& z6D|s-CGzT?5GwfLXs86ZatK5JLC)wX2%>CDJD^+l3Vc*V=UHu5nt$`Nr< zH}>79Z(un4v%2cYOdCi?c4#6`#VUimE;uisF4A&q8$jkO%Sl_4r><#4yED}sx)RDH zzKX)uutUP6M4#u1+Tn<`SNdHJ56ds$scZezGR8RJ6Z@M{2 z?wKeDT({Rx;cVUnRLOa&f;$8*b6Pr4xl$3)sQ3)>tlQ7}@Jk!GnF1;A)Z()+yCI)| z^C3pt_hv5GOuuOIojo{E@$=QSTh&zv4D!qZr+S>4{;#l5rKrL*DfnY~X&nCv%fNSq z37<4evG4Ro+OrYqo8s2=xUP^sR77?-laEs`ZjeV^ zKI?lB8dUqMlU4nxnj{qQ*BQb>k_I z*G03`)&JvY?#?U7t>CE42lCx??Ip0?x3@2)NZNcU>G!Sys7y@+fqX#L%g+dzv9NG5M4ML8~0{h zKuTqKdW<9zK@uJ6m(obeYn?#O9)sL`+UhoNj#=!3g3W9=r5JMDcSaL@<=1)?biS$< zy`d7U_;#}l*8a!@eX)WAMYr}UZm+4H3sd_$QU0w3zJ{EUR%G#4`=Ctz+PfC56^sq% znfLrdF9f1OqF|IRjL&|j;L;DZHl3A_0_Ez0Ur-m-ehKxnjsQ{~i%1e~vyXs{tT3?s zux4isv@Dxg``VceYT!pf2PX&7j^vVzz@nH1Ry;SJ z25mt?+4DhnYU zv~*h1`bY*9IhoQk$3Jz;=aM-igf3Mi=8Ws6A#7FAS;aiyrWN@A$ zDWPS*Gw?p3##;G~qD@qH<^iLaS$tUQfuoPDrTO>n*(!WXZvYcQvzzAFQ#exm+&2{e z4Y$ubn8y{_+ebjKlr%Qbx5WoxCn`YZB7w%{3go2l-dK%e=!S&b;a1;7_U*Vc({?-Z znPmz|{R%ODkol?C!xwIbHLp3g zAN++sli}~XSsD7){U=LenAALx>|;?q_F-{noqJT+|{Nfp#vz zB-#c30I8=rSpK?09ITrVEx(G!yo<6~M3cNDl?P$g3P7CtYsc*Ec7{_?@%5>70s4Uf z(OzuC(}(>|&V-QD$iPn}x6hM|eVImWovXz;n>EOI*+EO+e4ufuBIxl(j{WB1wCicu zE|krnS*`MN7er|qhSS)|oX0mJ9}?=GGp;w+%Dkr?*WWBzY0BOAr{{rnP&I#W16-wt z@tMX+w!7fm#_(Mrw*B?%dPq>ypN@$PJ^64mtX5v7$>Tz5$TuWUO)0yEx!Xyc-par3 zU+0dU|L>IqHB#`QTp5xJ&aQ!a8ZATsNxK&$Lc=O8=9acYey%^5d+3i>48J-v z8_)O+H>Yu@0l-X8?~Jr?Z(Q)W{=!|y3VQf6^bc<4*8g)!9#XBPcOfq$m%a%2SM#gN zAn4)Jlu!HD3hGkw@2IZ|-&2n~s(m~+dP>;Q-pv|FZE9yS3W{Kfa1Ex%^F{G#J1;xm zxbLHMzh?cW9OP)y#G|4kPZdRH#X1LoHup`2LV4?d#fe345kfV99qFn_KBz&B2cujPZG44)0ZilKWe3@ z<>1hwS2!3HFVwmf>AaQVv|v+Ojdv>Li`Qcqtica>gCD=7sBcJjd6ea3RhFtotEoit#+Ox=RC_V#+JfG%APm6R<& zcp=MV}bGwUJbj_A+R^qtjNhliTkUB<5bps_9!mLCk=e}3zy6Vc-()hHCVki z4!BI!sxg!4ddT+KC2eSM{uM0wV(B`w*|V|S>iu(K%yN(*Pa9g@_1L;6Po2+oX0g`p zlXiS-Bc{X%#vbbJ`KM|Pg>9&FUMB$5KYsfw6uUzBw0*{QwY6dIMvmoql0q|SgUfAK zSz75fG&&T(gZ8^L}+%dPjZ?_lMQ=AGY_rk}1}`6q#I z#3!%$x%ol7CQ`vP0Pqs?IY(2B#&#W?zM|K31A`>kzLE-1$ zltV(=@e!S~oy+9TrZ|hCNf4}toQkE(X#}uCXP!-srI{ofvXcNcMWY(#RTnomw>j<5 z+&|zx60l5q$A8kbwsS1yz*tPBl*{FCAVvJkK@8`y1uOhrH10XV>ndgpatOFEDsBmizU7rWB2Q86BB@v7Kwz;3 zBS>!3LLk9Z?{97Sikr0p_<=&d29D)hTz6)Tq9PD_V>nvnStzoU3h`wHN%`8r1{aCA z%@3v`B1%4alL+*M!Dk`pVScVeT`CaS8>of%jnq(Sgg%ex0iAY+#iaR-wI*QaLIm43 z^qQ|bz*(J}_lLEr#W{6cre#JtMq|aNYU?`%}qo@uBGtA%PA9Ze7naZJcb+ z1A|H>@6f}a1D9fN7bn03Of3j2TJbrp8N?aj-I--zToixvRUA)9-lrxrPaV(D#9?uq{0z*={fh5pj~~}vBKpjKl^tz zf-EW`xHp~K{Jv2*WW;O`UMUKh78{K+&HIH2TQ$faFtdT|&zcZ0%^MbY45&XQF!#xr zK964s-T&!rAfCZB$Z!w)s#A>OkGL?yPiABlg?r>lBH(QD-IFr|I!6zdTgqmv@@o}`gMWwKy|;tZAQX|6;7s77Fs=rk9Ab-wlS1+ zO<`?9Fz+QiRIJS975U%p%b=jmaDUM%Ztj*4rUIP=6Rj{`Z+b~@97{ML-#7cOIJd^^ z6Ui3irJg4+!Duq64&kWk^%uBCVI}?Dxezvb4dz*foT!ip$HkufNq@$t z0s7T@njU9DD1c`1@6Sfyvb^+Vmi=hKHVA&*9OHj7q4-$#BSW#-Jozj|L-pO<8(p%E z>!g#u_ogq0QdiucZyUa&VQCS?f|H0O)zTe-Nw!OBFSF6S#|IhT0V1V_-?oH(tg??R z5wqAB!U@zZPoOy2FgcS#qPquuLhQ8ZTcXZ2xwI?_Z3l-?_oi6^_uOP*r}xee8QRg% zeplaL!N?Uu$&4dY`jqZQ7p67aLoG^Hfb@W5A7V~hj^joT;~Rwh46aJyYm*SAUu36K z662}kJNcWEc{knKX;$_2q<5WDGf>aq?y7h&4c ze8EbxBhE6+cy)bkd7jR#tv+^*uERnR*o=|K35ALOc;V5a-3^IqmkpQ+Yi4DO0HS6% zAHjs^(0?|jbJ7A6HY63YwnO(L-kpxZ8!kbA-DZvy1`oDJP!gL1(!#bPf%ld%! z;Kmj6m>I{9f@!VSIPSYe49nRO`0#I<>y0q!(krsiy3IG8#s#q^+Ew{dZzSI}PpWLz+qb$jtV7w_DnJ zHSCh`Ta^gk;697;;O>w6ICu95xDNn6C%9zE{|1T4?=^$g@x;w>vrlH<^6uPdh&GL` zxC08C*(n_M&Gg|~uM?hj`}&-yGQJj&?@tMxmU@UGz1e=hU{yu+P#(^xFv&be1)|rDn=b1H zozn%bJ0Grb2He_|v7j}rQ}vpWmfSm|0c#VnB-BkFjWS*VG>Ni}YQ)>j`ttPi3v-hb zk>W5j(tZ`WW>M4#i!u4(9<|3b1ZmqkMl=I#2zN;arNWN-Cc4V;A1F1ut$RtjLpE;?f(f!eHEdID*r9Ym~QgW@5h3z zDzVB$Hm}di#W{J1O#Zq*8l=$QDJg$D3QGP}rB zAn-`3ER5#iC?ewSMwX1bs{CF)k&Pr**5jFz>k45|{VeTlQb!kuu-QxfPn}J=4FY zv*2WVWCz`#5mtDXYui+-idewd`-VK1H@{28lYF@|$lGsBK?AoSuU*wgBGpz!k|^at zPC_Dy`Y4coa*<(2#KDU&MbXPn+~{EU>B~F)R??HN)Y>m0Jb77hk|7lu*lb$P1ITp_ z%wRBJ=@1`Va5`=|)3{Yqx#EFQ3kXX+M74|iuQhNIn978a zWk2*dd?t#E8L`f7@T!&x^vBg-;g_m_i#6cpDY?5h>FH%9+@r89W}GXtjM^D#SYR^h z8C6|Jec#GLE-&#Aj*izElp7j?!uUX~-jiGlh8uYr^0+25{-Q`dZSY#obu8eT1$8ET z$#96dV~EruC*gAD@0dh|r_f~n^GZe;QEjrG68&G`7lH(DG}^?QON)*>ay1$H)n9jv zh$5!Q*pzJ9lSUfYo9qZp8PSp#b3Js>(tVITdVjowsk_j6om8|j-mF^R16R#UR94{{ zs<9ueGPeJr@sSk%Ro7!#hsqgFQ_r(nt!(L>Emu217lpL{d&!u?1{UC21MqzfNLMnK zYggidhz34@nfPEr7q5|(+5XAkq|IeZw#IIOqsH&rQN7kep=BJ?c)~NI52QptK4=mX zvS{J}U{26@NwWin4j_I+9F3ab4lN(^5tU49GfNBZ`{CGUksQ~ zhyqFE!5zWIOw*B5`PR5`itCr9Qy>(h+1496>?Ui&M zvml6p`3_6OjXQk$ibI7W_Dy>JfZEwI$AekBGY|rg0!>M) zQUP8KI)t@jP+}fOD4SG7JG!5DDZ-3?e@cHe(x=W-DJWZ!9D)CGpY&eP9nY3XbX`t| z=SN~3#gNc?4nk99+7Sk6LQ>D^9QlorE8&0F zH94|7w(c`D5DX3`()PpTC~;e^4rzSK&8+rRs44xFe~LyxE!%dw1px4Ds2X~f42*6r z0H-L^8B$eIiSzF3Y(m(6I+*O||_Buv$;4 zxYbo3&<-d5|&SaN`DZX<`jcOJ|}dF?{9%%sIgvPZcZqM z?s>|=*|DDCPc9Rw@}PsZ#33sC@Bj4=r=}fKAsNMk1T4a8({aEiwGkS6d-PqQ(x0qT zCwU%gB_g)Ov_9owPGq}$RUT7V)d~;oa%27Q@*U4yYX-a3;SxKX_M*ZMC{NsR zWra)2t3soO4EM%H%IOX+C=32eW+3w9wrS_}(>FoCtV$>Qtu3ER2L`y?(kFi3`hSF) zmGxfp(=i*pv}u}r_$*7>8jZJ9N-GMPPU|m|>FkYjSguexUe>qlvA>B|WBUWfB*m;R zaqaSVQ|q#B;%dY{xvfu_yE>h&5zwiSLs?sCLJQ2iB??NaivIG|>YC$f5Zs{ZuP8F7 ze}q7152v&E`Pv~J3W#9S^l=#uJ@le8G>3?jqbww032yLCo8(=B(PWFHQpdK>I9{%d zD$}dTkxGJxYFu>uvN1YZ{~!B!hX;Scj#>%TV=~bz2vZb!yp7?6L%XN$mK9}=Inq`( z!c#O2)-iqAsmk*FZh}ybL;?!B-zxh4W^z#I>{r#kdu0MVOp=ujd|U$hFrt73(=ZwI zRHK0SupETYmhjOjI<>gMZN%XS8t><9^eAkh!7@Md&2Z)q>W#dw>k9Z-A^(ijawaM> z-SOgj;I8**Q{YrB!M-JU(J$T}UCP=@l~=7`t0lj7dB9w!d|O{X-(Bxsrt~i1|_tbImRW# z<11;P87NH?tk@v8o-^>ikST3h7=YMic87uTt;Bx=24fO5%-kpc^*yw-hInrKwiueQ zK{)A2P)Bty-&Iv3C~cEF#pp{=q`)I@^OpSAIQOsS*z<86W?Jj!3G##%H~UDKuLjF7 zyLVI1VG5SbSm6Z7N)dhHj1tL;rAF-k+ky!NuR>q86q%}Q+okyP@?QOS{JNL#Y@EX` zza%a#>EhYdOa4vc`?R{|`(dL_@h`F;Y`3kykm7ng>h>?Iqh-=ZZ*85X(0L>5LQ`>1 z@ZKFE>%ZoSgw1kF<;t^Le=YS%Mq=rUZI+9IbDsQoamPxesXG4N`>=?fH>y_GyB-J2 zT=?k|bJ%mT+RC;69yr}CILy1L6SS*Kx=77YMc^~Ahrjav_wS0III(v3l4$eQ zi{4tj{?^}qW|paUZBkYe&@Sh56Tk|~6ml$vec6rQx(8hh%WkuTR-C`v^i?Yjr8#6f8W$92u`mQ1d4e|ErQ>ANVEs1xUtTV}MaPSabc zxb%b8;%*3|LN}~V7 zB95_K>kR&6p73SL0c$boz1E)3J;EogbJ?U=c*8#B;?Cmqjj5-_wyMo{Y-a0Zm#YBo z8{7;WcZ_uV1stOb%Ko!4U+g1rm4t#FF(Xo`5PlWw#fJ^RlKqoW+yNOGu z9crF*FJ?P%*ywc8P2l>3NvTVKqhs2@F>YtIBLJm%Z_I7Q9a_NT+`8Jtb6L~>fB+arcemRphlxP96tZ-$+)>Rcbp6s>aUY3VP?O@SAWxoztcu3D zDcY~zzQ1$QB*R&wr*-N=f!VKs%kn_e`@q#7x(CzF%uw{R|68)N=jzp^-r_&4Vsctl zbEdn2H=6by6tG^#>DtzG+OhutFmzU${=D#fBXHs5BH*b7Nq>HPOgb?^G0WQySPhFU zpIbI7ic1B!qCI3yM4+xD&qt6y`Fz8gO>ZrceBQ|1m>Uk-4)*a7w|>X5Ug^_q+wuZB zK0iM%{`K|s@NAy88-`+GZN;ZFmuKuYv3@Z{6toy<5zx{k;6|<}?YF>L2Gdig1j>6_ zQz!7q*+lTjSOh$Ic4?=9Mf#k=w)pkdMNKbe@5s2Qlo|Q;%}wJ+Go~LD-~%3#!}kez z0zwC9`9Kcv9E!D^EZJGVzP!A&tLU)5rnWY4Ega9s<2zc~nn5GKkARI1G2qblWwtB8 zlVRSjTysD}+j)_p*fd2A6${|%!5F`Th7w%T&|`LDoQOGk$5r6bf5ycgTe~DWM4f64`~@ literal 15733 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 diff --git a/docs/static/mb/projects/a9-radio.png b/docs/static/mb/projects/a9-radio.png index ff3b269e75a2ccc8da8838fa310f1fb9bf44850f..80d4810765f4bb7beccd9d45ce3b5b02a414778b 100644 GIT binary patch literal 18829 zcmW)nb6BKp8^+sg8=Gz0uF0E?&DLhy-fXvRuB|uQwry?LT;J38M^kfj95c^6bKlo} zoxk(EB9#@Tk>K&+!N9I7b<67celQu+N__`h^&QU|_OjvJ#@-JPa;!;MUbm-@8%R&4wk^ zQZh;D%y0&c#Ha?7Y|&VY6RR<;%FSf|(TGQdk;+T0utl-N+KRg~Quwo4f=mZzm%}DM zeDYodI;MOtT`mQWHi3r+-@L1%Tc1tuH1EsS2f?EselHD~#M``t$kIf$ZLepJJcJoT za17ynD%?DQ2aY_a(A2fS|2DQE)B1MG39`GLc?jKtF|?4wi|idewP>&NK3<1(+gvMJ zJpP(o6~znPq%j*_`rb}(Z+5-kGdlz$ab0t*m|-}KF}B>bxt$%pU55*&Tmi3A;s{

*su>rSKPOz+u3)lY7-VN{23BKHKF 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 U@__a;k^lez07*qoM6N<$g2nV%5dZ)H literal 33556 zcmaf4g;$gB+b0H$9wA7N?k+`YbV^F6bc1xm2?i2Ouk$G7JHsAs+LuDGKly-C0i86#;=F{P`Eru#g}a0RdhiF9p-|GCIvcYd6%m ze-a!#pno~zOAH6&7fQz(!4GDniRB^hQ=oJ+ML7LXAsCmGe8hStdLX?IquKn{{^OaI z#i`4$4!gRR-=e-}O}DSl_Pu{6H%)!+xc#B=+h_41VB_qKp(1NA6by%gC0@)O2cp0r zAQ)r?3Im=1eq`w6o*#qyBS7f?J@YaV`rj2GT70_a3*aVF@aGF)kQljy|NaGzhmQZ> zGh8(P|C{ijsE?#L_55MDyX}3V@cX@N)gSnHmACoyc=iOR3jC|Kh8y^2%or|BY{;i$ z5{xo`Q6~0JevK3O=y@u1{7_AknZSqBwh+N}FIumg1?`aM|L(V|`%L6_e^_?^=I_B= znM(bP3>iwceWQH+&m_eoUlghU;I+-2crmTuMFZD~lCu{em|PqPUBZ3@wfoOrHVfG6 z&u)5%@2?J76f~QrWy@@ok5mEe7^IeY{vQ5ys@QeI5qPw4SP1H&FWh7|RU5}+*&^NK zBZUW8OV{Fse;qKE!oa|N`U~6?_PX!c=glx;Bh}#k)3y!Dzr9blPuJQ_R_osT*!MTb z#3v2Il>L`uoONd}Bx<`aM>q3BaAvJeU;k>~fd?a_RbqtzZ$}Qi-O9yox-sgM*puIR zeBfV66l4MhB~>3dP5ss68#JpNcdhzyp0NX85D$C2$nOkM-ln_lXtW~PcpQNr&XWG| zz~qntBldLBk46Owe0taj(NGb2XMr0vO71$2_rvdMqCZXFvEt0e@w<`l>E^Ok-h!0} zN6+2%X8j<}oE0$F9>pl?s)d8RQ^LFl^A#FgUgw(B zGN%sMj>`o9;sGzPGTtP~TfYb6=x~jY6PA2}q@xfUaJ4_)ABW_M_#XLY;p!=A8@PPc z$)N-ONZ0S@`l2?C^F;T^LO=x~_;h^Ku@G`iS73Zm(5U?CMeRfn1b_)~c#p22t?$sX zSy@$!(dl+rc!mdpSx1A=l|kV$C(w^L6j}Q6TT_9LuG1}cizYj?aGiX8BQh7$Vwq*b;GUhfC{3g*^+#kJ7@#9j801nG z9?FoqUk}Ujj8GuG|9ZUwx}YNQfoLiS?MS}9BK}XC^kmd>rsrdPamRs%0AV5 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

snFl`;zX| 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 MH67J5WeeQ@0a86s*#H0l From 17cbea99899cbbd0cde4fb2cea92a6759dcd49cf Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Mon, 20 Jun 2016 08:37:17 -0700 Subject: [PATCH 31/37] refreshing localizations --- .../_locales/ar/microbit-strings.json | 150 +++++++++++++++++- .../_locales/fr/microbit-strings.json | 150 +++++++++++++++++- 2 files changed, 298 insertions(+), 2 deletions(-) diff --git a/libs/microbit/_locales/ar/microbit-strings.json b/libs/microbit/_locales/ar/microbit-strings.json index 4d580509..6d5893b7 100644 --- a/libs/microbit/_locales/ar/microbit-strings.json +++ b/libs/microbit/_locales/ar/microbit-strings.json @@ -1,92 +1,240 @@ { "Math.randomBoolean":"يقوم بإنشاء قيمة 'صحيح' أو 'false' عشوائياً، تماما مثل التقليب عمله.", + "Math.randomBoolean|block":"اختيار عشوائي true أو false", + "Math|block":"الرياضيات", "String.fromCharCode":"جعل سلسلة من رمز الحرف ASCII معطى.", + "String.fromCharCode|block":"النص من حرف رمز %code", + "String|block":"السلسلة", "basic":"يوفر الوصول إلى الوظيفة الأساسية الصغرى: بت.", "basic.clearScreen":"إيقاف تشغيل كافة المصابيح", + "basic.clearScreen|block":"مسح الشاشة", "basic.forever":"تكرار التعليمات البرمجية إلى الأبد في الخلفية. في كل تكرار، يسمح رموز أخرى لتشغيل.", + "basic.forever|block":"إلى الأبد", "basic.pause":"إيقاف مؤقت للوقت المحدد بالمللي ثانية", + "basic.pause|block":"إيقاف %pause (مللي ثانية)", + "basic.pause|param|ms":"كم من الوقت للتوقف، على سبيل المثال: 100، 200، 500، 1000، 2000", "basic.plotLeds":"يرسم صورة على شاشة LED.", + "basic.plotLeds|param|leds":"نمط من المصابيح لتشغيل\/إيقاف تشغيل", "basic.showAnimation":"ويبين تسلسل الشاشات LED كالرسوم متحركة.", + "basic.showAnimation|param|interval":"الوقت بالمللي ثانية بين كل رسم", + "basic.showAnimation|param|leds":"نمط من المصابيح لتشغيل\/إيقاف تشغيل", "basic.showLeds":"يرسم صورة على شاشة LED.", + "basic.showLeds|block":"إظهار المصابيح", + "basic.showLeds|param|interval":"الوقت بالمللي ثانية وقفه بعد الرسم", + "basic.showLeds|param|leds":"نمط الصمام لتشغيل\/إيقاف تشغيل", "basic.showNumber":"قم بالتمرير رقم على الشاشة. إذا كان العدد يناسب على الشاشة (أي هو رقم واحد)، لا يتم تمرير.", + "basic.showNumber|block":"show|number %number", + "basic.showNumber|param|interval":"سرعة التمرير؛ على سبيل المثال: 150، 200-100، 100", "basic.showString":"عرض النص على الشاشة، حرف واحد في كل مرة. إذا كانت السلسلة يناسب على الشاشة (أي حرف واحد)، لا يتم تمرير.", + "basic.showString|block":"show|string %text", + "basic.showString|param|interval":"طريقة سريعة لتحويل الأحرف؛ على سبيل المثال: 150، 200-100، 100", + "basic.showString|param|text":"النص للتمرير على الشاشة، على سبيل المثال: \"مرحبا!\"", + "basic|block":"الأساسية", "control":"المرافق وقت التشغيل والحدث.", "control.inBackground":"الجداول الزمنية للتعليمات البرمجية التي يتم تشغيلها في الخلفية.", + "control.inBackground|block":"تشغيل في الخلفية", "control.reset":"يعيد تعيين الصغير: بت ال بي بي سي.", + "control.reset|block":"إعادة تعيين", + "control|block":"عنصر التحكم", "game":"محرك لعبة واحدة تقودها العفريت", "game.addScore":"إضافة نقاط إلى النتيجة الحالية", + "game.addScore|block":"تغيير درجة by|%points", + "game.addScore|param|points":"كمية من النقاط لتغيير، على سبيل المثال: 1", "game.gameOver":"يعرض لعبة الرسوم المتحركة.", + "game.gameOver|block":"انتهت اللعبة", "game.score":"يحصل على النتيجة الحالية", + "game.score|block":"نقاط", "game.setScore":"تعيين القيمة إلى النتيجة الحالية", + "game.setScore|param|value":"تودو", "game.startCountdown":"بدء تشغيل جهاز ضبط وقت العد التنازلي لعبة", + "game.startCountdown|block":"بدء تشغيل countdown| (مللي ثانية) %duration", + "game.startCountdown|param|ms":"مدة العد التنازلي في ميلي ثانية، على سبيل المثال: 10000", + "game|block":"لعبة", "images":"إنشاء والتلاعب وعرض الصور الصمام.", "images.createBigImage":"يقوم بإنشاء صورة مع إطارات 2.", + "images.createBigImage|block":"إنشاء صورة كبيرة", "images.createImage":"يقوم بإنشاء صورة التي تناسبها على شاشة LED.", + "images.createImage|block":"إنشاء الصورة", + "images|block":"الصور", "input":"الأحداث والبيانات من أجهزة الاستشعار", "input.acceleration":"الحصول على قيمة التسارع في المجلس الملي-جرافيتيس (عندما يتم إرساء المجلس شقة مع الشاشة حتى, x = 0, y = 0 و z = 1024)", + "input.acceleration|block":"|%NAME التسارع (mg)", + "input.acceleration|param|dimension":"تودو", "input.buttonIsPressed":"الحصول على حالة زر (ضغط أو لا) '' '' و '' ب ''.", + "input.buttonIsPressed|block":"button|%NAME|is الضغط", "input.calibrate":"معايرة بوصلة عفا عليها الزمن، والتلقائي.", "input.compassHeading":"الحصول على عنوان البوصلة البوصلة الحالية في درجات.", + "input.compassHeading|block":"بوصلة العنوان (°)", "input.lightLevel":"يقرأ مستوى الضوء المطبقة على شاشة LED في طائفة من '' 0 '' (الظلام) إلى 255 '' '' مشرق.", + "input.lightLevel|block":"مستوى الضوء", "input.magneticForce":"الحصول على قيمة القوة المغناطيسية في '' الصغرى-Teslas '' ('' µT ''). هذه الوظيفة غير معتمدة في المحاكاة.", + "input.magneticForce|block":"القوة المغناطيسية (µT) |%NAME", + "input.magneticForce|param|dimension":"تودو", "input.onButtonPressed":"القيام بشيء عند الضغط على زر ('' '' أو '' ب '' أو كلا '' أ + ب '')", + "input.onButtonPressed|block":"على button|%NAME|pressed", + "input.onButtonPressed|param|body":"تودو", + "input.onButtonPressed|param|button":"تودو", "input.onGesture":"وتولى تشغيل التعليمات البرمجية عند هو مواجهة الشاشة.", + "input.onGesture|block":"على |%NAME", + "input.onGesture|param|body":"تودو", "input.onLogoDown":"وتولى تشغيل التعليمات البرمجية عند الشعار وتتجه نزولا والمجلس بشكل عمودي.", + "input.onLogoDown|param|body":"تودو", "input.onLogoUp":"وتولى تشغيل التعليمات البرمجية عند الشعار وتتجه صعودا والمجلس بشكل عمودي.", + "input.onLogoUp|param|body":"تودو", "input.onPinPressed":"تفعل شيئا عند الضغط على رقم التعريف الشخصي ('' P0 '' أو '' P1 '' أو كلا '' P2 '').", + "input.onPinPressed|block":"على pin|%NAME|pressed", + "input.onPinPressed|param|body":"تودو", + "input.onPinPressed|param|name":"تودو", "input.onScreenDown":"وتولى تشغيل التعليمات البرمجية عند هو أسفل الشاشة.", + "input.onScreenDown|param|body":"تودو", "input.onScreenUp":"وتولى تشغيل التعليمات البرمجية عند هو مواجهة الشاشة.", + "input.onScreenUp|param|body":"تودو", "input.onShake":"وتولى تشغيل التعليمات البرمجية عند هو هز الجهاز.", + "input.onShake|param|body":"تودو", "input.pinIsPressed":"الحصول على دولة طرف (ضغط أو لا). ويتطلب عقد الأرض من أجل إغلاق الدائرة.", + "input.pinIsPressed|block":"pin|%NAME|is الضغط", + "input.pinIsPressed|param|name":"دبوس المستخدمة للكشف عن لمسة", "input.rotation":"الملعب للجهاز، وتناوب على طول '' المحور ''، بدرجات.", + "input.rotation|block":"|%NAME دوران (°)", + "input.rotation|param|kind":"تودو", "input.runningTime":"يحصل على عدد المللي ثانية المنقضية منذ السلطة في.", + "input.runningTime|block":"إدارة الوقت (مللي ثانية)", "input.setAccelerometerRange":"يعين نطاق العينة التسارع في جاذبيات.", + "input.setAccelerometerRange|block":"تعيين نطاق % accelerometer|range", + "input.setAccelerometerRange|param|range":"قيمة وصف قوتها القصوى لقياس التسارع", "input.temperature":"يحصل على درجة حرارة مئوية درجات (درجة مئوية).", + "input.temperature|block":"درجة الحرارة (درجة مئوية)", + "input|block":"الإدخال", "led":"التحكم في شاشة LED.", "led.brightness":"الحصول على سطوع الشاشة من 0 (إيقاف) إلى 255 (مشرق كامل).", + "led.brightness|block":"سطوع", "led.fadeIn":"يتلاشى في العرض على الشاشة.", + "led.fadeIn|param|ms":"تودو", "led.fadeOut":"إخفاء مستوى سطوع الشاشة.", + "led.fadeOut|param|ms":"تودو", "led.plot":"قم بتشغيل باستخدام الصمام المحدد x, y إحداثيات (س الأفقي، ص العمودي). (0, 0) هو أعلى اليسار.", "led.plotAll":"تشغيل كافة المصابيح", "led.plotBarGraph":"يعرض رسم بياني شريطي عمودي استناداً إلى 'قيمة' والقيمة 'عالية'.\nإذا كان 'عالية' هو 0، ويحصل ضبط التخطيط تلقائياً.", + "led.plotBarGraph|block":"رسم بياني شريطي من الإقلاع القيمة % إلى %high", + "led.plotBarGraph|param|high":"الحد الأقصى للقيمة. إذا كان 0, الحد الأقصى للقيمة المعدلة تلقائياً، على سبيل المثال: 0", + "led.plotBarGraph|param|value":"القيمة الحالية الأرض", + "led.plot|block":"plot|x %x|y %y", + "led.plot|param|x":"تودو", + "led.plot|param|y":"تودو", "led.point":"الحصول على حالة تشغيل\/إيقاف استخدام الصمام المحدد x, y إحداثيات. (0, 0) هو أعلى اليسار.", + "led.point|block":"point|x %x|y %y", + "led.point|param|x":"تودو", + "led.point|param|y":"تودو", "led.screenshot":"تأخذ لقطة للشاشة LED وترجع صورة.", "led.setBrightness":"تعيين سطوع الشاشة من 0 (إيقاف) إلى 255 (مشرق كامل).", + "led.setBrightness|block":"قم بتعيين القيمة % السطوع", + "led.setBrightness|param|value":"قيمة السطوع، على سبيل المثال: 255، 127، 0", "led.setDisplayMode":"تعيين وضع العرض بين الأسود والأبيض واللون الرمادي لجعلها المصابيح.", + "led.setDisplayMode|param|mode":"تودو", "led.stopAnimation":"إلغاء الحركة الحالية ومسح أخرى انتظارا للرسوم المتحركة.", + "led.stopAnimation|block":"وقف الرسوم المتحركة", "led.toggle":"يبدل بكسل خاص", "led.toggleAll":"عكس العرض LED الحالية", + "led.toggle|param|x":"تودو", + "led.toggle|param|y":"تودو", "led.unplot":"إيقاف استخدام الصمام المحدد x, y إحداثيات (س الأفقي، ص العمودي). (0, 0) هو أعلى اليسار.", + "led.unplot|block":"unplot|x %x|y %y", + "led.unplot|param|x":"تودو", + "led.unplot|param|y":"تودو", + "led|block":"شاشة", "music":"جيل نغمات الموسيقى عن طريق الرقم السري '''' P0 ''.", "music.beat":"إرجاع المدة للفوز في ميلي ثانية", + "music.beat|block":"%fraction|beat", "music.changeTempoBy":"تغيير الإيقاع بالمبلغ المحدد", + "music.changeTempoBy|block":"تغيير الإيقاع بواسطة (bpm) | قيمة %", + "music.changeTempoBy|param|bpm":"التغيير في دقات في الدقيقة الواحدة للايقاع، على سبيل المثال: 20", "music.noteFrequency":"يحصل على تكرار الملاحظة.", + "music.noteFrequency|block":"%note", + "music.noteFrequency|param|name":"ملاحظة اسم", "music.playTone":"يلعب نغمة عن طريق الرقم السري '''' P0 '' لمدة معينة.", + "music.playTone|block":"play|tone %note = device_note|for %duration = device_beat", + "music.playTone|param|frequency":"الملعب لهجة للعب في هرتز (هرتز)", + "music.playTone|param|ms":"مدة نغمة في ميلي ثانية (مللي ثانية)", "music.rest":"تقع (يلعب شيئا) لفترة زمنية محددة عن طريق الرقم السري '''' P0 ''.", + "music.rest|block":"|%duration بقية (مللي ثانية) = device_beat", + "music.rest|param|ms":"مدة الراحة في ميلي ثانية (مللي ثانية)", "music.ringTone":"يلعب نغمة عن طريق الرقم السري '''' P0 ''.", + "music.ringTone|block":"عصابة لهجة (هرتز) |%note = device_note", + "music.ringTone|param|frequency":"الملعب لهجة للعب في هرتز (هرتز)", "music.setTempo":"يحدد وتيرة إلى المبلغ المحدد", + "music.setTempo|block":"ضبط الإيقاع (نبضة في الدقيقة) | قيمة %", + "music.setTempo|param|bpm":"يدق على وتيرة جديدة في كل دقيقة، على سبيل المثال: 120", "music.tempo":"تقوم بإرجاع الإيقاع في نبضة في الدقيقة. الإيقاع هو السرعة (bpm = نبضة في الدقيقة) في اللعب وتلاحظ فيه. أكبر قيمة الإيقاع، سيتم تشغيل أسرع وتلاحظ.", + "music.tempo|block":"الإيقاع (نبضة في الدقيقة)", + "music|block":"الموسيقى", "pins":"التحكم في التيارات في دبابيس للإشارات التناظرية\/الرقمية، الماكينات، i2c،...", "pins.analogPitch":"يبث إشارات تحوير (بوم) عرض نبض بدبوس الملعب الحالي. استخدام 'النظير تعيين pin الملعب' لتعريف pin في الملعب.", + "pins.analogPitch|param|frequency":"تودو", + "pins.analogPitch|param|ms":"تودو", "pins.analogReadPin":"قراءة القيمة موصل النظير، وهذا هو، كقيمة بين 0 و 1023 وتتألف.", + "pins.analogReadPin|block":"%name read|pin التناظرية", + "pins.analogReadPin|param|name":"دبوس الكتابة إلى", "pins.analogSetPeriod":"تكوين تحوير عرض النبضة (PWM) التناظرية المخرجات إلى قيمة معينة في * * ميكرو * * أو '' 1\/1000 ميلي ثانية.\nإذا لم يتم تكوين هذا الدبوس تمثيلي الإخراج (باستخدام 'الكتابة التناظرية دبوس')، قد العملية أي تأثير.", + "pins.analogSetPeriod|block":"تعيين النظير period|pin %pin|to مايكروون % (المايكروثانيه)", + "pins.analogSetPeriod|param|micros":"الفترة في الدقيقة ثانية. على سبيل المثال: 20000", + "pins.analogSetPeriod|param|name":"دبوس التناظرية لتعيين الفترة إلى", "pins.analogSetPitchPin":"تعيين رقم pin المستخدم عند استخدام 'دبابيس-> التناظرية في الملعب'.", + "pins.analogSetPitchPin|param|name":"تودو", "pins.analogWritePin":"تعيين القيمة رابط تمثيلي. يجب أن تتألف القيمة بين 0 و 1023.", + "pins.analogWritePin|block":"القيمة % %name|to write|pin التناظرية", + "pins.analogWritePin|param|name":"اسم دبوس الكتابة إلى", + "pins.analogWritePin|param|value":"قيمة لكتابة رقم التعريف الشخصي بين '' 0 '' و '' 1023 ''. على سبيل المثال: 1023, 0", "pins.digitalReadPin":"قراءة المحدد رقم pin أو موصل أما 0 أو 1", + "pins.digitalReadPin|block":"read|pin رقمي %name", + "pins.digitalReadPin|param|name":"رقم التعريف الشخصي لقراءة من", "pins.digitalWritePin":"تعيين قيمة رقم pin أو الرابط إلى 0 أو 1.", + "pins.digitalWritePin|block":"القيمة % %name|to write|pin الرقمي", + "pins.digitalWritePin|param|name":"دبوس الكتابة إلى", + "pins.digitalWritePin|param|value":"قيمة لتعيين رقم pin، 1 على سبيل المثال، 0", "pins.i2cReadNumber":"قراءة رقم واحد من عنوان I2C 7 بت.", + "pins.i2cReadNumber|block":"i2c قراءة عنوان number|at %address|of الشكل %format = i2c_sizeof", "pins.i2cWriteNumber":"كتابة رقم واحد لعنوان I2C 7 بت.", + "pins.i2cWriteNumber|block":"i2c يكتب عنوان number|at %address|with % قيمة value|of %format الشكل = i2c_sizeof", "pins.map":"إعادة تعيين عدد من مجموعة واحدة إلى أخرى. فالحصول على تعيين قيمة '' من منخفضة '' إلى '' إلى انخفاض ''، قيمة '' من السامي '' إلى '' إلى ارتفاع ''، قيم الفترات الفاصلة بين القيم بينهما، إلخ.", + "pins.map|block":"خريطة % value|from %fromLow|from منخفضة %fromHigh|to ارتفاع منخفض %toLow|to عالية %toHigh", + "pins.map|param|fromHigh":"العليا ملزمة للنطاق الحالي للقيمة، على سبيل المثال: 1023", + "pins.map|param|fromLow":"الحد الأدنى للنطاق الحالي للقيمة", + "pins.map|param|toHigh":"الحد الأعلى المستهدفة القيمة تتراوح، على سبيل المثال: 4", + "pins.map|param|toLow":"الحد الأدنى للنطاق المستهدف للقيمة", + "pins.map|param|value":"قيمة للتعيين في نطاقات", "pins.onPulsed":"تكوين هذا الرقم السري لأحد مدخلات رقمية، وينشئ الأحداث حيث الطابع الزمني هو المدة التي كان هذا الرقم '' عالية '' أو '' منخفضة ''.", + "pins.onPulsed|block":"on|pin %pin|pulsed %pulse", "pins.pulseDuration":"يحصل على مدة نبض الماضي في مايكرو-ثانية. يجب أن يتم استدعاء هذه الدالة من معالج '' أونبولسيد ''.", + "pins.pulseDuration|block":"مدة النبضة (المايكروثانيه)", "pins.servoSetPulse":"تكوين هذا دبوس آيو كناتج التناظرية\/بوم وتكوين الفترة بأن يكون 20 مللي ثانية، وتعيين عرض النبض، استناداً إلى القيمة التي تعطي * * ميكرو * * أو '' 1\/1000 ميلي ثانية.", + "pins.servoSetPulse|block":"تعيين مضاعفات pulse|pin value|to (المايكروثانيه) % % مايكروون", + "pins.servoSetPulse|param|micros":"مدة النبضة في الدقيقة ثانية، على سبيل المثال: 1500", + "pins.servoSetPulse|param|name":"اسم دبوس", "pins.servoWritePin":"تكتب قيمة إلى مضاعفات، السيطرة الرمح تبعاً لذلك. في مضاعفات قياسية، سيؤدي هذا إلى تعيين زاوية الرمح (بالدرجات)، تتحرك الرمح لهذا التوجه. في مضاعفات تناوب مستمر، وهذا سيتم تعيين سرعة الماكينة (مع '' 0 '''' بسرعة كاملة في اتجاه واحد، '' 180 '' يجري كامل السرعة في أخرى، وقيمة قرب '' 90 '' يجري أي حركة).", + "pins.servoWritePin|block":"مضاعفات write|pin %name|to القيمة %", + "pins.servoWritePin|param|name":"دبوس الكتابة إلى", + "pins.servoWritePin|param|value":"زاوية أو التناوب سرعة، على سبيل المثال: 180، 90، 0", "pins.setPull":"تكوين السحب من هذا الرقم.", + "pins.setPull|block":"تعيين pull|pin %pin|to %pull", + "pins.setPull|param|name":"رقم التعريف الشخصي لتعيين وضع الانسحاب في", + "pins.setPull|param|pull":"أحد تكوينات السحب مبيد: بولوب، المنسدلة، بولنوني ", + "pins|block":"دبابيس", "serial":"قراءة وكتابة البيانات عبر اتصال تسلسلي.", "serial.readLine":"يقرأ سطر من النص من المنفذ التسلسلي.", + "serial.readLine|block":"قراءة سطر للمسلسل", "serial.redirect":"بشكل حيوي تكوين مثيل تسلسلي استخدام دبابيس خلاف أوسبتكس واسبر.", + "serial.redirect|block":"إعادة توجيه المسلسل to| TX %tx| RX % rx|at % معدل معدل الباود", + "serial.redirect|param|rx":"دبوس الاستقبال الجديدة", + "serial.redirect|param|tx":"دبابيس الإرسال الجديدة", "serial.writeLine":"طباعة سطر من النص للمسلسل", + "serial.writeLine|block":"serial|write خط %text", "serial.writeNumber":"طباعة قيمة رقمية للمسلسل", + "serial.writeNumber|block":"قيمة % رقم serial|write", "serial.writeString":"يرسل جزء من النص من خلال اتصال تسلسلي.", - "serial.writeValue":"يكتب '' الاسم: قيمة '' زوج الخط للمسلسل." + "serial.writeString|block":"كتابة المسلسل سلسلة %text", + "serial.writeValue":"يكتب '' الاسم: قيمة '' زوج الخط للمسلسل.", + "serial.writeValue|block":"serial|write قيمة %name| = القيمة %", + "serial.writeValue|param|name":"اسم القيمة الدفق، على سبيل المثال: x", + "serial.writeValue|param|value":"يكتب", + "serial|block":"المسلسل" } \ No newline at end of file diff --git a/libs/microbit/_locales/fr/microbit-strings.json b/libs/microbit/_locales/fr/microbit-strings.json index fbbac620..b0424061 100644 --- a/libs/microbit/_locales/fr/microbit-strings.json +++ b/libs/microbit/_locales/fr/microbit-strings.json @@ -1,92 +1,240 @@ { "Math.randomBoolean":"Génère une valeur « true » ou « false » au hasard, tout comme le retournement d’une pièce de monnaie.", + "Math.randomBoolean|block":"choisir au hasard vrai ou faux", + "Math|block":"Math", "String.fromCharCode":"Faire une chaîne de la donnée code de caractères ASCII.", + "String.fromCharCode|block":"texte de char code %code", + "String|block":"Chaîne", "basic":"Permet d'accéder aux fonctionnalités de base micro : bit.", "basic.clearScreen":"Désactiver toutes les LEDs", + "basic.clearScreen|block":"effacer l’écran", "basic.forever":"Répète le code pour toujours en arrière-plan. À chaque itération, permet aux autres codes d'exécuter.", + "basic.forever|block":"pour toujours", "basic.pause":"Pause pendant la durée spécifiée en millisecondes", + "basic.pause|block":"pause (ms) %pause", + "basic.pause|param|ms":"Combien de temps pour faire une pause pour, par exemple: 100, 200, 500, 1000, 2000", "basic.plotLeds":"Dessine une image sur l'écran LED.", + "basic.plotLeds|param|leds":"modèle de LED à allumer\/éteindre", "basic.showAnimation":"Montre une séquence d'écrans LED comme une animation.", + "basic.showAnimation|param|interval":"temps en millisecondes entre chaque rafraîchissement", + "basic.showAnimation|param|leds":"modèle de LED à allumer\/éteindre", "basic.showLeds":"Dessine une image sur l'écran LED.", + "basic.showLeds|block":"montrer les leds", + "basic.showLeds|param|interval":"temps en millisecondes pour faire une pause après dessin", + "basic.showLeds|param|leds":"le modèle de LED pour activer\/désactiver", "basic.showNumber":"Mettez en surbrillance un numéro sur l'écran. Si le numéro s'inscrit sur l'écran (c'est-à-dire un seul chiffre), ne défilent pas.", + "basic.showNumber|block":"montrer|numéro %number", + "basic.showNumber|param|interval":"Vitesse de défilement ; par exemple: -100, 200, 100, 150", "basic.showString":"Afficher du texte à l'écran, un caractère à la fois. Si la chaîne s'inscrit sur l'écran (c'est-à-dire une lettre), ne défile pas.", + "basic.showString|block":"Show|String %text", + "basic.showString|param|interval":"quelle vitesse de déplacement des personnages ; par exemple: -100, 200, 100, 150", + "basic.showString|param|text":"le texte à faire défiler sur l’écran, par exemple: « Bonjour! »", + "basic|block":"base", "control":"Utilitaires d'exécution et événements.", "control.inBackground":"Horaires du code qui s'exécutent en arrière-plan.", + "control.inBackground|block":"exécuter en arrière-plan", "control.reset":"Réinitialise le BBC micro : bit.", + "control.reset|block":"remise à zéro", + "control|block":"contrôle", "game":"Un moteur de jeu unique-LED sprite", "game.addScore":"Ajoute des points pour le score actuel", + "game.addScore|block":"changer le score par|%points", + "game.addScore|param|points":"nombre de points à changer, par exemple: 1", "game.gameOver":"Affiche un jeu au dessus de l'animation.", + "game.gameOver|block":"fin du jeu", "game.score":"Obtient le score actuel", + "game.score|block":"score", "game.setScore":"Définit la valeur actuelle de la partition", + "game.setScore|param|value":"TODO", "game.startCountdown":"Commence un compte à rebours jeu", + "game.startCountdown|block":"commencer compte à rebours|(ms) %duration", + "game.startCountdown|param|ms":"durée du compte à rebours en millisecondes, par exemple: 10000", + "game|block":"jeu", "images":"Création, manipulation et affichage d'images LED.", "images.createBigImage":"Crée une image avec 2 images.", + "images.createBigImage|block":"créer grande image", "images.createImage":"Crée une image qui s'adapte à l'écran LED.", + "images.createImage|block":"créer image", + "images|block":"images", "input":"Événements et des données provenant de capteurs", "input.acceleration":"Obtenir la valeur de l'accélération en milli-gravitys (lorsque le jury pose plat avec l'écran vers le haut, x = 0, y = 0 et z =-1024)", + "input.acceleration|block":"accélération (mg) |%NAME", + "input.acceleration|param|dimension":"TODO", "input.buttonIsPressed":"Obtenir l'état du bouton (pressé ou non) pour '' A'' et '' B''.", + "input.buttonIsPressed|block":"button|%NAME|est pressé", "input.calibrate":"Obsolète, boussole de calibrage est automatique.", "input.compassHeading":"Obtenir le cap compas boussole actuel en degrés.", + "input.compassHeading|block":"Compas de rubrique (°)", "input.lightLevel":"Lit le niveau de lumière appliqué à l'écran LED dans une gamme de '' 0'' (noir) à 255 '''' lumineux.", + "input.lightLevel|block":"niveau d’intensité lumineuse", "input.magneticForce":"Obtenir la valeur de la force magnétique dans '' micro-Teslas'' ('' µT''). Cette fonction n'est pas pris en charge dans le simulateur.", + "input.magneticForce|block":"force magnétique (µT) |%NAME", + "input.magneticForce|param|dimension":"TODO", "input.onButtonPressed":"Faire quelque chose quand vous appuyez sur un bouton ('' A'', '' B'' ou les deux '' A + B'')", + "input.onButtonPressed|block":"sur button|%NAME|pressed", + "input.onButtonPressed|param|body":"TODO", + "input.onButtonPressed|param|button":"TODO", "input.onGesture":"Attache le code à exécuter lorsque l'écran vers le haut.", + "input.onGesture|block":"sur |%NAME", + "input.onGesture|param|body":"TODO", "input.onLogoDown":"Attache le code à exécuter lorsque le logo est orienté vers le bas et le jury est vertical.", + "input.onLogoDown|param|body":"TODO", "input.onLogoUp":"Attache le code à exécuter lorsque le logo est orienté vers le haut et le jury est vertical.", + "input.onLogoUp|param|body":"TODO", "input.onPinPressed":"Faire quelque chose lorsque vous appuyez sur une broche ('' P0'', '' P1'' ou les deux '' P2'').", + "input.onPinPressed|block":"sur pin|%NAME|pressed", + "input.onPinPressed|param|body":"TODO", + "input.onPinPressed|param|name":"TODO", "input.onScreenDown":"Attache le code à exécuter lorsque l'écran vers le bas.", + "input.onScreenDown|param|body":"TODO", "input.onScreenUp":"Attache le code à exécuter lorsque l'écran vers le haut.", + "input.onScreenUp|param|body":"TODO", "input.onShake":"Attache le code à exécuter lorsque l'appareil est secoué.", + "input.onShake|param|body":"TODO", "input.pinIsPressed":"Obtenir l'état de la broche (pressé ou non). Nécessite de tenir au sol pour fermer le circuit.", + "input.pinIsPressed|block":"pin|%NAME|is pressée", + "input.pinIsPressed|param|name":"broche utilisée pour détecter le toucher", "input.rotation":"La hauteur de l'appareil, rotation sur axe le '' x '', en degrés.", + "input.rotation|block":"rotation (°) |%NAME", + "input.rotation|param|kind":"TODO", "input.runningTime":"Obtient le nombre de millisecondes écoulées depuis le pouvoir sur.", + "input.runningTime|block":"temps d’exécution (ms)", "input.setAccelerometerRange":"Définit la plage d'échantillon accéléromètre de gravités.", + "input.setAccelerometerRange|block":"Définissez accelerometer|range % plage", + "input.setAccelerometerRange|param|range":"une valeur décrivent l’assurer une rigidité maximale d’accélération mesurée", "input.temperature":"Obtient la température en Celsius degrés (° C).", + "input.temperature|block":"température (° C)", + "input|block":"entrée", "led":"Contrôle de l'écran LED.", "led.brightness":"Descendre la luminosité de l'écran de 0 () à 255 (pleine intensité).", + "led.brightness|block":"luminosité", "led.fadeIn":"Fondu dans l'affichage à l'écran.", + "led.fadeIn|param|ms":"TODO", "led.fadeOut":"S'évanouit la luminosité de l'écran.", + "led.fadeOut|param|ms":"TODO", "led.plot":"Allumer la LED spécifiée par x, y coordonnées (x est horizontal, y est verticale). (0,0) est en haut à gauche.", "led.plotAll":"Tous les voyants s'allume", "led.plotBarGraph":"Affiche un graphique à barres vertical basé sur la « valeur » et la valeur « élevée ».\nSi « élevé » est 0, le tableau s'ajuste automatiquement.", + "led.plotBarGraph|block":"tracer le graphe de % valeur |à %high", + "led.plotBarGraph|param|high":"valeur maximale. Si 0, la valeur maximale ramenée automatiquement, par exemple: 0", + "led.plotBarGraph|param|value":"valeur actuelle pour tracer", + "led.plot|block":"allumer|x %x|y %y", + "led.plot|param|x":"TODO", + "led.plot|param|y":"TODO", "led.point":"Obtenir l'État marche\/arrêt de la LED spécifiée par x, y coordonnées. (0,0) est en haut à gauche.", + "led.point|block":"point|x %x|y %y", + "led.point|param|x":"TODO", + "led.point|param|y":"TODO", "led.screenshot":"Prend une capture d'écran de l'écran LED et renvoie une image.", "led.setBrightness":"Régler la luminosité de l'écran de 0 (off) à 255 (pleine intensité).", + "led.setBrightness|block":"spécifier la luminosité %value", + "led.setBrightness|param|value":"valeur de la luminosité, par exemple: 255, 127, 0", "led.setDisplayMode":"Définit le mode d'affichage entre noir et blanc et gris pour le rendu des LEDs.", + "led.setDisplayMode|param|mode":"TODO", "led.stopAnimation":"Annule l'animation actuelle et efface les autres en attente d'animations.", + "led.stopAnimation|block":"arrêter l’animation", "led.toggle":"Active\/désactive un pixel particulier", "led.toggleAll":"Inverse l'affichage actuel", + "led.toggle|param|x":"TODO", + "led.toggle|param|y":"TODO", "led.unplot":"Éteindre la LED spécifiée par x, y coordonnées (x est horizontal, y est verticale). (0,0) est en haut à gauche.", + "led.unplot|block":"éteindre|x %x|y %y", + "led.unplot|param|x":"TODO", + "led.unplot|param|y":"TODO", + "led|block":"écran", "music":"Génération de sonneries musicales via broche '' P0''.", "music.beat":"Retourne la durée d'un battement en milli-secondes", + "music.beat|block":"%fraction|beat", "music.changeTempoBy":"Changer le tempo de la quantité spécifiée", + "music.changeTempoBy|block":"changer le tempo par (bpm) | % valeur", + "music.changeTempoBy|param|bpm":"Le changement en battements par minute au tempo, par exemple: 20", "music.noteFrequency":"Obtient la fréquence d'une note.", + "music.noteFrequency|block":"%note", + "music.noteFrequency|param|name":"le nom de la note", "music.playTone":"Joue une tonalité via broche '' P0'' pour la durée donnée.", + "music.playTone|block":"jouer|ton %note=device_note|pendant %duration=device_beat", + "music.playTone|param|frequency":"hauteur de la tonalité pour jouer en Hertz (Hz)", + "music.playTone|param|ms":"durée de la tonalité en millisecondes (ms)", "music.rest":"Repose (joue rien) pendant une durée spécifiée via broche '' P0''.", + "music.rest|block":"repos (ms) |%duration = device_beat", + "music.rest|param|ms":"reposer la durée en millisecondes (ms)", "music.ringTone":"Joue une tonalité via broche '' P0''.", + "music.ringTone|block":"buzz (Hz)|%note=device_note", + "music.ringTone|param|frequency":"hauteur de la tonalité pour jouer en Hertz (Hz)", "music.setTempo":"Définit le tempo à la quantité spécifiée", + "music.setTempo|block":"réglage de tempo pour (bpm) | % valeur", + "music.setTempo|param|bpm":"Le nouveau tempo en battements par minute, par exemple: 120", "music.tempo":"Retourne le tempo en battements par minute. Tempo est la vitesse (bpm = battements par minute) à qui jouent des notes. Plus la valeur du tempo, plus vite les notes jouera.", + "music.tempo|block":"tempo (bpm)", + "music|block":"musique", "pins":"Contrôle des courants à Pins pour signaux analogiques\/numériques, servos, i2c...", "pins.analogPitch":"Émet un signal de modulation (PWM) de largeur d'impulsion à l'axe de tangage actuelle. Utilisez « analog set axe de tangage » pour définir l'axe de tangage.", + "pins.analogPitch|param|frequency":"TODO", + "pins.analogPitch|param|ms":"TODO", "pins.analogReadPin":"Lire la valeur de connecteur analogique, c'est-à-dire comme une valeur comprise entre 0 et 1023.", + "pins.analogReadPin|block":"read|pin analogique %name", + "pins.analogReadPin|param|name":"broche d’écrire à", "pins.analogSetPeriod":"Configure la modulation de largeur d'impulsion (PWM) de la sortie à la valeur donnée en analogique ** microsecondes ** ou « 1\/1000' millisecondes.\nSi cette broche n'est pas configurée comme un analogue de sortie (en utilisant « écriture analogique pin »), l'opération n'a aucun effet.", + "pins.analogSetPeriod|block":"Analog set period|pin %pin|to micros % (µs)", + "pins.analogSetPeriod|param|micros":"période en micro secondes. par exemple: 20000", + "pins.analogSetPeriod|param|name":"broche analogique pour définir le délai", "pins.analogSetPitchPin":"Définit l'axe utilisé lors de l'utilisation de \"pins-> pitch analogique\".", + "pins.analogSetPitchPin|param|name":"TODO", "pins.analogWritePin":"Définissez la valeur de connecteur analogique. Valeur doit être comprise entre 0 et 1023.", + "pins.analogWritePin|block":"write|pin analogique %name|to % valeur", + "pins.analogWritePin|param|name":"nom de la broche d’écrire à", + "pins.analogWritePin|param|value":"valeur à écrire sur la broche entre '' 0'' et '' 1023''. par exemple: 1023, 0", "pins.digitalReadPin":"Lire la broche spécifié ou le connecteur comme 0 ou 1", + "pins.digitalReadPin|block":"read|pin numérique %name", + "pins.digitalReadPin|param|name":"broche pour lire à partir", "pins.digitalWritePin":"Définir une valeur de code pin ou le connecteur à 0 ou 1.", + "pins.digitalWritePin|block":"write|pin numérique %name|to % valeur", + "pins.digitalWritePin|param|name":"broche d’écrire à", + "pins.digitalWritePin|param|value":"valeur à définir sur la broche, 1 par exemple, 0", "pins.i2cReadNumber":"Lire un numéro de 7-bit I2C adresse.", + "pins.i2cReadNumber|block":"I2C lire number|at adresse %address|of format %format = i2c_sizeof", "pins.i2cWriteNumber":"Écrire un nombre à une adresse I2C de 7 bits.", + "pins.i2cWriteNumber|block":"I2C écrire number|at adresse %address|with valeur % value|of format %format = i2c_sizeof", "pins.map":"Remappe un nombre d'une plage à l'autre. Autrement dit, une valeur '' de faible '' serait sont mappée aux '' à faible '', une valeur de '' de haut '' à '' à haute '', valeurs intermédiaires à etc in-between, de valeurs.", + "pins.map|block":"carte % value|from %fromLow|from basse %fromHigh|to haute basse %toLow|to haute %toHigh", + "pins.map|param|fromHigh":"limite la supérieure de la gamme actuelle de la valeur, par exemple: 1023", + "pins.map|param|fromLow":"la limite inférieure de la gamme actuelle de la valeur", + "pins.map|param|toHigh":"la limite supérieure de la cible de la valeur du rang, par exemple: 4", + "pins.map|param|toLow":"la limite inférieure de la fourchette cible de la valeur", + "pins.map|param|value":"valeur à la carte dans les rangs", "pins.onPulsed":"Configure cette broche pour une entrée numérique et génère des événements où l’horodatage est la durée pendant laquelle cette broche a été '' élevé '' ou '' faible ''.", + "pins.onPulsed|block":"on|pin %pin|pulsed %pulse", "pins.pulseDuration":"Obtient la durée de la dernière impulsion en microsecondes. Cette fonction doit être appelée à partir d’un gestionnaire de '' onPulsed''.", + "pins.pulseDuration|block":"durée de l’impulsion (µs)", "pins.servoSetPulse":"Configure cette broche e\/s comme une sortie analogique\/pwm, configure le laps de temps pour être 20 ms et définit la largeur d'impulsion, basée sur la valeur, il est donné ** microsecondes ** ou « 1\/1000' millisecondes.", + "pins.servoSetPulse|block":"servo set pulse|pin % value|to (µs) % micros", + "pins.servoSetPulse|param|micros":"durée de l’impulsion en micro secondes, par exemple: 1500", + "pins.servoSetPulse|param|name":"nom de code PIN", "pins.servoWritePin":"Écrit une valeur à l'asservissement, contrôle de l'arbre en conséquence. Sur un servo standard, cette fonction définira l'angle de l'arbre (en degrés), déplacer l'arbre à cette orientation. Sur un servo de rotation continue, cette fonction définira la vitesse du servo (avec '' 0'' en pleine vitesse dans une seule direction, '' 180 cm en pleine vitesse dans l'autre et une valeur de près de 90 '''' aucun mouvement).", + "pins.servoWritePin|block":"servo write|pin %name|to % de la valeur", + "pins.servoWritePin|param|name":"broche d’écrire à", + "pins.servoWritePin|param|value":"angle ou rotation à vitesse, par exemple: 0, 90 et 180", "pins.setPull":"Configure l’attraction de cette broche.", + "pins.setPull|block":"Set pull|pin %pin|to %pull", + "pins.setPull|param|name":"broche pour définir le mode de traction sur", + "pins.setPull|param|pull":"une des configurations mbed pull : PullUp, menu déroulant, PullNone ", + "pins|block":"broches", "serial":"Lire et écrire des données sur une connexion série.", "serial.readLine":"Lit une ligne de texte à partir du port série.", + "serial.readLine|block":"série lire ligne", "serial.redirect":"Configuration dynamique de l’instance de série pour utiliser des épingles autres que USBTX et USBRX.", + "serial.redirect|block":"redirection série to| TX %tx| Taux % du taux de baud rx|at RX %", + "serial.redirect|param|rx":"le nouveau NIP de réception", + "serial.redirect|param|tx":"les nouvelles goupilles de transmission", "serial.writeLine":"Imprime une ligne de texte pour le numéro de série", + "serial.writeLine|block":"Serial|Write ligne %text", "serial.writeNumber":"Imprime une valeur numérique de la série", + "serial.writeNumber|block":"% valeur Serial|Write", "serial.writeString":"Envoie un morceau de texte via la connexion série.", - "serial.writeValue":"Écrit un « nom : valeur '' paire de ligne de la série." + "serial.writeString|block":"%text chaîne série écriture", + "serial.writeValue":"Écrit un « nom : valeur '' paire de ligne de la série.", + "serial.writeValue|block":"serial|écrire valeur %name|= %valeur", + "serial.writeValue|param|name":"nom de la valeur stream, par exemple: x", + "serial.writeValue|param|value":"Écrire", + "serial|block":"Serial" } \ No newline at end of file From 98238caffbe9ab988f23bf92103058f97eba5f44 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Mon, 20 Jun 2016 11:28:52 -0700 Subject: [PATCH 32/37] updated translations --- libs/microbit/_locales/ar/microbit-strings.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/microbit/_locales/ar/microbit-strings.json b/libs/microbit/_locales/ar/microbit-strings.json index 6d5893b7..4ab753b8 100644 --- a/libs/microbit/_locales/ar/microbit-strings.json +++ b/libs/microbit/_locales/ar/microbit-strings.json @@ -35,7 +35,7 @@ "control.inBackground|block":"تشغيل في الخلفية", "control.reset":"يعيد تعيين الصغير: بت ال بي بي سي.", "control.reset|block":"إعادة تعيين", - "control|block":"عنصر التحكم", + "control|block":"التحكم", "game":"محرك لعبة واحدة تقودها العفريت", "game.addScore":"إضافة نقاط إلى النتيجة الحالية", "game.addScore|block":"تغيير درجة by|%points", @@ -236,5 +236,5 @@ "serial.writeValue|block":"serial|write قيمة %name| = القيمة %", "serial.writeValue|param|name":"اسم القيمة الدفق، على سبيل المثال: x", "serial.writeValue|param|value":"يكتب", - "serial|block":"المسلسل" + "serial|block":"مصدر الاتصال" } \ No newline at end of file From 240162370e7dca35e1af9691d983b103d0c2e526 Mon Sep 17 00:00:00 2001 From: Ron Hale-Evans Date: Mon, 20 Jun 2016 13:18:41 -0700 Subject: [PATCH 33/37] Rewrote in simple language. New example. --- docs/reference/images/scroll-image.md | 89 ++++++++++----------------- 1 file changed, 32 insertions(+), 57 deletions(-) diff --git a/docs/reference/images/scroll-image.md b/docs/reference/images/scroll-image.md index 0ca0f46a..19379977 100644 --- a/docs/reference/images/scroll-image.md +++ b/docs/reference/images/scroll-image.md @@ -1,70 +1,45 @@ # Scroll Image -The scroll image function. - -Scrolls the frames within an [Image](/reference/images/image) on the [LED screen](/device/screen). - -### Block Editor - -![](/static/mb/scroll-image-0.png) - -### JavaScript - -``` -export function scrollImage(_this: micro_bit.Image, xOffsetPerStep: number, interval: number) -``` +Scroll (slide) an [image](/reference/images/image) (picture) from one +side to the other of the [LED screen](/device/screen). ### Parameters -* x offset per step : [Number](/reference/types/number) - the number of columns to scroll at a time (horizontal offset). Use a positive number to scroll an image to the right and a negative number to scroll left. To jump from one image frame to the next, use an offset of 5 or -5. -* interval (ms) : [Number](/reference/types/number) - the time (in milliseconds) before scrolling by `x offset per step`; the larger the number, the slower the scroll. +* ``offset`` is a [number](/reference/types/number) that means + how many LEDs to scroll at a time, from right to left or + left to right. If you use a positive number like `2`, the image + will scroll from the right side of the screen to the left. + If you use a negative number like `-2`, the image will scroll + in the other direction. If you use `5` or `-5`, the image + will scroll one **frame** at a time. (A frame is a part of the + image. It is a square with five LEDs on a side). This is + useful for **animation**. -### ~hide +* ``interval (ms)`` is a [number](/reference/types/number) that means + how many milliseconds to wait before scrolling the amount that + ``offset`` says. (1000 milliseconds is one second.) The bigger you + make this number, the slower the image will scroll. -``` -let img = images.createImage(` -. . # . . . # # # . . # # # . -. . # . . . . . # . . . . # . -. . # . . . . # . . . # # # . -. . # . . . # . . . . . . # . -. . # . . . # # # . . # # # . -`) -``` +### Example -### ~ +This program scrolls an image of two arrows five LEDs at a time, +with a pause of 200 milliseconds between each time it scrolls. +Because each frame is five LEDs wide, that means this program +will look like it's animating one arrow flipping and flopping. +Of course, you can use any two frames you want instead. -To scroll an image 1 column at a time to the right: -``` -img.scrollImage(1, 1000) -``` - -To scroll an image 5 columns at a time (skip from frame to frame): - -``` -img.scrollImage(5, 1000) -``` - -To scroll an image 1 column at a time to the left: - -``` -img.scrollImage(-1, 500) -``` - -### Example: scroll through frames - -This example creates an image with 3 frames, then scrolls through the 3 frames: - -``` -img = images.createImage(` -. . # . . . # # # . . # # # . -. . # . . . . . # . . . . # . -. . # . . . . # . . . # # # . -. . # . . . # . . . . . . # . -. . # . . . # # # . . # # # . -`) -img.showImage(0) -img.scrollImage(5, 1000) +```blocks +let arrows = images.createBigImage(` + . . # . . . . # . . + . # # # . . . # . . + # . # . # # . # . # + . . # . . . # # # . + . . # . . . . # . . + `); +basic.forever(() => { + arrows.scrollImage(5, 200); +}); ``` ### See also From fffcf0f809e0f2f211e2599d0dcc5585577186b3 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Mon, 20 Jun 2016 13:39:18 -0700 Subject: [PATCH 34/37] added config section --- docs/reference/devices/on-gamepad-button.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/reference/devices/on-gamepad-button.md b/docs/reference/devices/on-gamepad-button.md index daf5a4c5..6641c3e9 100644 --- a/docs/reference/devices/on-gamepad-button.md +++ b/docs/reference/devices/on-gamepad-button.md @@ -20,3 +20,11 @@ devices.onGamepadButton(MesDpadButtonInfo.ADown, () => {}) ### See Also [tell remote control to](/reference/devices/tell-remote-control-to), [raise alert to](/reference/devices/raise-alert-to), [signal strength](/reference/devices/signal-strength), [on signal strength changed](/reference/devices/on-signal-strength-changed) + +```config +{ + "dependencies": { + "microbit-devices": "*" + } +} +``` \ No newline at end of file From ff3689e92d9ec2430e6cfde6737e97aa53d1eb69 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Mon, 20 Jun 2016 13:39:31 -0700 Subject: [PATCH 35/37] Bump pxt-core to 0.2.184 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 099fe4c1..e2ba0f78 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,6 @@ "typescript": "^1.8.7" }, "dependencies": { - "pxt-core": "0.2.182" + "pxt-core": "0.2.184" } } From dd181e41784f11e293746bca20d5d1f2be9a0c5d Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Mon, 20 Jun 2016 13:39:34 -0700 Subject: [PATCH 36/37] 0.2.173 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e2ba0f78..55dd0966 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pxt-microbit", - "version": "0.2.172", + "version": "0.2.173", "description": "BBC micro:bit target for PXT", "keywords": [ "JavaScript", From 8f3c5855888103f6a09816fe9a6a1baba4749ad7 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Mon, 20 Jun 2016 22:06:19 -0700 Subject: [PATCH 37/37] updated devices docs --- docs/reference/devices/on-gamepad-button.md | 15 +++----- .../devices/on-signal-strength-changed.md | 17 ++++++--- docs/reference/devices/raise-alert-to.md | 25 ++++++------ docs/reference/devices/receive-number.md | 36 ------------------ docs/reference/devices/signal-strength.md | 19 ++++++---- docs/reference/devices/tell-camera-to.md | 37 +++++++++--------- .../devices/tell-remote-control-to.md | 38 +++++++++---------- 7 files changed, 77 insertions(+), 110 deletions(-) delete mode 100644 docs/reference/devices/receive-number.md diff --git a/docs/reference/devices/on-gamepad-button.md b/docs/reference/devices/on-gamepad-button.md index 6641c3e9..4388eeeb 100644 --- a/docs/reference/devices/on-gamepad-button.md +++ b/docs/reference/devices/on-gamepad-button.md @@ -2,12 +2,13 @@ Register code to run when the micro:bit receives a command from the paired gamepad. -## Bluetooth required - -The functions in the ``devices`` namespace allow the BBC micro:bit to communicate with a separate (remote) device, such as a smartphone, over Bluetooth (Smart). +### ~hint +The functions in the ``devices`` namespace allow the BBC micro:bit to communicate with a separate (remote) device, +such as a smartphone, over Bluetooth (Smart). The set of supported events will depend on the remote device and the BBC micro:bit apps available for the remote device. +### ~ ```sig devices.onGamepadButton(MesDpadButtonInfo.ADown, () => {}) @@ -21,10 +22,6 @@ devices.onGamepadButton(MesDpadButtonInfo.ADown, () => {}) [tell remote control to](/reference/devices/tell-remote-control-to), [raise alert to](/reference/devices/raise-alert-to), [signal strength](/reference/devices/signal-strength), [on signal strength changed](/reference/devices/on-signal-strength-changed) -```config -{ - "dependencies": { - "microbit-devices": "*" - } -} +```package +microbit-devices ``` \ No newline at end of file diff --git a/docs/reference/devices/on-signal-strength-changed.md b/docs/reference/devices/on-signal-strength-changed.md index 99f91a32..a66fb00c 100644 --- a/docs/reference/devices/on-signal-strength-changed.md +++ b/docs/reference/devices/on-signal-strength-changed.md @@ -1,15 +1,16 @@ # On Signal Strength Changed -The `on signal strength changed` function. - Register code to run when the signal strength of the paired device changes. -## Bluetooth required - -The functions in the ``devices`` namespace allow the BBC micro:bit to communicate with a separate (remote) device, such as a smartphone, over Bluetooth (Smart). +### ~hint +The functions in the ``devices`` namespace allow the BBC micro:bit to communicate with a separate (remote) device, +such as a smartphone, over Bluetooth (Smart). The set of supported events will depend on the remote device and the BBC micro:bit apps available for the remote device. +### ~ + + ```sig devices.onSignalStrengthChanged(() => {}) ``` @@ -30,4 +31,8 @@ devices.onSignalStrengthChanged(() => { ### See Also -[tell remote control to](/reference/devices/tell-remote-control-to), [raise alert to](/reference/devices/raise-alert-to), [signal strength](/reference/devices/signal-strength) \ No newline at end of file +[tell remote control to](/reference/devices/tell-remote-control-to), [raise alert to](/reference/devices/raise-alert-to), [signal strength](/reference/devices/signal-strength) + +```package +microbit-devices +``` \ No newline at end of file diff --git a/docs/reference/devices/raise-alert-to.md b/docs/reference/devices/raise-alert-to.md index 8d82fbbe..5477442b 100644 --- a/docs/reference/devices/raise-alert-to.md +++ b/docs/reference/devices/raise-alert-to.md @@ -1,15 +1,15 @@ # raise alert to -The raise alert to function. - Raise an alert on a remote device. -## Bluetooth required - -The functions in the ``devices`` namespace allow the BBC micro:bit to communicate with a separate (remote) device, such as a smartphone, over Bluetooth (Smart). +### ~hint +The functions in the ``devices`` namespace allow the BBC micro:bit to communicate with a separate (remote) device, +such as a smartphone, over Bluetooth (Smart). The set of supported events will depend on the remote device and the BBC micro:bit apps available for the remote device. +### ~ + ```sig export function raiseAlertTo(event: string) @@ -23,37 +23,37 @@ export function raiseAlertTo(event: string) To tell the connected device to display toast -``` +```blocks devices.raiseAlertTo("display toast") ``` To tell the connected device to vibrate -``` +```blocks devices.raiseAlertTo("vibrate") ``` To tell the connected device to play a sound -``` +```blocks devices.raiseAlertTo("play sound") ``` To tell the connected device to play a ringtone -``` +```blocks devices.raiseAlertTo("play ringtone") ``` To tell the connected device to find my phone -``` +```blocks devices.raiseAlertTo("find my phone") ``` To tell the connected device to ring alarm -``` +```blocks devices.raiseAlertTo("ring alarm") ``` @@ -61,3 +61,6 @@ devices.raiseAlertTo("ring alarm") [tell remote control to](/reference/devices/tell-remote-control-to), [tell camera to](/reference/devices/tell-camera-to) +```package +microbit-devices +``` \ No newline at end of file diff --git a/docs/reference/devices/receive-number.md b/docs/reference/devices/receive-number.md deleted file mode 100644 index d433d6a6..00000000 --- a/docs/reference/devices/receive-number.md +++ /dev/null @@ -1,36 +0,0 @@ -# Receive Number - -The broadcast function. - -Reads the next radio packet as a number data packet. - -## Important Security Consideration - -The functions in the ``radio`` namespace allow the BBC micro:bit to communicate with other micro:bits. - -This API does not contain any form of encryption, authentication or authorization. It's purpose is solely for use as a teaching aid to demonstrate how simple communications operates, and to provide a sandpit through which learning can take place. - -For serious applications, BLE should be considered a substantially more secure alternative. - -```sig -radio.receiveNumber(); -``` - -### Returns - -* packet - a number received. - -### Examples - -Broadcasts the value of ``acceleration`` x to other micro:bits. - -``` -radio.onDataReceived(() => { - led.plotBarGraph(radio.receiveNumber(), 1023) -}) -``` - -### See also - -[send number](/reference/radio/send-number), [receive number](/reference/radio/receive-number), [on data received](/reference/radio/on-data-received), [set group](/reference/radio/set-group) - diff --git a/docs/reference/devices/signal-strength.md b/docs/reference/devices/signal-strength.md index bb8a9c77..064b1aa3 100644 --- a/docs/reference/devices/signal-strength.md +++ b/docs/reference/devices/signal-strength.md @@ -1,17 +1,17 @@ # Signal Strength -The `signal strength` function. - Returns the signal strength reported by the paired device from ``0`` (no signal) to ``4`` (full strength). -## Important Security Consideration - -The functions in the ``devices`` namespace allow the BBC micro:bit to communicate with a separate (remote) device, such as a smartphone, over Bluetooth (Smart). +### ~hint +The functions in the ``devices`` namespace allow the BBC micro:bit to communicate with a separate (remote) device, +such as a smartphone, over Bluetooth (Smart). The set of supported events will depend on the remote device and the BBC micro:bit apps available for the remote device. -``` -devices.signalStrength() : number +### ~ + +```sig +devices.signalStrength(); ``` ### Returns @@ -22,7 +22,7 @@ devices.signalStrength() : number Display the signal strength on screen: -``` +```blocks devices.onSignalStrengthChanged(() => { basic.showNumber(devices.signalStrength(), 150) }) @@ -32,3 +32,6 @@ devices.onSignalStrengthChanged(() => { [tell remote control to](/reference/devices/tell-remote-control-to), [raise alert to](/reference/devices/raise-alert-to), [on signal strength changed](/reference/devices/on-signal-strength-changed) +```package +microbit-devices +``` \ No newline at end of file diff --git a/docs/reference/devices/tell-camera-to.md b/docs/reference/devices/tell-camera-to.md index 56041304..ed8efcc4 100644 --- a/docs/reference/devices/tell-camera-to.md +++ b/docs/reference/devices/tell-camera-to.md @@ -1,23 +1,17 @@ # tell camera to -The tell camera to function. - Access the photo/video-taking functionality of a remote device using the ``tell camera to`` function. -## Bluetooth required - -The functions in the ``devices`` namespace allow the BBC micro:bit to communicate with a separate (remote) device, such as a smartphone, over Bluetooth (Smart). +### ~hint +The functions in the ``devices`` namespace allow the BBC micro:bit to communicate with a separate (remote) device, +such as a smartphone, over Bluetooth (Smart). The set of supported events will depend on the remote device and the BBC micro:bit apps available for the remote device. -### Block Editor +### ~ -![](/static/mb/tell-camera-to-0.png) - -### JavaScript - -``` -export function tellCameraTo(event: string) +```sig +devices.tellCameraTo() ``` ### Parameters @@ -28,49 +22,49 @@ export function tellCameraTo(event: string) To tell the connected device to take a picture: -``` +```blocks devices.tellCameraTo("take photo") ``` To tell the connected device to start recording a video -``` +```blocks devices.tellCameraTo("start video capture") ``` To tell the connected device to stop recording a video -``` +```blocks devices.tellCameraTo("stop video capture") ``` To tell the connected device to toggle front-rear -``` +```blocks devices.tellCameraTo("toggle front-rear") ``` To tell the connected device to launch photo mode -``` +```blocks devices.tellCameraTo("launch photo mode") ``` To tell the connected device to launch video mode -``` +```blocks devices.tellCameraTo("launch video mode") ``` To tell the connected device to stop photo mode -``` +```blocks devices.tellCameraTo("stop photo mode") ``` To tell the connected device to stop video mode -``` +```blocks devices.tellCameraTo("stop video mode") ``` @@ -78,3 +72,6 @@ devices.tellCameraTo("stop video mode") [tell remote control to](/reference/devices/tell-remote-control-to), [raise alert to](/reference/devices/raise-alert-to) +```package +microbit-devices +``` diff --git a/docs/reference/devices/tell-remote-control-to.md b/docs/reference/devices/tell-remote-control-to.md index 5062310c..77f11a1b 100644 --- a/docs/reference/devices/tell-remote-control-to.md +++ b/docs/reference/devices/tell-remote-control-to.md @@ -1,23 +1,17 @@ # tell remote control to -The tell remote control to function. - Control the presentation of media content available on a remote device using the `tell remote control` to function. -## - -The functions in the ``devices`` namespace allow the BBC micro:bit to communicate with a separate (remote) device, such as a smartphone, over Bluetooth (Smart). +### ~hint +The functions in the ``devices`` namespace allow the BBC micro:bit to communicate with a separate (remote) device, +such as a smartphone, over Bluetooth (Smart). The set of supported events will depend on the remote device and the BBC micro:bit apps available for the remote device. -### Block Editor +### ~ -![](/static/mb/tell-remote-control-to-0.png) - -### JavaScript - -``` -export function tellRemoteControlTo(event: string) +```sig +devices.tellRemoteControlTo(event: string) ``` ### Parameters @@ -40,49 +34,49 @@ export function tellRemoteControlTo(event: string) To tell the connected device to start playing: -``` +```blocks devices.tellRemoteControlTo("play") ``` To tell the connected device to stop playing -``` +```blocks devices.tellRemoteControlTo("stop") ``` To tell the connected device to go to next track -``` +```blocks devices.tellRemoteControlTo("next track") ``` To tell the connected device to go to previous track -``` +```blocks devices.tellRemoteControlTo("previous track") ``` To tell the connected device to go forward -``` +```blocks devices.tellRemoteControlTo("forward") ``` To tell the connected device to rewind -``` +```blocks devices.tellRemoteControlTo("rewind") ``` To tell the connected device volume up -``` +```blocks devices.tellRemoteControlTo("volume up") ``` To tell the connected device volume down -``` +```blocks devices.tellRemoteControlTo("volume down") ``` @@ -90,3 +84,7 @@ devices.tellRemoteControlTo("volume down") [tell camera to](/reference/devices/tell-camera-to), [raise alert to](/reference/devices/raise-alert-to) + +```package +microbit-devices +```