diff --git a/.gitattributes b/.gitattributes index d2bd0c9..3d608b3 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5,10 +5,10 @@ *.mexa64 binary *.mexw64 binary *.mexmaci64 binary -*.mlapp binary +*.mlapp binary linguist-language=MATLAB *.mldatx binary *.mlproj binary -*.mlx binary +*.mlx binary merge=mlAutoMerge linguist-language=MATLAB *.p binary *.sfx binary *.sldd binary @@ -16,7 +16,7 @@ *.slmx binary merge=mlAutoMerge *.sltx binary *.slxc binary -*.slx binary merge=mlAutoMerge +*.slx binary merge=mlAutoMerge linguist-language=Simulink *.slxp binary ## Other common binary file types @@ -26,3 +26,7 @@ *.pdf binary *.png binary *.xlsx binary + +# Ignore HTML + +*.html linguist-detectable=false diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..fa2450b --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,120 @@ +name: MATLAB Build + +# Controls when the action will run. +on: + push: + branches: [ release ] + pull_request: + branches: [ release ] + workflow_dispatch: + +# Add permission to write GitHub pages +permissions: + contents: write + pages: write + id-token: write + +jobs: + test: + strategy: + fail-fast: false + matrix: + MATLABVersion: [R2024b,R2025a,R2025b] + runs-on: ubuntu-latest + env: + LD_PRELOAD: /usr/lib/x86_64-linux-gnu/libstdc++.so.6 + steps: + # Checks-out your repository + - uses: actions/checkout@v4 + + # Sets up a display server + - name: Start display server + if: ${{ always() }} + run: | + sudo apt-get install xvfb + Xvfb :99 & + echo "DISPLAY=:99" >> $GITHUB_ENV + + # Sets up MATLAB + - name: Setup MATLAB + uses: matlab-actions/setup-matlab@v2 + with: + release: ${{ matrix.MATLABVersion }} + products: > + Symbolic_Math_Toolbox + # Simulink Statistics_and_Machine_Learning_Toolbox + # List required products above in the format shown (and uncomment them) + # List of product strings: + # Simulink + # Statistics_and_Machine_Learning_Toolbox + # Simulink_Coder + # Econometrics_Toolbox + # Deep_Learning_Toolbox + + + # Run all the tests + - name: Run SmokeTests + uses: matlab-actions/run-command@v2 + with: + command: openProject(pwd); RunAllTests; + + # Upload the test results as artifact + - name: Upload TestResults + if: ${{ always() }} + uses: actions/upload-artifact@v4 + with: + name: TestResults_${{ matrix.MATLABVersion }} + path: ./public/* + overwrite: true + + badge: + if: ${{ always() }} + needs: [test] + strategy: + fail-fast: false + runs-on: ubuntu-latest + steps: + + # Checks-out your repository + - uses: actions/checkout@v4 + + # Sets up R2023b + - name: Setup MATLAB + uses: matlab-actions/setup-matlab@v2 + with: + release: R2024b + + # Download the test results from artifact + - name: Download All TestResults + uses: actions/download-artifact@v4 + with: + path: public + pattern: TestResults_* + merge-multiple: true + + # Create the test results badge + - name: Run PostSmokeTest + uses: matlab-actions/run-command@v2 + with: + command: openProject(pwd); PostSmokeTest; + + # Deploy reports to GitHub pages + - name: Setup Pages + uses: actions/configure-pages@v5 + - name: Upload pages artifact + uses: actions/upload-pages-artifact@v3 + with: + path: public + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 + + # Commit the JSON for the MATLAB releases badge + - name: Commit changed files + continue-on-error: true + run: | + git config user.name "${{ github.workflow }} by ${{ github.actor }}" + git config user.email "<>" + git add Images/TestedWith.json + git commit Images/TestedWith.json -m "Update CI badges ${{ github.ref_name }}" + git push diff --git a/.gitignore b/.gitignore index f10e12e..14f9f76 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,61 @@ # List of untracked files to ignore +# Autosave files *.asv -*.zip -*.pyc +*.m~ +*.autosave +*.slx.r* +*.mdl.r* +__pycache__ *.pyc -*.vs -*TestOutput -MATLAB-Live-Task-for-Python \ No newline at end of file +*/*.pyc + +# MATLAB Drive +*.MATLABDriveTag + +# Compiled files +*.mex* +*.p + +# Compressed files +*.zip + +# Packaged app and toolbox files +*.mlappinstall +*.mltbx + +# Deployable archives +*.ctf + +# Generated helpsearch folders +helpsearch*/ + +# Defined Simulink cache folder +Utilities/SimulinkCache/* + +# Standard code generation folders +slprj/ +sccprj/ +codegen/ + +# Code generation file +*.eep +*.elf +*.hex +*.bin + +# Cache files +*.slxc + +# Project settings +Utilities/ProjectSettings.mat + +# GitLab page folder +public/ + +# Prevent accidentally committing your API key +myAPIkey.txt + +# Live Task Repository +MATLAB-Live-Task-for-Python + diff --git a/.vs/ProjectSettings.json b/.vs/ProjectSettings.json deleted file mode 100644 index f8b4888..0000000 --- a/.vs/ProjectSettings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "CurrentProjectSetting": null -} \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite deleted file mode 100644 index 53d9b1b..0000000 Binary files a/.vs/slnx.sqlite and /dev/null differ diff --git a/Apps/CurrentWeatherAppDemo.mlapp b/Apps/CurrentWeatherAppDemo.mlapp new file mode 100644 index 0000000..29e8eca Binary files /dev/null and b/Apps/CurrentWeatherAppDemo.mlapp differ diff --git a/Apps/CurrentWeatherAppStart.mlapp b/Apps/CurrentWeatherAppStart.mlapp new file mode 100644 index 0000000..7911e83 Binary files /dev/null and b/Apps/CurrentWeatherAppStart.mlapp differ diff --git a/Apps/WeatherDisplay.mlapp b/Apps/WeatherDisplay.mlapp new file mode 100644 index 0000000..051c401 Binary files /dev/null and b/Apps/WeatherDisplay.mlapp differ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..14d6bdc --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,27 @@ +# Contributing + +>_If you believe you have discovered a security vulnerability, please **do not** open an issue or make a pull request. Follow the instructions in the [SECURITY.md](SECURITY.md) file in this repository._ + +Thank you for your interest in contributing to a MathWorks repository! We encourage contributions large and small to this repository. + +**Contributions do not have to be code!** If you see a way to explain things more clearly or a great example of how to use something, please contribute it (or a link to your content). We welcome issues even if you don't code the solution. We also welcome pull requests to resolve issues that we haven't gotten to yet! + +## How to give feedback +* **Send us an email:** Contact the [MathWorks teaching resources team.](mailto:onlineteaching@mathworks.com) +* **Open an issue:** Start by [creating an issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/creating-an-issue) in the repository that you're interested in. That will start a conversation with the maintainer. When you are creating a bug report, please include as many details as possible. Please remember that other people do not have your background or understanding of the issue; make sure you are clear and complete in your description. + +## How to contribute to the repository +* **Work in your own public fork:** If you choose to make a contribution, you should [fork the repository](https://docs.github.com/en/get-started/quickstart/fork-a-repo). This creates an editable copy on GitHub where you can write, test, and refine your changes. We suggest that you keep your changes small and focused on the issue you submitted. +* **Sign a Contributor License Agreement (CLA):** We require that all outside contributors sign a [CLA](https://en.wikipedia.org/wiki/Contributor_License_Agreement) before we can accept your contribution. When you create a pull request (see below), we'll reach out to you if you do not already have one on file. Essentially, the CLA gives us permission to publish your contribution as part of the repository. +* **Make a pull request:** "[Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests)" is a confusing term, but it means exactly what it says: You're requesting that the maintainers of the repository pull your changes in. If you don't have a CLA on file, we'll reach out to you. Your contribution will be reviewed, and we may ask you to revise your pull request based on our feedback. Once everyone is satisfied, we'll merge your pull request into the repository. + +## Guidelines + +We don't have best practices for writing MATLAB® code, but we do have some recommendations: + +* You should not have any warnings or errors in the [code analyzer report](http://www.mathworks.com/help/matlab/matlab_prog/matlab-code-analyzer-report.html) +* [Loren Shure's blog](https://blogs.mathworks.com/loren) has [great advice on improving your MATLAB code](https://blogs.mathworks.com/loren/category/best-practice/) +* Examples should be written as [live scripts](https://www.mathworks.com/help/matlab/matlab_prog/what-is-a-live-script-or-function.html) or [Simulink® models](https://www.mathworks.com/help/simulink/index.html). +* We adhere to the [CommonMark](https://commonmark.org/) specification where it does not conflict with GitHub rendering. If you edit your Markdown in Visual Studio Code or a similar editor, it uses [markdownlint](https://github.com/DavidAnson/markdownlint) to highlight issues in your Markdown. + +**Again, thanks for contributing, and we look forward to your issues and pull requests!** diff --git a/CheckingTheWeather.mlx b/CheckingTheWeather.mlx deleted file mode 100644 index 2731e25..0000000 Binary files a/CheckingTheWeather.mlx and /dev/null differ diff --git a/FunctionLibrary/CheckPythonVersion.mlx b/FunctionLibrary/CheckPythonVersion.mlx new file mode 100644 index 0000000..b5e0ab7 Binary files /dev/null and b/FunctionLibrary/CheckPythonVersion.mlx differ diff --git a/helloworld.py b/FunctionLibrary/helloworld.py similarity index 100% rename from helloworld.py rename to FunctionLibrary/helloworld.py diff --git a/HelperFunctions/Navigation.mlx b/HelperFunctions/Navigation.mlx deleted file mode 100644 index 165180c..0000000 Binary files a/HelperFunctions/Navigation.mlx and /dev/null differ diff --git a/HelperFunctions/OpenOverview.m b/HelperFunctions/OpenOverview.m deleted file mode 100644 index 45101a2..0000000 --- a/HelperFunctions/OpenOverview.m +++ /dev/null @@ -1,10 +0,0 @@ -function OpenOverview -% Open the overview file -locDir = pwd; -if contains(locDir,filesep+"MATLAB Drive") - open("Navigation.mlx") -else - open("Overview.html") -end - -end \ No newline at end of file diff --git a/HelperFunctions/Overview.html b/HelperFunctions/Overview.html deleted file mode 100644 index d8f52c9..0000000 --- a/HelperFunctions/Overview.html +++ /dev/null @@ -1,331 +0,0 @@ - - - - - Programming: A Starter Project Using MATLAB with Python

Programming: A Starter Project Using MATLAB with Python

- - -

Information

- This curriculum module contains interactive - MATLAB® live scripts - that teach fundamental concepts and basic terminology related to - programming computers. This module explores interactions between systems - by using the OpenWeather API and calling into Python from MATLAB. -
-
- Programming: A Starter Project Using MATLAB with Python covers - downloading and installing a Live Task to run Python code, accessing the OpenWeather API - to check the weather, and choosing how to package - the weather reports into your personalized weather dashboard. -
-
- You can use these live scripts as demonstrations in a lecture, class activities, - or interactive assignments outside of class. The module is divided into - two interactive scripts and an example script: setting up your environment - to run Python from MATLAB in UsingPythonWithMATLAB.mlx, - exploring the API with CheckingTheWeather.mlx, and the - example SampleWeatherDashboard.mlx. -
-
- The instructions inside the live scripts will guide you through the exercises and activities. - Get started with each live script by running it one section at a time. To stop running the script - or a section midway (for example, when an animation is in progress), use the Stop button in the - RUN section of the Live Editor tab in the MATLAB Toolstrip. -
-
- If you are an instructor who would like solutions, or if you find an issue or have a suggestion, -email the MathWorks online teaching team at - onlineteaching@mathworks.com. -
-
-

Related Courseware Modules

-
    -
  1. Fundamentals of Programming available on - GitHub or - -
  2. -
  3. Programming: Organizing Data available on - GitHub or - -
  4. -
  5. Programming: Structuring Code available on - GitHub or - -
  6. -
-

Prerequisites

- This module assumes familiarity with basic programming concepts such as variables, - data types, and functions, structures including arrays and structs, and control flows - including if/else as well as how to use them in MATLAB. These ideas are all presented - with interactive examples in - - Fundamentals of Programming, - Programming: Organizing Data, and - Programming: Structuring Code . -
-
-

Getting Started

-
    -
  1. Open the project file.
  2. -
  3. - Get started with each topic by clicking the link in the first column of the table below to access the - full script example.
  4. -
  5. The instructions inside each live script will walk - you through the live scripts and related functions. -
  6. -
-

Products

- MATLAB® and Symbolic Toolbox™ -
-
-

Scripts

- - - - - - - - - - - - - - - - - - -

Organization of Programming: A Starter Project Using MATLAB with Python

Script In this script, you will...
- Setting up MATLAB to run Python code
-
-
-
    -
  • check that an appropriate version of Python is installed and visible within MATLAB.
  • -
  • download and install the Run Python Code Live Task.
  • -
  • try running Python commands and a Python script from MATLAB.
  • -
-
- Reading and Accessing the OpenWeather API
-
-
-
    -
  • set up an account with OpenWeather to create your own API key.
  • -
  • use checkweather.py to make an API call to OpenWeather.
  • -
  • use MATLAB to explore the data returned by checkweather.py, - including data type conversions, unit conversions, and data - visualization options.
  • -
-
- Example Weather Dashboard
-
-
-
    -
  • use hidden code interactions in live scripts to design a streamlined user experience.
  • -
-
-
- - -

Copyright 2022 The MathWorks™, Inc.

\ No newline at end of file diff --git a/Images/AddCallbackFromContextMenu.mlx b/Images/AddCallbackFromContextMenu.mlx new file mode 100644 index 0000000..d7fd67b Binary files /dev/null and b/Images/AddCallbackFromContextMenu.mlx differ diff --git a/Images/AddCallbackInComponentBrowser.mlx b/Images/AddCallbackInComponentBrowser.mlx new file mode 100644 index 0000000..225fde9 Binary files /dev/null and b/Images/AddCallbackInComponentBrowser.mlx differ diff --git a/Images/AddFunction.mlx b/Images/AddFunction.mlx new file mode 100644 index 0000000..07b5c4d Binary files /dev/null and b/Images/AddFunction.mlx differ diff --git a/Images/AddMultipleComponentsToApp.mlx b/Images/AddMultipleComponentsToApp.mlx new file mode 100644 index 0000000..2cb497d Binary files /dev/null and b/Images/AddMultipleComponentsToApp.mlx differ diff --git a/Images/AddOnsIcon.png b/Images/AddOnsIcon.png new file mode 100644 index 0000000..3c2252f Binary files /dev/null and b/Images/AddOnsIcon.png differ diff --git a/Images/AddProperty.mlx b/Images/AddProperty.mlx new file mode 100644 index 0000000..97b05a7 Binary files /dev/null and b/Images/AddProperty.mlx differ diff --git a/Images/EndIcon.png b/Images/EndIcon.png new file mode 100644 index 0000000..46b8835 Binary files /dev/null and b/Images/EndIcon.png differ diff --git a/Images/MouseThoughtBubble.png b/Images/MouseThoughtBubble.png new file mode 100644 index 0000000..b5d45dc Binary files /dev/null and b/Images/MouseThoughtBubble.png differ diff --git a/Images/OpenInFX.png b/Images/OpenInFX.png new file mode 100644 index 0000000..987bb51 Binary files /dev/null and b/Images/OpenInFX.png differ diff --git a/Images/OpenInMO.png b/Images/OpenInMO.png new file mode 100644 index 0000000..41c17fe Binary files /dev/null and b/Images/OpenInMO.png differ diff --git a/Images/RGBTurkeys.png b/Images/RGBTurkeys.png new file mode 100644 index 0000000..75e040e Binary files /dev/null and b/Images/RGBTurkeys.png differ diff --git a/Images/SeaSurfaceTemps.png b/Images/SeaSurfaceTemps.png new file mode 100644 index 0000000..1326b82 Binary files /dev/null and b/Images/SeaSurfaceTemps.png differ diff --git a/Images/TestedWith.json b/Images/TestedWith.json new file mode 100644 index 0000000..7e7e1c0 --- /dev/null +++ b/Images/TestedWith.json @@ -0,0 +1 @@ +{"schemaVersion":1,"label":"Test Status","color":"success","message":"R2024b | R2025a | R2025b"} diff --git a/Images/WeatherDashboard.png b/Images/WeatherDashboard.png new file mode 100644 index 0000000..6f234bd Binary files /dev/null and b/Images/WeatherDashboard.png differ diff --git a/Images/WeatherStruct.png b/Images/WeatherStruct.png new file mode 100644 index 0000000..5ce65d8 Binary files /dev/null and b/Images/WeatherStruct.png differ diff --git a/InstructorResources/Solutions/CheckingTheWeatherSoln.mlx b/InstructorResources/Solutions/CheckingTheWeatherSoln.mlx new file mode 100644 index 0000000..c81f902 Binary files /dev/null and b/InstructorResources/Solutions/CheckingTheWeatherSoln.mlx differ diff --git a/InstructorResources/Solutions/CreateCurrentWeatherAppSoln.mlx b/InstructorResources/Solutions/CreateCurrentWeatherAppSoln.mlx new file mode 100644 index 0000000..acb7550 Binary files /dev/null and b/InstructorResources/Solutions/CreateCurrentWeatherAppSoln.mlx differ diff --git a/InstructorResources/Solutions/UsingMATLABwithPythonSoln.mlx b/InstructorResources/Solutions/UsingMATLABwithPythonSoln.mlx new file mode 100644 index 0000000..f286f6c Binary files /dev/null and b/InstructorResources/Solutions/UsingMATLABwithPythonSoln.mlx differ diff --git a/LICENSE.md b/LICENSE.md index 2ea369e..0051e60 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,10 +1,27 @@ -Copyright (c) 2022, The MathWorks, Inc. +Copyright (c) 2024, The MathWorks, Inc. All rights reserved. -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -3. In all cases, the software is, and all modifications and derivatives of the software shall be, licensed to you solely for use in conjunction with MathWorks products and service offerings. + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the distribution + * Neither the name of the The MathWorks, Inc. nor the names + of its contributors may be used to endorse or promote products derived + from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/MainMenu.mlx b/MainMenu.mlx new file mode 100644 index 0000000..d9f6355 Binary files /dev/null and b/MainMenu.mlx differ diff --git a/README.md b/README.md index 8ff2208..f2b2f91 100644 --- a/README.md +++ b/README.md @@ -1,82 +1,117 @@ -# Programming: A Starter Project Using MATLAB with Python -[![View Programming-A-Starter-Project-Using-MATLAB-and-Python on File Exchange](https://www.mathworks.com/matlabcentral/images/matlab-file-exchange.svg)](https://www.mathworks.com/matlabcentral/fileexchange/116490-programming-a-starter-project-using-matlab-and-python) -[Open in MATLAB Online](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Programming-A-Starter-Project-Using-MATLAB-and-Python&project=MATLABwithPython.prj) - -**Curriculum Module** -_Created with R2022a. Compatible with R2022a and later releases._ - -## Description ## -This curriculum module contains interactive [live scripts](https://www.mathworks.com/products/matlab/live-editor.html) that teach fundamental concepts and basic terminology related to programming computers. -This module explores interactions between systems by using the OpenWeather API and calling into Python from MATLAB. -**Programming: A Starter Project Using MATLAB with Python** covers downloading and installing a Live Task to run Python code -from a Git repository, accessing the OpenWeather API to check the weather, and choosing how to package the weather -reports into your personalized weather display. - -These lessons can be used as part of a lecture, as activities in an instructional setting, or as interactive assignments -to be completed outside of class. - -Get started with the Programming: A Starter Project Using MATLAB with Python interactive examples by downloading -and unzipping the repository. Then, double-click the MATLABwithPython.prj file inside MATLAB®. From there, -you can follow the landing page instructions to get started with the examples. The instructions inside the live -scripts will guide you through the exercises and activities. Get started with each live script by running it one -section at a time. To stop running the script or a section midway (for example, if a loop is running longer than -intended), click the -**Stop** button in the **RUN** section of the **Live Editor** tab in the MATLAB Toolstrip. - -## Prerequisite Domain Knowledge ## -This module assumes familiarity with basic programming concepts such as variables, data types, and functions, -structures including arrays and structs, and control flows including if/else as well as how to use them in MATLAB. -These ideas are all presented with interactive examples in -[Fundamentals of Programming](https://www.mathworks.com/matlabcentral/fileexchange/103225-fundamentals-of-programming), -[Programming: Organizing Data](https://www.mathworks.com/matlabcentral/fileexchange/115900-programming-organizing-data), -[Programming: Structuring Code](https://www.mathworks.com/matlabcentral/fileexchange/115905-programming-structuring-code). - -## Details ## - -## ## -**UsingMATLABwithPython.mlx** [Open in MATLAB Online](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Programming-A-Starter-Project-Using-MATLAB-and-Python&project=MATLABwithPython.prj&file=UsingMATLABwithPython.mlx) -This script introduces the Run Python Code Live Task, as well as walking through checking that an appropriate version -of Python is installed and visible to MATLAB. - - - -**Learning Goals:** -In this script, students will... -- check that an appropriate version of Python is installed and visible within MATLAB. -- download and install the Run Python Code Live Task. -- try running Python commands and a Python script from MATLAB. - -## ## -**CheckingTheWeather.mlx** [Open in MATLAB Online](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Programming-A-Starter-Project-Using-MATLAB-and-Python&project=MATLABwithPython.prj&file=CheckingTheWeather.mlx) -This script introduces the OpenWeather API, walking through setting up an account to get an API key, using an existing python script to access the API, and then investigation of the data that is returned. - - - -**Learning Goals:** -In this script, students will... -- set up an account with OpenWeather to create your own API key. -- use checkweather.py to make an API call to OpenWeather. -- use MATLAB to explore the data returned by checkweather.py, including data type conversions, -unit conversions, and data visualization options. - -## ## -**SampleWeatherDashboard.mlx** [Open in MATLAB Online](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Programming-A-Starter-Project-Using-MATLAB-and-Python&project=MATLABwithPython.prj&file=SampleWeatherDashboard.mlx) -This script presents an example of a cleaned-up final product from following the directions in `CheckingTheWeather.mlx`. It uses a live script with Code Hidden to offer a pleasant user experience. - - - -**Learning Goals:** -In this script, students will -- use hidden code interactions in live scripts to design a streamlined user experience. - -## Products ## -MATLAB®, Symbolic Math Toolbox™ - -## License ## -The license for this module is available in the [License.md](LICENSE.md) file in this GitHub repository. - -## Support ## -Have any questions or feedback? Are you an instructor who would like solutions? Contact the MathWorks online teaching team. - -# # -_Copyright 2022 The MathWorks, Inc._ + +# Programming: A Starter Project Using MATLAB with Python + +Learn how to call Python code, convert data types and units, and use App Designer to build an app to display your results. + +[![View on File Exchange](https://www.mathworks.com/matlabcentral/images/matlab-file-exchange.svg)](https://www.mathworks.com/matlabcentral/fileexchange/116490-programming-a-starter-project-using-matlab-and-python) or [![Open in MATLAB Online](https://www.mathworks.com/images/responsive/global/open-in-matlab-online.svg)](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Programming-A-Starter-Project-Using-MATLAB-and-Python&project=MATLABwithPython.prj&file=README.mlx) + +[![MATLAB Versions Tested](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2FMathWorks-Teaching-Resources%2FProgramming-A-Starter-Project-Using-MATLAB-and-Python%2Frelease%2FImages%2FTestedWith.json)](https://MathWorks-Teaching-Resources.github.io/Programming-A-Starter-Project-Using-MATLAB-and-Python) + +**Curriculum Module** + +_Created with R2024a. Compatible with R2024a and later releases._ + +# Information + +This curriculum module contains interactive [MATLAB® live scripts](https://www.mathworks.com/products/matlab/live-editor.html) that teach fundamental concepts and basic terminology related to programming computers. + +# Prerequisite Domain Knowledge + +This module assumes familiarity with basic programming concepts such as variables, data types, and functions, structures including arrays and structs, and control flows including if/else as well as how to use them in MATLAB. These ideas are all presented with interactive examples in [Fundamentals of Programming](https://www.mathworks.com/matlabcentral/fileexchange/103225-fundamentals-of-programming), [Programming: Organizing Data](https://www.mathworks.com/matlabcentral/fileexchange/115900-programming-organizing-data), [Programming: Structuring Code](https://www.mathworks.com/matlabcentral/fileexchange/115905-programming-structuring-code). + + +## Background + +You can use these live scripts as demonstrations in lectures, class activities, or interactive assignments outside class. This module explores interactions between systems by using the OpenWeather API and calling into Python from MATLAB. **Programming: A Starter Project Using MATLAB with Python** covers using the Run Python Code Live Task to run provided Python code, accessing the OpenWeather API to check the weather, extracting useful data from the API call, and using App Designer to create an app with a personalized weather display. + + +The instructions inside the live scripts will guide you through the exercises and activities. Get started with each live script by running it one section at a time. To stop running the script or a section midway (for example, when an animation is in progress), use the EndIcon.png Stop button in the **RUN** section of the **Live Editor** tab in the MATLAB Toolstrip. + +## Contact Us + +Contact the [MathWorks Educator Content Development Team](mailto:onlineteaching@mathworks.com) if you would like to request assistance, provide feedback, or if you have a question. + + +## Prerequisites + +This module assumes familiarity with basic programming concepts such as variables, data types, and functions, structures including arrays and structs, and control flows including if/else as well as how to use them in MATLAB. These ideas are all presented with interactive examples in [Fundamentals of Programming](https://github.com/MathWorks-Teaching-Resources/Fundamentals-of-Programming), [Programming: Organizing Data](https://github.com/MathWorks-Teaching-Resources/Programming-Organizing-Data), [Programming: Structuring Code](https://github.com/MathWorks-Teaching-Resources/Programming-Structuring-Code). + + +## Getting Started +### Accessing the Module +### **On MATLAB Online:** + +Use the [OpenInMO.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Programming-A-Starter-Project-Using-MATLAB-and-Python&project=MATLABwithPython.prj) link to download the module. You will be prompted to log in or create a MathWorks account. The project will be loaded, and you will see an app with several navigation options to get you started. + +### **On Desktop:** + +Download or clone this repository. Open MATLAB, navigate to the folder containing these scripts and double\-click on [MATLABwithPython.prj](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Programming-A-Starter-Project-Using-MATLAB-and-Python&project=MATLABwithPython.prj&file=README.mlx). It will add the appropriate files to your MATLAB path and open an app that asks you where you would like to start. + + +Ensure you have all the required products (listed below) installed. If you need to include a product, add it using the Add\-On Explorer. To install an add\-on, go to the **Home** tab and select AddOnsIcon.png **Add-Ons** > **Get Add-Ons**. + + +## Products + +MATLAB® is used throughout. Tools from the Symbolic Math Toolbox™ are used to convert between different unit systems in the weather applications. + +# Scripts +## [**UsingMATLABwithPython.mlx**](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Programming-A-Starter-Project-Using-MATLAB-and-Python&project=MATLABwithPython.prj&file=Scripts/UsingMATLABwithPython.mlx) +| | | +| :-- | :-- | +| **Introductory script**
| **In this script, students will...**
| +| RunPythonLiveTask.png
| $\bullet$ check that an appropriate version of Python is installed and visible within MATLAB
$\bullet$ explore the Run Python Code Live Task
$\bullet$ try running Python commands and a Python script from MATLAB
| +| | | + +## [**CheckingTheWeather.mlx**](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Programming-A-Starter-Project-Using-MATLAB-and-Python&project=MATLABwithPython.prj&file=Scripts/CheckingTheWeather.mlx) +| | | +| :-- | :-- | +| **Investigatory script**
| **In this script, students will...**
| +| WeatherStruct.png
| $\bullet$ set up an account with OpenWeather to create your own API key
$\bullet$ use existing Python code to make an API call to OpenWeather
$\bullet$ use MATLAB to explore the data returned by the API call, including data type conversions and unit conversions
| +| | | + +## [**CreateCurrentWeatherApp.mlx**](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Programming-A-Starter-Project-Using-MATLAB-and-Python&project=MATLABwithPython.prj&file=Scripts/CreateCurrentWeatherApp.mlx) +| | | +| :-- | :-- | +| **Application script**
| **In this script, students will...**
| +| WeatherDashboard.png
| $\bullet$ use App Designer to build a custom app using the code from CheckingTheWeather.mlx
$\bullet$ create callbacks, properties, and functions
$\bullet$ design and organize a UI with drag and drop elements
$\bullet$ reuse code from CheckingTheWeather in a new context
| +| | | + +# Apps + +Both of these apps require running Python from MATLAB, as set up in UsingMATLABwithPython and an OpenWeather API key, as set up in CheckingTheWeather. + +- **CurrentWeatherAppDemo.mlapp** shows the results of working through CreateCurrentWeatherApp. +- **WeatherDisplay.mlapp** shows one elaborated version of the basic current weather app. + +# License + +The license for this module is available in the [LICENSE.md](https://github.com/MathWorks-Teaching-Resources/Programming-A-Starter-Project-Using-MATLAB-and-Python/blob/release/LICENSE.md). + +# Related Courseware Modules +| | | | +| :-- | :-- | :-- | +| **Courseware Module**
| **Sample Content**
| **Available on:**
| +| [**Fundamentals of Programming**](https://www.mathworks.com/matlabcentral/fileexchange/103225-fundamentals-of-programming)
Learn the basics of how to make a computer
accept, store, and compute with information
| MouseThoughtBubble.png
| [OpenInFX.png](https://www.mathworks.com/matlabcentral/fileexchange/103225-fundamentals-of-programming)
[OpenInMO.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj)
[GitHub](https://github.com/MathWorks-Teaching-Resources/Fundamentals-of-Programming)
| +| [**Programming: Structuring Code**](https://www.mathworks.com/matlabcentral/fileexchange/115905-programming-structuring-code)
Learn how to organize your code into functions,
debug, comment, and share
| RGBTurkeys.png
| [OpenInFX.png](https://www.mathworks.com/matlabcentral/fileexchange/115905-programming-structuring-code)
[OpenInMO.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Programming-Structuring-Code&project=StructuringCode.prj)
[GitHub](https://github.com/MathWorks-Teaching-Resources/Programming-Structuring-Code)
| +| [**Programming: Organizing Data**](https://www.mathworks.com/matlabcentral/fileexchange/115900-programming-organizing-data)
Learn more about strings, numeric data types,
memory, and ways of storing data
| SeaSurfaceTemps.png
| [OpenInFX.png](https://www.mathworks.com/matlabcentral/fileexchange/115900-programming-organizing-data)
[OpenInMO.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Programming-Organizing-Data&project=OrganizingData.prj)
[GitHub](https://github.com/MathWorks-Teaching-Resources/Programming-Organizing-Data)
| +| | | | + + +Or feel free to explore our other [modular courseware content](https://www.mathworks.com/matlabcentral/fileexchange/?q=author%3A%22MathWorks+Educator+Content+Development+Team%22&sort=relevancy). + +# Educator Resources +- [Educator Page](https://www.mathworks.com/academia/educators.html) + +# Contribute + +Looking for more? Find an issue? Have a suggestion? Please contact the [MathWorks Educator Content Development team](mailto:%20onlineteaching@mathworks.com). If you want to contribute directly to this project, you can find information about how to do so in the [CONTRIBUTING.md](https://github.com/MathWorks-Teaching-Resources/Programming-A-Starter-Project-Using-MATLAB-and-Python/blob/release/CONTRIBUTING.md) page on GitHub. + +# Acknowledgments + +Many thanks to Blake Naccarato on his suggestions for improvement. + + +*©* Copyright 2025 The MathWorks, Inc + + diff --git a/README.mlx b/README.mlx new file mode 100644 index 0000000..63575f7 Binary files /dev/null and b/README.mlx differ diff --git a/SampleWeatherDashboard.mlx b/SampleWeatherDashboard.mlx deleted file mode 100644 index eed2f4c..0000000 Binary files a/SampleWeatherDashboard.mlx and /dev/null differ diff --git a/Scripts/CheckingTheWeather.mlx b/Scripts/CheckingTheWeather.mlx new file mode 100644 index 0000000..f6e122f Binary files /dev/null and b/Scripts/CheckingTheWeather.mlx differ diff --git a/Scripts/CreateCurrentWeatherApp.mlx b/Scripts/CreateCurrentWeatherApp.mlx new file mode 100644 index 0000000..8411010 Binary files /dev/null and b/Scripts/CreateCurrentWeatherApp.mlx differ diff --git a/Scripts/UsingMATLABwithPython.mlx b/Scripts/UsingMATLABwithPython.mlx new file mode 100644 index 0000000..9a5db69 Binary files /dev/null and b/Scripts/UsingMATLABwithPython.mlx differ diff --git a/checkweather.py b/Scripts/checkcurrentweather.py similarity index 54% rename from checkweather.py rename to Scripts/checkcurrentweather.py index 015622d..d846b07 100644 --- a/checkweather.py +++ b/Scripts/checkcurrentweather.py @@ -15,18 +15,21 @@ https://creativecommons.org/licenses/by-sa/4.0/ ''' -# checkweather.py +# checkcurrentweather.py import datetime import json import urllib.request -BASE_URL = 'http://api.openweathermap.org/data/2.5/onecall?lat={}&lon={}&exclude=minutely,daily,alerts&units={}&appid={}' +BASE_URL = 'http://api.openweathermap.org/data/2.5/weather?lat={}&lon={}&units={}&appid={}' def get_weather(lat,lon,apikey,**kwargs): '''get current conditions in specified location, e.g., lat = 42.2775 N, lon = 71.3468 W is Natick, MA, US get_current_weather('42.2775','-71.3468',key,units='metric')''' - + + # Initialize json_data + json_data = {'Feedback': 'nothing'} + # Set a default of imperial units info = {'units':'imperial'} for key, value in kwargs.items(): @@ -45,60 +48,35 @@ def get_weather(lat,lon,apikey,**kwargs): def parse_current_json(json_data): '''parse and extract json data from the current weather data''' + # Initialize weather_info + weather_info = {'Feedback': 'nothing'} + try: # select data of interest from dictionary - weather_info = json_data["current"] + weather_info = json_data['main'] # add current date and time - weather_info['current_time'] = str(datetime.datetime.now()) + weather_info['local_time'] = str(datetime.datetime.now()) + weather_info['current_time'] = json_data['dt'] # make sure values are returned as floats weather_info['temp'] = float(weather_info['temp']) weather_info['feels_like'] = float(weather_info['feels_like']) weather_info['pressure'] = float(weather_info['pressure']) weather_info['humidity'] = float(weather_info['humidity']) - weather_info['wind_speed'] = float(weather_info['wind_speed']) - weather_info['wind_deg'] = float(weather_info['wind_deg']) - weather_info['uvi'] = float(weather_info['uvi']) - weather_info['clouds'] = float(weather_info['clouds']) + weather_info['wind_speed'] = float(json_data['wind']['speed']) + weather_info['wind_deg'] = float(json_data['wind']['deg']) + weather_info['clouds'] = float(json_data['clouds']['all']) + # Seconds shifted from UTC for location weather_info['timezone'] = json_data['timezone'] + # UTC Unix time + weather_info['sunrise'] = json_data['sys']['sunrise'] + weather_info['sunset'] = json_data['sys']['sunset'] + # String + weather_info['city_name'] = json_data['name'] + # Weather description as list + weather_info['weather'] = json_data['weather'] except KeyError as e: print('Something went wrong while parsing current json') raise e - return weather_info - - -def parse_forecast(json_data): - '''parse and extract json data from the forecast weather data''' - - import array - - try: - timezone = json_data['timezone'] - data = json_data['hourly'] - # create arrays - temp = [] - pressure = [] - humidity = [] - speed = [] - deg = [] - date = [] - - # loop over all and add to arrays - for i in range(48): - x1 = data[i] - temp.append(x1['temp']) - pressure.append(x1['pressure']) - humidity.append(x1['humidity']) - speed.append(x1['wind_speed']) - deg.append(x1['wind_deg']) - date.append(x1['dt']) - - # create dictionary - weather_info = dict(current_time=date,temp=temp,deg=deg, - speed=speed,humidity=humidity,pressure=pressure,timezone=timezone) - except KeyError as e: - print('Something went wrong with parsing the forecast json.') - raise e - - return weather_info + return weather_info \ No newline at end of file diff --git a/SoftwareTests/CheckTestResults.m b/SoftwareTests/CheckTestResults.m new file mode 100644 index 0000000..579ad43 --- /dev/null +++ b/SoftwareTests/CheckTestResults.m @@ -0,0 +1,49 @@ +classdef CheckTestResults < matlab.unittest.TestCase + + properties (SetAccess = protected) + end + + properties (ClassSetupParameter) + Project = {currentProject()}; + end + + properties (TestParameter) + Version + end + + + methods (TestParameterDefinition,Static) + + function Version = GetResults(Project) + RootFolder = Project.RootFolder; + Version = dir(fullfile(RootFolder,"public","TestResults*.txt")); + Version = extractBetween([Version.name],"TestResults_",".txt"); + end + + end + + methods (TestClassSetup) + + function SetUpSmokeTest(testCase,Project) + try + currentProject; + catch + error("Project is not loaded.") + end + end + + end + + methods(Test) + + function CheckResults(testCase,Version) + File = fullfile("public","TestResults_"+Version+".txt"); + Results = readtable(File,TextType="string"); + if ~all(Results.Passed) + error("Some of the tests did not pass.") + end + end + + end + +end \ No newline at end of file diff --git a/SoftwareTests/CreateBadge.m b/SoftwareTests/CreateBadge.m new file mode 100644 index 0000000..c873088 --- /dev/null +++ b/SoftwareTests/CreateBadge.m @@ -0,0 +1,28 @@ +% Create the test suite with SmokeTest and Function test if they exist +Suite = testsuite("CheckTestResults"); + +% Create a runner with no plugins +Runner = matlab.unittest.TestRunner.withNoPlugins; + +% Run the test suite +Results = Runner.run(Suite); + +% Format the results in a table and save them +Results = table(Results'); +Results = Results(Results.Passed,:); +Version = extractBetween(string(Results.Name),"Version=",")"); + + +% Format the JSON file +Badge = struct; +Badge.schemaVersion = 1; +Badge.label = "Tested with"; +if size(Results,1) >= 1 + Badge.color = "success" + Badge.message = join(Version," | "); +else + Badge.color = "failure"; + Badge.message = "Pipeline fails"; +end +Badge = jsonencode(Badge); +writelines(Badge,fullfile("Images","TestedWith.json")); \ No newline at end of file diff --git a/SoftwareTests/FunctionTests.m b/SoftwareTests/FunctionTests.m new file mode 100644 index 0000000..c490eb2 --- /dev/null +++ b/SoftwareTests/FunctionTests.m @@ -0,0 +1,14 @@ +classdef FunctionTests < matlab.unittest.TestCase + + % https://www.mathworks.com/help/matlab/matlab_prog/use-parameters-in-class-based-tests.html + + methods(Test) + + function IsKnownPythonVersion(testCase) + Known = CheckPythonVersion; + verifyTrue(testCase,Known) + end + + end % methods + +end % classdef \ No newline at end of file diff --git a/SoftwareTests/OrigSmokeTests.m b/SoftwareTests/OrigSmokeTests.m new file mode 100644 index 0000000..e9a1427 --- /dev/null +++ b/SoftwareTests/OrigSmokeTests.m @@ -0,0 +1,149 @@ +classdef SmokeTests < matlab.unittest.TestCase + + properties (ClassSetupParameter) + Project = {''}; + end + + properties (TestParameter) + Scripts; + end + + methods (TestParameterDefinition,Static) + + function Scripts = GetScriptName(Project) + RootFolder = currentProject().RootFolder; + Scripts = dir(fullfile(RootFolder,"Scripts","*.mlx")); + Scripts = {Scripts.name}; + end + + end + + methods (TestClassSetup) + + function SetUpSmokeTest(testCase,Project) + try + currentProject; + catch ME + warning("Project is not loaded.") + end + end + + + end + + + + methods(Test) + + function SmokeRun(testCase,Scripts) + Filename = string(Scripts); + switch (Filename) + case "CreateCurrentWeatherApp.mlx" + disp("Skipping " + Filename) + case "CheckingTheWeather.mlx" + txt = readlines("Response.json"); + pycode = ["import checkcurrentweather" + "import json" + "" + "json_data = json.loads(txt)" + "currentWeather = checkcurrentweather.parse_current_json(json_data)" + ]; + APISmokeTest(testCase,Filename,pycode,txt) + case "WeatherForecast.mlx" + % txt = readlines("ResponseOneCall.json"); + % pycode = ["import checkweather" + % "" + % "json_data = json.loads(txt)" + % "currentWeather = checkweather.parse_current_json(json_data)" + % "forecastWeather = checkweather.parse_forecast_json(json_data)" + % ]; + % APISmokeTest(testCase,Filename,pycode,txt) + case "SampleWeatherDashboard.mlx" + + otherwise + SimpleSmokeTest(testCase,Filename) + end + end + + end + + + methods (Access = private) + + function APISmokeTest(testCase,Filename,pycode,txt) + RootFolder = currentProject().RootFolder; + cd(RootFolder) + cd Scripts + if Filename == "CheckingTheWeather.mlx" + [currentWeather] = pyrun(pycode, "currentWeather","txt",txt); + elseif Filename == "WeatherForecast.mlx" + [currentWeather,forecastWeather] = pyrun(pycode,["currentWeather","forecastWeather"],"txt",txt); + end + + disp(">> Running " + Filename); + try + run(fullfile(Filename)); + catch ME + testCase.verifyTrue(false,ME.message); + end + + try + % Log the opened figures to the test reports + Figures = findall(groot,'Type','figure'); + Figures = flipud(Figures); + if ~isempty(Figures) + for f = 1:size(Figures,1) + FigDiag = matlab.unittest.diagnostics.FigureDiagnostic(Figures(f)); + log(testCase,1,FigDiag); + end + end + catch ME + disp("Failed to capture images") + end + close all + end + + function RunMyFile(~,Filename) + run(Filename); + end + + function SimpleSmokeTest(testCase,Filename) + + % Run the Smoke test + RootFolder = currentProject().RootFolder; + cd(RootFolder) + disp(">> Running " + Filename); + try + RunMyFile(testCase,Filename) + catch ME + testCase.verifyTrue(false,ME.message); + end + + % Log the opened figures to the test reports + try + Figures = findall(groot,'Type','figure'); + Figures = flipud(Figures); + if ~isempty(Figures) + for f = 1:size(Figures,1) + FigDiag = matlab.unittest.diagnostics.FigureDiagnostic(Figures(f)); + log(testCase,1,FigDiag); + end + end + catch ME + disp("Failed to capture figures") + end + close all + + end + + end + + methods (TestClassTeardown) + + function closeAllFigure(testCase) + close all force % Close figure windows + end + + end % methods (TestClassTeardown) + +end \ No newline at end of file diff --git a/SoftwareTests/PostFiles/PostCheckingTheWeather.m b/SoftwareTests/PostFiles/PostCheckingTheWeather.m new file mode 100644 index 0000000..5e1183b --- /dev/null +++ b/SoftwareTests/PostFiles/PostCheckingTheWeather.m @@ -0,0 +1,3 @@ +% Post-run script for CheckingTheWeather.mlx +% ---- Post-run commands ----- + diff --git a/SoftwareTests/PostFiles/PostCheckingTheWeatherSoln.m b/SoftwareTests/PostFiles/PostCheckingTheWeatherSoln.m new file mode 100644 index 0000000..3bca581 --- /dev/null +++ b/SoftwareTests/PostFiles/PostCheckingTheWeatherSoln.m @@ -0,0 +1,7 @@ +% Post-run script for CheckingTheWeatherSoln.mlx +% ---- Post-run commands ----- + +writelines("",fullfile(currentProject().RootFolder,"Scripts","myAPIkey.txt")) +if exist(fullfile(currentProject().RootFolder,"InstructorResources","Solutions","Response.json"),"file") + delete(fullfile(currentProject().RootFolder,"InstructorResources","Solutions","Response.json")) +end \ No newline at end of file diff --git a/SoftwareTests/PostFiles/PostCreateCurrentWeatherApp.m b/SoftwareTests/PostFiles/PostCreateCurrentWeatherApp.m new file mode 100644 index 0000000..9530d14 --- /dev/null +++ b/SoftwareTests/PostFiles/PostCreateCurrentWeatherApp.m @@ -0,0 +1,3 @@ +% Post-run script for CreateCurrentWeatherApp.mlx +% ---- Post-run commands ----- + diff --git a/SoftwareTests/PostFiles/PostCreateCurrentWeatherAppSoln.m b/SoftwareTests/PostFiles/PostCreateCurrentWeatherAppSoln.m new file mode 100644 index 0000000..197fb02 --- /dev/null +++ b/SoftwareTests/PostFiles/PostCreateCurrentWeatherAppSoln.m @@ -0,0 +1,4 @@ +% Post-run script for CreateCurrentWeatherAppSoln.mlx +% ---- Post-run commands ----- + +delete(findall(groot,'Name','MATLAB App')) \ No newline at end of file diff --git a/SoftwareTests/PostFiles/PostUsingMATLABwithPython.m b/SoftwareTests/PostFiles/PostUsingMATLABwithPython.m new file mode 100644 index 0000000..9416232 --- /dev/null +++ b/SoftwareTests/PostFiles/PostUsingMATLABwithPython.m @@ -0,0 +1,3 @@ +% Post-run script for UsingMATLABwithPython.mlx +% ---- Post-run commands ----- + diff --git a/SoftwareTests/PostFiles/PostUsingMATLABwithPythonSoln.m b/SoftwareTests/PostFiles/PostUsingMATLABwithPythonSoln.m new file mode 100644 index 0000000..e6e41ac --- /dev/null +++ b/SoftwareTests/PostFiles/PostUsingMATLABwithPythonSoln.m @@ -0,0 +1,3 @@ +% Post-run script for UsingMATLABwithPythonSoln.mlx +% ---- Post-run commands ----- + diff --git a/SoftwareTests/PostSmokeTest.m b/SoftwareTests/PostSmokeTest.m new file mode 100644 index 0000000..080cd0b --- /dev/null +++ b/SoftwareTests/PostSmokeTest.m @@ -0,0 +1,66 @@ +function PostSmokeTest(ShowReport) +arguments + ShowReport (1,1) logical = false; +end + +import matlab.unittest.plugins.TestRunnerPlugin; + +% Create the runner: +Runner = matlab.unittest.TestRunner.withTextOutput; + +% Create report folder: +Folder = fullfile(currentProject().RootFolder,"public"); +if ~isfolder(Folder) + mkdir(Folder) +end + +% Add HTML plugin: +Plugin = matlab.unittest.plugins.TestReportPlugin.producingHTML(Folder,... + "IncludingPassingDiagnostics",true,... + "IncludingCommandWindowText",false,... + "LoggingLevel",matlab.automation.Verbosity(1)); +Runner.addPlugin(Plugin); + + +% Create Test Suite +Suite = testsuite("CheckTestResults"); + +% Run the test suite +Results = Runner.run(Suite); + + +% Format the results in a table and save them +Results = table(Results'); +Version = extractBetween(string(Results.Name),"Version=",")"); +Passed = logical(Results.Passed); + +% Add link to other report +File = fileread(fullfile("public","index.html")); +for iVer = 1:length(Version) + File = replace(File,"Version="+Version(iVer),... + sprintf('%s',Version(iVer),"Version="+Version(iVer))); +end +writelines(File,fullfile("public","index.html"),"WriteMode","overwrite"); + +% Format the JSON file +Badge = struct; +Badge.schemaVersion = 1; +Badge.label = "Test Status"; +if all(Passed) + Badge.color = "success"; + Badge.message = join("R"+Version," | "); +elseif any(Passed) + Badge.color = "yellowgreen"; + Badge.message = join("R"+Version(Passed)," | "); +elseif all(~Passed) + Badge.color = "critical"; + Badge.message = join("R"+Version," | "); +end +Badge = jsonencode(Badge); +writelines(Badge,fullfile("Images","TestedWith.json")); + +if ShowReport + web(fullfile(Folder,"index.html")) +end + +end \ No newline at end of file diff --git a/SoftwareTests/PreFiles/PreCheckingTheWeather.m b/SoftwareTests/PreFiles/PreCheckingTheWeather.m new file mode 100644 index 0000000..13788f4 --- /dev/null +++ b/SoftwareTests/PreFiles/PreCheckingTheWeather.m @@ -0,0 +1,17 @@ +% Pre-run script for CheckingTheWeather.mlx +% ---- Known Issues ----- +KnownIssuesID = ""; +% ---- Pre-run commands ----- + +txt = readlines("Response.json"); +curpath = pwd; +mypath = fullfile(currentProject().RootFolder,"Scripts"); +cd(mypath) +pycode = ["import checkcurrentweather" + "import json" + "" + "json_data = json.loads(txt)" + "currentWeather = checkcurrentweather.parse_current_json(json_data)" + ]; +[currentWeather] = pyrun(pycode, "currentWeather","txt",txt); +cd(curpath) \ No newline at end of file diff --git a/SoftwareTests/PreFiles/PreCheckingTheWeatherSoln.m b/SoftwareTests/PreFiles/PreCheckingTheWeatherSoln.m new file mode 100644 index 0000000..fdff0a6 --- /dev/null +++ b/SoftwareTests/PreFiles/PreCheckingTheWeatherSoln.m @@ -0,0 +1,23 @@ +% Pre-run script for CheckingTheWeatherSoln.mlx +% ---- Known Issues ----- +KnownIssuesID = ""; +% ---- Pre-run commands ----- + +try +copyfile(fullfile(currentProject().RootFolder,"InternalFiles","Solutions","myAPIkey.txt"),... + fullfile(currentProject().RootFolder,"Scripts","myAPIkey.txt")) +catch + copyfile("Response.json",fullfile(currentProject().RootFolder,"InstructorResources","Solutions","Response.json")) + pycode = ["import checkcurrentweather" + "import json" + "" + "json_data = json.load(open(""Response.json""))" + "currentWeather = checkcurrentweather.parse_current_json(json_data)" + ]; + apikey = "TestString"; + pyrun = @(txt,out,varargin)TestPyRun(pycode,out,varargin); +end + +function out = TestPyRun(txt,in,varargin) +out = pyrun(txt,in); +end diff --git a/SoftwareTests/PreFiles/PreCreateCurrentWeatherApp.m b/SoftwareTests/PreFiles/PreCreateCurrentWeatherApp.m new file mode 100644 index 0000000..ca7aa9b --- /dev/null +++ b/SoftwareTests/PreFiles/PreCreateCurrentWeatherApp.m @@ -0,0 +1,6 @@ +% Pre-run script for CreateCurrentWeatherApp.mlx +% ---- Known Issues ----- +KnownIssuesID = ""; +% ---- Pre-run commands ----- + +appdesigner = @()disp("Open App Designer here."); \ No newline at end of file diff --git a/SoftwareTests/PreFiles/PreCreateCurrentWeatherAppSoln.m b/SoftwareTests/PreFiles/PreCreateCurrentWeatherAppSoln.m new file mode 100644 index 0000000..ece9e8e --- /dev/null +++ b/SoftwareTests/PreFiles/PreCreateCurrentWeatherAppSoln.m @@ -0,0 +1,7 @@ +% Pre-run script for CreateCurrentWeatherAppSoln.mlx +% ---- Known Issues ----- +KnownIssuesID = ""; +% ---- Pre-run commands ----- + +open = @(x)run(x); + diff --git a/SoftwareTests/PreFiles/PreUsingMATLABwithPython.m b/SoftwareTests/PreFiles/PreUsingMATLABwithPython.m new file mode 100644 index 0000000..7a4b22b --- /dev/null +++ b/SoftwareTests/PreFiles/PreUsingMATLABwithPython.m @@ -0,0 +1,5 @@ +% Pre-run script for UsingMATLABwithPython.mlx +% ---- Known Issues ----- +KnownIssuesID = ""; +% ---- Pre-run commands ----- + diff --git a/SoftwareTests/PreFiles/PreUsingMATLABwithPythonSoln.m b/SoftwareTests/PreFiles/PreUsingMATLABwithPythonSoln.m new file mode 100644 index 0000000..d8e1896 --- /dev/null +++ b/SoftwareTests/PreFiles/PreUsingMATLABwithPythonSoln.m @@ -0,0 +1,5 @@ +% Pre-run script for UsingMATLABwithPythonSoln.mlx +% ---- Known Issues ----- +KnownIssuesID = ""; +% ---- Pre-run commands ----- + diff --git a/SoftwareTests/PreFiles/Response.json b/SoftwareTests/PreFiles/Response.json new file mode 100644 index 0000000..d8135a4 --- /dev/null +++ b/SoftwareTests/PreFiles/Response.json @@ -0,0 +1 @@ +{"coord":{"lon":-71.3468,"lat":42.2775},"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04n"}],"base":"stations","main":{"temp":274.86,"feels_like":270.03,"temp_min":273.44,"temp_max":276.25,"pressure":1003,"humidity":76},"visibility":10000,"wind":{"speed":5.66,"deg":280,"gust":10.8},"clouds":{"all":75},"dt":1710986897,"sys":{"type":2,"id":2005486,"country":"US","sunrise":1710931672,"sunset":1710975450},"timezone":-14400,"id":4944994,"name":"Natick","cod":200} \ No newline at end of file diff --git a/SoftwareTests/PreFiles/ResponseOneCall.json b/SoftwareTests/PreFiles/ResponseOneCall.json new file mode 100644 index 0000000..676ca0b --- /dev/null +++ b/SoftwareTests/PreFiles/ResponseOneCall.json @@ -0,0 +1,114 @@ +{ + "lat":33.44, + "lon":-94.04, + "timezone":"America/Chicago", + "timezone_offset":-18000, + "current":{ + "dt":1684929490, + "sunrise":1684926645, + "sunset":1684977332, + "temp":292.55, + "feels_like":292.87, + "pressure":1014, + "humidity":89, + "dew_point":290.69, + "uvi":0.16, + "clouds":53, + "visibility":10000, + "wind_speed":3.13, + "wind_deg":93, + "wind_gust":6.71, + "weather":[ + { + "id":803, + "main":"Clouds", + "description":"broken clouds", + "icon":"04d" + } + ] + }, + "minutely":[ + { + "dt":1684929540, + "precipitation":0 + } + ], + "hourly":[ + { + "dt":1684926000, + "temp":292.01, + "feels_like":292.33, + "pressure":1014, + "humidity":91, + "dew_point":290.51, + "uvi":0, + "clouds":54, + "visibility":10000, + "wind_speed":2.58, + "wind_deg":86, + "wind_gust":5.88, + "weather":[ + { + "id":803, + "main":"Clouds", + "description":"broken clouds", + "icon":"04n" + } + ], + "pop":0.15 + } + ], + "daily":[ + { + "dt":1684951200, + "sunrise":1684926645, + "sunset":1684977332, + "moonrise":1684941060, + "moonset":1684905480, + "moon_phase":0.16, + "summary":"Expect a day of partly cloudy with rain", + "temp":{ + "day":299.03, + "min":290.69, + "max":300.35, + "night":291.45, + "eve":297.51, + "morn":292.55 + }, + "feels_like":{ + "day":299.21, + "night":291.37, + "eve":297.86, + "morn":292.87 + }, + "pressure":1016, + "humidity":59, + "dew_point":290.48, + "wind_speed":3.98, + "wind_deg":76, + "wind_gust":8.92, + "weather":[ + { + "id":500, + "main":"Rain", + "description":"light rain", + "icon":"10d" + } + ], + "clouds":92, + "pop":0.47, + "rain":0.15, + "uvi":9.23 + } + ], + "alerts": [ + { + "sender_name": "NWS Philadelphia - Mount Holly (New Jersey, Delaware, Southeastern Pennsylvania)", + "event": "Small Craft Advisory", + "start": 1684952747, + "end": 1684988747, + "description": "...SMALL CRAFT ADVISORY REMAINS IN EFFECT FROM 5 PM THIS\nAFTERNOON TO 3 AM EST FRIDAY...\n* WHAT...North winds 15 to 20 kt with gusts up to 25 kt and seas\n3 to 5 ft expected.\n* WHERE...Coastal waters from Little Egg Inlet to Great Egg\nInlet NJ out 20 nm, Coastal waters from Great Egg Inlet to\nCape May NJ out 20 nm and Coastal waters from Manasquan Inlet\nto Little Egg Inlet NJ out 20 nm.\n* WHEN...From 5 PM this afternoon to 3 AM EST Friday.\n* IMPACTS...Conditions will be hazardous to small craft.", + "tags": [] + } + ] +} \ No newline at end of file diff --git a/SoftwareTests/Response.json b/SoftwareTests/Response.json new file mode 100644 index 0000000..d8135a4 --- /dev/null +++ b/SoftwareTests/Response.json @@ -0,0 +1 @@ +{"coord":{"lon":-71.3468,"lat":42.2775},"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04n"}],"base":"stations","main":{"temp":274.86,"feels_like":270.03,"temp_min":273.44,"temp_max":276.25,"pressure":1003,"humidity":76},"visibility":10000,"wind":{"speed":5.66,"deg":280,"gust":10.8},"clouds":{"all":75},"dt":1710986897,"sys":{"type":2,"id":2005486,"country":"US","sunrise":1710931672,"sunset":1710975450},"timezone":-14400,"id":4944994,"name":"Natick","cod":200} \ No newline at end of file diff --git a/SoftwareTests/ResponseOneCall.json b/SoftwareTests/ResponseOneCall.json new file mode 100644 index 0000000..85242b8 --- /dev/null +++ b/SoftwareTests/ResponseOneCall.json @@ -0,0 +1,119 @@ + +{ + "lat":33.44, + "lon":-94.04, + "timezone":"America/Chicago", + "timezone_offset":-18000, + "current":{ + "dt":1684929490, + "sunrise":1684926645, + "sunset":1684977332, + "temp":292.55, + "feels_like":292.87, + "pressure":1014, + "humidity":89, + "dew_point":290.69, + "uvi":0.16, + "clouds":53, + "visibility":10000, + "wind_speed":3.13, + "wind_deg":93, + "wind_gust":6.71, + "weather":[ + { + "id":803, + "main":"Clouds", + "description":"broken clouds", + "icon":"04d" + } + ] + }, + "minutely":[ + { + "dt":1684929540, + "precipitation":0 + } + ], + "hourly":[ + { + "dt":1684926000, + "temp":292.01, + "feels_like":292.33, + "pressure":1014, + "humidity":91, + "dew_point":290.51, + "uvi":0, + "clouds":54, + "visibility":10000, + "wind_speed":2.58, + "wind_deg":86, + "wind_gust":5.88, + "weather":[ + { + "id":803, + "main":"Clouds", + "description":"broken clouds", + "icon":"04n" + } + ], + "pop":0.15 + } + ], + "daily":[ + { + "dt":1684951200, + "sunrise":1684926645, + "sunset":1684977332, + "moonrise":1684941060, + "moonset":1684905480, + "moon_phase":0.16, + "summary":"Expect a day of partly cloudy with rain", + "temp":{ + "day":299.03, + "min":290.69, + "max":300.35, + "night":291.45, + "eve":297.51, + "morn":292.55 + }, + "feels_like":{ + "day":299.21, + "night":291.37, + "eve":297.86, + "morn":292.87 + }, + "pressure":1016, + "humidity":59, + "dew_point":290.48, + "wind_speed":3.98, + "wind_deg":76, + "wind_gust":8.92, + "weather":[ + { + "id":500, + "main":"Rain", + "description":"light rain", + "icon":"10d" + } + ], + "clouds":92, + "pop":0.47, + "rain":0.15, + "uvi":9.23 + } + ], + "alerts": [ + { + "sender_name": "NWS Philadelphia - Mount Holly (New Jersey, Delaware, Southeastern Pennsylvania)", + "event": "Small Craft Advisory", + "start": 1684952747, + "end": 1684988747, + "description": "...SMALL CRAFT ADVISORY REMAINS IN EFFECT FROM 5 PM THIS\nAFTERNOON TO 3 AM EST FRIDAY...\n* WHAT...North winds 15 to 20 kt with gusts up to 25 kt and seas\n3 to 5 ft expected.\n* WHERE...Coastal waters from Little Egg Inlet to Great Egg\nInlet NJ out 20 nm, Coastal waters from Great Egg Inlet to\nCape May NJ out 20 nm and Coastal waters from Manasquan Inlet\nto Little Egg Inlet NJ out 20 nm.\n* WHEN...From 5 PM this afternoon to 3 AM EST Friday.\n* IMPACTS...Conditions will be hazardous to small craft.", + "tags": [ + + ] + } + ] + } + + \ No newline at end of file diff --git a/SoftwareTests/ResponseOneCallOneLine.json b/SoftwareTests/ResponseOneCallOneLine.json new file mode 100644 index 0000000..63c5ef7 --- /dev/null +++ b/SoftwareTests/ResponseOneCallOneLine.json @@ -0,0 +1 @@ +{"lat":33.44,"lon":-94.04,"timezone":"America/Chicago","timezone_offset":-18000,"current":{"dt":1684929490,"sunrise":1684926645,"sunset":1684977332,"temp":292.55,"feels_like":292.87,"pressure":1014,"humidity":89,"dew_point":290.69,"uvi":0.16,"clouds":53,"visibility":10000,"wind_speed":3.13,"wind_deg":93,"wind_gust":6.71,"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04d"}]},"minutely":[{"dt":1684929540,"precipitation":0}],"hourly":[{"dt":1684926000,"temp":292.01,"feels_like":292.33,"pressure":1014,"humidity":91,"dew_point":290.51,"uvi":0,"clouds":54,"visibility":10000,"wind_speed":2.58,"wind_deg":86,"wind_gust":5.88,"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04n"}],"pop":0.15}],"daily":[{"dt":1684951200,"sunrise":1684926645,"sunset":1684977332,"moonrise":1684941060,"moonset":1684905480,"moon_phase":0.16,"summary":"Expect a day of partly cloudy with rain","temp":{"day":299.03,"min":290.69,"max":300.35,"night":291.45,"eve":297.51,"morn":292.55},"feels_like":{"day":299.21,"night":291.37,"eve":297.86,"morn":292.87},"pressure":1016,"humidity":59,"dew_point":290.48,"wind_speed":3.98,"wind_deg":76,"wind_gust":8.92,"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"clouds":92,"pop":0.47,"rain":0.15,"uvi":9.23} ],"alerts": [{"sender_name": "NWS Philadelphia - Mount Holly (New Jersey, Delaware, Southeastern Pennsylvania)","event": "Small Craft Advisory","start": 1684952747,"end": 1684988747,"description": "...SMALL CRAFT ADVISORY REMAINS IN EFFECT FROM 5 PM THIS\nAFTERNOON TO 3 AM EST FRIDAY...\n* WHAT...North winds 15 to 20 kt with gusts up to 25 kt and seas\n3 to 5 ft expected.\n* WHERE...Coastal waters from Little Egg Inlet to Great Egg\nInlet NJ out 20 nm, Coastal waters from Great Egg Inlet to\nCape May NJ out 20 nm and Coastal waters from Manasquan Inlet\nto Little Egg Inlet NJ out 20 nm.\n* WHEN...From 5 PM this afternoon to 3 AM EST Friday.\n* IMPACTS...Conditions will be hazardous to small craft.","tags": [ ]}] } \ No newline at end of file diff --git a/SoftwareTests/RunAllTests.m b/SoftwareTests/RunAllTests.m new file mode 100644 index 0000000..046a893 --- /dev/null +++ b/SoftwareTests/RunAllTests.m @@ -0,0 +1,44 @@ +function RunAllTests(ShowReport) +arguments + ShowReport (1,1) logical = false; +end + +import matlab.unittest.plugins.TestReportPlugin; + +% Create a runner +Runner = matlab.unittest.TestRunner.withTextOutput; +Folder = fullfile(currentProject().RootFolder,"public",version("-release")); +if ~isfolder(Folder) + mkdir(Folder) +else + rmdir(Folder,'s') + mkdir(Folder) +end +Plugin = TestReportPlugin.producingHTML(Folder,... + "IncludingPassingDiagnostics",true,... + "IncludingCommandWindowText",true,... + "LoggingLevel",matlab.automation.Verbosity(1)); +Runner.addPlugin(Plugin); + + +% Create the test suite with SmokeTest and Function test if they exist +Suite = testsuite("SmokeTests"); +Suite = [Suite testsuite("FunctionTests")]; +Suite = [Suite testsuite("SolnSmokeTests")]; + +% Run the test suite +Results = Runner.run(Suite); + +if ShowReport + web(fullfile(Folder,"index.html")) +end + +% Format the results in a table and save them +ResultsTable = table(Results') +writetable(ResultsTable,fullfile(currentProject().RootFolder,... + "public","TestResults_"+version("-release")+".txt")); + +% Assert success of test +assertSuccess(Results); + +end diff --git a/SoftwareTests/SmokeTests.m b/SoftwareTests/SmokeTests.m new file mode 100644 index 0000000..dac5c42 --- /dev/null +++ b/SoftwareTests/SmokeTests.m @@ -0,0 +1,152 @@ +classdef SmokeTests < matlab.unittest.TestCase + + properties + RootFolder + sparedEditors % Files already open when the test starts + end % properties + + properties (ClassSetupParameter) + Project = {currentProject()}; + end % ClassSetupParameter + + properties (TestParameter) + File; + end % TestParameter + + methods (TestParameterDefinition,Static) + + function File = RetrieveFile(Project) %#ok + % Retrieve student template files: + RootFolder = currentProject().RootFolder; + File = dir(fullfile(RootFolder,"Scripts","*.m")); + File = [File; dir(fullfile(RootFolder,"Scripts","*.mlx"))]; + File = {File.name}; + end + + end % Static TestParameterDefinition + + methods (TestClassSetup) + + function SetUpSmokeTest(testCase,Project) %#ok + % Navigate to project root folder: + testCase.RootFolder = Project.RootFolder; + cd(testCase.RootFolder) + + % Close the StartUp app if still open: + delete(findall(groot,'Name','StartUp App')) + + % Log MATLAB version: + testCase.log("Running in " + version) + end + + end % TestClassSetup + + methods(TestMethodSetup) + function recordEditorsToSpare(testCase) + testCase.sparedEditors = matlab.desktop.editor.getAll; + testCase.sparedEditors = {testCase.sparedEditors.Filename}; + end + end % TestMethodSetup + + methods(TestMethodTeardown) + function closeOpenedEditors_thenDeleteWorkingDir(testCase) + openEditors = matlab.desktop.editor.getAll; + for editor=openEditors(1:end) + if any(strcmp(editor.Filename, testCase.sparedEditors)) + continue; + end + % if not on our list, close the file + editor.close(); + end + end + end % TestMethodTeardown + + methods(Test) + + function SmokeRun(testCase,File) + + % Navigate to project root folder: + cd(testCase.RootFolder) + FileToRun = string(File); + + % Pre-test: + PreFiles = CheckPreFile(testCase,FileToRun); + run(PreFiles); + + % Run SmokeTest + disp(">> Running " + FileToRun); + try + run(fullfile("Scripts",FileToRun)); + catch ME + + end + + % Post-test: + PostFiles = CheckPostFile(testCase,FileToRun); + run(PostFiles) + + % Log every figure created during run: + Figures = findall(groot,'Type','figure'); + Figures = flipud(Figures); + if ~isempty(Figures) + for f = 1:size(Figures,1) + if ~isempty(Figures(f).Number) + FigDiag = matlab.unittest.diagnostics.FigureDiagnostic(Figures(f),'Formats','png'); + log(testCase,1,FigDiag); + end + end + end + + % Close all figures and Simulink models + close all force + if any(matlab.addons.installedAddons().Name == "Simulink") + bdclose all + end + + % Rethrow error if any + if exist("ME","var") + if ~any(strcmp(ME.identifier,KnownIssuesID)) + rethrow(ME) + end + end + + end + + end % Test Methods + + + methods (Access = private) + + function Path = CheckPreFile(testCase,Filename) + PreFile = "Pre"+extractBefore(Filename,".m")+".m"; + PreFilePath = fullfile(testCase.RootFolder,"SoftwareTests","PreFiles",PreFile); + if ~isfolder(fullfile(testCase.RootFolder,"SoftwareTests/PreFiles")) + mkdir(fullfile(testCase.RootFolder,"SoftwareTests/PreFiles")) + end + if ~isfile(PreFilePath) + writelines("% Pre-run script for "+Filename,PreFilePath) + writelines("% ---- Known Issues -----",PreFilePath,'WriteMode','append'); + writelines("KnownIssuesID = "+char(34)+char(34)+";",PreFilePath,'WriteMode','append'); + writelines("% ---- Pre-run commands -----",PreFilePath,'WriteMode','append'); + writelines(" ",PreFilePath,'WriteMode','append'); + end + Path = PreFilePath; + end + + function Path = CheckPostFile(testCase,Filename) + PostFile = "Post"+extractBefore(Filename,".m")+".m"; + PostFilePath = fullfile(testCase.RootFolder,"SoftwareTests","PostFiles",PostFile); + if ~isfolder(fullfile(testCase.RootFolder,"SoftwareTests/PostFiles")) + mkdir(fullfile(testCase.RootFolder,"SoftwareTests/PostFiles")) + end + if ~isfile(PostFilePath) + writelines("% Post-run script for "+Filename,PostFilePath) + writelines("% ---- Post-run commands -----",PostFilePath,'WriteMode','append'); + writelines(" ",PostFilePath,'WriteMode','append'); + end + Path = PostFilePath; + end + + end % Private Methods + +end % Smoketests \ No newline at end of file diff --git a/SoftwareTests/SolnSmokeTests.m b/SoftwareTests/SolnSmokeTests.m new file mode 100644 index 0000000..7caeb21 --- /dev/null +++ b/SoftwareTests/SolnSmokeTests.m @@ -0,0 +1,177 @@ +classdef SolnSmokeTests < matlab.unittest.TestCase + + properties + RootFolder + isSolnOnPath + sparedEditors % Track open files + end % properties + + properties (ClassSetupParameter) + Project = {currentProject()}; + end % ClassSetupParameter + + methods(TestMethodSetup) + function recordEditorsToSpare(testCase) + testCase.sparedEditors = matlab.desktop.editor.getAll; + testCase.sparedEditors = {testCase.sparedEditors.Filename}; + end + end % TestMethodSetup + + methods(TestMethodTeardown) + function closeOpenedEditors_thenDeleteWorkingDir(testCase) + openEditors = matlab.desktop.editor.getAll; + for editor=openEditors(1:end) + if any(strcmp(editor.Filename, testCase.sparedEditors)) + continue; + end + % if not on our list, close the file + editor.close(); + end + end + end % TestMethodTeardown + + properties (TestParameter) + File; + end % TestParameter + + methods (TestParameterDefinition,Static) + + function File = GetScriptName(Project) + % Retrieve student template files: + RootFolder = Project.RootFolder; + File = dir(fullfile(RootFolder,"Scripts","*.m")); + File = [File; dir(fullfile(RootFolder,"Scripts","*.mlx"))]; + File = {File.name}; + end + + end % Static TestParameterDefinition + + methods (TestClassSetup) + + function SetUpPath(testCase,Project) + % Navigate to project root folder: + testCase.RootFolder = Project.RootFolder; + cd(testCase.RootFolder) + + % Check that solutions are on path: + testCase.isSolnOnPath = isfolder("Solutions"); + if testCase.isSolnOnPath == 0 + addpath(genpath(fullfile(testCase.RootFolder,"InstructorResources","Solutions"))) + end + + % Close the StartUp app if still open: + delete(findall(groot,'Name','StartUp App')) + + % Log MATLAB version: + testCase.log("Running in " + version) + + end % function setUpPath + + end % methods (TestClassSetup) + + methods(Test) + + % Check that solutions files exist for each of the student + % templates + function ExistSolns(testCase,File) + SolutionName = replace(string(File),".m","Soln.m"); + assert(exist(SolutionName,"file"),"Missing solutions for "+File); + end + + + function SmokeRun(testCase,File) + + % Navigate to project root folder: + cd(testCase.RootFolder) + FileToRun = replace(string(File),".m","Soln.m"); + + % Pre-test: + PreFiles = CheckPreFile(testCase,FileToRun); + run(PreFiles); + + % Run SmokeTest + disp(">> Running " + FileToRun); + try + run(fullfile("InstructorResources","Solutions",FileToRun)); + catch ME + + end + + % Post-test: + PostFiles = CheckPostFile(testCase,FileToRun); + run(PostFiles) + + % Log every figure created during run: + Figures = findall(groot,'Type','figure'); + Figures = flipud(Figures); + if ~isempty(Figures) + for f = 1:size(Figures,1) + if ~isempty(Figures(f).Number) + FigDiag = matlab.unittest.diagnostics.FigureDiagnostic(Figures(f),'Formats','png'); + log(testCase,1,FigDiag); + end + end + end + + % Close all figures and Simulink models + close all force + if any(matlab.addons.installedAddons().Name == "Simulink") + bdclose all + end + + % Rethrow error if any + if exist("ME","var") + if ~any(strcmp(ME.identifier,KnownIssuesID)) + rethrow(ME) + end + end + + end + + end % Test Methods + + methods (Access = private) + + function Path = CheckPreFile(testCase,Filename) + PreFile = "Pre"+extractBefore(Filename,".m")+".m"; + PreFilePath = fullfile(testCase.RootFolder,"SoftwareTests","PreFiles",PreFile); + if ~isfolder(fullfile(testCase.RootFolder,"SoftwareTests/PreFiles")) + mkdir(fullfile(testCase.RootFolder,"SoftwareTests/PreFiles")) + end + if ~isfile(PreFilePath) + writelines("% Pre-run script for "+Filename,PreFilePath) + writelines("% ---- Known Issues -----",PreFilePath,'WriteMode','append'); + writelines("KnownIssuesID = "+char(34)+char(34)+";",PreFilePath,'WriteMode','append'); + writelines("% ---- Pre-run commands -----",PreFilePath,'WriteMode','append'); + writelines(" ",PreFilePath,'WriteMode','append'); + end + Path = PreFilePath; + end + + function Path = CheckPostFile(testCase,Filename) + PostFile = "Post"+extractBefore(Filename,".m")+".m"; + PostFilePath = fullfile(testCase.RootFolder,"SoftwareTests","PostFiles",PostFile); + if ~isfolder(fullfile(testCase.RootFolder,"SoftwareTests/PostFiles")) + mkdir(fullfile(testCase.RootFolder,"SoftwareTests/PostFiles")) + end + if ~isfile(PostFilePath) + writelines("% Post-run script for "+Filename,PostFilePath) + writelines("% ---- Post-run commands -----",PostFilePath,'WriteMode','append'); + writelines(" ",PostFilePath,'WriteMode','append'); + end + Path = PostFilePath; + end + + end % Private Access Methods + + methods (TestClassTeardown) + + function ResetPath(testCase) + if ~testCase.isSolnOnPath && exist("Solutions","dir") + rmpath(genpath(fullfile(currentProject().RootFolder,"InstructorResources","Solutions"))) + end + end + + end % TestClassTeardown + +end % SolnSmokeTests diff --git a/SoftwareTests/TestResults_R2023a.txt b/SoftwareTests/TestResults_R2023a.txt new file mode 100644 index 0000000..5c9f3b0 --- /dev/null +++ b/SoftwareTests/TestResults_R2023a.txt @@ -0,0 +1,6 @@ +Name,Passed,Failed,Incomplete,Duration,Details +SmokeTests[Project=0x0_char]/SmokeRun(Scripts=CheckingTheWeather.mlx),1,0,0,8.2960691, +SmokeTests[Project=0x0_char]/SmokeRun(Scripts=CreateCurrentWeatherApp.mlx),1,0,0,0.0004901, +SmokeTests[Project=0x0_char]/SmokeRun(Scripts=SampleWeatherDashboard.mlx),1,0,0,0.0004588, +SmokeTests[Project=0x0_char]/SmokeRun(Scripts=UsingMATLABwithPython.mlx),1,0,0,2.2924885, +SmokeTests[Project=0x0_char]/SmokeRun(Scripts=WeatherForecast.mlx),1,0,0,0.3437829, diff --git a/SoftwareTests/TestResults_R2024a.txt b/SoftwareTests/TestResults_R2024a.txt new file mode 100644 index 0000000..73f4a8d --- /dev/null +++ b/SoftwareTests/TestResults_R2024a.txt @@ -0,0 +1,6 @@ +Name,Passed,Failed,Incomplete,Duration,Details +SmokeTests[Project=0x0_char]/SmokeRun(Scripts=CheckingTheWeather.mlx),1,0,0,0.1316994, +SmokeTests[Project=0x0_char]/SmokeRun(Scripts=CreateCurrentWeatherApp.mlx),1,0,0,0.0003877, +SmokeTests[Project=0x0_char]/SmokeRun(Scripts=SampleWeatherDashboard.mlx),1,0,0,0.000197, +SmokeTests[Project=0x0_char]/SmokeRun(Scripts=UsingMATLABwithPython.mlx),1,0,0,0.3888675, +SmokeTests[Project=0x0_char]/SmokeRun(Scripts=WeatherForecast.mlx),1,0,0,0.0044386, diff --git a/UsingMATLABwithPython.mlx b/UsingMATLABwithPython.mlx deleted file mode 100644 index 5d32a0c..0000000 Binary files a/UsingMATLABwithPython.mlx and /dev/null differ diff --git a/Utilities/ProjectShutdown.m b/Utilities/ProjectShutdown.m new file mode 100644 index 0000000..8c3c77c --- /dev/null +++ b/Utilities/ProjectShutdown.m @@ -0,0 +1,2 @@ +% Close the StartUp app if still open: +delete(findall(groot,'Name','StartUp App')) \ No newline at end of file diff --git a/Utilities/ProjectStartupApp.m b/Utilities/ProjectStartupApp.m new file mode 100644 index 0000000..0cb0ebb --- /dev/null +++ b/Utilities/ProjectStartupApp.m @@ -0,0 +1,322 @@ +classdef ProjectStartupApp < matlab.apps.AppBase + + % Properties that correspond to app components + properties (Access = public) + StartUpAppUIFigure matlab.ui.Figure + FeedBackPanel matlab.ui.container.Panel + FeedBackGrid matlab.ui.container.GridLayout + ReviewTitle matlab.ui.control.Label + ReviewText matlab.ui.control.Label + OtherButton matlab.ui.control.Button + StudentButton matlab.ui.control.Button + FacultyButton matlab.ui.control.Button + Q1 matlab.ui.control.Label + WelcomePanel matlab.ui.container.Panel + WelcomeGrid matlab.ui.container.GridLayout + WelcomeTitle matlab.ui.control.Label + CoverImage matlab.ui.control.Image + ReviewUsButton matlab.ui.control.Button + READMEButton matlab.ui.control.Button + MainMenuButton matlab.ui.control.Button + end + + % Properties to be modified + properties (Access = private) + GitHubOrganization = "MathWorks-Teaching-Resources"; % Description + GitHubRepository = "Programming-A-Starter-Project-Using-MATLAB-and-Python"; + ImagePath {mustBeFile} = fullfile("Images","windTokyo.gif"); + end + + properties (Access = private) + InitPosition; + ProjectName; + end + + methods (Access = private, Static) + + function saveSettings(isReviewed,numLoad) + try + save(fullfile("Utilities","ProjectSettings.mat"),"isReviewed","numLoad"); + catch + end + end + + end + + + % Callbacks that handle component events + methods (Access = private) + + % Code that executes after component creation + function startupFcn(app) + + % Copy title and set cover image + app.ProjectName = currentProject().Name; + app.WelcomeTitle.Text = app.ProjectName; + app.ReviewTitle.Text = app.WelcomeTitle.Text; + app.CoverImage.ImageSource = app.ImagePath; + + % Switch tab to review if has not been reviewed yet + if isfile(fullfile("Utilities","ProjectSettings.mat")) + load(fullfile("Utilities","ProjectSettings.mat"),"isReviewed","numLoad"); + numLoad = numLoad + 1; % Increment counter + else + isReviewed = false; + numLoad = 1; % Initialize counter + end + + % Select tab to display + if ~isReviewed && numLoad > 2 + isReviewed = true; + app.FeedBackGrid.Parent = app.StartUpAppUIFigure; + else + app.WelcomeGrid.Parent = app.StartUpAppUIFigure; + end + app.InitPosition = app.StartUpAppUIFigure.Position; + + % Save new settings + app.saveSettings(isReviewed,numLoad) + + end + + % Close request function: StartUpAppUIFigure + function StartUpAppUIFigureCloseRequest(app, event) + if event.Source == app.READMEButton + open README.mlx + elseif event.Source == app.MainMenuButton + open MainMenu.mlx + elseif event.Source == app.FacultyButton + open MainMenu.mlx + elseif event.Source == app.StudentButton + open MainMenu.mlx + elseif event.Source == app.OtherButton + open MainMenu.mlx + else + disp("Thank you for your time.") + end + delete(app) + end + + % Button pushed function: MainMenuButton + function MainMenuButtonPushed(app, event) + StartUpAppUIFigureCloseRequest(app,event) + end + + % Button pushed function: FacultyButton + function FacultyButtonPushed(app, event) + % Open Faculty Form + import matlab.net.* + % Create the URI object with the base URL + uri = URI('https://forms.office.com/Pages/ResponsePage.aspx','literal'); + % Set the Query property with an array of QueryParameter objects + uri.Query = [ + QueryParameter('id', 'ETrdmUhDaESb3eUHKx3B5mlcO9AKxC5AgMAKBg6OKuBUNTVXVlBTS0lOU0hPRExYMldGWldVQUhIRC4u') + QueryParameter('r2017080ed20546d1a2db18fe36421929', app.ProjectName) + ]; + web(strrep(uri.EncodedURI,"+","%20")) + StartUpAppUIFigureCloseRequest(app,event) + end + + % Button pushed function: StudentButton + function StudentButtonPushed(app, event) + % Open Student Form + import matlab.net.* + % Create the URI object with the base URL + uri = URI('https://forms.office.com/Pages/ResponsePage.aspx','literal'); + % Set the Query property with an array of QueryParameter objects + uri.Query = [ + QueryParameter('id', 'ETrdmUhDaESb3eUHKx3B5mlcO9AKxC5AgMAKBg6OKuBUNlNBOVRZSDZHT1VTMzA4MjdHSUdVR0o3Vy4u') + QueryParameter('r362e367caa234debbf4f65a58a0338e6', app.ProjectName) + ]; + web(strrep(uri.EncodedURI,"+","%20")) + StartUpAppUIFigureCloseRequest(app,event) + end + + % Button pushed function: OtherButton + function OtherButtonPushed(app, event) + % Open Student Form + import matlab.net.* + % Create the URI object with the base URL + uri = URI('https://forms.office.com/Pages/ResponsePage.aspx','literal'); + % Set the Query property with an array of QueryParameter objects + uri.Query = [ + QueryParameter('id', 'ETrdmUhDaESb3eUHKx3B5mlcO9AKxC5AgMAKBg6OKuBUNlNBOVRZSDZHT1VTMzA4MjdHSUdVR0o3Vy4u') + QueryParameter('r362e367caa234debbf4f65a58a0338e6', app.ProjectName) + ]; + web(strrep(uri.EncodedURI,"+","%20")) + StartUpAppUIFigureCloseRequest(app,event) + end + + % Button pushed function: ReviewUsButton + function ReviewUsButtonPushed(app, event) + app.WelcomeGrid.Parent = app.WelcomePanel; + app.FeedBackGrid.Parent = app.StartUpAppUIFigure; + end + + % Button pushed function: READMEButton + function READMEButtonPushed(app, event) + StartUpAppUIFigureCloseRequest(app,event) + end + end + + % Component initialization + methods (Access = private) + + % Create UIFigure and components + function createComponents(app) + + % Create StartUpAppUIFigure and hide until all components are created + app.StartUpAppUIFigure = uifigure('Visible', 'off'); + app.StartUpAppUIFigure.AutoResizeChildren = 'off'; + app.StartUpAppUIFigure.Position = [100 100 276 430]; + app.StartUpAppUIFigure.Name = 'StartUp App'; + app.StartUpAppUIFigure.CloseRequestFcn = createCallbackFcn(app, @StartUpAppUIFigureCloseRequest, true); + + % Create WelcomePanel + app.WelcomePanel = uipanel(app.StartUpAppUIFigure); + app.WelcomePanel.AutoResizeChildren = 'off'; + app.WelcomePanel.Position = [-551 33 244 410]; + + % Create WelcomeGrid + app.WelcomeGrid = uigridlayout(app.WelcomePanel); + app.WelcomeGrid.ColumnWidth = {'1x', '8x', '1x'}; + app.WelcomeGrid.RowHeight = {'2x', '5x', '1x', '1x', '1x'}; + + % Create MainMenuButton + app.MainMenuButton = uibutton(app.WelcomeGrid, 'push'); + app.MainMenuButton.ButtonPushedFcn = createCallbackFcn(app, @MainMenuButtonPushed, true); + app.MainMenuButton.FontSize = 18; + app.MainMenuButton.Layout.Row = 3; + app.MainMenuButton.Layout.Column = 2; + app.MainMenuButton.Text = 'Main Menu'; + + % Create READMEButton + app.READMEButton = uibutton(app.WelcomeGrid, 'push'); + app.READMEButton.ButtonPushedFcn = createCallbackFcn(app, @READMEButtonPushed, true); + app.READMEButton.FontSize = 18; + app.READMEButton.Layout.Row = 4; + app.READMEButton.Layout.Column = 2; + app.READMEButton.Text = 'README'; + + % Create ReviewUsButton + app.ReviewUsButton = uibutton(app.WelcomeGrid, 'push'); + app.ReviewUsButton.ButtonPushedFcn = createCallbackFcn(app, @ReviewUsButtonPushed, true); + app.ReviewUsButton.FontSize = 18; + app.ReviewUsButton.Layout.Row = 5; + app.ReviewUsButton.Layout.Column = 2; + app.ReviewUsButton.Text = 'Review Us'; + + % Create CoverImage + app.CoverImage = uiimage(app.WelcomeGrid); + app.CoverImage.Layout.Row = 2; + app.CoverImage.Layout.Column = [1 3]; + app.CoverImage.ImageSource = 'windTokyo.gif'; + + % Create WelcomeTitle + app.WelcomeTitle = uilabel(app.WelcomeGrid); + app.WelcomeTitle.HorizontalAlignment = 'center'; + app.WelcomeTitle.VerticalAlignment = 'top'; + app.WelcomeTitle.WordWrap = 'on'; + app.WelcomeTitle.FontSize = 24; + app.WelcomeTitle.FontWeight = 'bold'; + app.WelcomeTitle.Layout.Row = 1; + app.WelcomeTitle.Layout.Column = [1 3]; + app.WelcomeTitle.Text = ''; + + % Create FeedBackPanel + app.FeedBackPanel = uipanel(app.StartUpAppUIFigure); + app.FeedBackPanel.AutoResizeChildren = 'off'; + app.FeedBackPanel.Position = [-291 33 236 409]; + + % Create FeedBackGrid + app.FeedBackGrid = uigridlayout(app.FeedBackPanel); + app.FeedBackGrid.ColumnWidth = {'1x', '8x', '1x'}; + app.FeedBackGrid.RowHeight = {'2x', '3x', '2x', '1x', '1x', '1x'}; + + % Create Q1 + app.Q1 = uilabel(app.FeedBackGrid); + app.Q1.HorizontalAlignment = 'center'; + app.Q1.WordWrap = 'on'; + app.Q1.FontSize = 18; + app.Q1.FontWeight = 'bold'; + app.Q1.Layout.Row = 3; + app.Q1.Layout.Column = [1 3]; + app.Q1.Text = 'What describes you best?'; + + % Create FacultyButton + app.FacultyButton = uibutton(app.FeedBackGrid, 'push'); + app.FacultyButton.ButtonPushedFcn = createCallbackFcn(app, @FacultyButtonPushed, true); + app.FacultyButton.FontSize = 18; + app.FacultyButton.Layout.Row = 4; + app.FacultyButton.Layout.Column = 2; + app.FacultyButton.Text = 'Faculty'; + + % Create StudentButton + app.StudentButton = uibutton(app.FeedBackGrid, 'push'); + app.StudentButton.ButtonPushedFcn = createCallbackFcn(app, @StudentButtonPushed, true); + app.StudentButton.FontSize = 18; + app.StudentButton.Layout.Row = 5; + app.StudentButton.Layout.Column = 2; + app.StudentButton.Text = 'Student'; + + % Create OtherButton + app.OtherButton = uibutton(app.FeedBackGrid, 'push'); + app.OtherButton.ButtonPushedFcn = createCallbackFcn(app, @OtherButtonPushed, true); + app.OtherButton.FontSize = 18; + app.OtherButton.Layout.Row = 6; + app.OtherButton.Layout.Column = 2; + app.OtherButton.Text = 'Other'; + + % Create ReviewText + app.ReviewText = uilabel(app.FeedBackGrid); + app.ReviewText.HorizontalAlignment = 'center'; + app.ReviewText.WordWrap = 'on'; + app.ReviewText.FontSize = 14; + app.ReviewText.Layout.Row = 2; + app.ReviewText.Layout.Column = [1 3]; + app.ReviewText.Text = 'Please help us improve your experience by answering a few questions.'; + + % Create ReviewTitle + app.ReviewTitle = uilabel(app.FeedBackGrid); + app.ReviewTitle.HorizontalAlignment = 'center'; + app.ReviewTitle.VerticalAlignment = 'top'; + app.ReviewTitle.WordWrap = 'on'; + app.ReviewTitle.FontSize = 24; + app.ReviewTitle.FontWeight = 'bold'; + app.ReviewTitle.Layout.Row = 1; + app.ReviewTitle.Layout.Column = [1 3]; + app.ReviewTitle.Text = ''; + + % Show the figure after all components are created + app.StartUpAppUIFigure.Visible = 'on'; + end + end + + % App creation and deletion + methods (Access = public) + + % Construct app + function app = ProjectStartupApp + + % Create UIFigure and components + createComponents(app) + + % Register the app with App Designer + registerApp(app, app.StartUpAppUIFigure) + + % Execute the startup function + runStartupFcn(app, @startupFcn) + + if nargout == 0 + clear app + end + end + + % Code that executes before app deletion + function delete(app) + + % Delete UIFigure when app is deleted + delete(app.StartUpAppUIFigure) + end + end +end \ No newline at end of file diff --git a/resources/project/-kvj53q_l7Lhz3DXOqqQqn6H9Y8/90gVWNHk1C35z8jvR-PGomhcMqAp.xml b/resources/project/-kvj53q_l7Lhz3DXOqqQqn6H9Y8/90gVWNHk1C35z8jvR-PGomhcMqAp.xml deleted file mode 100644 index 438a229..0000000 --- a/resources/project/-kvj53q_l7Lhz3DXOqqQqn6H9Y8/90gVWNHk1C35z8jvR-PGomhcMqAp.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/resources/project/-kvj53q_l7Lhz3DXOqqQqn6H9Y8/X5VMcdhMX1-1XVsQsrBIibQhm2Qp.xml b/resources/project/-kvj53q_l7Lhz3DXOqqQqn6H9Y8/X5VMcdhMX1-1XVsQsrBIibQhm2Qp.xml deleted file mode 100644 index 050422b..0000000 --- a/resources/project/-kvj53q_l7Lhz3DXOqqQqn6H9Y8/X5VMcdhMX1-1XVsQsrBIibQhm2Qp.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/resources/project/-kvj53q_l7Lhz3DXOqqQqn6H9Y8/txvWpnSOoi78sA8cwulqXkK1MG4p.xml b/resources/project/-kvj53q_l7Lhz3DXOqqQqn6H9Y8/txvWpnSOoi78sA8cwulqXkK1MG4p.xml deleted file mode 100644 index ea1f4a6..0000000 --- a/resources/project/-kvj53q_l7Lhz3DXOqqQqn6H9Y8/txvWpnSOoi78sA8cwulqXkK1MG4p.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/resources/project/2zjcQkVJSJ_AwC9M8R9BTSESRzc/5R7G30JHZVF_lDxt6auPkBjLcVUd.xml b/resources/project/2zjcQkVJSJ_AwC9M8R9BTSESRzc/5R7G30JHZVF_lDxt6auPkBjLcVUd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/2zjcQkVJSJ_AwC9M8R9BTSESRzc/5R7G30JHZVF_lDxt6auPkBjLcVUd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/2zjcQkVJSJ_AwC9M8R9BTSESRzc/5R7G30JHZVF_lDxt6auPkBjLcVUp.xml b/resources/project/2zjcQkVJSJ_AwC9M8R9BTSESRzc/5R7G30JHZVF_lDxt6auPkBjLcVUp.xml new file mode 100644 index 0000000..2ca006b --- /dev/null +++ b/resources/project/2zjcQkVJSJ_AwC9M8R9BTSESRzc/5R7G30JHZVF_lDxt6auPkBjLcVUp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/-kvj53q_l7Lhz3DXOqqQqn6H9Y8/pK1REetAkuQtB5n4SKwdAbVpYIcd.xml b/resources/project/2zjcQkVJSJ_AwC9M8R9BTSESRzc/QEd0x6jBcKf03RgXQ3y07QAWBCsd.xml similarity index 100% rename from resources/project/-kvj53q_l7Lhz3DXOqqQqn6H9Y8/pK1REetAkuQtB5n4SKwdAbVpYIcd.xml rename to resources/project/2zjcQkVJSJ_AwC9M8R9BTSESRzc/QEd0x6jBcKf03RgXQ3y07QAWBCsd.xml diff --git a/resources/project/-kvj53q_l7Lhz3DXOqqQqn6H9Y8/pK1REetAkuQtB5n4SKwdAbVpYIcp.xml b/resources/project/2zjcQkVJSJ_AwC9M8R9BTSESRzc/QEd0x6jBcKf03RgXQ3y07QAWBCsp.xml similarity index 100% rename from resources/project/-kvj53q_l7Lhz3DXOqqQqn6H9Y8/pK1REetAkuQtB5n4SKwdAbVpYIcp.xml rename to resources/project/2zjcQkVJSJ_AwC9M8R9BTSESRzc/QEd0x6jBcKf03RgXQ3y07QAWBCsp.xml diff --git a/resources/project/-kvj53q_l7Lhz3DXOqqQqn6H9Y8/90gVWNHk1C35z8jvR-PGomhcMqAd.xml b/resources/project/2zjcQkVJSJ_AwC9M8R9BTSESRzc/_kanDHLwZvrSM1wrb2rL3R-TtpAd.xml similarity index 100% rename from resources/project/-kvj53q_l7Lhz3DXOqqQqn6H9Y8/90gVWNHk1C35z8jvR-PGomhcMqAd.xml rename to resources/project/2zjcQkVJSJ_AwC9M8R9BTSESRzc/_kanDHLwZvrSM1wrb2rL3R-TtpAd.xml diff --git a/resources/project/2zjcQkVJSJ_AwC9M8R9BTSESRzc/_kanDHLwZvrSM1wrb2rL3R-TtpAp.xml b/resources/project/2zjcQkVJSJ_AwC9M8R9BTSESRzc/_kanDHLwZvrSM1wrb2rL3R-TtpAp.xml new file mode 100644 index 0000000..7f3884f --- /dev/null +++ b/resources/project/2zjcQkVJSJ_AwC9M8R9BTSESRzc/_kanDHLwZvrSM1wrb2rL3R-TtpAp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/-kvj53q_l7Lhz3DXOqqQqn6H9Y8/X5VMcdhMX1-1XVsQsrBIibQhm2Qd.xml b/resources/project/2zjcQkVJSJ_AwC9M8R9BTSESRzc/b4fK1nwNVcMFfH2HWk_9bHC2cXcd.xml similarity index 100% rename from resources/project/-kvj53q_l7Lhz3DXOqqQqn6H9Y8/X5VMcdhMX1-1XVsQsrBIibQhm2Qd.xml rename to resources/project/2zjcQkVJSJ_AwC9M8R9BTSESRzc/b4fK1nwNVcMFfH2HWk_9bHC2cXcd.xml diff --git a/resources/project/2zjcQkVJSJ_AwC9M8R9BTSESRzc/b4fK1nwNVcMFfH2HWk_9bHC2cXcp.xml b/resources/project/2zjcQkVJSJ_AwC9M8R9BTSESRzc/b4fK1nwNVcMFfH2HWk_9bHC2cXcp.xml new file mode 100644 index 0000000..cc303be --- /dev/null +++ b/resources/project/2zjcQkVJSJ_AwC9M8R9BTSESRzc/b4fK1nwNVcMFfH2HWk_9bHC2cXcp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/6xhH2l9GP9loT6TdFn_Mo65sDHg/P8PSrqcBHMbGhqD2r1d9oc0h3TUd.xml b/resources/project/6xhH2l9GP9loT6TdFn_Mo65sDHg/P8PSrqcBHMbGhqD2r1d9oc0h3TUd.xml new file mode 100644 index 0000000..ff2009c --- /dev/null +++ b/resources/project/6xhH2l9GP9loT6TdFn_Mo65sDHg/P8PSrqcBHMbGhqD2r1d9oc0h3TUd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/6xhH2l9GP9loT6TdFn_Mo65sDHg/P8PSrqcBHMbGhqD2r1d9oc0h3TUp.xml b/resources/project/6xhH2l9GP9loT6TdFn_Mo65sDHg/P8PSrqcBHMbGhqD2r1d9oc0h3TUp.xml new file mode 100644 index 0000000..3b8316b --- /dev/null +++ b/resources/project/6xhH2l9GP9loT6TdFn_Mo65sDHg/P8PSrqcBHMbGhqD2r1d9oc0h3TUp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/-kvj53q_l7Lhz3DXOqqQqn6H9Y8d.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/-Yp4iI7AkN0RXWsqH_qBv8BSoUsd.xml similarity index 100% rename from resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/-kvj53q_l7Lhz3DXOqqQqn6H9Y8d.xml rename to resources/project/BT5hWoz-UTefONdqForZyI91O8Y/-Yp4iI7AkN0RXWsqH_qBv8BSoUsd.xml diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/-Yp4iI7AkN0RXWsqH_qBv8BSoUsp.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/-Yp4iI7AkN0RXWsqH_qBv8BSoUsp.xml new file mode 100644 index 0000000..3b0739e --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/-Yp4iI7AkN0RXWsqH_qBv8BSoUsp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/1pYehALnaCNxtxsVT8HUsm31wjod.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/5wkpcXVsAhrdVuZJuRCjlxSek_Yd.xml similarity index 100% rename from resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/1pYehALnaCNxtxsVT8HUsm31wjod.xml rename to resources/project/BT5hWoz-UTefONdqForZyI91O8Y/5wkpcXVsAhrdVuZJuRCjlxSek_Yd.xml diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/5wkpcXVsAhrdVuZJuRCjlxSek_Yp.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/5wkpcXVsAhrdVuZJuRCjlxSek_Yp.xml new file mode 100644 index 0000000..4cf13cf --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/5wkpcXVsAhrdVuZJuRCjlxSek_Yp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/iJQ6ISymCE_oVhqvDHiIgzDCXjEd.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/897K1ZIAIxWZa69h7rzaFEkJJ1Yd.xml similarity index 100% rename from resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/iJQ6ISymCE_oVhqvDHiIgzDCXjEd.xml rename to resources/project/BT5hWoz-UTefONdqForZyI91O8Y/897K1ZIAIxWZa69h7rzaFEkJJ1Yd.xml diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/897K1ZIAIxWZa69h7rzaFEkJJ1Yp.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/897K1ZIAIxWZa69h7rzaFEkJJ1Yp.xml new file mode 100644 index 0000000..80dfd38 --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/897K1ZIAIxWZa69h7rzaFEkJJ1Yp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/CNywfkA_sVJKQVIu_dt3FgNM43gd.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/CNywfkA_sVJKQVIu_dt3FgNM43gd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/CNywfkA_sVJKQVIu_dt3FgNM43gd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/CNywfkA_sVJKQVIu_dt3FgNM43gp.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/CNywfkA_sVJKQVIu_dt3FgNM43gp.xml new file mode 100644 index 0000000..c83abf5 --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/CNywfkA_sVJKQVIu_dt3FgNM43gp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/Pq7gqYnkFyhKab7XB8O0iwQTIP0d.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/LUM1KVG-kpiMYV7i1xDItZmUkVQd.xml similarity index 56% rename from resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/Pq7gqYnkFyhKab7XB8O0iwQTIP0d.xml rename to resources/project/BT5hWoz-UTefONdqForZyI91O8Y/LUM1KVG-kpiMYV7i1xDItZmUkVQd.xml index aee0cde..a75f7a8 100644 --- a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/Pq7gqYnkFyhKab7XB8O0iwQTIP0d.xml +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/LUM1KVG-kpiMYV7i1xDItZmUkVQd.xml @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/LUM1KVG-kpiMYV7i1xDItZmUkVQp.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/LUM1KVG-kpiMYV7i1xDItZmUkVQp.xml new file mode 100644 index 0000000..b76f883 --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/LUM1KVG-kpiMYV7i1xDItZmUkVQp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/BGOXG2tSxDz1sTeU_KwACyFzCLsd.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/SGHsdnqYqyGyYGQP-0wqh6AyERAd.xml similarity index 100% rename from resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/BGOXG2tSxDz1sTeU_KwACyFzCLsd.xml rename to resources/project/BT5hWoz-UTefONdqForZyI91O8Y/SGHsdnqYqyGyYGQP-0wqh6AyERAd.xml diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/SGHsdnqYqyGyYGQP-0wqh6AyERAp.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/SGHsdnqYqyGyYGQP-0wqh6AyERAp.xml new file mode 100644 index 0000000..cd5003e --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/SGHsdnqYqyGyYGQP-0wqh6AyERAp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/nBednXcpm1PUS8qxyRkFXdab-P4d.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/TzEa1ML1Hz49sPNQX5JM6EE413Qd.xml similarity index 52% rename from resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/nBednXcpm1PUS8qxyRkFXdab-P4d.xml rename to resources/project/BT5hWoz-UTefONdqForZyI91O8Y/TzEa1ML1Hz49sPNQX5JM6EE413Qd.xml index b343995..a75f7a8 100644 --- a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/nBednXcpm1PUS8qxyRkFXdab-P4d.xml +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/TzEa1ML1Hz49sPNQX5JM6EE413Qd.xml @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/TzEa1ML1Hz49sPNQX5JM6EE413Qp.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/TzEa1ML1Hz49sPNQX5JM6EE413Qp.xml new file mode 100644 index 0000000..f22e615 --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/TzEa1ML1Hz49sPNQX5JM6EE413Qp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/Z7BMyvzqSGzrBtf2gsuU4DgxWc0d.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/VnvWkijFxdp8LV3ck_Qpq9eyOpMd.xml similarity index 100% rename from resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/Z7BMyvzqSGzrBtf2gsuU4DgxWc0d.xml rename to resources/project/BT5hWoz-UTefONdqForZyI91O8Y/VnvWkijFxdp8LV3ck_Qpq9eyOpMd.xml diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/VnvWkijFxdp8LV3ck_Qpq9eyOpMp.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/VnvWkijFxdp8LV3ck_Qpq9eyOpMp.xml new file mode 100644 index 0000000..ad517f4 --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/VnvWkijFxdp8LV3ck_Qpq9eyOpMp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/zp0wS8F9EP0ARGsuyU8i2Z0DMsQd.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/WNBzWWmVwu8nwCU7p01ZJtQ5j-od.xml similarity index 100% rename from resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/zp0wS8F9EP0ARGsuyU8i2Z0DMsQd.xml rename to resources/project/BT5hWoz-UTefONdqForZyI91O8Y/WNBzWWmVwu8nwCU7p01ZJtQ5j-od.xml diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/WNBzWWmVwu8nwCU7p01ZJtQ5j-op.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/WNBzWWmVwu8nwCU7p01ZJtQ5j-op.xml new file mode 100644 index 0000000..b808c17 --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/WNBzWWmVwu8nwCU7p01ZJtQ5j-op.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/cNV9fbD7U86DbYesWtgxlSbObDsd.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/cNV9fbD7U86DbYesWtgxlSbObDsd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/cNV9fbD7U86DbYesWtgxlSbObDsd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/cNV9fbD7U86DbYesWtgxlSbObDsp.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/cNV9fbD7U86DbYesWtgxlSbObDsp.xml new file mode 100644 index 0000000..1bc0750 --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/cNV9fbD7U86DbYesWtgxlSbObDsp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/eKfjzGwp0oXUNjB8dt6OlGMU7rQd.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/eKfjzGwp0oXUNjB8dt6OlGMU7rQd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/eKfjzGwp0oXUNjB8dt6OlGMU7rQd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/eKfjzGwp0oXUNjB8dt6OlGMU7rQp.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/eKfjzGwp0oXUNjB8dt6OlGMU7rQp.xml new file mode 100644 index 0000000..bbde243 --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/eKfjzGwp0oXUNjB8dt6OlGMU7rQp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/gK0bzvM8fEYFwItc078tqn4EOmId.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/gK0bzvM8fEYFwItc078tqn4EOmId.xml new file mode 100644 index 0000000..a75f7a8 --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/gK0bzvM8fEYFwItc078tqn4EOmId.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/gK0bzvM8fEYFwItc078tqn4EOmIp.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/gK0bzvM8fEYFwItc078tqn4EOmIp.xml new file mode 100644 index 0000000..295de5f --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/gK0bzvM8fEYFwItc078tqn4EOmIp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/-kvj53q_l7Lhz3DXOqqQqn6H9Y8/txvWpnSOoi78sA8cwulqXkK1MG4d.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/h026LEbG6ImfsgAII1WcSM9Hnnod.xml similarity index 76% rename from resources/project/-kvj53q_l7Lhz3DXOqqQqn6H9Y8/txvWpnSOoi78sA8cwulqXkK1MG4d.xml rename to resources/project/BT5hWoz-UTefONdqForZyI91O8Y/h026LEbG6ImfsgAII1WcSM9Hnnod.xml index 0675ae3..7a6326b 100644 --- a/resources/project/-kvj53q_l7Lhz3DXOqqQqn6H9Y8/txvWpnSOoi78sA8cwulqXkK1MG4d.xml +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/h026LEbG6ImfsgAII1WcSM9Hnnod.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/h026LEbG6ImfsgAII1WcSM9Hnnop.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/h026LEbG6ImfsgAII1WcSM9Hnnop.xml new file mode 100644 index 0000000..614b1cb --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/h026LEbG6ImfsgAII1WcSM9Hnnop.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/h5s8ch2zj9r3lWUKcsOjX8zQlFsd.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/h5s8ch2zj9r3lWUKcsOjX8zQlFsd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/h5s8ch2zj9r3lWUKcsOjX8zQlFsd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/h5s8ch2zj9r3lWUKcsOjX8zQlFsp.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/h5s8ch2zj9r3lWUKcsOjX8zQlFsp.xml new file mode 100644 index 0000000..0f2387d --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/h5s8ch2zj9r3lWUKcsOjX8zQlFsp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/hXn6UklILyp-D_dXtEVXkR6HWa0d.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/hXn6UklILyp-D_dXtEVXkR6HWa0d.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/hXn6UklILyp-D_dXtEVXkR6HWa0d.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/hXn6UklILyp-D_dXtEVXkR6HWa0p.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/hXn6UklILyp-D_dXtEVXkR6HWa0p.xml new file mode 100644 index 0000000..81d26d5 --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/hXn6UklILyp-D_dXtEVXkR6HWa0p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/nA_28eBnx5NCFw_vQVWFh5ohqUAd.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/nA_28eBnx5NCFw_vQVWFh5ohqUAd.xml new file mode 100644 index 0000000..7a6326b --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/nA_28eBnx5NCFw_vQVWFh5ohqUAd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/nA_28eBnx5NCFw_vQVWFh5ohqUAp.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/nA_28eBnx5NCFw_vQVWFh5ohqUAp.xml new file mode 100644 index 0000000..093ab90 --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/nA_28eBnx5NCFw_vQVWFh5ohqUAp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/qu4wtrgMg5JS7iVtXmbBSA9GENId.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/qu4wtrgMg5JS7iVtXmbBSA9GENId.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/qu4wtrgMg5JS7iVtXmbBSA9GENId.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/qu4wtrgMg5JS7iVtXmbBSA9GENIp.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/qu4wtrgMg5JS7iVtXmbBSA9GENIp.xml new file mode 100644 index 0000000..b0bbaec --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/qu4wtrgMg5JS7iVtXmbBSA9GENIp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/w234j28OzyIgK86-1WWW6oJ1rp4d.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/w234j28OzyIgK86-1WWW6oJ1rp4d.xml new file mode 100644 index 0000000..a75f7a8 --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/w234j28OzyIgK86-1WWW6oJ1rp4d.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/w234j28OzyIgK86-1WWW6oJ1rp4p.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/w234j28OzyIgK86-1WWW6oJ1rp4p.xml new file mode 100644 index 0000000..7e726f3 --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/w234j28OzyIgK86-1WWW6oJ1rp4p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/xH29tmOwPG1ix8h2YNwMHPQ_-ukd.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/xH29tmOwPG1ix8h2YNwMHPQ_-ukd.xml new file mode 100644 index 0000000..a75f7a8 --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/xH29tmOwPG1ix8h2YNwMHPQ_-ukd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/xH29tmOwPG1ix8h2YNwMHPQ_-ukp.xml b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/xH29tmOwPG1ix8h2YNwMHPQ_-ukp.xml new file mode 100644 index 0000000..b0242b0 --- /dev/null +++ b/resources/project/BT5hWoz-UTefONdqForZyI91O8Y/xH29tmOwPG1ix8h2YNwMHPQ_-ukp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/BjxNC43HIPP8KZwg_cceb68ikkA/AHoLGOV6JxAa3mDfXPOye2W3psUd.xml b/resources/project/BjxNC43HIPP8KZwg_cceb68ikkA/AHoLGOV6JxAa3mDfXPOye2W3psUd.xml new file mode 100644 index 0000000..a75f7a8 --- /dev/null +++ b/resources/project/BjxNC43HIPP8KZwg_cceb68ikkA/AHoLGOV6JxAa3mDfXPOye2W3psUd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/iJQ6ISymCE_oVhqvDHiIgzDCXjEp.xml b/resources/project/BjxNC43HIPP8KZwg_cceb68ikkA/AHoLGOV6JxAa3mDfXPOye2W3psUp.xml similarity index 100% rename from resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/iJQ6ISymCE_oVhqvDHiIgzDCXjEp.xml rename to resources/project/BjxNC43HIPP8KZwg_cceb68ikkA/AHoLGOV6JxAa3mDfXPOye2W3psUp.xml diff --git a/resources/project/BjxNC43HIPP8KZwg_cceb68ikkA/NvNsziUvXU2FO5oXU12jeMmASEwd.xml b/resources/project/BjxNC43HIPP8KZwg_cceb68ikkA/NvNsziUvXU2FO5oXU12jeMmASEwd.xml new file mode 100644 index 0000000..7a6326b --- /dev/null +++ b/resources/project/BjxNC43HIPP8KZwg_cceb68ikkA/NvNsziUvXU2FO5oXU12jeMmASEwd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/BjxNC43HIPP8KZwg_cceb68ikkA/NvNsziUvXU2FO5oXU12jeMmASEwp.xml b/resources/project/BjxNC43HIPP8KZwg_cceb68ikkA/NvNsziUvXU2FO5oXU12jeMmASEwp.xml new file mode 100644 index 0000000..ead8cbc --- /dev/null +++ b/resources/project/BjxNC43HIPP8KZwg_cceb68ikkA/NvNsziUvXU2FO5oXU12jeMmASEwp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/BjxNC43HIPP8KZwg_cceb68ikkA/dxW0rLxFMXm0cpQGCSkWQRi2YRsd.xml b/resources/project/BjxNC43HIPP8KZwg_cceb68ikkA/dxW0rLxFMXm0cpQGCSkWQRi2YRsd.xml new file mode 100644 index 0000000..a75f7a8 --- /dev/null +++ b/resources/project/BjxNC43HIPP8KZwg_cceb68ikkA/dxW0rLxFMXm0cpQGCSkWQRi2YRsd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/BjxNC43HIPP8KZwg_cceb68ikkA/dxW0rLxFMXm0cpQGCSkWQRi2YRsp.xml b/resources/project/BjxNC43HIPP8KZwg_cceb68ikkA/dxW0rLxFMXm0cpQGCSkWQRi2YRsp.xml new file mode 100644 index 0000000..842de6a --- /dev/null +++ b/resources/project/BjxNC43HIPP8KZwg_cceb68ikkA/dxW0rLxFMXm0cpQGCSkWQRi2YRsp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/-upqjogKesBp3DwJRlG6KjrKvd4d.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/-upqjogKesBp3DwJRlG6KjrKvd4d.xml new file mode 100644 index 0000000..6c2fd15 --- /dev/null +++ b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/-upqjogKesBp3DwJRlG6KjrKvd4d.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/-upqjogKesBp3DwJRlG6KjrKvd4p.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/-upqjogKesBp3DwJRlG6KjrKvd4p.xml new file mode 100644 index 0000000..66245ed --- /dev/null +++ b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/-upqjogKesBp3DwJRlG6KjrKvd4p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/2vfmNT5dFMoKB5FDZBSr3ouDAL8d.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/2vfmNT5dFMoKB5FDZBSr3ouDAL8d.xml new file mode 100644 index 0000000..ad72581 --- /dev/null +++ b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/2vfmNT5dFMoKB5FDZBSr3ouDAL8d.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/2vfmNT5dFMoKB5FDZBSr3ouDAL8p.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/2vfmNT5dFMoKB5FDZBSr3ouDAL8p.xml new file mode 100644 index 0000000..d8cbcb9 --- /dev/null +++ b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/2vfmNT5dFMoKB5FDZBSr3ouDAL8p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/DxJWFQ6s-5tgLo-3uCpCdq16n-sd.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/DxJWFQ6s-5tgLo-3uCpCdq16n-sd.xml new file mode 100644 index 0000000..8978875 --- /dev/null +++ b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/DxJWFQ6s-5tgLo-3uCpCdq16n-sd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/DxJWFQ6s-5tgLo-3uCpCdq16n-sp.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/DxJWFQ6s-5tgLo-3uCpCdq16n-sp.xml new file mode 100644 index 0000000..f842b96 --- /dev/null +++ b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/DxJWFQ6s-5tgLo-3uCpCdq16n-sp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/JzO7EW4RnUYzi9OV7qh3x-wX4z8d.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/JzO7EW4RnUYzi9OV7qh3x-wX4z8d.xml new file mode 100644 index 0000000..f8d0933 --- /dev/null +++ b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/JzO7EW4RnUYzi9OV7qh3x-wX4z8d.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/JzO7EW4RnUYzi9OV7qh3x-wX4z8p.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/JzO7EW4RnUYzi9OV7qh3x-wX4z8p.xml new file mode 100644 index 0000000..516dcb8 --- /dev/null +++ b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/JzO7EW4RnUYzi9OV7qh3x-wX4z8p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/Pq7gqYnkFyhKab7XB8O0iwQTIP0p.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/Pq7gqYnkFyhKab7XB8O0iwQTIP0p.xml deleted file mode 100644 index d1e8194..0000000 --- a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/Pq7gqYnkFyhKab7XB8O0iwQTIP0p.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/cn2Ee7NifKI7ffnw_Fjz5lrC1Qgd.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/cn2Ee7NifKI7ffnw_Fjz5lrC1Qgd.xml new file mode 100644 index 0000000..c75735a --- /dev/null +++ b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/cn2Ee7NifKI7ffnw_Fjz5lrC1Qgd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/cn2Ee7NifKI7ffnw_Fjz5lrC1Qgp.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/cn2Ee7NifKI7ffnw_Fjz5lrC1Qgp.xml new file mode 100644 index 0000000..a3b49bd --- /dev/null +++ b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/cn2Ee7NifKI7ffnw_Fjz5lrC1Qgp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/dzjyExK2OLpL1YhePZIjY4vjrpsd.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/dzjyExK2OLpL1YhePZIjY4vjrpsd.xml new file mode 100644 index 0000000..52eac4e --- /dev/null +++ b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/dzjyExK2OLpL1YhePZIjY4vjrpsd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/dzjyExK2OLpL1YhePZIjY4vjrpsp.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/dzjyExK2OLpL1YhePZIjY4vjrpsp.xml new file mode 100644 index 0000000..c1f9f02 --- /dev/null +++ b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/dzjyExK2OLpL1YhePZIjY4vjrpsp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/e7wCov_BYJUY6VsFZYx5ab3064gd.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/e7wCov_BYJUY6VsFZYx5ab3064gd.xml new file mode 100644 index 0000000..db0a237 --- /dev/null +++ b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/e7wCov_BYJUY6VsFZYx5ab3064gd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/e7wCov_BYJUY6VsFZYx5ab3064gp.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/e7wCov_BYJUY6VsFZYx5ab3064gp.xml new file mode 100644 index 0000000..f329c5a --- /dev/null +++ b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/e7wCov_BYJUY6VsFZYx5ab3064gp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/ikoU0GqEAVreEIpyvUR8mCIaiqUd.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/ikoU0GqEAVreEIpyvUR8mCIaiqUd.xml new file mode 100644 index 0000000..cdddfcf --- /dev/null +++ b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/ikoU0GqEAVreEIpyvUR8mCIaiqUd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/ikoU0GqEAVreEIpyvUR8mCIaiqUp.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/ikoU0GqEAVreEIpyvUR8mCIaiqUp.xml new file mode 100644 index 0000000..635b49b --- /dev/null +++ b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/ikoU0GqEAVreEIpyvUR8mCIaiqUp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/lMJoqU1GA86jWAvX6adHL2EbMzMd.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/lMJoqU1GA86jWAvX6adHL2EbMzMd.xml new file mode 100644 index 0000000..50dd813 --- /dev/null +++ b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/lMJoqU1GA86jWAvX6adHL2EbMzMd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/lMJoqU1GA86jWAvX6adHL2EbMzMp.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/lMJoqU1GA86jWAvX6adHL2EbMzMp.xml new file mode 100644 index 0000000..455e98b --- /dev/null +++ b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/lMJoqU1GA86jWAvX6adHL2EbMzMp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/nBednXcpm1PUS8qxyRkFXdab-P4p.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/nBednXcpm1PUS8qxyRkFXdab-P4p.xml deleted file mode 100644 index 21379fc..0000000 --- a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/nBednXcpm1PUS8qxyRkFXdab-P4p.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/pEP2mULJHg2sLA6ZikixBlQCM9sd.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/pEP2mULJHg2sLA6ZikixBlQCM9sd.xml deleted file mode 100644 index 61cbffb..0000000 --- a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/pEP2mULJHg2sLA6ZikixBlQCM9sd.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/pEP2mULJHg2sLA6ZikixBlQCM9sp.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/pEP2mULJHg2sLA6ZikixBlQCM9sp.xml deleted file mode 100644 index 539cd08..0000000 --- a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/pEP2mULJHg2sLA6ZikixBlQCM9sp.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/resources/project/GKJsEpq9HmT2JOvWOg3ZiDtMKEI/Yxkg-DfklTv8uiIAZptPJ3X2mowd.xml b/resources/project/GKJsEpq9HmT2JOvWOg3ZiDtMKEI/Yxkg-DfklTv8uiIAZptPJ3X2mowd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/GKJsEpq9HmT2JOvWOg3ZiDtMKEI/Yxkg-DfklTv8uiIAZptPJ3X2mowd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/GKJsEpq9HmT2JOvWOg3ZiDtMKEI/Yxkg-DfklTv8uiIAZptPJ3X2mowp.xml b/resources/project/GKJsEpq9HmT2JOvWOg3ZiDtMKEI/Yxkg-DfklTv8uiIAZptPJ3X2mowp.xml new file mode 100644 index 0000000..01cb34e --- /dev/null +++ b/resources/project/GKJsEpq9HmT2JOvWOg3ZiDtMKEI/Yxkg-DfklTv8uiIAZptPJ3X2mowp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/GKJsEpq9HmT2JOvWOg3ZiDtMKEI/lUEE6oMS266pXRAZlg3smfxXDbgd.xml b/resources/project/GKJsEpq9HmT2JOvWOg3ZiDtMKEI/lUEE6oMS266pXRAZlg3smfxXDbgd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/GKJsEpq9HmT2JOvWOg3ZiDtMKEI/lUEE6oMS266pXRAZlg3smfxXDbgd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/GKJsEpq9HmT2JOvWOg3ZiDtMKEI/lUEE6oMS266pXRAZlg3smfxXDbgp.xml b/resources/project/GKJsEpq9HmT2JOvWOg3ZiDtMKEI/lUEE6oMS266pXRAZlg3smfxXDbgp.xml new file mode 100644 index 0000000..4e217fb --- /dev/null +++ b/resources/project/GKJsEpq9HmT2JOvWOg3ZiDtMKEI/lUEE6oMS266pXRAZlg3smfxXDbgp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/HoHDHQ_WvHAAKj5aJOrvrg_vpt8/xXlmKuOQ7YT_G1elNhbKQIUqSRMd.xml b/resources/project/HoHDHQ_WvHAAKj5aJOrvrg_vpt8/xXlmKuOQ7YT_G1elNhbKQIUqSRMd.xml new file mode 100644 index 0000000..4a6ad83 --- /dev/null +++ b/resources/project/HoHDHQ_WvHAAKj5aJOrvrg_vpt8/xXlmKuOQ7YT_G1elNhbKQIUqSRMd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/HoHDHQ_WvHAAKj5aJOrvrg_vpt8/xXlmKuOQ7YT_G1elNhbKQIUqSRMp.xml b/resources/project/HoHDHQ_WvHAAKj5aJOrvrg_vpt8/xXlmKuOQ7YT_G1elNhbKQIUqSRMp.xml new file mode 100644 index 0000000..fdb1445 --- /dev/null +++ b/resources/project/HoHDHQ_WvHAAKj5aJOrvrg_vpt8/xXlmKuOQ7YT_G1elNhbKQIUqSRMp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/I-dDyJ1p--Q0ihIJ8NFdLVLQLTU/V76yfcu8kfyIeJKa13j7YbWR_NEd.xml b/resources/project/I-dDyJ1p--Q0ihIJ8NFdLVLQLTU/V76yfcu8kfyIeJKa13j7YbWR_NEd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/I-dDyJ1p--Q0ihIJ8NFdLVLQLTU/V76yfcu8kfyIeJKa13j7YbWR_NEd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/I-dDyJ1p--Q0ihIJ8NFdLVLQLTU/V76yfcu8kfyIeJKa13j7YbWR_NEp.xml b/resources/project/I-dDyJ1p--Q0ihIJ8NFdLVLQLTU/V76yfcu8kfyIeJKa13j7YbWR_NEp.xml new file mode 100644 index 0000000..01cb34e --- /dev/null +++ b/resources/project/I-dDyJ1p--Q0ihIJ8NFdLVLQLTU/V76yfcu8kfyIeJKa13j7YbWR_NEp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/I-dDyJ1p--Q0ihIJ8NFdLVLQLTU/p2B2kuKn-TR4inf0L2-zoGElvj0d.xml b/resources/project/I-dDyJ1p--Q0ihIJ8NFdLVLQLTU/p2B2kuKn-TR4inf0L2-zoGElvj0d.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/I-dDyJ1p--Q0ihIJ8NFdLVLQLTU/p2B2kuKn-TR4inf0L2-zoGElvj0d.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/I-dDyJ1p--Q0ihIJ8NFdLVLQLTU/p2B2kuKn-TR4inf0L2-zoGElvj0p.xml b/resources/project/I-dDyJ1p--Q0ihIJ8NFdLVLQLTU/p2B2kuKn-TR4inf0L2-zoGElvj0p.xml new file mode 100644 index 0000000..db2f6df --- /dev/null +++ b/resources/project/I-dDyJ1p--Q0ihIJ8NFdLVLQLTU/p2B2kuKn-TR4inf0L2-zoGElvj0p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/KAXfQgCar2Yb8zOxgvf9hdmLP1E/8qumT5QrZyzJpg63uQsNB9i1TMcd.xml b/resources/project/KAXfQgCar2Yb8zOxgvf9hdmLP1E/8qumT5QrZyzJpg63uQsNB9i1TMcd.xml deleted file mode 100644 index 8a44090..0000000 --- a/resources/project/KAXfQgCar2Yb8zOxgvf9hdmLP1E/8qumT5QrZyzJpg63uQsNB9i1TMcd.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/resources/project/KAXfQgCar2Yb8zOxgvf9hdmLP1E/8qumT5QrZyzJpg63uQsNB9i1TMcp.xml b/resources/project/KAXfQgCar2Yb8zOxgvf9hdmLP1E/8qumT5QrZyzJpg63uQsNB9i1TMcp.xml deleted file mode 100644 index 6a094a8..0000000 --- a/resources/project/KAXfQgCar2Yb8zOxgvf9hdmLP1E/8qumT5QrZyzJpg63uQsNB9i1TMcp.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/resources/project/KAXfQgCar2Yb8zOxgvf9hdmLP1E/jYpi1Pu6k-AfWEJrahCTREe7wz0d.xml b/resources/project/KAXfQgCar2Yb8zOxgvf9hdmLP1E/jYpi1Pu6k-AfWEJrahCTREe7wz0d.xml new file mode 100644 index 0000000..31836f0 --- /dev/null +++ b/resources/project/KAXfQgCar2Yb8zOxgvf9hdmLP1E/jYpi1Pu6k-AfWEJrahCTREe7wz0d.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/resources/project/KAXfQgCar2Yb8zOxgvf9hdmLP1E/jYpi1Pu6k-AfWEJrahCTREe7wz0p.xml b/resources/project/KAXfQgCar2Yb8zOxgvf9hdmLP1E/jYpi1Pu6k-AfWEJrahCTREe7wz0p.xml new file mode 100644 index 0000000..1986cbb --- /dev/null +++ b/resources/project/KAXfQgCar2Yb8zOxgvf9hdmLP1E/jYpi1Pu6k-AfWEJrahCTREe7wz0p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/KAXfQgCar2Yb8zOxgvf9hdmLP1E/xcK8fO1pjra5DR0jot5vrzlBV84d.xml b/resources/project/KAXfQgCar2Yb8zOxgvf9hdmLP1E/xcK8fO1pjra5DR0jot5vrzlBV84d.xml new file mode 100644 index 0000000..dc157b3 --- /dev/null +++ b/resources/project/KAXfQgCar2Yb8zOxgvf9hdmLP1E/xcK8fO1pjra5DR0jot5vrzlBV84d.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/resources/project/KAXfQgCar2Yb8zOxgvf9hdmLP1E/xcK8fO1pjra5DR0jot5vrzlBV84p.xml b/resources/project/KAXfQgCar2Yb8zOxgvf9hdmLP1E/xcK8fO1pjra5DR0jot5vrzlBV84p.xml new file mode 100644 index 0000000..5b1fbb8 --- /dev/null +++ b/resources/project/KAXfQgCar2Yb8zOxgvf9hdmLP1E/xcK8fO1pjra5DR0jot5vrzlBV84p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/423KLn4R-ovXBwba8WqQP1OUOKQd.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/423KLn4R-ovXBwba8WqQP1OUOKQd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/423KLn4R-ovXBwba8WqQP1OUOKQd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/423KLn4R-ovXBwba8WqQP1OUOKQp.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/423KLn4R-ovXBwba8WqQP1OUOKQp.xml new file mode 100644 index 0000000..de0d0b8 --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/423KLn4R-ovXBwba8WqQP1OUOKQp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/4P66G48h4uNHb9ng6NyN6i-qzUgd.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/4P66G48h4uNHb9ng6NyN6i-qzUgd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/4P66G48h4uNHb9ng6NyN6i-qzUgd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/4P66G48h4uNHb9ng6NyN6i-qzUgp.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/4P66G48h4uNHb9ng6NyN6i-qzUgp.xml new file mode 100644 index 0000000..433ac3a --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/4P66G48h4uNHb9ng6NyN6i-qzUgp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/5geZ6FmFP1wNQNTkBPiRBgM6q-Ud.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/5geZ6FmFP1wNQNTkBPiRBgM6q-Ud.xml new file mode 100644 index 0000000..378b613 --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/5geZ6FmFP1wNQNTkBPiRBgM6q-Ud.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/5geZ6FmFP1wNQNTkBPiRBgM6q-Up.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/5geZ6FmFP1wNQNTkBPiRBgM6q-Up.xml new file mode 100644 index 0000000..a990ac4 --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/5geZ6FmFP1wNQNTkBPiRBgM6q-Up.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/EyDhXb-HjEIhAYfuSMUxquCH4aYd.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/EyDhXb-HjEIhAYfuSMUxquCH4aYd.xml new file mode 100644 index 0000000..7a6326b --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/EyDhXb-HjEIhAYfuSMUxquCH4aYd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/EyDhXb-HjEIhAYfuSMUxquCH4aYp.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/EyDhXb-HjEIhAYfuSMUxquCH4aYp.xml new file mode 100644 index 0000000..173d9ab --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/EyDhXb-HjEIhAYfuSMUxquCH4aYp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/MCVCPT9iaAzOGyx97P9tMdlmgCId.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/MCVCPT9iaAzOGyx97P9tMdlmgCId.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/MCVCPT9iaAzOGyx97P9tMdlmgCId.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/MCVCPT9iaAzOGyx97P9tMdlmgCIp.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/MCVCPT9iaAzOGyx97P9tMdlmgCIp.xml new file mode 100644 index 0000000..c79dd14 --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/MCVCPT9iaAzOGyx97P9tMdlmgCIp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/OrFTDQK52Rk7nEyrvqtK57u0xLQd.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/OrFTDQK52Rk7nEyrvqtK57u0xLQd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/OrFTDQK52Rk7nEyrvqtK57u0xLQd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/OrFTDQK52Rk7nEyrvqtK57u0xLQp.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/OrFTDQK52Rk7nEyrvqtK57u0xLQp.xml new file mode 100644 index 0000000..f8892bd --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/OrFTDQK52Rk7nEyrvqtK57u0xLQp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/WS0nNp0eS-otExzyipU1hnjde8Yd.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/WS0nNp0eS-otExzyipU1hnjde8Yd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/WS0nNp0eS-otExzyipU1hnjde8Yd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/WS0nNp0eS-otExzyipU1hnjde8Yp.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/WS0nNp0eS-otExzyipU1hnjde8Yp.xml new file mode 100644 index 0000000..8873bdf --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/WS0nNp0eS-otExzyipU1hnjde8Yp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/b3JIy73ZrzFnWNgKhssf5hAuqQ4d.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/b3JIy73ZrzFnWNgKhssf5hAuqQ4d.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/b3JIy73ZrzFnWNgKhssf5hAuqQ4d.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/b3JIy73ZrzFnWNgKhssf5hAuqQ4p.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/b3JIy73ZrzFnWNgKhssf5hAuqQ4p.xml new file mode 100644 index 0000000..2e087b5 --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/b3JIy73ZrzFnWNgKhssf5hAuqQ4p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/d1u4eIKNgMuS21WRxXrD0UScuR8d.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/d1u4eIKNgMuS21WRxXrD0UScuR8d.xml new file mode 100644 index 0000000..7a6326b --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/d1u4eIKNgMuS21WRxXrD0UScuR8d.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/d1u4eIKNgMuS21WRxXrD0UScuR8p.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/d1u4eIKNgMuS21WRxXrD0UScuR8p.xml new file mode 100644 index 0000000..95526bd --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/d1u4eIKNgMuS21WRxXrD0UScuR8p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/gZEyOulxWBf_r9MGlsJJ-P82NOUd.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/gZEyOulxWBf_r9MGlsJJ-P82NOUd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/gZEyOulxWBf_r9MGlsJJ-P82NOUd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/gZEyOulxWBf_r9MGlsJJ-P82NOUp.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/gZEyOulxWBf_r9MGlsJJ-P82NOUp.xml new file mode 100644 index 0000000..fab485f --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/gZEyOulxWBf_r9MGlsJJ-P82NOUp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/gfdF9UWoOuFoiyliJym7waW4XEkd.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/gfdF9UWoOuFoiyliJym7waW4XEkd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/gfdF9UWoOuFoiyliJym7waW4XEkd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/gfdF9UWoOuFoiyliJym7waW4XEkp.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/gfdF9UWoOuFoiyliJym7waW4XEkp.xml new file mode 100644 index 0000000..ab8d5f1 --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/gfdF9UWoOuFoiyliJym7waW4XEkp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/gjXMbSOzqQJbg7H7bMF0OVGji80d.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/gjXMbSOzqQJbg7H7bMF0OVGji80d.xml new file mode 100644 index 0000000..30f473b --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/gjXMbSOzqQJbg7H7bMF0OVGji80d.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/gjXMbSOzqQJbg7H7bMF0OVGji80p.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/gjXMbSOzqQJbg7H7bMF0OVGji80p.xml new file mode 100644 index 0000000..ac1e04c --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/gjXMbSOzqQJbg7H7bMF0OVGji80p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/p5HYYVUpTuYgZwnT8QkkzaoJraUd.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/p5HYYVUpTuYgZwnT8QkkzaoJraUd.xml new file mode 100644 index 0000000..30f473b --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/p5HYYVUpTuYgZwnT8QkkzaoJraUd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/p5HYYVUpTuYgZwnT8QkkzaoJraUp.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/p5HYYVUpTuYgZwnT8QkkzaoJraUp.xml new file mode 100644 index 0000000..bb30d6d --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/p5HYYVUpTuYgZwnT8QkkzaoJraUp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/q4FWbcu8zEbneDjWzNwfvfvjQNAd.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/q4FWbcu8zEbneDjWzNwfvfvjQNAd.xml new file mode 100644 index 0000000..a75f7a8 --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/q4FWbcu8zEbneDjWzNwfvfvjQNAd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/q4FWbcu8zEbneDjWzNwfvfvjQNAp.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/q4FWbcu8zEbneDjWzNwfvfvjQNAp.xml new file mode 100644 index 0000000..842de6a --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/q4FWbcu8zEbneDjWzNwfvfvjQNAp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/s-04wUzHjOhlMa1CW_zpJwm8iDMd.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/s-04wUzHjOhlMa1CW_zpJwm8iDMd.xml new file mode 100644 index 0000000..30f473b --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/s-04wUzHjOhlMa1CW_zpJwm8iDMd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/s-04wUzHjOhlMa1CW_zpJwm8iDMp.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/s-04wUzHjOhlMa1CW_zpJwm8iDMp.xml new file mode 100644 index 0000000..8c8d837 --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/s-04wUzHjOhlMa1CW_zpJwm8iDMp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/tYqv97of56K959ec20E127ONNkkd.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/tYqv97of56K959ec20E127ONNkkd.xml new file mode 100644 index 0000000..378b613 --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/tYqv97of56K959ec20E127ONNkkd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/tYqv97of56K959ec20E127ONNkkp.xml b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/tYqv97of56K959ec20E127ONNkkp.xml new file mode 100644 index 0000000..8031d61 --- /dev/null +++ b/resources/project/ZN2RlSIbyWXhOxbxxI4hOawbMD4/tYqv97of56K959ec20E127ONNkkp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/IeTljmmsHd59nip38CQ5y5dOQnQd.xml b/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/IeTljmmsHd59nip38CQ5y5dOQnQd.xml new file mode 100644 index 0000000..7a6326b --- /dev/null +++ b/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/IeTljmmsHd59nip38CQ5y5dOQnQd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/IeTljmmsHd59nip38CQ5y5dOQnQp.xml b/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/IeTljmmsHd59nip38CQ5y5dOQnQp.xml new file mode 100644 index 0000000..b5a5a81 --- /dev/null +++ b/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/IeTljmmsHd59nip38CQ5y5dOQnQp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/QOpe-1pctdftDIjwQLRdjOUZW44d.xml b/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/QOpe-1pctdftDIjwQLRdjOUZW44d.xml new file mode 100644 index 0000000..a75f7a8 --- /dev/null +++ b/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/QOpe-1pctdftDIjwQLRdjOUZW44d.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/QOpe-1pctdftDIjwQLRdjOUZW44p.xml b/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/QOpe-1pctdftDIjwQLRdjOUZW44p.xml new file mode 100644 index 0000000..842de6a --- /dev/null +++ b/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/QOpe-1pctdftDIjwQLRdjOUZW44p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/Y4iX7VSqYaXWuqu1GuH08Q4gCR4d.xml b/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/Y4iX7VSqYaXWuqu1GuH08Q4gCR4d.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/Y4iX7VSqYaXWuqu1GuH08Q4gCR4d.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/Y4iX7VSqYaXWuqu1GuH08Q4gCR4p.xml b/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/Y4iX7VSqYaXWuqu1GuH08Q4gCR4p.xml new file mode 100644 index 0000000..3dd7bef --- /dev/null +++ b/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/Y4iX7VSqYaXWuqu1GuH08Q4gCR4p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/bzMXcEpQelehv3qzHYr9ceCGgIod.xml b/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/bzMXcEpQelehv3qzHYr9ceCGgIod.xml new file mode 100644 index 0000000..7a6326b --- /dev/null +++ b/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/bzMXcEpQelehv3qzHYr9ceCGgIod.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/Z7BMyvzqSGzrBtf2gsuU4DgxWc0p.xml b/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/bzMXcEpQelehv3qzHYr9ceCGgIop.xml similarity index 100% rename from resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/Z7BMyvzqSGzrBtf2gsuU4DgxWc0p.xml rename to resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/bzMXcEpQelehv3qzHYr9ceCGgIop.xml diff --git a/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/hy3T897OVbl4TCaWFBnKRKDU0M8d.xml b/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/hy3T897OVbl4TCaWFBnKRKDU0M8d.xml new file mode 100644 index 0000000..7a6326b --- /dev/null +++ b/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/hy3T897OVbl4TCaWFBnKRKDU0M8d.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/BGOXG2tSxDz1sTeU_KwACyFzCLsp.xml b/resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/hy3T897OVbl4TCaWFBnKRKDU0M8p.xml similarity index 100% rename from resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/BGOXG2tSxDz1sTeU_KwACyFzCLsp.xml rename to resources/project/ZdVxxv9BsNz7MGUxtEc6Pq3qh1M/hy3T897OVbl4TCaWFBnKRKDU0M8p.xml diff --git a/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/FclaQiuRRvqZzfnvReCKRLYQG04d.xml b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/FclaQiuRRvqZzfnvReCKRLYQG04d.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/FclaQiuRRvqZzfnvReCKRLYQG04d.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/FclaQiuRRvqZzfnvReCKRLYQG04p.xml b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/FclaQiuRRvqZzfnvReCKRLYQG04p.xml new file mode 100644 index 0000000..751b47c --- /dev/null +++ b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/FclaQiuRRvqZzfnvReCKRLYQG04p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/GJtrdTUc8krbVlhASJzieoFELdYd.xml b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/GJtrdTUc8krbVlhASJzieoFELdYd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/GJtrdTUc8krbVlhASJzieoFELdYd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/GJtrdTUc8krbVlhASJzieoFELdYp.xml b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/GJtrdTUc8krbVlhASJzieoFELdYp.xml new file mode 100644 index 0000000..01cb34e --- /dev/null +++ b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/GJtrdTUc8krbVlhASJzieoFELdYp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/KQMigY2OjWa9g6M-C5r8Up0357od.xml b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/KQMigY2OjWa9g6M-C5r8Up0357od.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/KQMigY2OjWa9g6M-C5r8Up0357od.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/KQMigY2OjWa9g6M-C5r8Up0357op.xml b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/KQMigY2OjWa9g6M-C5r8Up0357op.xml new file mode 100644 index 0000000..f6639b1 --- /dev/null +++ b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/KQMigY2OjWa9g6M-C5r8Up0357op.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/ZL0yxdr5cvq5LeopyaxBqpitpjod.xml b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/ZL0yxdr5cvq5LeopyaxBqpitpjod.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/ZL0yxdr5cvq5LeopyaxBqpitpjod.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/ZL0yxdr5cvq5LeopyaxBqpitpjop.xml b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/ZL0yxdr5cvq5LeopyaxBqpitpjop.xml new file mode 100644 index 0000000..433ac3a --- /dev/null +++ b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/ZL0yxdr5cvq5LeopyaxBqpitpjop.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/a2u5yuXrr23Y2L727aZhI7qT6L0d.xml b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/a2u5yuXrr23Y2L727aZhI7qT6L0d.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/a2u5yuXrr23Y2L727aZhI7qT6L0d.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/a2u5yuXrr23Y2L727aZhI7qT6L0p.xml b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/a2u5yuXrr23Y2L727aZhI7qT6L0p.xml new file mode 100644 index 0000000..cded3de --- /dev/null +++ b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/a2u5yuXrr23Y2L727aZhI7qT6L0p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/cKSOiL8BaQ7iBaT8jcDLSFaxjZwd.xml b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/cKSOiL8BaQ7iBaT8jcDLSFaxjZwd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/cKSOiL8BaQ7iBaT8jcDLSFaxjZwd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/cKSOiL8BaQ7iBaT8jcDLSFaxjZwp.xml b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/cKSOiL8BaQ7iBaT8jcDLSFaxjZwp.xml new file mode 100644 index 0000000..23ee4a6 --- /dev/null +++ b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/cKSOiL8BaQ7iBaT8jcDLSFaxjZwp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/eYUVfav41Z3DHR_zeNxtEc1qeNQd.xml b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/eYUVfav41Z3DHR_zeNxtEc1qeNQd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/eYUVfav41Z3DHR_zeNxtEc1qeNQd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/eYUVfav41Z3DHR_zeNxtEc1qeNQp.xml b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/eYUVfav41Z3DHR_zeNxtEc1qeNQp.xml new file mode 100644 index 0000000..72889d4 --- /dev/null +++ b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/eYUVfav41Z3DHR_zeNxtEc1qeNQp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/jeDtnYbvc6Yk7ncJK0puH-ERRmgd.xml b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/jeDtnYbvc6Yk7ncJK0puH-ERRmgd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/jeDtnYbvc6Yk7ncJK0puH-ERRmgd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/jeDtnYbvc6Yk7ncJK0puH-ERRmgp.xml b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/jeDtnYbvc6Yk7ncJK0puH-ERRmgp.xml new file mode 100644 index 0000000..53eada2 --- /dev/null +++ b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/jeDtnYbvc6Yk7ncJK0puH-ERRmgp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/taJ-MPP-S0lkh692qkaYjcSSzmsd.xml b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/taJ-MPP-S0lkh692qkaYjcSSzmsd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/taJ-MPP-S0lkh692qkaYjcSSzmsd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/taJ-MPP-S0lkh692qkaYjcSSzmsp.xml b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/taJ-MPP-S0lkh692qkaYjcSSzmsp.xml new file mode 100644 index 0000000..c79dd14 --- /dev/null +++ b/resources/project/b3JIy73ZrzFnWNgKhssf5hAuqQ4/taJ-MPP-S0lkh692qkaYjcSSzmsp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/2w5jVWjTyrsOArdYS-TFzvwPxeQd.xml b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/2w5jVWjTyrsOArdYS-TFzvwPxeQd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/2w5jVWjTyrsOArdYS-TFzvwPxeQd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/2w5jVWjTyrsOArdYS-TFzvwPxeQp.xml b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/2w5jVWjTyrsOArdYS-TFzvwPxeQp.xml new file mode 100644 index 0000000..5fd7791 --- /dev/null +++ b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/2w5jVWjTyrsOArdYS-TFzvwPxeQp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/TgS6JVkSWBMTwjsBx4_tl5SNRQsd.xml b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/TgS6JVkSWBMTwjsBx4_tl5SNRQsd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/TgS6JVkSWBMTwjsBx4_tl5SNRQsd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/TgS6JVkSWBMTwjsBx4_tl5SNRQsp.xml b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/TgS6JVkSWBMTwjsBx4_tl5SNRQsp.xml new file mode 100644 index 0000000..01cb34e --- /dev/null +++ b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/TgS6JVkSWBMTwjsBx4_tl5SNRQsp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/W7HxaTKwnbY_JHKBUQsxSq-M7DId.xml b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/W7HxaTKwnbY_JHKBUQsxSq-M7DId.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/W7HxaTKwnbY_JHKBUQsxSq-M7DId.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/W7HxaTKwnbY_JHKBUQsxSq-M7DIp.xml b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/W7HxaTKwnbY_JHKBUQsxSq-M7DIp.xml new file mode 100644 index 0000000..23b293a --- /dev/null +++ b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/W7HxaTKwnbY_JHKBUQsxSq-M7DIp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/eDyOl6rEuVOucYR_D6iogiukXU0d.xml b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/eDyOl6rEuVOucYR_D6iogiukXU0d.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/eDyOl6rEuVOucYR_D6iogiukXU0d.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/eDyOl6rEuVOucYR_D6iogiukXU0p.xml b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/eDyOl6rEuVOucYR_D6iogiukXU0p.xml new file mode 100644 index 0000000..b5b34ac --- /dev/null +++ b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/eDyOl6rEuVOucYR_D6iogiukXU0p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/oBdTHGBwsy9mdLBLqTf4qrO3OgUd.xml b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/oBdTHGBwsy9mdLBLqTf4qrO3OgUd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/oBdTHGBwsy9mdLBLqTf4qrO3OgUd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/oBdTHGBwsy9mdLBLqTf4qrO3OgUp.xml b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/oBdTHGBwsy9mdLBLqTf4qrO3OgUp.xml new file mode 100644 index 0000000..6260d4b --- /dev/null +++ b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/oBdTHGBwsy9mdLBLqTf4qrO3OgUp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/q72DRlja6oz95_3ufhCRCr2JQ5Qd.xml b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/q72DRlja6oz95_3ufhCRCr2JQ5Qd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/q72DRlja6oz95_3ufhCRCr2JQ5Qd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/q72DRlja6oz95_3ufhCRCr2JQ5Qp.xml b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/q72DRlja6oz95_3ufhCRCr2JQ5Qp.xml new file mode 100644 index 0000000..640c955 --- /dev/null +++ b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/q72DRlja6oz95_3ufhCRCr2JQ5Qp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/u6SYVnPwrg97eiGyp5phLZfATsYd.xml b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/u6SYVnPwrg97eiGyp5phLZfATsYd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/u6SYVnPwrg97eiGyp5phLZfATsYd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/u6SYVnPwrg97eiGyp5phLZfATsYp.xml b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/u6SYVnPwrg97eiGyp5phLZfATsYp.xml new file mode 100644 index 0000000..3b09c20 --- /dev/null +++ b/resources/project/gZEyOulxWBf_r9MGlsJJ-P82NOU/u6SYVnPwrg97eiGyp5phLZfATsYp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/iMwdHOXOBiBXhnA_li8gtEJVTjc/RMvf4mEDuznAOqU6SKNmIWErfxgd.xml b/resources/project/iMwdHOXOBiBXhnA_li8gtEJVTjc/RMvf4mEDuznAOqU6SKNmIWErfxgd.xml new file mode 100644 index 0000000..7a6326b --- /dev/null +++ b/resources/project/iMwdHOXOBiBXhnA_li8gtEJVTjc/RMvf4mEDuznAOqU6SKNmIWErfxgd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/iMwdHOXOBiBXhnA_li8gtEJVTjc/RMvf4mEDuznAOqU6SKNmIWErfxgp.xml b/resources/project/iMwdHOXOBiBXhnA_li8gtEJVTjc/RMvf4mEDuznAOqU6SKNmIWErfxgp.xml new file mode 100644 index 0000000..a15b379 --- /dev/null +++ b/resources/project/iMwdHOXOBiBXhnA_li8gtEJVTjc/RMvf4mEDuznAOqU6SKNmIWErfxgp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/iMwdHOXOBiBXhnA_li8gtEJVTjc/ZTr3GAe6p03ZVs2FdKKE0JsiFMQd.xml b/resources/project/iMwdHOXOBiBXhnA_li8gtEJVTjc/ZTr3GAe6p03ZVs2FdKKE0JsiFMQd.xml new file mode 100644 index 0000000..7a6326b --- /dev/null +++ b/resources/project/iMwdHOXOBiBXhnA_li8gtEJVTjc/ZTr3GAe6p03ZVs2FdKKE0JsiFMQd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/iMwdHOXOBiBXhnA_li8gtEJVTjc/ZTr3GAe6p03ZVs2FdKKE0JsiFMQp.xml b/resources/project/iMwdHOXOBiBXhnA_li8gtEJVTjc/ZTr3GAe6p03ZVs2FdKKE0JsiFMQp.xml new file mode 100644 index 0000000..31a64a5 --- /dev/null +++ b/resources/project/iMwdHOXOBiBXhnA_li8gtEJVTjc/ZTr3GAe6p03ZVs2FdKKE0JsiFMQp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/iMwdHOXOBiBXhnA_li8gtEJVTjc/uIbyU9dPEHKvxjdwx5pD9PDDCZYd.xml b/resources/project/iMwdHOXOBiBXhnA_li8gtEJVTjc/uIbyU9dPEHKvxjdwx5pD9PDDCZYd.xml new file mode 100644 index 0000000..a75f7a8 --- /dev/null +++ b/resources/project/iMwdHOXOBiBXhnA_li8gtEJVTjc/uIbyU9dPEHKvxjdwx5pD9PDDCZYd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/iMwdHOXOBiBXhnA_li8gtEJVTjc/uIbyU9dPEHKvxjdwx5pD9PDDCZYp.xml b/resources/project/iMwdHOXOBiBXhnA_li8gtEJVTjc/uIbyU9dPEHKvxjdwx5pD9PDDCZYp.xml new file mode 100644 index 0000000..842de6a --- /dev/null +++ b/resources/project/iMwdHOXOBiBXhnA_li8gtEJVTjc/uIbyU9dPEHKvxjdwx5pD9PDDCZYp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/49hEt7xc-yV109-DLI01XSb5oAUd.xml b/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/49hEt7xc-yV109-DLI01XSb5oAUd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/49hEt7xc-yV109-DLI01XSb5oAUd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/49hEt7xc-yV109-DLI01XSb5oAUp.xml b/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/49hEt7xc-yV109-DLI01XSb5oAUp.xml new file mode 100644 index 0000000..3eb6641 --- /dev/null +++ b/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/49hEt7xc-yV109-DLI01XSb5oAUp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/71slgtYMdvtDd-aCg1j37m77sBQd.xml b/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/71slgtYMdvtDd-aCg1j37m77sBQd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/71slgtYMdvtDd-aCg1j37m77sBQd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/71slgtYMdvtDd-aCg1j37m77sBQp.xml b/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/71slgtYMdvtDd-aCg1j37m77sBQp.xml new file mode 100644 index 0000000..01cb34e --- /dev/null +++ b/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/71slgtYMdvtDd-aCg1j37m77sBQp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/QBdt0OfZFDNvrKtB0lIq-wHjnf4d.xml b/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/QBdt0OfZFDNvrKtB0lIq-wHjnf4d.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/QBdt0OfZFDNvrKtB0lIq-wHjnf4d.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/QBdt0OfZFDNvrKtB0lIq-wHjnf4p.xml b/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/QBdt0OfZFDNvrKtB0lIq-wHjnf4p.xml new file mode 100644 index 0000000..989e27c --- /dev/null +++ b/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/QBdt0OfZFDNvrKtB0lIq-wHjnf4p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/bZkRvzxrhH4veiPi3nwMKeBp52gd.xml b/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/bZkRvzxrhH4veiPi3nwMKeBp52gd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/bZkRvzxrhH4veiPi3nwMKeBp52gd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/bZkRvzxrhH4veiPi3nwMKeBp52gp.xml b/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/bZkRvzxrhH4veiPi3nwMKeBp52gp.xml new file mode 100644 index 0000000..036032e --- /dev/null +++ b/resources/project/lUEE6oMS266pXRAZlg3smfxXDbg/bZkRvzxrhH4veiPi3nwMKeBp52gp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/p2B2kuKn-TR4inf0L2-zoGElvj0/0kK47cOHwsW7a1GaaqpQDigXMNUd.xml b/resources/project/p2B2kuKn-TR4inf0L2-zoGElvj0/0kK47cOHwsW7a1GaaqpQDigXMNUd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/p2B2kuKn-TR4inf0L2-zoGElvj0/0kK47cOHwsW7a1GaaqpQDigXMNUd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/p2B2kuKn-TR4inf0L2-zoGElvj0/0kK47cOHwsW7a1GaaqpQDigXMNUp.xml b/resources/project/p2B2kuKn-TR4inf0L2-zoGElvj0/0kK47cOHwsW7a1GaaqpQDigXMNUp.xml new file mode 100644 index 0000000..01cb34e --- /dev/null +++ b/resources/project/p2B2kuKn-TR4inf0L2-zoGElvj0/0kK47cOHwsW7a1GaaqpQDigXMNUp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/p2B2kuKn-TR4inf0L2-zoGElvj0/geuseqfzde5lmCB2PlA6wD238ucd.xml b/resources/project/p2B2kuKn-TR4inf0L2-zoGElvj0/geuseqfzde5lmCB2PlA6wD238ucd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/p2B2kuKn-TR4inf0L2-zoGElvj0/geuseqfzde5lmCB2PlA6wD238ucd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/p2B2kuKn-TR4inf0L2-zoGElvj0/geuseqfzde5lmCB2PlA6wD238ucp.xml b/resources/project/p2B2kuKn-TR4inf0L2-zoGElvj0/geuseqfzde5lmCB2PlA6wD238ucp.xml new file mode 100644 index 0000000..9c44b89 --- /dev/null +++ b/resources/project/p2B2kuKn-TR4inf0L2-zoGElvj0/geuseqfzde5lmCB2PlA6wD238ucp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/-kvj53q_l7Lhz3DXOqqQqn6H9Y8p.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/-kvj53q_l7Lhz3DXOqqQqn6H9Y8p.xml deleted file mode 100644 index 287f4a1..0000000 --- a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/-kvj53q_l7Lhz3DXOqqQqn6H9Y8p.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/1pYehALnaCNxtxsVT8HUsm31wjop.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/1pYehALnaCNxtxsVT8HUsm31wjop.xml deleted file mode 100644 index 952d96b..0000000 --- a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/1pYehALnaCNxtxsVT8HUsm31wjop.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/2zjcQkVJSJ_AwC9M8R9BTSESRzcd.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/2zjcQkVJSJ_AwC9M8R9BTSESRzcd.xml new file mode 100644 index 0000000..a75f7a8 --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/2zjcQkVJSJ_AwC9M8R9BTSESRzcd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/2zjcQkVJSJ_AwC9M8R9BTSESRzcp.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/2zjcQkVJSJ_AwC9M8R9BTSESRzcp.xml new file mode 100644 index 0000000..58cd85b --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/2zjcQkVJSJ_AwC9M8R9BTSESRzcp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/BjxNC43HIPP8KZwg_cceb68ikkAd.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/BjxNC43HIPP8KZwg_cceb68ikkAd.xml new file mode 100644 index 0000000..a75f7a8 --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/BjxNC43HIPP8KZwg_cceb68ikkAd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/BjxNC43HIPP8KZwg_cceb68ikkAp.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/BjxNC43HIPP8KZwg_cceb68ikkAp.xml new file mode 100644 index 0000000..ea866dd --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/BjxNC43HIPP8KZwg_cceb68ikkAp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/GKJsEpq9HmT2JOvWOg3ZiDtMKEId.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/GKJsEpq9HmT2JOvWOg3ZiDtMKEId.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/GKJsEpq9HmT2JOvWOg3ZiDtMKEId.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/GKJsEpq9HmT2JOvWOg3ZiDtMKEIp.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/GKJsEpq9HmT2JOvWOg3ZiDtMKEIp.xml new file mode 100644 index 0000000..6cd4da7 --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/GKJsEpq9HmT2JOvWOg3ZiDtMKEIp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/I-dDyJ1p--Q0ihIJ8NFdLVLQLTUd.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/I-dDyJ1p--Q0ihIJ8NFdLVLQLTUd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/I-dDyJ1p--Q0ihIJ8NFdLVLQLTUd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/I-dDyJ1p--Q0ihIJ8NFdLVLQLTUp.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/I-dDyJ1p--Q0ihIJ8NFdLVLQLTUp.xml new file mode 100644 index 0000000..a9c1803 --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/I-dDyJ1p--Q0ihIJ8NFdLVLQLTUp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/KocSmEw1PpelhlG7ZNeMUdHVtywd.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/KocSmEw1PpelhlG7ZNeMUdHVtywd.xml new file mode 100644 index 0000000..7a6326b --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/KocSmEw1PpelhlG7ZNeMUdHVtywd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/KocSmEw1PpelhlG7ZNeMUdHVtywp.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/KocSmEw1PpelhlG7ZNeMUdHVtywp.xml new file mode 100644 index 0000000..d262f87 --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/KocSmEw1PpelhlG7ZNeMUdHVtywp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/TMK4UzWHdRLhy_w-CHt9y11Q8XAd.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/TMK4UzWHdRLhy_w-CHt9y11Q8XAd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/TMK4UzWHdRLhy_w-CHt9y11Q8XAd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/TMK4UzWHdRLhy_w-CHt9y11Q8XAp.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/TMK4UzWHdRLhy_w-CHt9y11Q8XAp.xml new file mode 100644 index 0000000..77329db --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/TMK4UzWHdRLhy_w-CHt9y11Q8XAp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/ZN2RlSIbyWXhOxbxxI4hOawbMD4d.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/ZN2RlSIbyWXhOxbxxI4hOawbMD4d.xml new file mode 100644 index 0000000..a75f7a8 --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/ZN2RlSIbyWXhOxbxxI4hOawbMD4d.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/ZN2RlSIbyWXhOxbxxI4hOawbMD4p.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/ZN2RlSIbyWXhOxbxxI4hOawbMD4p.xml new file mode 100644 index 0000000..8e01b55 --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/ZN2RlSIbyWXhOxbxxI4hOawbMD4p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/ZdVxxv9BsNz7MGUxtEc6Pq3qh1Md.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/ZdVxxv9BsNz7MGUxtEc6Pq3qh1Md.xml new file mode 100644 index 0000000..a75f7a8 --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/ZdVxxv9BsNz7MGUxtEc6Pq3qh1Md.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/ZdVxxv9BsNz7MGUxtEc6Pq3qh1Mp.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/ZdVxxv9BsNz7MGUxtEc6Pq3qh1Mp.xml new file mode 100644 index 0000000..a62ce64 --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/ZdVxxv9BsNz7MGUxtEc6Pq3qh1Mp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/iMwdHOXOBiBXhnA_li8gtEJVTjcd.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/iMwdHOXOBiBXhnA_li8gtEJVTjcd.xml new file mode 100644 index 0000000..a75f7a8 --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/iMwdHOXOBiBXhnA_li8gtEJVTjcd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/iMwdHOXOBiBXhnA_li8gtEJVTjcp.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/iMwdHOXOBiBXhnA_li8gtEJVTjcp.xml new file mode 100644 index 0000000..a4a8be3 --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/iMwdHOXOBiBXhnA_li8gtEJVTjcp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/qD-kr16wmwlzR-nIg1IG_vvRrWkd.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/qD-kr16wmwlzR-nIg1IG_vvRrWkd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/qD-kr16wmwlzR-nIg1IG_vvRrWkd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/qD-kr16wmwlzR-nIg1IG_vvRrWkp.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/qD-kr16wmwlzR-nIg1IG_vvRrWkp.xml new file mode 100644 index 0000000..603491d --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/qD-kr16wmwlzR-nIg1IG_vvRrWkp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/rnpMu7jn2QWt_rQcz8FJ-MxGzVId.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/rnpMu7jn2QWt_rQcz8FJ-MxGzVId.xml new file mode 100644 index 0000000..7a6326b --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/rnpMu7jn2QWt_rQcz8FJ-MxGzVId.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/rnpMu7jn2QWt_rQcz8FJ-MxGzVIp.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/rnpMu7jn2QWt_rQcz8FJ-MxGzVIp.xml new file mode 100644 index 0000000..218c5b5 --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/rnpMu7jn2QWt_rQcz8FJ-MxGzVIp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/trBOSMFt-ZFz0tI8PrpBhVjGM5Md.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/trBOSMFt-ZFz0tI8PrpBhVjGM5Md.xml new file mode 100644 index 0000000..a75f7a8 --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/trBOSMFt-ZFz0tI8PrpBhVjGM5Md.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/trBOSMFt-ZFz0tI8PrpBhVjGM5Mp.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/trBOSMFt-ZFz0tI8PrpBhVjGM5Mp.xml new file mode 100644 index 0000000..078dc96 --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/trBOSMFt-ZFz0tI8PrpBhVjGM5Mp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/zp0wS8F9EP0ARGsuyU8i2Z0DMsQp.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/zp0wS8F9EP0ARGsuyU8i2Z0DMsQp.xml deleted file mode 100644 index 65c7868..0000000 --- a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/zp0wS8F9EP0ARGsuyU8i2Z0DMsQp.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/resources/project/root/6xhH2l9GP9loT6TdFn_Mo65sDHgp.xml b/resources/project/root/6xhH2l9GP9loT6TdFn_Mo65sDHgp.xml new file mode 100644 index 0000000..b1ca35e --- /dev/null +++ b/resources/project/root/6xhH2l9GP9loT6TdFn_Mo65sDHgp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/root/GiiBklLgTxteCEmomM8RCvWT0nQd.xml b/resources/project/root/GiiBklLgTxteCEmomM8RCvWT0nQd.xml index e794403..438f9d5 100644 --- a/resources/project/root/GiiBklLgTxteCEmomM8RCvWT0nQd.xml +++ b/resources/project/root/GiiBklLgTxteCEmomM8RCvWT0nQd.xml @@ -1,2 +1,2 @@ - - \ No newline at end of file + + \ No newline at end of file diff --git a/resources/project/root/HoHDHQ_WvHAAKj5aJOrvrg_vpt8p.xml b/resources/project/root/HoHDHQ_WvHAAKj5aJOrvrg_vpt8p.xml new file mode 100644 index 0000000..ec7cfd3 --- /dev/null +++ b/resources/project/root/HoHDHQ_WvHAAKj5aJOrvrg_vpt8p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/root/LUgSFhI3RPozNzNcutxrczVe6f0p.xml b/resources/project/root/LUgSFhI3RPozNzNcutxrczVe6f0p.xml new file mode 100644 index 0000000..cfaf73d --- /dev/null +++ b/resources/project/root/LUgSFhI3RPozNzNcutxrczVe6f0p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/root/WZRuNzqc-Db7NcQAZO8Y-R8U9ccp.xml b/resources/project/root/WZRuNzqc-Db7NcQAZO8Y-R8U9ccp.xml new file mode 100644 index 0000000..0a54bce --- /dev/null +++ b/resources/project/root/WZRuNzqc-Db7NcQAZO8Y-R8U9ccp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/uuid-366ca619-578a-4bc0-8012-bfa62d28c37f.xml b/resources/project/uuid-366ca619-578a-4bc0-8012-bfa62d28c37f.xml new file mode 100644 index 0000000..a75f7a8 --- /dev/null +++ b/resources/project/uuid-366ca619-578a-4bc0-8012-bfa62d28c37f.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file