├── .github └── workflows │ └── cicd.yaml ├── .gitignore ├── Dockerfile ├── LICENSE ├── README.md ├── app.py ├── config └── config.yaml ├── data └── winequality-red.csv ├── main.py ├── params.yaml ├── requirements.txt ├── research ├── 01_data_ingestion.ipynb ├── 02_data_validation.ipynb ├── 03_data_transformation.ipynb ├── 04_model_trainer.ipynb ├── 05_model_evaluation.ipynb ├── Expriement.ipynb ├── test.yaml └── trials.ipynb ├── schema.yaml ├── setup.py ├── src └── mlProject │ ├── __init__.py │ ├── components │ ├── __init__.py │ ├── data_ingestion.py │ ├── data_transformation.py │ ├── data_validation.py │ ├── model_evaluation.py │ └── model_trainer.py │ ├── config │ ├── __init__.py │ └── configuration.py │ ├── constants │ └── __init__.py │ ├── entity │ ├── __init__.py │ └── config_entity.py │ ├── pipeline │ ├── __init__.py │ ├── prediction.py │ ├── stage_01_data_ingestion.py │ ├── stage_02_data_validation.py │ ├── stage_03_data_transformation.py │ ├── stage_04_model_trainer.py │ └── stage_05_model_evaluation.py │ └── utils │ ├── __init__.py │ └── common.py ├── static ├── assets │ ├── favicon.ico │ └── img │ │ └── form-v9.jpg ├── css │ └── styles.css ├── css2 │ ├── nunito-font.css │ └── style.css └── js │ └── scripts.js ├── template.py └── templates ├── index.html └── results.html /.github/workflows/cicd.yaml: -------------------------------------------------------------------------------- 1 | name: workflow 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | paths-ignore: 8 | - 'README.md' 9 | 10 | permissions: 11 | id-token: write 12 | contents: read 13 | 14 | jobs: 15 | integration: 16 | name: Continuous Integration 17 | runs-on: ubuntu-latest 18 | steps: 19 | - name: Checkout Code 20 | uses: actions/checkout@v3 21 | 22 | - name: Lint code 23 | run: echo "Linting repository" 24 | 25 | - name: Run unit tests 26 | run: echo "Running unit tests" 27 | 28 | build-and-push-ecr-image: 29 | name: Continuous Delivery 30 | needs: integration 31 | runs-on: ubuntu-latest 32 | steps: 33 | - name: Checkout Code 34 | uses: actions/checkout@v3 35 | 36 | - name: Install Utilities 37 | run: | 38 | sudo apt-get update 39 | sudo apt-get install -y jq unzip 40 | - name: Configure AWS credentials 41 | uses: aws-actions/configure-aws-credentials@v1 42 | with: 43 | aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} 44 | aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} 45 | aws-region: ${{ secrets.AWS_REGION }} 46 | 47 | - name: Login to Amazon ECR 48 | id: login-ecr 49 | uses: aws-actions/amazon-ecr-login@v1 50 | 51 | - name: Build, tag, and push image to Amazon ECR 52 | id: build-image 53 | env: 54 | ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} 55 | ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY_NAME }} 56 | IMAGE_TAG: latest 57 | run: | 58 | # Build a docker container and 59 | # push it to ECR so that it can 60 | # be deployed to ECS. 61 | docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . 62 | docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG 63 | echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" 64 | 65 | 66 | Continuous-Deployment: 67 | needs: build-and-push-ecr-image 68 | runs-on: self-hosted 69 | steps: 70 | - name: Checkout 71 | uses: actions/checkout@v3 72 | 73 | - name: Configure AWS credentials 74 | uses: aws-actions/configure-aws-credentials@v1 75 | with: 76 | aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} 77 | aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} 78 | aws-region: ${{ secrets.AWS_REGION }} 79 | 80 | - name: Login to Amazon ECR 81 | id: login-ecr 82 | uses: aws-actions/amazon-ecr-login@v1 83 | 84 | 85 | - name: Pull latest images 86 | run: | 87 | docker pull ${{secrets.AWS_ECR_LOGIN_URI}}/${{ secrets.ECR_REPOSITORY_NAME }}:latest 88 | 89 | - name: Stop and remove container if running 90 | run: | 91 | docker ps -q --filter "name=cnncls" | grep -q . && docker stop cnncls && docker rm -fv cnncls 92 | 93 | - name: Run Docker Image to serve users 94 | run: | 95 | docker run -d -p 8080:8080 --name=cnncls -e 'AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }}' -e 'AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }}' -e 'AWS_REGION=${{ secrets.AWS_REGION }}' ${{secrets.AWS_ECR_LOGIN_URI}}/${{ secrets.ECR_REPOSITORY_NAME }}:latest 96 | - name: Clean previous images and containers 97 | run: | 98 | docker system prune -f -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | artifacts/* 6 | 7 | # C extensions 8 | *.so 9 | 10 | # Distribution / packaging 11 | .Python 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | wheels/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | cover/ 54 | 55 | # Translations 56 | *.mo 57 | *.pot 58 | 59 | # Django stuff: 60 | *.log 61 | local_settings.py 62 | db.sqlite3 63 | db.sqlite3-journal 64 | 65 | # Flask stuff: 66 | instance/ 67 | .webassets-cache 68 | 69 | # Scrapy stuff: 70 | .scrapy 71 | 72 | # Sphinx documentation 73 | docs/_build/ 74 | 75 | # PyBuilder 76 | .pybuilder/ 77 | target/ 78 | 79 | # Jupyter Notebook 80 | .ipynb_checkpoints 81 | 82 | # IPython 83 | profile_default/ 84 | ipython_config.py 85 | 86 | # pyenv 87 | # For a library or package, you might want to ignore these files since the code is 88 | # intended to run in multiple environments; otherwise, check them in: 89 | # .python-version 90 | 91 | # pipenv 92 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 93 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 94 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 95 | # install all needed dependencies. 96 | #Pipfile.lock 97 | 98 | # UV 99 | # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control. 100 | # This is especially recommended for binary packages to ensure reproducibility, and is more 101 | # commonly ignored for libraries. 102 | #uv.lock 103 | 104 | # poetry 105 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 106 | # This is especially recommended for binary packages to ensure reproducibility, and is more 107 | # commonly ignored for libraries. 108 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 109 | #poetry.lock 110 | 111 | # pdm 112 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. 113 | #pdm.lock 114 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it 115 | # in version control. 116 | # https://pdm.fming.dev/latest/usage/project/#working-with-version-control 117 | .pdm.toml 118 | .pdm-python 119 | .pdm-build/ 120 | 121 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm 122 | __pypackages__/ 123 | 124 | # Celery stuff 125 | celerybeat-schedule 126 | celerybeat.pid 127 | 128 | # SageMath parsed files 129 | *.sage.py 130 | 131 | # Environments 132 | .env 133 | .venv 134 | env/ 135 | venv/ 136 | ENV/ 137 | env.bak/ 138 | venv.bak/ 139 | 140 | # Spyder project settings 141 | .spyderproject 142 | .spyproject 143 | 144 | # Rope project settings 145 | .ropeproject 146 | 147 | # mkdocs documentation 148 | /site 149 | 150 | # mypy 151 | .mypy_cache/ 152 | .dmypy.json 153 | dmypy.json 154 | 155 | # Pyre type checker 156 | .pyre/ 157 | 158 | # pytype static type analyzer 159 | .pytype/ 160 | 161 | # Cython debug symbols 162 | cython_debug/ 163 | 164 | # PyCharm 165 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can 166 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore 167 | # and can be added to the global gitignore or merged into this file. For a more nuclear 168 | # option (not recommended) you can uncomment the following to ignore the entire idea folder. 169 | #.idea/ 170 | 171 | # PyPI configuration file 172 | .pypirc 173 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.8-slim-buster 2 | 3 | WORKDIR /app 4 | 5 | COPY . /app 6 | 7 | RUN pip install -r requirements.txt 8 | 9 | CMD ["python3", "app.py"] -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 BAPPY AHMED 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # End-to-End-Machine-Learning-Pipeline 2 | 3 | 4 | ## Workflows 5 | 6 | 1. Update config.yaml 7 | 2. Update schema.yaml 8 | 3. Update params.yaml 9 | 4. Update the entity 10 | 5. Update the configuration manager in src config 11 | 6. Update the components 12 | 7. Update the pipeline 13 | 8. Update the main.py 14 | 9. Update the app.py 15 | 16 | 17 | 18 | # How to run? 19 | ### STEPS: 20 | 21 | Clone the repository 22 | 23 | ```bash 24 | https://github.com/entbappy/End-to-End-Machine-Learning-Pipeline 25 | ``` 26 | ### STEP 01- Create a conda environment after opening the repository 27 | 28 | ```bash 29 | conda create -n mlproj python=3.8 -y 30 | ``` 31 | 32 | ```bash 33 | conda activate mlproj 34 | ``` 35 | 36 | 37 | ### STEP 02- install the requirements 38 | ```bash 39 | pip install -r requirements.txt 40 | ``` 41 | 42 | 43 | ```bash 44 | python app.py 45 | ``` 46 | 47 | 48 | 49 | # AWS-CICD-Deployment-with-Github-Actions 50 | 51 | ## 1. Login to AWS console. 52 | 53 | ## 2. Create IAM user for deployment 54 | 55 | #with specific access 56 | 57 | 1. EC2 access : It is virtual machine 58 | 59 | 2. ECR: Elastic Container registry to save your docker image in aws 60 | 61 | 62 | #Description: About the deployment 63 | 64 | 1. Build docker image of the source code 65 | 66 | 2. Push your docker image to ECR 67 | 68 | 3. Launch Your EC2 69 | 70 | 4. Pull Your image from ECR in EC2 71 | 72 | 5. Lauch your docker image in EC2 73 | 74 | #Policy: 75 | 76 | 1. AmazonEC2ContainerRegistryFullAccess 77 | 78 | 2. AmazonEC2FullAccess 79 | 80 | 81 | ## 3. Create ECR repo to store/save docker image 82 | - Save the URI: 315865595366.dkr.ecr.us-east-1.amazonaws.com/winerepo 83 | 84 | 85 | ## 4. Create EC2 machine (Ubuntu) 86 | 87 | ## 5. Open EC2 and Install docker in EC2 Machine: 88 | 89 | 90 | #optinal 91 | 92 | sudo apt-get update -y 93 | 94 | sudo apt-get upgrade 95 | 96 | #required 97 | 98 | curl -fsSL https://get.docker.com -o get-docker.sh 99 | 100 | sudo sh get-docker.sh 101 | 102 | sudo usermod -aG docker ubuntu 103 | 104 | newgrp docker 105 | 106 | # 6. Configure EC2 as self-hosted runner: 107 | setting>actions>runner>new self hosted runner> choose os> then run command one by one 108 | 109 | 110 | # 7. Setup github secrets: 111 | 112 | AWS_ACCESS_KEY_ID= 113 | 114 | AWS_SECRET_ACCESS_KEY= 115 | 116 | AWS_REGION = us-east-1 117 | 118 | AWS_ECR_LOGIN_URI = demo>> 566373416292.dkr.ecr.ap-south-1.amazonaws.com 119 | 120 | ECR_REPOSITORY_NAME = simple-app 121 | -------------------------------------------------------------------------------- /app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template, request 2 | import os 3 | import numpy as np 4 | import pandas as pd 5 | from mlProject.pipeline.prediction import PredictionPipeline 6 | 7 | 8 | app = Flask(__name__) # initializing a flask app 9 | 10 | 11 | @app.route('/',methods=['GET']) # route to display the home page 12 | def homePage(): 13 | return render_template("index.html") 14 | 15 | 16 | @app.route('/train',methods=['GET']) # route to train the pipeline 17 | def training(): 18 | os.system("python main.py") 19 | return "Training Successful!" 20 | 21 | 22 | @app.route('/predict',methods=['POST','GET']) # route to show the predictions in a web UI 23 | def index(): 24 | if request.method == 'POST': 25 | try: 26 | # reading the inputs given by the user 27 | fixed_acidity =float(request.form['fixed_acidity']) 28 | volatile_acidity =float(request.form['volatile_acidity']) 29 | citric_acid =float(request.form['citric_acid']) 30 | residual_sugar =float(request.form['residual_sugar']) 31 | chlorides =float(request.form['chlorides']) 32 | free_sulfur_dioxide =float(request.form['free_sulfur_dioxide']) 33 | total_sulfur_dioxide =float(request.form['total_sulfur_dioxide']) 34 | density =float(request.form['density']) 35 | pH =float(request.form['pH']) 36 | sulphates =float(request.form['sulphates']) 37 | alcohol =float(request.form['alcohol']) 38 | 39 | 40 | data = [fixed_acidity,volatile_acidity,citric_acid,residual_sugar,chlorides,free_sulfur_dioxide,total_sulfur_dioxide,density,pH,sulphates,alcohol] 41 | data = np.array(data).reshape(1, 11) 42 | 43 | obj = PredictionPipeline() 44 | predict = obj.predict(data) 45 | 46 | return render_template('results.html', prediction = str(predict)) 47 | 48 | except Exception as e: 49 | print('The Exception message is: ',e) 50 | return 'something is wrong' 51 | 52 | else: 53 | return render_template('index.html') 54 | 55 | 56 | 57 | if __name__ == "__main__": 58 | app.run(host="0.0.0.0", port = 8080, debug=True) 59 | -------------------------------------------------------------------------------- /config/config.yaml: -------------------------------------------------------------------------------- 1 | artifacts_root: artifacts 2 | 3 | 4 | data_ingestion: 5 | root_dir: artifacts/data_ingestion 6 | source_URL: https://github.com/entbappy/Branching-tutorial/raw/master/winequality-data.zip 7 | local_data_file: artifacts/data_ingestion/data.zip 8 | unzip_dir: artifacts/data_ingestion 9 | 10 | 11 | data_validation: 12 | root_dir: artifacts/data_validation 13 | unzip_data_dir: artifacts/data_ingestion/winequality-red.csv 14 | STATUS_FILE: artifacts/data_validation/status.txt 15 | 16 | 17 | 18 | data_transformation: 19 | root_dir: artifacts/data_transformation 20 | data_path: artifacts/data_ingestion/winequality-red.csv 21 | 22 | 23 | 24 | model_trainer: 25 | root_dir: artifacts/model_trainer 26 | train_data_path: artifacts/data_transformation/train.csv 27 | test_data_path: artifacts/data_transformation/test.csv 28 | model_name: model.joblib 29 | 30 | 31 | 32 | 33 | model_evaluation: 34 | root_dir: artifacts/model_evaluation 35 | test_data_path: artifacts/data_transformation/test.csv 36 | model_path: artifacts/model_trainer/model.joblib 37 | metric_file_name: artifacts/model_evaluation/metrics.json 38 | 39 | 40 | -------------------------------------------------------------------------------- /data/winequality-red.csv: -------------------------------------------------------------------------------- 1 | fixed acidity,volatile acidity,citric acid,residual sugar,chlorides,free sulfur dioxide,total sulfur dioxide,density,pH,sulphates,alcohol,quality 2 | 7.4,0.7,0.0,1.9,0.076,11.0,34.0,0.9978,3.51,0.56,9.4,5 3 | 7.8,0.88,0.0,2.6,0.098,25.0,67.0,0.9968,3.2,0.68,9.8,5 4 | 7.8,0.76,0.04,2.3,0.092,15.0,54.0,0.997,3.26,0.65,9.8,5 5 | 11.2,0.28,0.56,1.9,0.075,17.0,60.0,0.998,3.16,0.58,9.8,6 6 | 7.4,0.7,0.0,1.9,0.076,11.0,34.0,0.9978,3.51,0.56,9.4,5 7 | 7.4,0.66,0.0,1.8,0.075,13.0,40.0,0.9978,3.51,0.56,9.4,5 8 | 7.9,0.6,0.06,1.6,0.069,15.0,59.0,0.9964,3.3,0.46,9.4,5 9 | 7.3,0.65,0.0,1.2,0.065,15.0,21.0,0.9946,3.39,0.47,10.0,7 10 | 7.8,0.58,0.02,2.0,0.073,9.0,18.0,0.9968,3.36,0.57,9.5,7 11 | 7.5,0.5,0.36,6.1,0.071,17.0,102.0,0.9978,3.35,0.8,10.5,5 12 | 6.7,0.58,0.08,1.8,0.09699999999999999,15.0,65.0,0.9959,3.28,0.54,9.2,5 13 | 7.5,0.5,0.36,6.1,0.071,17.0,102.0,0.9978,3.35,0.8,10.5,5 14 | 5.6,0.615,0.0,1.6,0.08900000000000001,16.0,59.0,0.9943,3.58,0.52,9.9,5 15 | 7.8,0.61,0.29,1.6,0.114,9.0,29.0,0.9974,3.26,1.56,9.1,5 16 | 8.9,0.62,0.18,3.8,0.17600000000000002,52.0,145.0,0.9986,3.16,0.88,9.2,5 17 | 8.9,0.62,0.19,3.9,0.17,51.0,148.0,0.9986,3.17,0.93,9.2,5 18 | 8.5,0.28,0.56,1.8,0.092,35.0,103.0,0.9969,3.3,0.75,10.5,7 19 | 8.1,0.56,0.28,1.7,0.368,16.0,56.0,0.9968,3.11,1.28,9.3,5 20 | 7.4,0.59,0.08,4.4,0.086,6.0,29.0,0.9974,3.38,0.5,9.0,4 21 | 7.9,0.32,0.51,1.8,0.341,17.0,56.0,0.9969,3.04,1.08,9.2,6 22 | 8.9,0.22,0.48,1.8,0.077,29.0,60.0,0.9968,3.39,0.53,9.4,6 23 | 7.6,0.39,0.31,2.3,0.08199999999999999,23.0,71.0,0.9982,3.52,0.65,9.7,5 24 | 7.9,0.43,0.21,1.6,0.106,10.0,37.0,0.9966,3.17,0.91,9.5,5 25 | 8.5,0.49,0.11,2.3,0.084,9.0,67.0,0.9968,3.17,0.53,9.4,5 26 | 6.9,0.4,0.14,2.4,0.085,21.0,40.0,0.9968,3.43,0.63,9.7,6 27 | 6.3,0.39,0.16,1.4,0.08,11.0,23.0,0.9955,3.34,0.56,9.3,5 28 | 7.6,0.41,0.24,1.8,0.08,4.0,11.0,0.9962,3.28,0.59,9.5,5 29 | 7.9,0.43,0.21,1.6,0.106,10.0,37.0,0.9966,3.17,0.91,9.5,5 30 | 7.1,0.71,0.0,1.9,0.08,14.0,35.0,0.9972,3.47,0.55,9.4,5 31 | 7.8,0.645,0.0,2.0,0.08199999999999999,8.0,16.0,0.9964,3.38,0.59,9.8,6 32 | 6.7,0.675,0.07,2.4,0.08900000000000001,17.0,82.0,0.9958,3.35,0.54,10.1,5 33 | 6.9,0.685,0.0,2.5,0.105,22.0,37.0,0.9966,3.46,0.57,10.6,6 34 | 8.3,0.655,0.12,2.3,0.083,15.0,113.0,0.9966,3.17,0.66,9.8,5 35 | 6.9,0.605,0.12,10.7,0.073,40.0,83.0,0.9993,3.45,0.52,9.4,6 36 | 5.2,0.32,0.25,1.8,0.10300000000000001,13.0,50.0,0.9957,3.38,0.55,9.2,5 37 | 7.8,0.645,0.0,5.5,0.086,5.0,18.0,0.9986,3.4,0.55,9.6,6 38 | 7.8,0.6,0.14,2.4,0.086,3.0,15.0,0.9975,3.42,0.6,10.8,6 39 | 8.1,0.38,0.28,2.1,0.066,13.0,30.0,0.9968,3.23,0.73,9.7,7 40 | 5.7,1.13,0.09,1.5,0.172,7.0,19.0,0.9940000000000001,3.5,0.48,9.8,4 41 | 7.3,0.45,0.36,5.9,0.07400000000000001,12.0,87.0,0.9978,3.33,0.83,10.5,5 42 | 7.3,0.45,0.36,5.9,0.07400000000000001,12.0,87.0,0.9978,3.33,0.83,10.5,5 43 | 8.8,0.61,0.3,2.8,0.08800000000000001,17.0,46.0,0.9976,3.26,0.51,9.3,4 44 | 7.5,0.49,0.2,2.6,0.332,8.0,14.0,0.9968,3.21,0.9,10.5,6 45 | 8.1,0.66,0.22,2.2,0.069,9.0,23.0,0.9968,3.3,1.2,10.3,5 46 | 6.8,0.67,0.02,1.8,0.05,5.0,11.0,0.9962,3.48,0.52,9.5,5 47 | 4.6,0.52,0.15,2.1,0.054000000000000006,8.0,65.0,0.9934,3.9,0.56,13.1,4 48 | 7.7,0.935,0.43,2.2,0.114,22.0,114.0,0.997,3.25,0.73,9.2,5 49 | 8.7,0.29,0.52,1.6,0.113,12.0,37.0,0.9969,3.25,0.58,9.5,5 50 | 6.4,0.4,0.23,1.6,0.066,5.0,12.0,0.9958,3.34,0.56,9.2,5 51 | 5.6,0.31,0.37,1.4,0.07400000000000001,12.0,96.0,0.9954,3.32,0.58,9.2,5 52 | 8.8,0.66,0.26,1.7,0.07400000000000001,4.0,23.0,0.9971,3.15,0.74,9.2,5 53 | 6.6,0.52,0.04,2.2,0.069,8.0,15.0,0.9956,3.4,0.63,9.4,6 54 | 6.6,0.5,0.04,2.1,0.068,6.0,14.0,0.9955,3.39,0.64,9.4,6 55 | 8.6,0.38,0.36,3.0,0.081,30.0,119.0,0.997,3.2,0.56,9.4,5 56 | 7.6,0.51,0.15,2.8,0.11,33.0,73.0,0.9955,3.17,0.63,10.2,6 57 | 7.7,0.62,0.04,3.8,0.084,25.0,45.0,0.9978,3.34,0.53,9.5,5 58 | 10.2,0.42,0.57,3.4,0.07,4.0,10.0,0.9971,3.04,0.63,9.6,5 59 | 7.5,0.63,0.12,5.1,0.111,50.0,110.0,0.9983,3.26,0.77,9.4,5 60 | 7.8,0.59,0.18,2.3,0.076,17.0,54.0,0.9975,3.43,0.59,10.0,5 61 | 7.3,0.39,0.31,2.4,0.07400000000000001,9.0,46.0,0.9962,3.41,0.54,9.4,6 62 | 8.8,0.4,0.4,2.2,0.079,19.0,52.0,0.998,3.44,0.64,9.2,5 63 | 7.7,0.69,0.49,1.8,0.115,20.0,112.0,0.9968,3.21,0.71,9.3,5 64 | 7.5,0.52,0.16,1.9,0.085,12.0,35.0,0.9968,3.38,0.62,9.5,7 65 | 7.0,0.735,0.05,2.0,0.081,13.0,54.0,0.9966,3.39,0.57,9.8,5 66 | 7.2,0.725,0.05,4.65,0.086,4.0,11.0,0.9962,3.41,0.39,10.9,5 67 | 7.2,0.725,0.05,4.65,0.086,4.0,11.0,0.9962,3.41,0.39,10.9,5 68 | 7.5,0.52,0.11,1.5,0.079,11.0,39.0,0.9968,3.42,0.58,9.6,5 69 | 6.6,0.705,0.07,1.6,0.076,6.0,15.0,0.9962,3.44,0.58,10.7,5 70 | 9.3,0.32,0.57,2.0,0.07400000000000001,27.0,65.0,0.9969,3.28,0.79,10.7,5 71 | 8.0,0.705,0.05,1.9,0.07400000000000001,8.0,19.0,0.9962,3.34,0.95,10.5,6 72 | 7.7,0.63,0.08,1.9,0.076,15.0,27.0,0.9967,3.32,0.54,9.5,6 73 | 7.7,0.67,0.23,2.1,0.08800000000000001,17.0,96.0,0.9962,3.32,0.48,9.5,5 74 | 7.7,0.69,0.22,1.9,0.084,18.0,94.0,0.9961,3.31,0.48,9.5,5 75 | 8.3,0.675,0.26,2.1,0.084,11.0,43.0,0.9976,3.31,0.53,9.2,4 76 | 9.7,0.32,0.54,2.5,0.094,28.0,83.0,0.9984,3.28,0.82,9.6,5 77 | 8.8,0.41,0.64,2.2,0.09300000000000001,9.0,42.0,0.9986,3.54,0.66,10.5,5 78 | 8.8,0.41,0.64,2.2,0.09300000000000001,9.0,42.0,0.9986,3.54,0.66,10.5,5 79 | 6.8,0.785,0.0,2.4,0.10400000000000001,14.0,30.0,0.9966,3.52,0.55,10.7,6 80 | 6.7,0.75,0.12,2.0,0.086,12.0,80.0,0.9958,3.38,0.52,10.1,5 81 | 8.3,0.625,0.2,1.5,0.08,27.0,119.0,0.9972,3.16,1.12,9.1,4 82 | 6.2,0.45,0.2,1.6,0.069,3.0,15.0,0.9958,3.41,0.56,9.2,5 83 | 7.8,0.43,0.7,1.9,0.46399999999999997,22.0,67.0,0.9974,3.13,1.28,9.4,5 84 | 7.4,0.5,0.47,2.0,0.086,21.0,73.0,0.997,3.36,0.57,9.1,5 85 | 7.3,0.67,0.26,1.8,0.401,16.0,51.0,0.9969,3.16,1.14,9.4,5 86 | 6.3,0.3,0.48,1.8,0.069,18.0,61.0,0.9959,3.44,0.78,10.3,6 87 | 6.9,0.55,0.15,2.2,0.076,19.0,40.0,0.9961,3.41,0.59,10.1,5 88 | 8.6,0.49,0.28,1.9,0.11,20.0,136.0,0.9972,2.93,1.95,9.9,6 89 | 7.7,0.49,0.26,1.9,0.062,9.0,31.0,0.9966,3.39,0.64,9.6,5 90 | 9.3,0.39,0.44,2.1,0.107,34.0,125.0,0.9978,3.14,1.22,9.5,5 91 | 7.0,0.62,0.08,1.8,0.076,8.0,24.0,0.9978,3.48,0.53,9.0,5 92 | 7.9,0.52,0.26,1.9,0.079,42.0,140.0,0.9964,3.23,0.54,9.5,5 93 | 8.6,0.49,0.28,1.9,0.11,20.0,136.0,0.9972,2.93,1.95,9.9,6 94 | 8.6,0.49,0.29,2.0,0.11,19.0,133.0,0.9972,2.93,1.98,9.8,5 95 | 7.7,0.49,0.26,1.9,0.062,9.0,31.0,0.9966,3.39,0.64,9.6,5 96 | 5.0,1.02,0.04,1.4,0.045,41.0,85.0,0.9938,3.75,0.48,10.5,4 97 | 4.7,0.6,0.17,2.3,0.057999999999999996,17.0,106.0,0.9932,3.85,0.6,12.9,6 98 | 6.8,0.775,0.0,3.0,0.102,8.0,23.0,0.9965,3.45,0.56,10.7,5 99 | 7.0,0.5,0.25,2.0,0.07,3.0,22.0,0.9963,3.25,0.63,9.2,5 100 | 7.6,0.9,0.06,2.5,0.079,5.0,10.0,0.9967,3.39,0.56,9.8,5 101 | 8.1,0.545,0.18,1.9,0.08,13.0,35.0,0.9972,3.3,0.59,9.0,6 102 | 8.3,0.61,0.3,2.1,0.084,11.0,50.0,0.9972,3.4,0.61,10.2,6 103 | 7.8,0.5,0.3,1.9,0.075,8.0,22.0,0.9959,3.31,0.56,10.4,6 104 | 8.1,0.545,0.18,1.9,0.08,13.0,35.0,0.9972,3.3,0.59,9.0,6 105 | 8.1,0.575,0.22,2.1,0.077,12.0,65.0,0.9967,3.29,0.51,9.2,5 106 | 7.2,0.49,0.24,2.2,0.07,5.0,36.0,0.996,3.33,0.48,9.4,5 107 | 8.1,0.575,0.22,2.1,0.077,12.0,65.0,0.9967,3.29,0.51,9.2,5 108 | 7.8,0.41,0.68,1.7,0.467,18.0,69.0,0.9973,3.08,1.31,9.3,5 109 | 6.2,0.63,0.31,1.7,0.08800000000000001,15.0,64.0,0.9969,3.46,0.79,9.3,5 110 | 8.0,0.33,0.53,2.5,0.091,18.0,80.0,0.9976,3.37,0.8,9.6,6 111 | 8.1,0.785,0.52,2.0,0.122,37.0,153.0,0.9969,3.21,0.69,9.3,5 112 | 7.8,0.56,0.19,1.8,0.10400000000000001,12.0,47.0,0.9964,3.19,0.93,9.5,5 113 | 8.4,0.62,0.09,2.2,0.084,11.0,108.0,0.9964,3.15,0.66,9.8,5 114 | 8.4,0.6,0.1,2.2,0.085,14.0,111.0,0.9964,3.15,0.66,9.8,5 115 | 10.1,0.31,0.44,2.3,0.08,22.0,46.0,0.9988,3.32,0.67,9.7,6 116 | 7.8,0.56,0.19,1.8,0.10400000000000001,12.0,47.0,0.9964,3.19,0.93,9.5,5 117 | 9.4,0.4,0.31,2.2,0.09,13.0,62.0,0.9966,3.07,0.63,10.5,6 118 | 8.3,0.54,0.28,1.9,0.077,11.0,40.0,0.9978,3.39,0.61,10.0,6 119 | 7.8,0.56,0.12,2.0,0.08199999999999999,7.0,28.0,0.997,3.37,0.5,9.4,6 120 | 8.8,0.55,0.04,2.2,0.11900000000000001,14.0,56.0,0.9962,3.21,0.6,10.9,6 121 | 7.0,0.69,0.08,1.8,0.09699999999999999,22.0,89.0,0.9959,3.34,0.54,9.2,6 122 | 7.3,1.07,0.09,1.7,0.17800000000000002,10.0,89.0,0.9962,3.3,0.57,9.0,5 123 | 8.8,0.55,0.04,2.2,0.11900000000000001,14.0,56.0,0.9962,3.21,0.6,10.9,6 124 | 7.3,0.695,0.0,2.5,0.075,3.0,13.0,0.998,3.49,0.52,9.2,5 125 | 8.0,0.71,0.0,2.6,0.08,11.0,34.0,0.9976,3.44,0.53,9.5,5 126 | 7.8,0.5,0.17,1.6,0.08199999999999999,21.0,102.0,0.996,3.39,0.48,9.5,5 127 | 9.0,0.62,0.04,1.9,0.146,27.0,90.0,0.9984,3.16,0.7,9.4,5 128 | 8.2,1.33,0.0,1.7,0.081,3.0,12.0,0.9964,3.53,0.49,10.9,5 129 | 8.1,1.33,0.0,1.8,0.08199999999999999,3.0,12.0,0.9964,3.54,0.48,10.9,5 130 | 8.0,0.59,0.16,1.8,0.065,3.0,16.0,0.9962,3.42,0.92,10.5,7 131 | 6.1,0.38,0.15,1.8,0.07200000000000001,6.0,19.0,0.9955,3.42,0.57,9.4,5 132 | 8.0,0.745,0.56,2.0,0.11800000000000001,30.0,134.0,0.9968,3.24,0.66,9.4,5 133 | 5.6,0.5,0.09,2.3,0.049,17.0,99.0,0.9937,3.63,0.63,13.0,5 134 | 5.6,0.5,0.09,2.3,0.049,17.0,99.0,0.9937,3.63,0.63,13.0,5 135 | 6.6,0.5,0.01,1.5,0.06,17.0,26.0,0.9952,3.4,0.58,9.8,6 136 | 7.9,1.04,0.05,2.2,0.084,13.0,29.0,0.9959,3.22,0.55,9.9,6 137 | 8.4,0.745,0.11,1.9,0.09,16.0,63.0,0.9965,3.19,0.82,9.6,5 138 | 8.3,0.715,0.15,1.8,0.08900000000000001,10.0,52.0,0.9968,3.23,0.77,9.5,5 139 | 7.2,0.415,0.36,2.0,0.081,13.0,45.0,0.9972,3.48,0.64,9.2,5 140 | 7.8,0.56,0.19,2.1,0.081,15.0,105.0,0.9962,3.33,0.54,9.5,5 141 | 7.8,0.56,0.19,2.0,0.081,17.0,108.0,0.9962,3.32,0.54,9.5,5 142 | 8.4,0.745,0.11,1.9,0.09,16.0,63.0,0.9965,3.19,0.82,9.6,5 143 | 8.3,0.715,0.15,1.8,0.08900000000000001,10.0,52.0,0.9968,3.23,0.77,9.5,5 144 | 5.2,0.34,0.0,1.8,0.05,27.0,63.0,0.9916,3.68,0.79,14.0,6 145 | 6.3,0.39,0.08,1.7,0.066,3.0,20.0,0.9954,3.34,0.58,9.4,5 146 | 5.2,0.34,0.0,1.8,0.05,27.0,63.0,0.9916,3.68,0.79,14.0,6 147 | 8.1,0.67,0.55,1.8,0.11699999999999999,32.0,141.0,0.9968,3.17,0.62,9.4,5 148 | 5.8,0.68,0.02,1.8,0.087,21.0,94.0,0.9944,3.54,0.52,10.0,5 149 | 7.6,0.49,0.26,1.6,0.23600000000000002,10.0,88.0,0.9968,3.11,0.8,9.3,5 150 | 6.9,0.49,0.1,2.3,0.07400000000000001,12.0,30.0,0.9959,3.42,0.58,10.2,6 151 | 8.2,0.4,0.44,2.8,0.08900000000000001,11.0,43.0,0.9975,3.53,0.61,10.5,6 152 | 7.3,0.33,0.47,2.1,0.077,5.0,11.0,0.9958,3.33,0.53,10.3,6 153 | 9.2,0.52,1.0,3.4,0.61,32.0,69.0,0.9996,2.74,2.0,9.4,4 154 | 7.5,0.6,0.03,1.8,0.095,25.0,99.0,0.995,3.35,0.54,10.1,5 155 | 7.5,0.6,0.03,1.8,0.095,25.0,99.0,0.995,3.35,0.54,10.1,5 156 | 7.1,0.43,0.42,5.5,0.07,29.0,129.0,0.9973,3.42,0.72,10.5,5 157 | 7.1,0.43,0.42,5.5,0.071,28.0,128.0,0.9973,3.42,0.71,10.5,5 158 | 7.1,0.43,0.42,5.5,0.07,29.0,129.0,0.9973,3.42,0.72,10.5,5 159 | 7.1,0.43,0.42,5.5,0.071,28.0,128.0,0.9973,3.42,0.71,10.5,5 160 | 7.1,0.68,0.0,2.2,0.073,12.0,22.0,0.9969,3.48,0.5,9.3,5 161 | 6.8,0.6,0.18,1.9,0.079,18.0,86.0,0.9968,3.59,0.57,9.3,6 162 | 7.6,0.95,0.03,2.0,0.09,7.0,20.0,0.9959,3.2,0.56,9.6,5 163 | 7.6,0.68,0.02,1.3,0.07200000000000001,9.0,20.0,0.9965,3.17,1.08,9.2,4 164 | 7.8,0.53,0.04,1.7,0.076,17.0,31.0,0.9964,3.33,0.56,10.0,6 165 | 7.4,0.6,0.26,7.3,0.07,36.0,121.0,0.9982,3.37,0.49,9.4,5 166 | 7.3,0.59,0.26,7.2,0.07,35.0,121.0,0.9981,3.37,0.49,9.4,5 167 | 7.8,0.63,0.48,1.7,0.1,14.0,96.0,0.9961,3.19,0.62,9.5,5 168 | 6.8,0.64,0.1,2.1,0.085,18.0,101.0,0.9956,3.34,0.52,10.2,5 169 | 7.3,0.55,0.03,1.6,0.07200000000000001,17.0,42.0,0.9956,3.37,0.48,9.0,4 170 | 6.8,0.63,0.07,2.1,0.08900000000000001,11.0,44.0,0.9953,3.47,0.55,10.4,6 171 | 7.5,0.705,0.24,1.8,0.36,15.0,63.0,0.9964,3.0,1.59,9.5,5 172 | 7.9,0.885,0.03,1.8,0.057999999999999996,4.0,8.0,0.9972,3.36,0.33,9.1,4 173 | 8.0,0.42,0.17,2.0,0.073,6.0,18.0,0.9972,3.29,0.61,9.2,6 174 | 8.0,0.42,0.17,2.0,0.073,6.0,18.0,0.9972,3.29,0.61,9.2,6 175 | 7.4,0.62,0.05,1.9,0.068,24.0,42.0,0.9961,3.42,0.57,11.5,6 176 | 7.3,0.38,0.21,2.0,0.08,7.0,35.0,0.9961,3.33,0.47,9.5,5 177 | 6.9,0.5,0.04,1.5,0.085,19.0,49.0,0.9958,3.35,0.78,9.5,5 178 | 7.3,0.38,0.21,2.0,0.08,7.0,35.0,0.9961,3.33,0.47,9.5,5 179 | 7.5,0.52,0.42,2.3,0.087,8.0,38.0,0.9972,3.58,0.61,10.5,6 180 | 7.0,0.805,0.0,2.5,0.068,7.0,20.0,0.9969,3.48,0.56,9.6,5 181 | 8.8,0.61,0.14,2.4,0.067,10.0,42.0,0.9969,3.19,0.59,9.5,5 182 | 8.8,0.61,0.14,2.4,0.067,10.0,42.0,0.9969,3.19,0.59,9.5,5 183 | 8.9,0.61,0.49,2.0,0.27,23.0,110.0,0.9972,3.12,1.02,9.3,5 184 | 7.2,0.73,0.02,2.5,0.076,16.0,42.0,0.9972,3.44,0.52,9.3,5 185 | 6.8,0.61,0.2,1.8,0.077,11.0,65.0,0.9971,3.54,0.58,9.3,5 186 | 6.7,0.62,0.21,1.9,0.079,8.0,62.0,0.997,3.52,0.58,9.3,6 187 | 8.9,0.31,0.57,2.0,0.111,26.0,85.0,0.9971,3.26,0.53,9.7,5 188 | 7.4,0.39,0.48,2.0,0.08199999999999999,14.0,67.0,0.9972,3.34,0.55,9.2,5 189 | 7.7,0.705,0.1,2.6,0.084,9.0,26.0,0.9976,3.39,0.49,9.7,5 190 | 7.9,0.5,0.33,2.0,0.084,15.0,143.0,0.9968,3.2,0.55,9.5,5 191 | 7.9,0.49,0.32,1.9,0.08199999999999999,17.0,144.0,0.9968,3.2,0.55,9.5,5 192 | 8.2,0.5,0.35,2.9,0.077,21.0,127.0,0.9976,3.23,0.62,9.4,5 193 | 6.4,0.37,0.25,1.9,0.07400000000000001,21.0,49.0,0.9974,3.57,0.62,9.8,6 194 | 6.8,0.63,0.12,3.8,0.099,16.0,126.0,0.9969,3.28,0.61,9.5,5 195 | 7.6,0.55,0.21,2.2,0.071,7.0,28.0,0.9964,3.28,0.55,9.7,5 196 | 7.6,0.55,0.21,2.2,0.071,7.0,28.0,0.9964,3.28,0.55,9.7,5 197 | 7.8,0.59,0.33,2.0,0.07400000000000001,24.0,120.0,0.9968,3.25,0.54,9.4,5 198 | 7.3,0.58,0.3,2.4,0.07400000000000001,15.0,55.0,0.9968,3.46,0.59,10.2,5 199 | 11.5,0.3,0.6,2.0,0.067,12.0,27.0,0.9981,3.11,0.97,10.1,6 200 | 5.4,0.835,0.08,1.2,0.046,13.0,93.0,0.9924,3.57,0.85,13.0,7 201 | 6.9,1.09,0.06,2.1,0.061,12.0,31.0,0.9948,3.51,0.43,11.4,4 202 | 9.6,0.32,0.47,1.4,0.055999999999999994,9.0,24.0,0.99695,3.22,0.82,10.3,7 203 | 8.8,0.37,0.48,2.1,0.09699999999999999,39.0,145.0,0.9975,3.04,1.03,9.3,5 204 | 6.8,0.5,0.11,1.5,0.075,16.0,49.0,0.99545,3.36,0.79,9.5,5 205 | 7.0,0.42,0.35,1.6,0.08800000000000001,16.0,39.0,0.9961,3.34,0.55,9.2,5 206 | 7.0,0.43,0.36,1.6,0.08900000000000001,14.0,37.0,0.99615,3.34,0.56,9.2,6 207 | 12.8,0.3,0.74,2.6,0.095,9.0,28.0,0.9994,3.2,0.77,10.8,7 208 | 12.8,0.3,0.74,2.6,0.095,9.0,28.0,0.9994,3.2,0.77,10.8,7 209 | 7.8,0.57,0.31,1.8,0.069,26.0,120.0,0.99625,3.29,0.53,9.3,5 210 | 7.8,0.44,0.28,2.7,0.1,18.0,95.0,0.9966,3.22,0.67,9.4,5 211 | 11.0,0.3,0.58,2.1,0.054000000000000006,7.0,19.0,0.998,3.31,0.88,10.5,7 212 | 9.7,0.53,0.6,2.0,0.039,5.0,19.0,0.99585,3.3,0.86,12.4,6 213 | 8.0,0.725,0.24,2.8,0.083,10.0,62.0,0.99685,3.35,0.56,10.0,6 214 | 11.6,0.44,0.64,2.1,0.059000000000000004,5.0,15.0,0.998,3.21,0.67,10.2,6 215 | 8.2,0.57,0.26,2.2,0.06,28.0,65.0,0.9959,3.3,0.43,10.1,5 216 | 7.8,0.735,0.08,2.4,0.092,10.0,41.0,0.9974,3.24,0.71,9.8,6 217 | 7.0,0.49,0.49,5.6,0.06,26.0,121.0,0.9974,3.34,0.76,10.5,5 218 | 8.7,0.625,0.16,2.0,0.10099999999999999,13.0,49.0,0.9962,3.14,0.57,11.0,5 219 | 8.1,0.725,0.22,2.2,0.07200000000000001,11.0,41.0,0.9967,3.36,0.55,9.1,5 220 | 7.5,0.49,0.19,1.9,0.076,10.0,44.0,0.9957,3.39,0.54,9.7,5 221 | 7.8,0.53,0.33,2.4,0.08,24.0,144.0,0.99655,3.3,0.6,9.5,5 222 | 7.8,0.34,0.37,2.0,0.08199999999999999,24.0,58.0,0.9964,3.34,0.59,9.4,6 223 | 7.4,0.53,0.26,2.0,0.10099999999999999,16.0,72.0,0.9957,3.15,0.57,9.4,5 224 | 6.8,0.61,0.04,1.5,0.057,5.0,10.0,0.99525,3.42,0.6,9.5,5 225 | 8.6,0.645,0.25,2.0,0.083,8.0,28.0,0.99815,3.28,0.6,10.0,6 226 | 8.4,0.635,0.36,2.0,0.08900000000000001,15.0,55.0,0.99745,3.31,0.57,10.4,4 227 | 7.7,0.43,0.25,2.6,0.073,29.0,63.0,0.99615,3.37,0.58,10.5,6 228 | 8.9,0.59,0.5,2.0,0.337,27.0,81.0,0.9964,3.04,1.61,9.5,6 229 | 9.0,0.82,0.14,2.6,0.08900000000000001,9.0,23.0,0.9984,3.39,0.63,9.8,5 230 | 7.7,0.43,0.25,2.6,0.073,29.0,63.0,0.99615,3.37,0.58,10.5,6 231 | 6.9,0.52,0.25,2.6,0.081,10.0,37.0,0.99685,3.46,0.5,11.0,5 232 | 5.2,0.48,0.04,1.6,0.054000000000000006,19.0,106.0,0.9927,3.54,0.62,12.2,7 233 | 8.0,0.38,0.06,1.8,0.078,12.0,49.0,0.99625,3.37,0.52,9.9,6 234 | 8.5,0.37,0.2,2.8,0.09,18.0,58.0,0.998,3.34,0.7,9.6,6 235 | 6.9,0.52,0.25,2.6,0.081,10.0,37.0,0.99685,3.46,0.5,11.0,5 236 | 8.2,1.0,0.09,2.3,0.065,7.0,37.0,0.99685,3.32,0.55,9.0,6 237 | 7.2,0.63,0.0,1.9,0.09699999999999999,14.0,38.0,0.99675,3.37,0.58,9.0,6 238 | 7.2,0.63,0.0,1.9,0.09699999999999999,14.0,38.0,0.99675,3.37,0.58,9.0,6 239 | 7.2,0.645,0.0,1.9,0.09699999999999999,15.0,39.0,0.99675,3.37,0.58,9.2,6 240 | 7.2,0.63,0.0,1.9,0.09699999999999999,14.0,38.0,0.99675,3.37,0.58,9.0,6 241 | 8.2,1.0,0.09,2.3,0.065,7.0,37.0,0.99685,3.32,0.55,9.0,6 242 | 8.9,0.635,0.37,1.7,0.263,5.0,62.0,0.9971,3.0,1.09,9.3,5 243 | 12.0,0.38,0.56,2.1,0.09300000000000001,6.0,24.0,0.99925,3.14,0.71,10.9,6 244 | 7.7,0.58,0.1,1.8,0.102,28.0,109.0,0.99565,3.08,0.49,9.8,6 245 | 15.0,0.21,0.44,2.2,0.075,10.0,24.0,1.00005,3.07,0.84,9.2,7 246 | 15.0,0.21,0.44,2.2,0.075,10.0,24.0,1.00005,3.07,0.84,9.2,7 247 | 7.3,0.66,0.0,2.0,0.084,6.0,23.0,0.9983,3.61,0.96,9.9,6 248 | 7.1,0.68,0.07,1.9,0.075,16.0,51.0,0.99685,3.38,0.52,9.5,5 249 | 8.2,0.6,0.17,2.3,0.07200000000000001,11.0,73.0,0.9963,3.2,0.45,9.3,5 250 | 7.7,0.53,0.06,1.7,0.07400000000000001,9.0,39.0,0.99615,3.35,0.48,9.8,6 251 | 7.3,0.66,0.0,2.0,0.084,6.0,23.0,0.9983,3.61,0.96,9.9,6 252 | 10.8,0.32,0.44,1.6,0.063,16.0,37.0,0.9985,3.22,0.78,10.0,6 253 | 7.1,0.6,0.0,1.8,0.07400000000000001,16.0,34.0,0.9972,3.47,0.7,9.9,6 254 | 11.1,0.35,0.48,3.1,0.09,5.0,21.0,0.9986,3.17,0.53,10.5,5 255 | 7.7,0.775,0.42,1.9,0.092,8.0,86.0,0.9959,3.23,0.59,9.5,5 256 | 7.1,0.6,0.0,1.8,0.07400000000000001,16.0,34.0,0.9972,3.47,0.7,9.9,6 257 | 8.0,0.57,0.23,3.2,0.073,17.0,119.0,0.99675,3.26,0.57,9.3,5 258 | 9.4,0.34,0.37,2.2,0.075,5.0,13.0,0.998,3.22,0.62,9.2,5 259 | 6.6,0.695,0.0,2.1,0.075,12.0,56.0,0.9968,3.49,0.67,9.2,5 260 | 7.7,0.41,0.76,1.8,0.611,8.0,45.0,0.9968,3.06,1.26,9.4,5 261 | 10.0,0.31,0.47,2.6,0.085,14.0,33.0,0.99965,3.36,0.8,10.5,7 262 | 7.9,0.33,0.23,1.7,0.077,18.0,45.0,0.99625,3.29,0.65,9.3,5 263 | 7.0,0.975,0.04,2.0,0.087,12.0,67.0,0.99565,3.35,0.6,9.4,4 264 | 8.0,0.52,0.03,1.7,0.07,10.0,35.0,0.99575,3.34,0.57,10.0,5 265 | 7.9,0.37,0.23,1.8,0.077,23.0,49.0,0.9963,3.28,0.67,9.3,5 266 | 12.5,0.56,0.49,2.4,0.064,5.0,27.0,0.9999,3.08,0.87,10.9,5 267 | 11.8,0.26,0.52,1.8,0.071,6.0,10.0,0.9968,3.2,0.72,10.2,7 268 | 8.1,0.87,0.0,3.3,0.096,26.0,61.0,1.00025,3.6,0.72,9.8,4 269 | 7.9,0.35,0.46,3.6,0.078,15.0,37.0,0.9973,3.35,0.86,12.8,8 270 | 6.9,0.54,0.04,3.0,0.077,7.0,27.0,0.9987,3.69,0.91,9.4,6 271 | 11.5,0.18,0.51,4.0,0.10400000000000001,4.0,23.0,0.9996,3.28,0.97,10.1,6 272 | 7.9,0.545,0.06,4.0,0.087,27.0,61.0,0.9965,3.36,0.67,10.7,6 273 | 11.5,0.18,0.51,4.0,0.10400000000000001,4.0,23.0,0.9996,3.28,0.97,10.1,6 274 | 10.9,0.37,0.58,4.0,0.071,17.0,65.0,0.99935,3.22,0.78,10.1,5 275 | 8.4,0.715,0.2,2.4,0.076,10.0,38.0,0.99735,3.31,0.64,9.4,5 276 | 7.5,0.65,0.18,7.0,0.08800000000000001,27.0,94.0,0.99915,3.38,0.77,9.4,5 277 | 7.9,0.545,0.06,4.0,0.087,27.0,61.0,0.9965,3.36,0.67,10.7,6 278 | 6.9,0.54,0.04,3.0,0.077,7.0,27.0,0.9987,3.69,0.91,9.4,6 279 | 11.5,0.18,0.51,4.0,0.10400000000000001,4.0,23.0,0.9996,3.28,0.97,10.1,6 280 | 10.3,0.32,0.45,6.4,0.073,5.0,13.0,0.9976,3.23,0.82,12.6,8 281 | 8.9,0.4,0.32,5.6,0.087,10.0,47.0,0.9991,3.38,0.77,10.5,7 282 | 11.4,0.26,0.44,3.6,0.071,6.0,19.0,0.9986,3.12,0.82,9.3,6 283 | 7.7,0.27,0.68,3.5,0.358,5.0,10.0,0.9972,3.25,1.08,9.9,7 284 | 7.6,0.52,0.12,3.0,0.067,12.0,53.0,0.9971,3.36,0.57,9.1,5 285 | 8.9,0.4,0.32,5.6,0.087,10.0,47.0,0.9991,3.38,0.77,10.5,7 286 | 9.9,0.59,0.07,3.4,0.102,32.0,71.0,1.00015,3.31,0.71,9.8,5 287 | 9.9,0.59,0.07,3.4,0.102,32.0,71.0,1.00015,3.31,0.71,9.8,5 288 | 12.0,0.45,0.55,2.0,0.073,25.0,49.0,0.9997,3.1,0.76,10.3,6 289 | 7.5,0.4,0.12,3.0,0.092,29.0,53.0,0.9967,3.37,0.7,10.3,6 290 | 8.7,0.52,0.09,2.5,0.091,20.0,49.0,0.9976,3.34,0.86,10.6,7 291 | 11.6,0.42,0.53,3.3,0.105,33.0,98.0,1.001,3.2,0.95,9.2,5 292 | 8.7,0.52,0.09,2.5,0.091,20.0,49.0,0.9976,3.34,0.86,10.6,7 293 | 11.0,0.2,0.48,2.0,0.34299999999999997,6.0,18.0,0.9979,3.3,0.71,10.5,5 294 | 10.4,0.55,0.23,2.7,0.091,18.0,48.0,0.9994,3.22,0.64,10.3,6 295 | 6.9,0.36,0.25,2.4,0.098,5.0,16.0,0.9964,3.41,0.6,10.1,6 296 | 13.3,0.34,0.52,3.2,0.094,17.0,53.0,1.0014,3.05,0.81,9.5,6 297 | 10.8,0.5,0.46,2.5,0.073,5.0,27.0,1.0001,3.05,0.64,9.5,5 298 | 10.6,0.83,0.37,2.6,0.086,26.0,70.0,0.9981,3.16,0.52,9.9,5 299 | 7.1,0.63,0.06,2.0,0.083,8.0,29.0,0.99855,3.67,0.73,9.6,5 300 | 7.2,0.65,0.02,2.3,0.094,5.0,31.0,0.9993,3.67,0.8,9.7,5 301 | 6.9,0.67,0.06,2.1,0.08,8.0,33.0,0.99845,3.68,0.71,9.6,5 302 | 7.5,0.53,0.06,2.6,0.086,20.0,44.0,0.9965,3.38,0.59,10.7,6 303 | 11.1,0.18,0.48,1.5,0.068,7.0,15.0,0.9973,3.22,0.64,10.1,6 304 | 8.3,0.705,0.12,2.6,0.092,12.0,28.0,0.9994,3.51,0.72,10.0,5 305 | 7.4,0.67,0.12,1.6,0.18600000000000003,5.0,21.0,0.996,3.39,0.54,9.5,5 306 | 8.4,0.65,0.6,2.1,0.11199999999999999,12.0,90.0,0.9973,3.2,0.52,9.2,5 307 | 10.3,0.53,0.48,2.5,0.063,6.0,25.0,0.9998,3.12,0.59,9.3,6 308 | 7.6,0.62,0.32,2.2,0.08199999999999999,7.0,54.0,0.9966,3.36,0.52,9.4,5 309 | 10.3,0.41,0.42,2.4,0.213,6.0,14.0,0.9994,3.19,0.62,9.5,6 310 | 10.3,0.43,0.44,2.4,0.214,5.0,12.0,0.9994,3.19,0.63,9.5,6 311 | 7.4,0.29,0.38,1.7,0.062,9.0,30.0,0.9968,3.41,0.53,9.5,6 312 | 10.3,0.53,0.48,2.5,0.063,6.0,25.0,0.9998,3.12,0.59,9.3,6 313 | 7.9,0.53,0.24,2.0,0.07200000000000001,15.0,105.0,0.996,3.27,0.54,9.4,6 314 | 9.0,0.46,0.31,2.8,0.09300000000000001,19.0,98.0,0.99815,3.32,0.63,9.5,6 315 | 8.6,0.47,0.3,3.0,0.076,30.0,135.0,0.9976,3.3,0.53,9.4,5 316 | 7.4,0.36,0.29,2.6,0.087,26.0,72.0,0.99645,3.39,0.68,11.0,5 317 | 7.1,0.35,0.29,2.5,0.096,20.0,53.0,0.9962,3.42,0.65,11.0,6 318 | 9.6,0.56,0.23,3.4,0.102,37.0,92.0,0.9996,3.3,0.65,10.1,5 319 | 9.6,0.77,0.12,2.9,0.08199999999999999,30.0,74.0,0.99865,3.3,0.64,10.4,6 320 | 9.8,0.66,0.39,3.2,0.083,21.0,59.0,0.9989,3.37,0.71,11.5,7 321 | 9.6,0.77,0.12,2.9,0.08199999999999999,30.0,74.0,0.99865,3.3,0.64,10.4,6 322 | 9.8,0.66,0.39,3.2,0.083,21.0,59.0,0.9989,3.37,0.71,11.5,7 323 | 9.3,0.61,0.26,3.4,0.09,25.0,87.0,0.99975,3.24,0.62,9.7,5 324 | 7.8,0.62,0.05,2.3,0.079,6.0,18.0,0.99735,3.29,0.63,9.3,5 325 | 10.3,0.59,0.42,2.8,0.09,35.0,73.0,0.9990000000000001,3.28,0.7,9.5,6 326 | 10.0,0.49,0.2,11.0,0.071,13.0,50.0,1.0015,3.16,0.69,9.2,6 327 | 10.0,0.49,0.2,11.0,0.071,13.0,50.0,1.0015,3.16,0.69,9.2,6 328 | 11.6,0.53,0.66,3.65,0.121,6.0,14.0,0.9978,3.05,0.74,11.5,7 329 | 10.3,0.44,0.5,4.5,0.107,5.0,13.0,0.998,3.28,0.83,11.5,5 330 | 13.4,0.27,0.62,2.6,0.08199999999999999,6.0,21.0,1.0002,3.16,0.67,9.7,6 331 | 10.7,0.46,0.39,2.0,0.061,7.0,15.0,0.9981,3.18,0.62,9.5,5 332 | 10.2,0.36,0.64,2.9,0.122,10.0,41.0,0.998,3.23,0.66,12.5,6 333 | 10.2,0.36,0.64,2.9,0.122,10.0,41.0,0.998,3.23,0.66,12.5,6 334 | 8.0,0.58,0.28,3.2,0.066,21.0,114.0,0.9973,3.22,0.54,9.4,6 335 | 8.4,0.56,0.08,2.1,0.105,16.0,44.0,0.9958,3.13,0.52,11.0,5 336 | 7.9,0.65,0.01,2.5,0.078,17.0,38.0,0.9963,3.34,0.74,11.7,7 337 | 11.9,0.695,0.53,3.4,0.128,7.0,21.0,0.9992,3.17,0.84,12.2,7 338 | 8.9,0.43,0.45,1.9,0.052000000000000005,6.0,16.0,0.9948,3.35,0.7,12.5,6 339 | 7.8,0.43,0.32,2.8,0.08,29.0,58.0,0.9974,3.31,0.64,10.3,5 340 | 12.4,0.49,0.58,3.0,0.10300000000000001,28.0,99.0,1.0008,3.16,1.0,11.5,6 341 | 12.5,0.28,0.54,2.3,0.08199999999999999,12.0,29.0,0.9997,3.11,1.36,9.8,7 342 | 12.2,0.34,0.5,2.4,0.066,10.0,21.0,1.0,3.12,1.18,9.2,6 343 | 10.6,0.42,0.48,2.7,0.065,5.0,18.0,0.9972,3.21,0.87,11.3,6 344 | 10.9,0.39,0.47,1.8,0.11800000000000001,6.0,14.0,0.9982,3.3,0.75,9.8,6 345 | 10.9,0.39,0.47,1.8,0.11800000000000001,6.0,14.0,0.9982,3.3,0.75,9.8,6 346 | 11.9,0.57,0.5,2.6,0.08199999999999999,6.0,32.0,1.0006,3.12,0.78,10.7,6 347 | 7.0,0.685,0.0,1.9,0.067,40.0,63.0,0.9979,3.6,0.81,9.9,5 348 | 6.6,0.815,0.02,2.7,0.07200000000000001,17.0,34.0,0.9955,3.58,0.89,12.3,7 349 | 13.8,0.49,0.67,3.0,0.09300000000000001,6.0,15.0,0.9986,3.02,0.93,12.0,6 350 | 9.6,0.56,0.31,2.8,0.08900000000000001,15.0,46.0,0.9979,3.11,0.92,10.0,6 351 | 9.1,0.785,0.0,2.6,0.09300000000000001,11.0,28.0,0.9994,3.36,0.86,9.4,6 352 | 10.7,0.67,0.22,2.7,0.107,17.0,34.0,1.0004,3.28,0.98,9.9,6 353 | 9.1,0.795,0.0,2.6,0.096,11.0,26.0,0.9994,3.35,0.83,9.4,6 354 | 7.7,0.665,0.0,2.4,0.09,8.0,19.0,0.9974,3.27,0.73,9.3,5 355 | 13.5,0.53,0.79,4.8,0.12,23.0,77.0,1.0018,3.18,0.77,13.0,5 356 | 6.1,0.21,0.4,1.4,0.066,40.5,165.0,0.9912,3.25,0.59,11.9,6 357 | 6.7,0.75,0.01,2.4,0.078,17.0,32.0,0.9955,3.55,0.61,12.8,6 358 | 11.5,0.41,0.52,3.0,0.08,29.0,55.0,1.0001,3.26,0.88,11.0,5 359 | 10.5,0.42,0.66,2.95,0.11599999999999999,12.0,29.0,0.997,3.24,0.75,11.7,7 360 | 11.9,0.43,0.66,3.1,0.109,10.0,23.0,1.0,3.15,0.85,10.4,7 361 | 12.6,0.38,0.66,2.6,0.08800000000000001,10.0,41.0,1.001,3.17,0.68,9.8,6 362 | 8.2,0.7,0.23,2.0,0.099,14.0,81.0,0.9973,3.19,0.7,9.4,5 363 | 8.6,0.45,0.31,2.6,0.086,21.0,50.0,0.9982,3.37,0.91,9.9,6 364 | 11.9,0.58,0.66,2.5,0.07200000000000001,6.0,37.0,0.9992,3.05,0.56,10.0,5 365 | 12.5,0.46,0.63,2.0,0.071,6.0,15.0,0.9988,2.99,0.87,10.2,5 366 | 12.8,0.615,0.66,5.8,0.083,7.0,42.0,1.0022,3.07,0.73,10.0,7 367 | 10.0,0.42,0.5,3.4,0.107,7.0,21.0,0.9979,3.26,0.93,11.8,6 368 | 12.8,0.615,0.66,5.8,0.083,7.0,42.0,1.0022,3.07,0.73,10.0,7 369 | 10.4,0.575,0.61,2.6,0.076,11.0,24.0,1.0,3.16,0.69,9.0,5 370 | 10.3,0.34,0.52,2.8,0.159,15.0,75.0,0.9998,3.18,0.64,9.4,5 371 | 9.4,0.27,0.53,2.4,0.07400000000000001,6.0,18.0,0.9962,3.2,1.13,12.0,7 372 | 6.9,0.765,0.02,2.3,0.063,35.0,63.0,0.9975,3.57,0.78,9.9,5 373 | 7.9,0.24,0.4,1.6,0.055999999999999994,11.0,25.0,0.9967,3.32,0.87,8.7,6 374 | 9.1,0.28,0.48,1.8,0.067,26.0,46.0,0.9967,3.32,1.04,10.6,6 375 | 7.4,0.55,0.22,2.2,0.106,12.0,72.0,0.9959,3.05,0.63,9.2,5 376 | 14.0,0.41,0.63,3.8,0.08900000000000001,6.0,47.0,1.0014,3.01,0.81,10.8,6 377 | 11.5,0.54,0.71,4.4,0.124,6.0,15.0,0.9984,3.01,0.83,11.8,7 378 | 11.5,0.45,0.5,3.0,0.078,19.0,47.0,1.0003,3.26,1.11,11.0,6 379 | 9.4,0.27,0.53,2.4,0.07400000000000001,6.0,18.0,0.9962,3.2,1.13,12.0,7 380 | 11.4,0.625,0.66,6.2,0.08800000000000001,6.0,24.0,0.9988,3.11,0.99,13.3,6 381 | 8.3,0.42,0.38,2.5,0.094,24.0,60.0,0.9979,3.31,0.7,10.8,6 382 | 8.3,0.26,0.42,2.0,0.08,11.0,27.0,0.9974,3.21,0.8,9.4,6 383 | 13.7,0.415,0.68,2.9,0.085,17.0,43.0,1.0014,3.06,0.8,10.0,6 384 | 8.3,0.26,0.42,2.0,0.08,11.0,27.0,0.9974,3.21,0.8,9.4,6 385 | 8.3,0.26,0.42,2.0,0.08,11.0,27.0,0.9974,3.21,0.8,9.4,6 386 | 7.7,0.51,0.28,2.1,0.087,23.0,54.0,0.998,3.42,0.74,9.2,5 387 | 7.4,0.63,0.07,2.4,0.09,11.0,37.0,0.9979,3.43,0.76,9.7,6 388 | 7.8,0.54,0.26,2.0,0.08800000000000001,23.0,48.0,0.9981,3.41,0.74,9.2,6 389 | 8.3,0.66,0.15,1.9,0.079,17.0,42.0,0.9972,3.31,0.54,9.6,6 390 | 7.8,0.46,0.26,1.9,0.08800000000000001,23.0,53.0,0.9981,3.43,0.74,9.2,6 391 | 9.6,0.38,0.31,2.5,0.096,16.0,49.0,0.9982,3.19,0.7,10.0,7 392 | 5.6,0.85,0.05,1.4,0.045,12.0,88.0,0.9924,3.56,0.82,12.9,8 393 | 13.7,0.415,0.68,2.9,0.085,17.0,43.0,1.0014,3.06,0.8,10.0,6 394 | 9.5,0.37,0.52,2.0,0.08199999999999999,6.0,26.0,0.998,3.18,0.51,9.5,5 395 | 8.4,0.665,0.61,2.0,0.11199999999999999,13.0,95.0,0.997,3.16,0.54,9.1,5 396 | 12.7,0.6,0.65,2.3,0.063,6.0,25.0,0.9997,3.03,0.57,9.9,5 397 | 12.0,0.37,0.76,4.2,0.066,7.0,38.0,1.0004,3.22,0.6,13.0,7 398 | 6.6,0.735,0.02,7.9,0.122,68.0,124.0,0.9994,3.47,0.53,9.9,5 399 | 11.5,0.59,0.59,2.6,0.087,13.0,49.0,0.9988,3.18,0.65,11.0,6 400 | 11.5,0.59,0.59,2.6,0.087,13.0,49.0,0.9988,3.18,0.65,11.0,6 401 | 8.7,0.765,0.22,2.3,0.064,9.0,42.0,0.9963,3.1,0.55,9.4,5 402 | 6.6,0.735,0.02,7.9,0.122,68.0,124.0,0.9994,3.47,0.53,9.9,5 403 | 7.7,0.26,0.3,1.7,0.059000000000000004,20.0,38.0,0.9949,3.29,0.47,10.8,6 404 | 12.2,0.48,0.54,2.6,0.085,19.0,64.0,1.0,3.1,0.61,10.5,6 405 | 11.4,0.6,0.49,2.7,0.085,10.0,41.0,0.9994,3.15,0.63,10.5,6 406 | 7.7,0.69,0.05,2.7,0.075,15.0,27.0,0.9974,3.26,0.61,9.1,5 407 | 8.7,0.31,0.46,1.4,0.059000000000000004,11.0,25.0,0.9966,3.36,0.76,10.1,6 408 | 9.8,0.44,0.47,2.5,0.063,9.0,28.0,0.9981,3.24,0.65,10.8,6 409 | 12.0,0.39,0.66,3.0,0.09300000000000001,12.0,30.0,0.9996,3.18,0.63,10.8,7 410 | 10.4,0.34,0.58,3.7,0.174,6.0,16.0,0.997,3.19,0.7,11.3,6 411 | 12.5,0.46,0.49,4.5,0.07,26.0,49.0,0.9981,3.05,0.57,9.6,4 412 | 9.0,0.43,0.34,2.5,0.08,26.0,86.0,0.9987,3.38,0.62,9.5,6 413 | 9.1,0.45,0.35,2.4,0.08,23.0,78.0,0.9987,3.38,0.62,9.5,5 414 | 7.1,0.735,0.16,1.9,0.1,15.0,77.0,0.9966,3.27,0.64,9.3,5 415 | 9.9,0.4,0.53,6.7,0.09699999999999999,6.0,19.0,0.9986,3.27,0.82,11.7,7 416 | 8.8,0.52,0.34,2.7,0.087,24.0,122.0,0.9982,3.26,0.61,9.5,5 417 | 8.6,0.725,0.24,6.6,0.11699999999999999,31.0,134.0,1.0014,3.32,1.07,9.3,5 418 | 10.6,0.48,0.64,2.2,0.111,6.0,20.0,0.997,3.26,0.66,11.7,6 419 | 7.0,0.58,0.12,1.9,0.091,34.0,124.0,0.9956,3.44,0.48,10.5,5 420 | 11.9,0.38,0.51,2.0,0.121,7.0,20.0,0.9996,3.24,0.76,10.4,6 421 | 6.8,0.77,0.0,1.8,0.066,34.0,52.0,0.9976,3.62,0.68,9.9,5 422 | 9.5,0.56,0.33,2.4,0.08900000000000001,35.0,67.0,0.9972,3.28,0.73,11.8,7 423 | 6.6,0.84,0.03,2.3,0.059000000000000004,32.0,48.0,0.9952,3.52,0.56,12.3,7 424 | 7.7,0.96,0.2,2.0,0.047,15.0,60.0,0.9955,3.36,0.44,10.9,5 425 | 10.5,0.24,0.47,2.1,0.066,6.0,24.0,0.9978,3.15,0.9,11.0,7 426 | 7.7,0.96,0.2,2.0,0.047,15.0,60.0,0.9955,3.36,0.44,10.9,5 427 | 6.6,0.84,0.03,2.3,0.059000000000000004,32.0,48.0,0.9952,3.52,0.56,12.3,7 428 | 6.4,0.67,0.08,2.1,0.045,19.0,48.0,0.9949,3.49,0.49,11.4,6 429 | 9.5,0.78,0.22,1.9,0.077,6.0,32.0,0.9988,3.26,0.56,10.6,6 430 | 9.1,0.52,0.33,1.3,0.07,9.0,30.0,0.9978,3.24,0.6,9.3,5 431 | 12.8,0.84,0.63,2.4,0.08800000000000001,13.0,35.0,0.9997,3.1,0.6,10.4,6 432 | 10.5,0.24,0.47,2.1,0.066,6.0,24.0,0.9978,3.15,0.9,11.0,7 433 | 7.8,0.55,0.35,2.2,0.07400000000000001,21.0,66.0,0.9974,3.25,0.56,9.2,5 434 | 11.9,0.37,0.69,2.3,0.078,12.0,24.0,0.9958,3.0,0.65,12.8,6 435 | 12.3,0.39,0.63,2.3,0.091,6.0,18.0,1.0004,3.16,0.49,9.5,5 436 | 10.4,0.41,0.55,3.2,0.076,22.0,54.0,0.9996,3.15,0.89,9.9,6 437 | 12.3,0.39,0.63,2.3,0.091,6.0,18.0,1.0004,3.16,0.49,9.5,5 438 | 8.0,0.67,0.3,2.0,0.06,38.0,62.0,0.9958,3.26,0.56,10.2,6 439 | 11.1,0.45,0.73,3.2,0.066,6.0,22.0,0.9986,3.17,0.66,11.2,6 440 | 10.4,0.41,0.55,3.2,0.076,22.0,54.0,0.9996,3.15,0.89,9.9,6 441 | 7.0,0.62,0.18,1.5,0.062,7.0,50.0,0.9951,3.08,0.6,9.3,5 442 | 12.6,0.31,0.72,2.2,0.07200000000000001,6.0,29.0,0.9987,2.88,0.82,9.8,8 443 | 11.9,0.4,0.65,2.15,0.068,7.0,27.0,0.9988,3.06,0.68,11.3,6 444 | 15.6,0.685,0.76,3.7,0.1,6.0,43.0,1.0032,2.95,0.68,11.2,7 445 | 10.0,0.44,0.49,2.7,0.077,11.0,19.0,0.9963,3.23,0.63,11.6,7 446 | 5.3,0.57,0.01,1.7,0.054000000000000006,5.0,27.0,0.9934,3.57,0.84,12.5,7 447 | 9.5,0.735,0.1,2.1,0.079,6.0,31.0,0.9986,3.23,0.56,10.1,6 448 | 12.5,0.38,0.6,2.6,0.081,31.0,72.0,0.9996,3.1,0.73,10.5,5 449 | 9.3,0.48,0.29,2.1,0.127,6.0,16.0,0.9968,3.22,0.72,11.2,5 450 | 8.6,0.53,0.22,2.0,0.1,7.0,27.0,0.9967,3.2,0.56,10.2,6 451 | 11.9,0.39,0.69,2.8,0.095,17.0,35.0,0.9994,3.1,0.61,10.8,6 452 | 11.9,0.39,0.69,2.8,0.095,17.0,35.0,0.9994,3.1,0.61,10.8,6 453 | 8.4,0.37,0.53,1.8,0.413,9.0,26.0,0.9979,3.06,1.06,9.1,6 454 | 6.8,0.56,0.03,1.7,0.084,18.0,35.0,0.9968,3.44,0.63,10.0,6 455 | 10.4,0.33,0.63,2.8,0.084,5.0,22.0,0.9998,3.26,0.74,11.2,7 456 | 7.0,0.23,0.4,1.6,0.063,21.0,67.0,0.9952,3.5,0.63,11.1,5 457 | 11.3,0.62,0.67,5.2,0.086,6.0,19.0,0.9988,3.22,0.69,13.4,8 458 | 8.9,0.59,0.39,2.3,0.095,5.0,22.0,0.9986,3.37,0.58,10.3,5 459 | 9.2,0.63,0.21,2.7,0.09699999999999999,29.0,65.0,0.9988,3.28,0.58,9.6,5 460 | 10.4,0.33,0.63,2.8,0.084,5.0,22.0,0.9998,3.26,0.74,11.2,7 461 | 11.6,0.58,0.66,2.2,0.07400000000000001,10.0,47.0,1.0008,3.25,0.57,9.0,3 462 | 9.2,0.43,0.52,2.3,0.083,14.0,23.0,0.9976,3.35,0.61,11.3,6 463 | 8.3,0.615,0.22,2.6,0.087,6.0,19.0,0.9982,3.26,0.61,9.3,5 464 | 11.0,0.26,0.68,2.55,0.085,10.0,25.0,0.997,3.18,0.61,11.8,5 465 | 8.1,0.66,0.7,2.2,0.098,25.0,129.0,0.9972,3.08,0.53,9.0,5 466 | 11.5,0.315,0.54,2.1,0.084,5.0,15.0,0.9987,2.98,0.7,9.2,6 467 | 10.0,0.29,0.4,2.9,0.098,10.0,26.0,1.0006,3.48,0.91,9.7,5 468 | 10.3,0.5,0.42,2.0,0.069,21.0,51.0,0.9982,3.16,0.72,11.5,6 469 | 8.8,0.46,0.45,2.6,0.065,7.0,18.0,0.9947,3.32,0.79,14.0,6 470 | 11.4,0.36,0.69,2.1,0.09,6.0,21.0,1.0,3.17,0.62,9.2,6 471 | 8.7,0.82,0.02,1.2,0.07,36.0,48.0,0.9952,3.2,0.58,9.8,5 472 | 13.0,0.32,0.65,2.6,0.09300000000000001,15.0,47.0,0.9996,3.05,0.61,10.6,5 473 | 9.6,0.54,0.42,2.4,0.081,25.0,52.0,0.997,3.2,0.71,11.4,6 474 | 12.5,0.37,0.55,2.6,0.083,25.0,68.0,0.9995,3.15,0.82,10.4,6 475 | 9.9,0.35,0.55,2.1,0.062,5.0,14.0,0.9971,3.26,0.79,10.6,5 476 | 10.5,0.28,0.51,1.7,0.08,10.0,24.0,0.9982,3.2,0.89,9.4,6 477 | 9.6,0.68,0.24,2.2,0.087,5.0,28.0,0.9988,3.14,0.6,10.2,5 478 | 9.3,0.27,0.41,2.0,0.091,6.0,16.0,0.998,3.28,0.7,9.7,5 479 | 10.4,0.24,0.49,1.8,0.075,6.0,20.0,0.9977,3.18,1.06,11.0,6 480 | 9.6,0.68,0.24,2.2,0.087,5.0,28.0,0.9988,3.14,0.6,10.2,5 481 | 9.4,0.685,0.11,2.7,0.077,6.0,31.0,0.9984,3.19,0.7,10.1,6 482 | 10.6,0.28,0.39,15.5,0.069,6.0,23.0,1.0026,3.12,0.66,9.2,5 483 | 9.4,0.3,0.56,2.8,0.08,6.0,17.0,0.9964,3.15,0.92,11.7,8 484 | 10.6,0.36,0.59,2.2,0.152,6.0,18.0,0.9986,3.04,1.05,9.4,5 485 | 10.6,0.36,0.6,2.2,0.152,7.0,18.0,0.9986,3.04,1.06,9.4,5 486 | 10.6,0.44,0.68,4.1,0.114,6.0,24.0,0.997,3.06,0.66,13.4,6 487 | 10.2,0.67,0.39,1.9,0.054000000000000006,6.0,17.0,0.9976,3.17,0.47,10.0,5 488 | 10.2,0.67,0.39,1.9,0.054000000000000006,6.0,17.0,0.9976,3.17,0.47,10.0,5 489 | 10.2,0.645,0.36,1.8,0.053,5.0,14.0,0.9982,3.17,0.42,10.0,6 490 | 11.6,0.32,0.55,2.8,0.081,35.0,67.0,1.0002,3.32,0.92,10.8,7 491 | 9.3,0.39,0.4,2.6,0.073,10.0,26.0,0.9984,3.34,0.75,10.2,6 492 | 9.3,0.775,0.27,2.8,0.078,24.0,56.0,0.9984,3.31,0.67,10.6,6 493 | 9.2,0.41,0.5,2.5,0.055,12.0,25.0,0.9952,3.34,0.79,13.3,7 494 | 8.9,0.4,0.51,2.6,0.052000000000000005,13.0,27.0,0.995,3.32,0.9,13.4,7 495 | 8.7,0.69,0.31,3.0,0.086,23.0,81.0,1.0002,3.48,0.74,11.6,6 496 | 6.5,0.39,0.23,8.3,0.051,28.0,91.0,0.9952,3.44,0.55,12.1,6 497 | 10.7,0.35,0.53,2.6,0.07,5.0,16.0,0.9972,3.15,0.65,11.0,8 498 | 7.8,0.52,0.25,1.9,0.081,14.0,38.0,0.9984,3.43,0.65,9.0,6 499 | 7.2,0.34,0.32,2.5,0.09,43.0,113.0,0.9966,3.32,0.79,11.1,5 500 | 10.7,0.35,0.53,2.6,0.07,5.0,16.0,0.9972,3.15,0.65,11.0,8 501 | 8.7,0.69,0.31,3.0,0.086,23.0,81.0,1.0002,3.48,0.74,11.6,6 502 | 7.8,0.52,0.25,1.9,0.081,14.0,38.0,0.9984,3.43,0.65,9.0,6 503 | 10.4,0.44,0.73,6.55,0.07400000000000001,38.0,76.0,0.9990000000000001,3.17,0.85,12.0,7 504 | 10.4,0.44,0.73,6.55,0.07400000000000001,38.0,76.0,0.9990000000000001,3.17,0.85,12.0,7 505 | 10.5,0.26,0.47,1.9,0.078,6.0,24.0,0.9976,3.18,1.04,10.9,7 506 | 10.5,0.24,0.42,1.8,0.077,6.0,22.0,0.9976,3.21,1.05,10.8,7 507 | 10.2,0.49,0.63,2.9,0.07200000000000001,10.0,26.0,0.9968,3.16,0.78,12.5,7 508 | 10.4,0.24,0.46,1.8,0.075,6.0,21.0,0.9976,3.25,1.02,10.8,7 509 | 11.2,0.67,0.55,2.3,0.084,6.0,13.0,1.0,3.17,0.71,9.5,6 510 | 10.0,0.59,0.31,2.2,0.09,26.0,62.0,0.9994,3.18,0.63,10.2,6 511 | 13.3,0.29,0.75,2.8,0.084,23.0,43.0,0.9986,3.04,0.68,11.4,7 512 | 12.4,0.42,0.49,4.6,0.073,19.0,43.0,0.9978,3.02,0.61,9.5,5 513 | 10.0,0.59,0.31,2.2,0.09,26.0,62.0,0.9994,3.18,0.63,10.2,6 514 | 10.7,0.4,0.48,2.1,0.125,15.0,49.0,0.998,3.03,0.81,9.7,6 515 | 10.5,0.51,0.64,2.4,0.107,6.0,15.0,0.9973,3.09,0.66,11.8,7 516 | 10.5,0.51,0.64,2.4,0.107,6.0,15.0,0.9973,3.09,0.66,11.8,7 517 | 8.5,0.655,0.49,6.1,0.122,34.0,151.0,1.001,3.31,1.14,9.3,5 518 | 12.5,0.6,0.49,4.3,0.1,5.0,14.0,1.001,3.25,0.74,11.9,6 519 | 10.4,0.61,0.49,2.1,0.2,5.0,16.0,0.9994,3.16,0.63,8.4,3 520 | 10.9,0.21,0.49,2.8,0.08800000000000001,11.0,32.0,0.9972,3.22,0.68,11.7,6 521 | 7.3,0.365,0.49,2.5,0.08800000000000001,39.0,106.0,0.9966,3.36,0.78,11.0,5 522 | 9.8,0.25,0.49,2.7,0.08800000000000001,15.0,33.0,0.9982,3.42,0.9,10.0,6 523 | 7.6,0.41,0.49,2.0,0.08800000000000001,16.0,43.0,0.998,3.48,0.64,9.1,5 524 | 8.2,0.39,0.49,2.3,0.099,47.0,133.0,0.9979,3.38,0.99,9.8,5 525 | 9.3,0.4,0.49,2.5,0.085,38.0,142.0,0.9978,3.22,0.55,9.4,5 526 | 9.2,0.43,0.49,2.4,0.086,23.0,116.0,0.9976,3.23,0.64,9.5,5 527 | 10.4,0.64,0.24,2.8,0.105,29.0,53.0,0.9998,3.24,0.67,9.9,5 528 | 7.3,0.365,0.49,2.5,0.08800000000000001,39.0,106.0,0.9966,3.36,0.78,11.0,5 529 | 7.0,0.38,0.49,2.5,0.09699999999999999,33.0,85.0,0.9962,3.39,0.77,11.4,6 530 | 8.2,0.42,0.49,2.6,0.084,32.0,55.0,0.9988,3.34,0.75,8.7,6 531 | 9.9,0.63,0.24,2.4,0.077,6.0,33.0,0.9974,3.09,0.57,9.4,5 532 | 9.1,0.22,0.24,2.1,0.078,1.0,28.0,0.9990000000000001,3.41,0.87,10.3,6 533 | 11.9,0.38,0.49,2.7,0.098,12.0,42.0,1.0004,3.16,0.61,10.3,5 534 | 11.9,0.38,0.49,2.7,0.098,12.0,42.0,1.0004,3.16,0.61,10.3,5 535 | 10.3,0.27,0.24,2.1,0.07200000000000001,15.0,33.0,0.9956,3.22,0.66,12.8,6 536 | 10.0,0.48,0.24,2.7,0.102,13.0,32.0,1.0,3.28,0.56,10.0,6 537 | 9.1,0.22,0.24,2.1,0.078,1.0,28.0,0.9990000000000001,3.41,0.87,10.3,6 538 | 9.9,0.63,0.24,2.4,0.077,6.0,33.0,0.9974,3.09,0.57,9.4,5 539 | 8.1,0.825,0.24,2.1,0.084,5.0,13.0,0.9972,3.37,0.77,10.7,6 540 | 12.9,0.35,0.49,5.8,0.066,5.0,35.0,1.0014,3.2,0.66,12.0,7 541 | 11.2,0.5,0.74,5.15,0.1,5.0,17.0,0.9996,3.22,0.62,11.2,5 542 | 9.2,0.59,0.24,3.3,0.10099999999999999,20.0,47.0,0.9988,3.26,0.67,9.6,5 543 | 9.5,0.46,0.49,6.3,0.064,5.0,17.0,0.9988,3.21,0.73,11.0,6 544 | 9.3,0.715,0.24,2.1,0.07,5.0,20.0,0.9966,3.12,0.59,9.9,5 545 | 11.2,0.66,0.24,2.5,0.085,16.0,53.0,0.9993,3.06,0.72,11.0,6 546 | 14.3,0.31,0.74,1.8,0.075,6.0,15.0,1.0008,2.86,0.79,8.4,6 547 | 9.1,0.47,0.49,2.6,0.094,38.0,106.0,0.9982,3.08,0.59,9.1,5 548 | 7.5,0.55,0.24,2.0,0.078,10.0,28.0,0.9983,3.45,0.78,9.5,6 549 | 10.6,0.31,0.49,2.5,0.067,6.0,21.0,0.9987,3.26,0.86,10.7,6 550 | 12.4,0.35,0.49,2.6,0.079,27.0,69.0,0.9994,3.12,0.75,10.4,6 551 | 9.0,0.53,0.49,1.9,0.171,6.0,25.0,0.9975,3.27,0.61,9.4,6 552 | 6.8,0.51,0.01,2.1,0.07400000000000001,9.0,25.0,0.9958,3.33,0.56,9.5,6 553 | 9.4,0.43,0.24,2.8,0.092,14.0,45.0,0.998,3.19,0.73,10.0,6 554 | 9.5,0.46,0.24,2.7,0.092,14.0,44.0,0.998,3.12,0.74,10.0,6 555 | 5.0,1.04,0.24,1.6,0.05,32.0,96.0,0.9934,3.74,0.62,11.5,5 556 | 15.5,0.645,0.49,4.2,0.095,10.0,23.0,1.00315,2.92,0.74,11.1,5 557 | 15.5,0.645,0.49,4.2,0.095,10.0,23.0,1.00315,2.92,0.74,11.1,5 558 | 10.9,0.53,0.49,4.6,0.11800000000000001,10.0,17.0,1.0002,3.07,0.56,11.7,6 559 | 15.6,0.645,0.49,4.2,0.095,10.0,23.0,1.00315,2.92,0.74,11.1,5 560 | 10.9,0.53,0.49,4.6,0.11800000000000001,10.0,17.0,1.0002,3.07,0.56,11.7,6 561 | 13.0,0.47,0.49,4.3,0.085,6.0,47.0,1.0021,3.3,0.68,12.7,6 562 | 12.7,0.6,0.49,2.8,0.075,5.0,19.0,0.9994,3.14,0.57,11.4,5 563 | 9.0,0.44,0.49,2.4,0.078,26.0,121.0,0.9978,3.23,0.58,9.2,5 564 | 9.0,0.54,0.49,2.9,0.094,41.0,110.0,0.9982,3.08,0.61,9.2,5 565 | 7.6,0.29,0.49,2.7,0.092,25.0,60.0,0.9971,3.31,0.61,10.1,6 566 | 13.0,0.47,0.49,4.3,0.085,6.0,47.0,1.0021,3.3,0.68,12.7,6 567 | 12.7,0.6,0.49,2.8,0.075,5.0,19.0,0.9994,3.14,0.57,11.4,5 568 | 8.7,0.7,0.24,2.5,0.226,5.0,15.0,0.9991,3.32,0.6,9.0,6 569 | 8.7,0.7,0.24,2.5,0.226,5.0,15.0,0.9991,3.32,0.6,9.0,6 570 | 9.8,0.5,0.49,2.6,0.25,5.0,20.0,0.9990000000000001,3.31,0.79,10.7,6 571 | 6.2,0.36,0.24,2.2,0.095,19.0,42.0,0.9946,3.57,0.57,11.7,6 572 | 11.5,0.35,0.49,3.3,0.07,10.0,37.0,1.0003,3.32,0.91,11.0,6 573 | 6.2,0.36,0.24,2.2,0.095,19.0,42.0,0.9946,3.57,0.57,11.7,6 574 | 10.2,0.24,0.49,2.4,0.075,10.0,28.0,0.9978,3.14,0.61,10.4,5 575 | 10.5,0.59,0.49,2.1,0.07,14.0,47.0,0.9991,3.3,0.56,9.6,4 576 | 10.6,0.34,0.49,3.2,0.078,20.0,78.0,0.9992,3.19,0.7,10.0,6 577 | 12.3,0.27,0.49,3.1,0.079,28.0,46.0,0.9993,3.2,0.8,10.2,6 578 | 9.9,0.5,0.24,2.3,0.10300000000000001,6.0,14.0,0.9978,3.34,0.52,10.0,4 579 | 8.8,0.44,0.49,2.8,0.083,18.0,111.0,0.9982,3.3,0.6,9.5,5 580 | 8.8,0.47,0.49,2.9,0.085,17.0,110.0,0.9982,3.29,0.6,9.8,5 581 | 10.6,0.31,0.49,2.2,0.063,18.0,40.0,0.9976,3.14,0.51,9.8,6 582 | 12.3,0.5,0.49,2.2,0.08900000000000001,5.0,14.0,1.0002,3.19,0.44,9.6,5 583 | 12.3,0.5,0.49,2.2,0.08900000000000001,5.0,14.0,1.0002,3.19,0.44,9.6,5 584 | 11.7,0.49,0.49,2.2,0.083,5.0,15.0,1.0,3.19,0.43,9.2,5 585 | 12.0,0.28,0.49,1.9,0.07400000000000001,10.0,21.0,0.9976,2.98,0.66,9.9,7 586 | 11.8,0.33,0.49,3.4,0.09300000000000001,54.0,80.0,1.0002,3.3,0.76,10.7,7 587 | 7.6,0.51,0.24,2.4,0.091,8.0,38.0,0.998,3.47,0.66,9.6,6 588 | 11.1,0.31,0.49,2.7,0.094,16.0,47.0,0.9986,3.12,1.02,10.6,7 589 | 7.3,0.73,0.24,1.9,0.10800000000000001,18.0,102.0,0.9967,3.26,0.59,9.3,5 590 | 5.0,0.42,0.24,2.0,0.06,19.0,50.0,0.9917,3.72,0.74,14.0,8 591 | 10.2,0.29,0.49,2.6,0.059000000000000004,5.0,13.0,0.9976,3.05,0.74,10.5,7 592 | 9.0,0.45,0.49,2.6,0.084,21.0,75.0,0.9987,3.35,0.57,9.7,5 593 | 6.6,0.39,0.49,1.7,0.07,23.0,149.0,0.9922,3.12,0.5,11.5,6 594 | 9.0,0.45,0.49,2.6,0.084,21.0,75.0,0.9987,3.35,0.57,9.7,5 595 | 9.9,0.49,0.58,3.5,0.094,9.0,43.0,1.0004,3.29,0.58,9.0,5 596 | 7.9,0.72,0.17,2.6,0.096,20.0,38.0,0.9978,3.4,0.53,9.5,5 597 | 8.9,0.595,0.41,7.9,0.086,30.0,109.0,0.9998,3.27,0.57,9.3,5 598 | 12.4,0.4,0.51,2.0,0.059000000000000004,6.0,24.0,0.9994,3.04,0.6,9.3,6 599 | 11.9,0.58,0.58,1.9,0.071,5.0,18.0,0.998,3.09,0.63,10.0,6 600 | 8.5,0.585,0.18,2.1,0.078,5.0,30.0,0.9967,3.2,0.48,9.8,6 601 | 12.7,0.59,0.45,2.3,0.08199999999999999,11.0,22.0,1.0,3.0,0.7,9.3,6 602 | 8.2,0.915,0.27,2.1,0.08800000000000001,7.0,23.0,0.9962,3.26,0.47,10.0,4 603 | 13.2,0.46,0.52,2.2,0.071,12.0,35.0,1.0006,3.1,0.56,9.0,6 604 | 7.7,0.835,0.0,2.6,0.081,6.0,14.0,0.9975,3.3,0.52,9.3,5 605 | 13.2,0.46,0.52,2.2,0.071,12.0,35.0,1.0006,3.1,0.56,9.0,6 606 | 8.3,0.58,0.13,2.9,0.096,14.0,63.0,0.9984,3.17,0.62,9.1,6 607 | 8.3,0.6,0.13,2.6,0.085,6.0,24.0,0.9984,3.31,0.59,9.2,6 608 | 9.4,0.41,0.48,4.6,0.07200000000000001,10.0,20.0,0.9973,3.34,0.79,12.2,7 609 | 8.8,0.48,0.41,3.3,0.092,26.0,52.0,0.9982,3.31,0.53,10.5,6 610 | 10.1,0.65,0.37,5.1,0.11,11.0,65.0,1.0026,3.32,0.64,10.4,6 611 | 6.3,0.36,0.19,3.2,0.075,15.0,39.0,0.9956,3.56,0.52,12.7,6 612 | 8.8,0.24,0.54,2.5,0.083,25.0,57.0,0.9983,3.39,0.54,9.2,5 613 | 13.2,0.38,0.55,2.7,0.081,5.0,16.0,1.0006,2.98,0.54,9.4,5 614 | 7.5,0.64,0.0,2.4,0.077,18.0,29.0,0.9965,3.32,0.6,10.0,6 615 | 8.2,0.39,0.38,1.5,0.057999999999999996,10.0,29.0,0.9962,3.26,0.74,9.8,5 616 | 9.2,0.755,0.18,2.2,0.14800000000000002,10.0,103.0,0.9969,2.87,1.36,10.2,6 617 | 9.6,0.6,0.5,2.3,0.079,28.0,71.0,0.9997,3.5,0.57,9.7,5 618 | 9.6,0.6,0.5,2.3,0.079,28.0,71.0,0.9997,3.5,0.57,9.7,5 619 | 11.5,0.31,0.51,2.2,0.079,14.0,28.0,0.9982,3.03,0.93,9.8,6 620 | 11.4,0.46,0.5,2.7,0.122,4.0,17.0,1.0006,3.13,0.7,10.2,5 621 | 11.3,0.37,0.41,2.3,0.08800000000000001,6.0,16.0,0.9988,3.09,0.8,9.3,5 622 | 8.3,0.54,0.24,3.4,0.076,16.0,112.0,0.9976,3.27,0.61,9.4,5 623 | 8.2,0.56,0.23,3.4,0.078,14.0,104.0,0.9976,3.28,0.62,9.4,5 624 | 10.0,0.58,0.22,1.9,0.08,9.0,32.0,0.9974,3.13,0.55,9.5,5 625 | 7.9,0.51,0.25,2.9,0.077,21.0,45.0,0.9974,3.49,0.96,12.1,6 626 | 6.8,0.69,0.0,5.6,0.124,21.0,58.0,0.9997,3.46,0.72,10.2,5 627 | 6.8,0.69,0.0,5.6,0.124,21.0,58.0,0.9997,3.46,0.72,10.2,5 628 | 8.8,0.6,0.29,2.2,0.098,5.0,15.0,0.9988,3.36,0.49,9.1,5 629 | 8.8,0.6,0.29,2.2,0.098,5.0,15.0,0.9988,3.36,0.49,9.1,5 630 | 8.7,0.54,0.26,2.5,0.09699999999999999,7.0,31.0,0.9976,3.27,0.6,9.3,6 631 | 7.6,0.685,0.23,2.3,0.111,20.0,84.0,0.9964,3.21,0.61,9.3,5 632 | 8.7,0.54,0.26,2.5,0.09699999999999999,7.0,31.0,0.9976,3.27,0.6,9.3,6 633 | 10.4,0.28,0.54,2.7,0.105,5.0,19.0,0.9988,3.25,0.63,9.5,5 634 | 7.6,0.41,0.14,3.0,0.087,21.0,43.0,0.9964,3.32,0.57,10.5,6 635 | 10.1,0.935,0.22,3.4,0.105,11.0,86.0,1.001,3.43,0.64,11.3,4 636 | 7.9,0.35,0.21,1.9,0.073,46.0,102.0,0.9964,3.27,0.58,9.5,5 637 | 8.7,0.84,0.0,1.4,0.065,24.0,33.0,0.9954,3.27,0.55,9.7,5 638 | 9.6,0.88,0.28,2.4,0.086,30.0,147.0,0.9979,3.24,0.53,9.4,5 639 | 9.5,0.885,0.27,2.3,0.084,31.0,145.0,0.9978,3.24,0.53,9.4,5 640 | 7.7,0.915,0.12,2.2,0.14300000000000002,7.0,23.0,0.9964,3.35,0.65,10.2,7 641 | 8.9,0.29,0.35,1.9,0.067,25.0,57.0,0.997,3.18,1.36,10.3,6 642 | 9.9,0.54,0.45,2.3,0.071,16.0,40.0,0.9991,3.39,0.62,9.4,5 643 | 9.5,0.59,0.44,2.3,0.071,21.0,68.0,0.9992,3.46,0.63,9.5,5 644 | 9.9,0.54,0.45,2.3,0.071,16.0,40.0,0.9991,3.39,0.62,9.4,5 645 | 9.5,0.59,0.44,2.3,0.071,21.0,68.0,0.9992,3.46,0.63,9.5,5 646 | 9.9,0.54,0.45,2.3,0.071,16.0,40.0,0.9991,3.39,0.62,9.4,5 647 | 7.8,0.64,0.1,6.0,0.115,5.0,11.0,0.9984,3.37,0.69,10.1,7 648 | 7.3,0.67,0.05,3.6,0.107,6.0,20.0,0.9972,3.4,0.63,10.1,5 649 | 8.3,0.845,0.01,2.2,0.07,5.0,14.0,0.9967,3.32,0.58,11.0,4 650 | 8.7,0.48,0.3,2.8,0.066,10.0,28.0,0.9964,3.33,0.67,11.2,7 651 | 6.7,0.42,0.27,8.6,0.068,24.0,148.0,0.9948,3.16,0.57,11.3,6 652 | 10.7,0.43,0.39,2.2,0.106,8.0,32.0,0.9986,2.89,0.5,9.6,5 653 | 9.8,0.88,0.25,2.5,0.10400000000000001,35.0,155.0,1.001,3.41,0.67,11.2,5 654 | 15.9,0.36,0.65,7.5,0.096,22.0,71.0,0.9976,2.98,0.84,14.9,5 655 | 9.4,0.33,0.59,2.8,0.079,9.0,30.0,0.9976,3.12,0.54,12.0,6 656 | 8.6,0.47,0.47,2.4,0.07400000000000001,7.0,29.0,0.9979,3.08,0.46,9.5,5 657 | 9.7,0.55,0.17,2.9,0.087,20.0,53.0,1.0004,3.14,0.61,9.4,5 658 | 10.7,0.43,0.39,2.2,0.106,8.0,32.0,0.9986,2.89,0.5,9.6,5 659 | 12.0,0.5,0.59,1.4,0.073,23.0,42.0,0.998,2.92,0.68,10.5,7 660 | 7.2,0.52,0.07,1.4,0.07400000000000001,5.0,20.0,0.9973,3.32,0.81,9.6,6 661 | 7.1,0.84,0.02,4.4,0.096,5.0,13.0,0.997,3.41,0.57,11.0,4 662 | 7.2,0.52,0.07,1.4,0.07400000000000001,5.0,20.0,0.9973,3.32,0.81,9.6,6 663 | 7.5,0.42,0.31,1.6,0.08,15.0,42.0,0.9978,3.31,0.64,9.0,5 664 | 7.2,0.57,0.06,1.6,0.076,9.0,27.0,0.9972,3.36,0.7,9.6,6 665 | 10.1,0.28,0.46,1.8,0.05,5.0,13.0,0.9974,3.04,0.79,10.2,6 666 | 12.1,0.4,0.52,2.0,0.092,15.0,54.0,1.0,3.03,0.66,10.2,5 667 | 9.4,0.59,0.14,2.0,0.084,25.0,48.0,0.9981,3.14,0.56,9.7,5 668 | 8.3,0.49,0.36,1.8,0.222,6.0,16.0,0.998,3.18,0.6,9.5,6 669 | 11.3,0.34,0.45,2.0,0.08199999999999999,6.0,15.0,0.9988,2.94,0.66,9.2,6 670 | 10.0,0.73,0.43,2.3,0.059000000000000004,15.0,31.0,0.9966,3.15,0.57,11.0,5 671 | 11.3,0.34,0.45,2.0,0.08199999999999999,6.0,15.0,0.9988,2.94,0.66,9.2,6 672 | 6.9,0.4,0.24,2.5,0.083,30.0,45.0,0.9959,3.26,0.58,10.0,5 673 | 8.2,0.73,0.21,1.7,0.07400000000000001,5.0,13.0,0.9968,3.2,0.52,9.5,5 674 | 9.8,1.24,0.34,2.0,0.079,32.0,151.0,0.998,3.15,0.53,9.5,5 675 | 8.2,0.73,0.21,1.7,0.07400000000000001,5.0,13.0,0.9968,3.2,0.52,9.5,5 676 | 10.8,0.4,0.41,2.2,0.084,7.0,17.0,0.9984,3.08,0.67,9.3,6 677 | 9.3,0.41,0.39,2.2,0.064,12.0,31.0,0.9984,3.26,0.65,10.2,5 678 | 10.8,0.4,0.41,2.2,0.084,7.0,17.0,0.9984,3.08,0.67,9.3,6 679 | 8.6,0.8,0.11,2.3,0.084,12.0,31.0,0.9979,3.4,0.48,9.9,5 680 | 8.3,0.78,0.1,2.6,0.081,45.0,87.0,0.9983,3.48,0.53,10.0,5 681 | 10.8,0.26,0.45,3.3,0.06,20.0,49.0,0.9972,3.13,0.54,9.6,5 682 | 13.3,0.43,0.58,1.9,0.07,15.0,40.0,1.0004,3.06,0.49,9.0,5 683 | 8.0,0.45,0.23,2.2,0.094,16.0,29.0,0.9962,3.21,0.49,10.2,6 684 | 8.5,0.46,0.31,2.25,0.078,32.0,58.0,0.998,3.33,0.54,9.8,5 685 | 8.1,0.78,0.23,2.6,0.059000000000000004,5.0,15.0,0.997,3.37,0.56,11.3,5 686 | 9.8,0.98,0.32,2.3,0.078,35.0,152.0,0.998,3.25,0.48,9.4,5 687 | 8.1,0.78,0.23,2.6,0.059000000000000004,5.0,15.0,0.997,3.37,0.56,11.3,5 688 | 7.1,0.65,0.18,1.8,0.07,13.0,40.0,0.997,3.44,0.6,9.1,5 689 | 9.1,0.64,0.23,3.1,0.095,13.0,38.0,0.9998,3.28,0.59,9.7,5 690 | 7.7,0.66,0.04,1.6,0.039,4.0,9.0,0.9962,3.4,0.47,9.4,5 691 | 8.1,0.38,0.48,1.8,0.157,5.0,17.0,0.9976,3.3,1.05,9.4,5 692 | 7.4,1.185,0.0,4.25,0.09699999999999999,5.0,14.0,0.9966,3.63,0.54,10.7,3 693 | 9.2,0.92,0.24,2.6,0.087,12.0,93.0,0.9998,3.48,0.54,9.8,5 694 | 8.6,0.49,0.51,2.0,0.42200000000000004,16.0,62.0,0.9979,3.03,1.17,9.0,5 695 | 9.0,0.48,0.32,2.8,0.084,21.0,122.0,0.9984,3.32,0.62,9.4,5 696 | 9.0,0.47,0.31,2.7,0.084,24.0,125.0,0.9984,3.31,0.61,9.4,5 697 | 5.1,0.47,0.02,1.3,0.034,18.0,44.0,0.9921,3.9,0.62,12.8,6 698 | 7.0,0.65,0.02,2.1,0.066,8.0,25.0,0.9972,3.47,0.67,9.5,6 699 | 7.0,0.65,0.02,2.1,0.066,8.0,25.0,0.9972,3.47,0.67,9.5,6 700 | 9.4,0.615,0.28,3.2,0.087,18.0,72.0,1.0001,3.31,0.53,9.7,5 701 | 11.8,0.38,0.55,2.1,0.071,5.0,19.0,0.9986,3.11,0.62,10.8,6 702 | 10.6,1.02,0.43,2.9,0.076,26.0,88.0,0.9984,3.08,0.57,10.1,6 703 | 7.0,0.65,0.02,2.1,0.066,8.0,25.0,0.9972,3.47,0.67,9.5,6 704 | 7.0,0.64,0.02,2.1,0.067,9.0,23.0,0.997,3.47,0.67,9.4,6 705 | 7.5,0.38,0.48,2.6,0.073,22.0,84.0,0.9972,3.32,0.7,9.6,4 706 | 9.1,0.765,0.04,1.6,0.078,4.0,14.0,0.998,3.29,0.54,9.7,4 707 | 8.4,1.035,0.15,6.0,0.073,11.0,54.0,0.9990000000000001,3.37,0.49,9.9,5 708 | 7.0,0.78,0.08,2.0,0.09300000000000001,10.0,19.0,0.9956,3.4,0.47,10.0,5 709 | 7.4,0.49,0.19,3.0,0.077,16.0,37.0,0.9966,3.37,0.51,10.5,5 710 | 7.8,0.545,0.12,2.5,0.068,11.0,35.0,0.996,3.34,0.61,11.6,6 711 | 9.7,0.31,0.47,1.6,0.062,13.0,33.0,0.9983,3.27,0.66,10.0,6 712 | 10.6,1.025,0.43,2.8,0.08,21.0,84.0,0.9985,3.06,0.57,10.1,5 713 | 8.9,0.565,0.34,3.0,0.09300000000000001,16.0,112.0,0.9998,3.38,0.61,9.5,5 714 | 8.7,0.69,0.0,3.2,0.084,13.0,33.0,0.9992,3.36,0.45,9.4,5 715 | 8.0,0.43,0.36,2.3,0.075,10.0,48.0,0.9976,3.34,0.46,9.4,5 716 | 9.9,0.74,0.28,2.6,0.078,21.0,77.0,0.998,3.28,0.51,9.8,5 717 | 7.2,0.49,0.18,2.7,0.069,13.0,34.0,0.9967,3.29,0.48,9.2,6 718 | 8.0,0.43,0.36,2.3,0.075,10.0,48.0,0.9976,3.34,0.46,9.4,5 719 | 7.6,0.46,0.11,2.6,0.079,12.0,49.0,0.9968,3.21,0.57,10.0,5 720 | 8.4,0.56,0.04,2.0,0.08199999999999999,10.0,22.0,0.9976,3.22,0.44,9.6,5 721 | 7.1,0.66,0.0,3.9,0.086,17.0,45.0,0.9976,3.46,0.54,9.5,5 722 | 8.4,0.56,0.04,2.0,0.08199999999999999,10.0,22.0,0.9976,3.22,0.44,9.6,5 723 | 8.9,0.48,0.24,2.85,0.094,35.0,106.0,0.9982,3.1,0.53,9.2,5 724 | 7.6,0.42,0.08,2.7,0.084,15.0,48.0,0.9968,3.21,0.59,10.0,5 725 | 7.1,0.31,0.3,2.2,0.053,36.0,127.0,0.9965,2.94,1.62,9.5,5 726 | 7.5,1.115,0.1,3.1,0.086,5.0,12.0,0.9958,3.54,0.6,11.2,4 727 | 9.0,0.66,0.17,3.0,0.077,5.0,13.0,0.9976,3.29,0.55,10.4,5 728 | 8.1,0.72,0.09,2.8,0.084,18.0,49.0,0.9994,3.43,0.72,11.1,6 729 | 6.4,0.57,0.02,1.8,0.067,4.0,11.0,0.997,3.46,0.68,9.5,5 730 | 6.4,0.57,0.02,1.8,0.067,4.0,11.0,0.997,3.46,0.68,9.5,5 731 | 6.4,0.865,0.03,3.2,0.071,27.0,58.0,0.995,3.61,0.49,12.7,6 732 | 9.5,0.55,0.66,2.3,0.387,12.0,37.0,0.9982,3.17,0.67,9.6,5 733 | 8.9,0.875,0.13,3.45,0.08800000000000001,4.0,14.0,0.9994,3.44,0.52,11.5,5 734 | 7.3,0.835,0.03,2.1,0.092,10.0,19.0,0.9966,3.39,0.47,9.6,5 735 | 7.0,0.45,0.34,2.7,0.08199999999999999,16.0,72.0,0.998,3.55,0.6,9.5,5 736 | 7.7,0.56,0.2,2.0,0.075,9.0,39.0,0.9987,3.48,0.62,9.3,5 737 | 7.7,0.965,0.1,2.1,0.11199999999999999,11.0,22.0,0.9963,3.26,0.5,9.5,5 738 | 7.7,0.965,0.1,2.1,0.11199999999999999,11.0,22.0,0.9963,3.26,0.5,9.5,5 739 | 8.2,0.59,0.0,2.5,0.09300000000000001,19.0,58.0,1.0002,3.5,0.65,9.3,6 740 | 9.0,0.46,0.23,2.8,0.092,28.0,104.0,0.9983,3.1,0.56,9.2,5 741 | 9.0,0.69,0.0,2.4,0.08800000000000001,19.0,38.0,0.9990000000000001,3.35,0.6,9.3,5 742 | 8.3,0.76,0.29,4.2,0.075,12.0,16.0,0.9965,3.45,0.68,11.5,6 743 | 9.2,0.53,0.24,2.6,0.078,28.0,139.0,0.9978799999999999,3.21,0.57,9.5,5 744 | 6.5,0.615,0.0,1.9,0.065,9.0,18.0,0.9972,3.46,0.65,9.2,5 745 | 11.6,0.41,0.58,2.8,0.096,25.0,101.0,1.00024,3.13,0.53,10.0,5 746 | 11.1,0.39,0.54,2.7,0.095,21.0,101.0,1.0001,3.13,0.51,9.5,5 747 | 7.3,0.51,0.18,2.1,0.07,12.0,28.0,0.9976799999999999,3.52,0.73,9.5,6 748 | 8.2,0.34,0.38,2.5,0.08,12.0,57.0,0.9978,3.3,0.47,9.0,6 749 | 8.6,0.33,0.4,2.6,0.083,16.0,68.0,0.99782,3.3,0.48,9.4,5 750 | 7.2,0.5,0.18,2.1,0.071,12.0,31.0,0.99761,3.52,0.72,9.6,6 751 | 7.3,0.51,0.18,2.1,0.07,12.0,28.0,0.9976799999999999,3.52,0.73,9.5,6 752 | 8.3,0.65,0.1,2.9,0.08900000000000001,17.0,40.0,0.99803,3.29,0.55,9.5,5 753 | 8.3,0.65,0.1,2.9,0.08900000000000001,17.0,40.0,0.99803,3.29,0.55,9.5,5 754 | 7.6,0.54,0.13,2.5,0.09699999999999999,24.0,66.0,0.99785,3.39,0.61,9.4,5 755 | 8.3,0.65,0.1,2.9,0.08900000000000001,17.0,40.0,0.99803,3.29,0.55,9.5,5 756 | 7.8,0.48,0.68,1.7,0.415,14.0,32.0,0.99656,3.09,1.06,9.1,6 757 | 7.8,0.91,0.07,1.9,0.057999999999999996,22.0,47.0,0.99525,3.51,0.43,10.7,6 758 | 6.3,0.98,0.01,2.0,0.057,15.0,33.0,0.9948799999999999,3.6,0.46,11.2,6 759 | 8.1,0.87,0.0,2.2,0.084,10.0,31.0,0.99656,3.25,0.5,9.8,5 760 | 8.1,0.87,0.0,2.2,0.084,10.0,31.0,0.99656,3.25,0.5,9.8,5 761 | 8.8,0.42,0.21,2.5,0.092,33.0,88.0,0.99823,3.19,0.52,9.2,5 762 | 9.0,0.58,0.25,2.8,0.075,9.0,104.0,0.99779,3.23,0.57,9.7,5 763 | 9.3,0.655,0.26,2.0,0.096,5.0,35.0,0.9973799999999999,3.25,0.42,9.6,5 764 | 8.8,0.7,0.0,1.7,0.069,8.0,19.0,0.9970100000000001,3.31,0.53,10.0,6 765 | 9.3,0.655,0.26,2.0,0.096,5.0,35.0,0.9973799999999999,3.25,0.42,9.6,5 766 | 9.1,0.68,0.11,2.8,0.09300000000000001,11.0,44.0,0.9988799999999999,3.31,0.55,9.5,6 767 | 9.2,0.67,0.1,3.0,0.091,12.0,48.0,0.9988799999999999,3.31,0.54,9.5,6 768 | 8.8,0.59,0.18,2.9,0.08900000000000001,12.0,74.0,0.9973799999999999,3.14,0.54,9.4,5 769 | 7.5,0.6,0.32,2.7,0.10300000000000001,13.0,98.0,0.9993799999999999,3.45,0.62,9.5,5 770 | 7.1,0.59,0.02,2.3,0.08199999999999999,24.0,94.0,0.99744,3.55,0.53,9.7,6 771 | 7.9,0.72,0.01,1.9,0.076,7.0,32.0,0.9966799999999999,3.39,0.54,9.6,5 772 | 7.1,0.59,0.02,2.3,0.08199999999999999,24.0,94.0,0.99744,3.55,0.53,9.7,6 773 | 9.4,0.685,0.26,2.4,0.08199999999999999,23.0,143.0,0.9978,3.28,0.55,9.4,5 774 | 9.5,0.57,0.27,2.3,0.08199999999999999,23.0,144.0,0.99782,3.27,0.55,9.4,5 775 | 7.9,0.4,0.29,1.8,0.157,1.0,44.0,0.9973,3.3,0.92,9.5,6 776 | 7.9,0.4,0.3,1.8,0.157,2.0,45.0,0.9972700000000001,3.31,0.91,9.5,6 777 | 7.2,1.0,0.0,3.0,0.102,7.0,16.0,0.9958600000000001,3.43,0.46,10.0,5 778 | 6.9,0.765,0.18,2.4,0.243,5.5,48.0,0.9961200000000001,3.4,0.6,10.3,6 779 | 6.9,0.635,0.17,2.4,0.24100000000000002,6.0,18.0,0.9961,3.4,0.59,10.3,6 780 | 8.3,0.43,0.3,3.4,0.079,7.0,34.0,0.9978799999999999,3.36,0.61,10.5,5 781 | 7.1,0.52,0.03,2.6,0.076,21.0,92.0,0.99745,3.5,0.6,9.8,5 782 | 7.0,0.57,0.0,2.0,0.19,12.0,45.0,0.9967600000000001,3.31,0.6,9.4,6 783 | 6.5,0.46,0.14,2.4,0.114,9.0,37.0,0.9973200000000001,3.66,0.65,9.8,5 784 | 9.0,0.82,0.05,2.4,0.081,26.0,96.0,0.9981399999999999,3.36,0.53,10.0,5 785 | 6.5,0.46,0.14,2.4,0.114,9.0,37.0,0.9973200000000001,3.66,0.65,9.8,5 786 | 7.1,0.59,0.01,2.5,0.077,20.0,85.0,0.99746,3.55,0.59,9.8,5 787 | 9.9,0.35,0.41,2.3,0.083,11.0,61.0,0.9982,3.21,0.5,9.5,5 788 | 9.9,0.35,0.41,2.3,0.083,11.0,61.0,0.9982,3.21,0.5,9.5,5 789 | 10.0,0.56,0.24,2.2,0.079,19.0,58.0,0.9991,3.18,0.56,10.1,6 790 | 10.0,0.56,0.24,2.2,0.079,19.0,58.0,0.9991,3.18,0.56,10.1,6 791 | 8.6,0.63,0.17,2.9,0.099,21.0,119.0,0.998,3.09,0.52,9.3,5 792 | 7.4,0.37,0.43,2.6,0.08199999999999999,18.0,82.0,0.99708,3.33,0.68,9.7,6 793 | 8.8,0.64,0.17,2.9,0.084,25.0,130.0,0.99818,3.23,0.54,9.6,5 794 | 7.1,0.61,0.02,2.5,0.081,17.0,87.0,0.99745,3.48,0.6,9.7,6 795 | 7.7,0.6,0.0,2.6,0.055,7.0,13.0,0.99639,3.38,0.56,10.8,5 796 | 10.1,0.27,0.54,2.3,0.065,7.0,26.0,0.99531,3.17,0.53,12.5,6 797 | 10.8,0.89,0.3,2.6,0.132,7.0,60.0,0.9978600000000001,2.99,1.18,10.2,5 798 | 8.7,0.46,0.31,2.5,0.126,24.0,64.0,0.99746,3.1,0.74,9.6,5 799 | 9.3,0.37,0.44,1.6,0.038,21.0,42.0,0.99526,3.24,0.81,10.8,7 800 | 9.4,0.5,0.34,3.6,0.08199999999999999,5.0,14.0,0.9987,3.29,0.52,10.7,6 801 | 9.4,0.5,0.34,3.6,0.08199999999999999,5.0,14.0,0.9987,3.29,0.52,10.7,6 802 | 7.2,0.61,0.08,4.0,0.08199999999999999,26.0,108.0,0.99641,3.25,0.51,9.4,5 803 | 8.6,0.55,0.09,3.3,0.068,8.0,17.0,0.99735,3.23,0.44,10.0,5 804 | 5.1,0.585,0.0,1.7,0.044000000000000004,14.0,86.0,0.99264,3.56,0.94,12.9,7 805 | 7.7,0.56,0.08,2.5,0.114,14.0,46.0,0.9971,3.24,0.66,9.6,6 806 | 8.4,0.52,0.22,2.7,0.084,4.0,18.0,0.99682,3.26,0.57,9.9,6 807 | 8.2,0.28,0.4,2.4,0.052000000000000005,4.0,10.0,0.99356,3.33,0.7,12.8,7 808 | 8.4,0.25,0.39,2.0,0.040999999999999995,4.0,10.0,0.9938600000000001,3.27,0.71,12.5,7 809 | 8.2,0.28,0.4,2.4,0.052000000000000005,4.0,10.0,0.99356,3.33,0.7,12.8,7 810 | 7.4,0.53,0.12,1.9,0.165,4.0,12.0,0.99702,3.26,0.86,9.2,5 811 | 7.6,0.48,0.31,2.8,0.07,4.0,15.0,0.9969299999999999,3.22,0.55,10.3,6 812 | 7.3,0.49,0.1,2.6,0.068,4.0,14.0,0.9956200000000001,3.3,0.47,10.5,5 813 | 12.9,0.5,0.55,2.8,0.07200000000000001,7.0,24.0,1.0001200000000001,3.09,0.68,10.9,6 814 | 10.8,0.45,0.33,2.5,0.099,20.0,38.0,0.99818,3.24,0.71,10.8,5 815 | 6.9,0.39,0.24,2.1,0.102,4.0,7.0,0.9946200000000001,3.44,0.58,11.4,4 816 | 12.6,0.41,0.54,2.8,0.10300000000000001,19.0,41.0,0.99939,3.21,0.76,11.3,6 817 | 10.8,0.45,0.33,2.5,0.099,20.0,38.0,0.99818,3.24,0.71,10.8,5 818 | 9.8,0.51,0.19,3.2,0.081,8.0,30.0,0.9984,3.23,0.58,10.5,6 819 | 10.8,0.29,0.42,1.6,0.084,19.0,27.0,0.99545,3.28,0.73,11.9,6 820 | 7.1,0.715,0.0,2.35,0.071,21.0,47.0,0.9963200000000001,3.29,0.45,9.4,5 821 | 9.1,0.66,0.15,3.2,0.09699999999999999,9.0,59.0,0.99976,3.28,0.54,9.6,5 822 | 7.0,0.685,0.0,1.9,0.099,9.0,22.0,0.9960600000000001,3.34,0.6,9.7,5 823 | 4.9,0.42,0.0,2.1,0.048,16.0,42.0,0.99154,3.71,0.74,14.0,7 824 | 6.7,0.54,0.13,2.0,0.076,15.0,36.0,0.9973,3.61,0.64,9.8,5 825 | 6.7,0.54,0.13,2.0,0.076,15.0,36.0,0.9973,3.61,0.64,9.8,5 826 | 7.1,0.48,0.28,2.8,0.068,6.0,16.0,0.99682,3.24,0.53,10.3,5 827 | 7.1,0.46,0.14,2.8,0.076,15.0,37.0,0.99624,3.36,0.49,10.7,5 828 | 7.5,0.27,0.34,2.3,0.05,4.0,8.0,0.9951,3.4,0.64,11.0,7 829 | 7.1,0.46,0.14,2.8,0.076,15.0,37.0,0.99624,3.36,0.49,10.7,5 830 | 7.8,0.57,0.09,2.3,0.065,34.0,45.0,0.9941700000000001,3.46,0.74,12.7,8 831 | 5.9,0.61,0.08,2.1,0.071,16.0,24.0,0.9937600000000001,3.56,0.77,11.1,6 832 | 7.5,0.685,0.07,2.5,0.057999999999999996,5.0,9.0,0.9963200000000001,3.38,0.55,10.9,4 833 | 5.9,0.61,0.08,2.1,0.071,16.0,24.0,0.9937600000000001,3.56,0.77,11.1,6 834 | 10.4,0.44,0.42,1.5,0.145,34.0,48.0,0.9983200000000001,3.38,0.86,9.9,3 835 | 11.6,0.47,0.44,1.6,0.147,36.0,51.0,0.99836,3.38,0.86,9.9,4 836 | 8.8,0.685,0.26,1.6,0.08800000000000001,16.0,23.0,0.9969399999999999,3.32,0.47,9.4,5 837 | 7.6,0.665,0.1,1.5,0.066,27.0,55.0,0.99655,3.39,0.51,9.3,5 838 | 6.7,0.28,0.28,2.4,0.012,36.0,100.0,0.99064,3.26,0.39,11.7,7 839 | 6.7,0.28,0.28,2.4,0.012,36.0,100.0,0.99064,3.26,0.39,11.7,7 840 | 10.1,0.31,0.35,1.6,0.075,9.0,28.0,0.99672,3.24,0.83,11.2,7 841 | 6.0,0.5,0.04,2.2,0.092,13.0,26.0,0.9964700000000001,3.46,0.47,10.0,5 842 | 11.1,0.42,0.47,2.65,0.085,9.0,34.0,0.99736,3.24,0.77,12.1,7 843 | 6.6,0.66,0.0,3.0,0.115,21.0,31.0,0.99629,3.45,0.63,10.3,5 844 | 10.6,0.5,0.45,2.6,0.11900000000000001,34.0,68.0,0.99708,3.23,0.72,10.9,6 845 | 7.1,0.685,0.35,2.0,0.08800000000000001,9.0,92.0,0.9963,3.28,0.62,9.4,5 846 | 9.9,0.25,0.46,1.7,0.062,26.0,42.0,0.9959,3.18,0.83,10.6,6 847 | 6.4,0.64,0.21,1.8,0.081,14.0,31.0,0.9968899999999999,3.59,0.66,9.8,5 848 | 6.4,0.64,0.21,1.8,0.081,14.0,31.0,0.9968899999999999,3.59,0.66,9.8,5 849 | 7.4,0.68,0.16,1.8,0.078,12.0,39.0,0.9977,3.5,0.7,9.9,6 850 | 6.4,0.64,0.21,1.8,0.081,14.0,31.0,0.9968899999999999,3.59,0.66,9.8,5 851 | 6.4,0.63,0.21,1.6,0.08,12.0,32.0,0.9968899999999999,3.58,0.66,9.8,5 852 | 9.3,0.43,0.44,1.9,0.085,9.0,22.0,0.99708,3.28,0.55,9.5,5 853 | 9.3,0.43,0.44,1.9,0.085,9.0,22.0,0.99708,3.28,0.55,9.5,5 854 | 8.0,0.42,0.32,2.5,0.08,26.0,122.0,0.9980100000000001,3.22,1.07,9.7,5 855 | 9.3,0.36,0.39,1.5,0.08,41.0,55.0,0.9965200000000001,3.47,0.73,10.9,6 856 | 9.3,0.36,0.39,1.5,0.08,41.0,55.0,0.9965200000000001,3.47,0.73,10.9,6 857 | 7.6,0.735,0.02,2.5,0.071,10.0,14.0,0.9953799999999999,3.51,0.71,11.7,7 858 | 9.3,0.36,0.39,1.5,0.08,41.0,55.0,0.9965200000000001,3.47,0.73,10.9,6 859 | 8.2,0.26,0.34,2.5,0.073,16.0,47.0,0.9959399999999999,3.4,0.78,11.3,7 860 | 11.7,0.28,0.47,1.7,0.054000000000000006,17.0,32.0,0.9968600000000001,3.15,0.67,10.6,7 861 | 6.8,0.56,0.22,1.8,0.07400000000000001,15.0,24.0,0.9943799999999999,3.4,0.82,11.2,6 862 | 7.2,0.62,0.06,2.7,0.077,15.0,85.0,0.99746,3.51,0.54,9.5,5 863 | 5.8,1.01,0.66,2.0,0.039,15.0,88.0,0.9935700000000001,3.66,0.6,11.5,6 864 | 7.5,0.42,0.32,2.7,0.067,7.0,25.0,0.9962799999999999,3.24,0.44,10.4,5 865 | 7.2,0.62,0.06,2.5,0.078,17.0,84.0,0.99746,3.51,0.53,9.7,5 866 | 7.2,0.62,0.06,2.7,0.077,15.0,85.0,0.99746,3.51,0.54,9.5,5 867 | 7.2,0.635,0.07,2.6,0.077,16.0,86.0,0.9974799999999999,3.51,0.54,9.7,5 868 | 6.8,0.49,0.22,2.3,0.071,13.0,24.0,0.9943799999999999,3.41,0.83,11.3,6 869 | 6.9,0.51,0.23,2.0,0.07200000000000001,13.0,22.0,0.9943799999999999,3.4,0.84,11.2,6 870 | 6.8,0.56,0.22,1.8,0.07400000000000001,15.0,24.0,0.9943799999999999,3.4,0.82,11.2,6 871 | 7.6,0.63,0.03,2.0,0.08,27.0,43.0,0.9957799999999999,3.44,0.64,10.9,6 872 | 7.7,0.715,0.01,2.1,0.064,31.0,43.0,0.99371,3.41,0.57,11.8,6 873 | 6.9,0.56,0.03,1.5,0.086,36.0,46.0,0.9952200000000001,3.53,0.57,10.6,5 874 | 7.3,0.35,0.24,2.0,0.067,28.0,48.0,0.9957600000000001,3.43,0.54,10.0,4 875 | 9.1,0.21,0.37,1.6,0.067,6.0,10.0,0.9955200000000001,3.23,0.58,11.1,7 876 | 10.4,0.38,0.46,2.1,0.10400000000000001,6.0,10.0,0.99664,3.12,0.65,11.8,7 877 | 8.8,0.31,0.4,2.8,0.109,7.0,16.0,0.9961399999999999,3.31,0.79,11.8,7 878 | 7.1,0.47,0.0,2.2,0.067,7.0,14.0,0.9951700000000001,3.4,0.58,10.9,4 879 | 7.7,0.715,0.01,2.1,0.064,31.0,43.0,0.99371,3.41,0.57,11.8,6 880 | 8.8,0.61,0.19,4.0,0.094,30.0,69.0,0.99787,3.22,0.5,10.0,6 881 | 7.2,0.6,0.04,2.5,0.076,18.0,88.0,0.99745,3.53,0.55,9.5,5 882 | 9.2,0.56,0.18,1.6,0.078,10.0,21.0,0.9957600000000001,3.15,0.49,9.9,5 883 | 7.6,0.715,0.0,2.1,0.068,30.0,35.0,0.9953299999999999,3.48,0.65,11.4,6 884 | 8.4,0.31,0.29,3.1,0.19399999999999998,14.0,26.0,0.99536,3.22,0.78,12.0,6 885 | 7.2,0.6,0.04,2.5,0.076,18.0,88.0,0.99745,3.53,0.55,9.5,5 886 | 8.8,0.61,0.19,4.0,0.094,30.0,69.0,0.99787,3.22,0.5,10.0,6 887 | 8.9,0.75,0.14,2.5,0.086,9.0,30.0,0.99824,3.34,0.64,10.5,5 888 | 9.0,0.8,0.12,2.4,0.083,8.0,28.0,0.99836,3.33,0.65,10.4,6 889 | 10.7,0.52,0.38,2.6,0.066,29.0,56.0,0.99577,3.15,0.79,12.1,7 890 | 6.8,0.57,0.0,2.5,0.07200000000000001,32.0,64.0,0.9949100000000001,3.43,0.56,11.2,6 891 | 10.7,0.9,0.34,6.6,0.11199999999999999,23.0,99.0,1.00289,3.22,0.68,9.3,5 892 | 7.2,0.34,0.24,2.0,0.071,30.0,52.0,0.9957600000000001,3.44,0.58,10.1,5 893 | 7.2,0.66,0.03,2.3,0.078,16.0,86.0,0.9974299999999999,3.53,0.57,9.7,5 894 | 10.1,0.45,0.23,1.9,0.08199999999999999,10.0,18.0,0.99774,3.22,0.65,9.3,6 895 | 7.2,0.66,0.03,2.3,0.078,16.0,86.0,0.9974299999999999,3.53,0.57,9.7,5 896 | 7.2,0.63,0.03,2.2,0.08,17.0,88.0,0.99745,3.53,0.58,9.8,6 897 | 7.1,0.59,0.01,2.3,0.08,27.0,43.0,0.9955,3.42,0.58,10.7,6 898 | 8.3,0.31,0.39,2.4,0.078,17.0,43.0,0.99444,3.31,0.77,12.5,7 899 | 7.1,0.59,0.01,2.3,0.08,27.0,43.0,0.9955,3.42,0.58,10.7,6 900 | 8.3,0.31,0.39,2.4,0.078,17.0,43.0,0.99444,3.31,0.77,12.5,7 901 | 8.3,1.02,0.02,3.4,0.084,6.0,11.0,0.99892,3.48,0.49,11.0,3 902 | 8.9,0.31,0.36,2.6,0.055999999999999994,10.0,39.0,0.9956200000000001,3.4,0.69,11.8,5 903 | 7.4,0.635,0.1,2.4,0.08,16.0,33.0,0.99736,3.58,0.69,10.8,7 904 | 7.4,0.635,0.1,2.4,0.08,16.0,33.0,0.99736,3.58,0.69,10.8,7 905 | 6.8,0.59,0.06,6.0,0.06,11.0,18.0,0.9962,3.41,0.59,10.8,7 906 | 6.8,0.59,0.06,6.0,0.06,11.0,18.0,0.9962,3.41,0.59,10.8,7 907 | 9.2,0.58,0.2,3.0,0.081,15.0,115.0,0.998,3.23,0.59,9.5,5 908 | 7.2,0.54,0.27,2.6,0.084,12.0,78.0,0.9964,3.39,0.71,11.0,5 909 | 6.1,0.56,0.0,2.2,0.079,6.0,9.0,0.9948,3.59,0.54,11.5,6 910 | 7.4,0.52,0.13,2.4,0.078,34.0,61.0,0.9952799999999999,3.43,0.59,10.8,6 911 | 7.3,0.305,0.39,1.2,0.059000000000000004,7.0,11.0,0.99331,3.29,0.52,11.5,6 912 | 9.3,0.38,0.48,3.8,0.132,3.0,11.0,0.99577,3.23,0.57,13.2,6 913 | 9.1,0.28,0.46,9.0,0.114,3.0,9.0,0.9990100000000001,3.18,0.6,10.9,6 914 | 10.0,0.46,0.44,2.9,0.065,4.0,8.0,0.99674,3.33,0.62,12.2,6 915 | 9.4,0.395,0.46,4.6,0.094,3.0,10.0,0.99639,3.27,0.64,12.2,7 916 | 7.3,0.305,0.39,1.2,0.059000000000000004,7.0,11.0,0.99331,3.29,0.52,11.5,6 917 | 8.6,0.315,0.4,2.2,0.079,3.0,6.0,0.9951200000000001,3.27,0.67,11.9,6 918 | 5.3,0.715,0.19,1.5,0.161,7.0,62.0,0.99395,3.62,0.61,11.0,5 919 | 6.8,0.41,0.31,8.8,0.084,26.0,45.0,0.99824,3.38,0.64,10.1,6 920 | 8.4,0.36,0.32,2.2,0.081,32.0,79.0,0.9964,3.3,0.72,11.0,6 921 | 8.4,0.62,0.12,1.8,0.07200000000000001,38.0,46.0,0.9950399999999999,3.38,0.89,11.8,6 922 | 9.6,0.41,0.37,2.3,0.091,10.0,23.0,0.9978600000000001,3.24,0.56,10.5,5 923 | 8.4,0.36,0.32,2.2,0.081,32.0,79.0,0.9964,3.3,0.72,11.0,6 924 | 8.4,0.62,0.12,1.8,0.07200000000000001,38.0,46.0,0.9950399999999999,3.38,0.89,11.8,6 925 | 6.8,0.41,0.31,8.8,0.084,26.0,45.0,0.99824,3.38,0.64,10.1,6 926 | 8.6,0.47,0.27,2.3,0.055,14.0,28.0,0.99516,3.18,0.8,11.2,5 927 | 8.6,0.22,0.36,1.9,0.064,53.0,77.0,0.9960399999999999,3.47,0.87,11.0,7 928 | 9.4,0.24,0.33,2.3,0.061,52.0,73.0,0.9978600000000001,3.47,0.9,10.2,6 929 | 8.4,0.67,0.19,2.2,0.09300000000000001,11.0,75.0,0.99736,3.2,0.59,9.2,4 930 | 8.6,0.47,0.27,2.3,0.055,14.0,28.0,0.99516,3.18,0.8,11.2,5 931 | 8.7,0.33,0.38,3.3,0.063,10.0,19.0,0.9946799999999999,3.3,0.73,12.0,7 932 | 6.6,0.61,0.01,1.9,0.08,8.0,25.0,0.99746,3.69,0.73,10.5,5 933 | 7.4,0.61,0.01,2.0,0.07400000000000001,13.0,38.0,0.9974799999999999,3.48,0.65,9.8,5 934 | 7.6,0.4,0.29,1.9,0.078,29.0,66.0,0.9971,3.45,0.59,9.5,6 935 | 7.4,0.61,0.01,2.0,0.07400000000000001,13.0,38.0,0.9974799999999999,3.48,0.65,9.8,5 936 | 6.6,0.61,0.01,1.9,0.08,8.0,25.0,0.99746,3.69,0.73,10.5,5 937 | 8.8,0.3,0.38,2.3,0.06,19.0,72.0,0.9954299999999999,3.39,0.72,11.8,6 938 | 8.8,0.3,0.38,2.3,0.06,19.0,72.0,0.9954299999999999,3.39,0.72,11.8,6 939 | 12.0,0.63,0.5,1.4,0.071,6.0,26.0,0.9979100000000001,3.07,0.6,10.4,4 940 | 7.2,0.38,0.38,2.8,0.068,23.0,42.0,0.99356,3.34,0.72,12.9,7 941 | 6.2,0.46,0.17,1.6,0.073,7.0,11.0,0.99425,3.61,0.54,11.4,5 942 | 9.6,0.33,0.52,2.2,0.07400000000000001,13.0,25.0,0.9950899999999999,3.36,0.76,12.4,7 943 | 9.9,0.27,0.49,5.0,0.08199999999999999,9.0,17.0,0.99484,3.19,0.52,12.5,7 944 | 10.1,0.43,0.4,2.6,0.092,13.0,52.0,0.99834,3.22,0.64,10.0,7 945 | 9.8,0.5,0.34,2.3,0.094,10.0,45.0,0.99864,3.24,0.6,9.7,7 946 | 8.3,0.3,0.49,3.8,0.09,11.0,24.0,0.99498,3.27,0.64,12.1,7 947 | 10.2,0.44,0.42,2.0,0.071,7.0,20.0,0.99566,3.14,0.79,11.1,7 948 | 10.2,0.44,0.58,4.1,0.092,11.0,24.0,0.99745,3.29,0.99,12.0,7 949 | 8.3,0.28,0.48,2.1,0.09300000000000001,6.0,12.0,0.99408,3.26,0.62,12.4,7 950 | 8.9,0.12,0.45,1.8,0.075,10.0,21.0,0.9955200000000001,3.41,0.76,11.9,7 951 | 8.9,0.12,0.45,1.8,0.075,10.0,21.0,0.9955200000000001,3.41,0.76,11.9,7 952 | 8.9,0.12,0.45,1.8,0.075,10.0,21.0,0.9955200000000001,3.41,0.76,11.9,7 953 | 8.3,0.28,0.48,2.1,0.09300000000000001,6.0,12.0,0.99408,3.26,0.62,12.4,7 954 | 8.2,0.31,0.4,2.2,0.057999999999999996,6.0,10.0,0.99536,3.31,0.68,11.2,7 955 | 10.2,0.34,0.48,2.1,0.052000000000000005,5.0,9.0,0.9945799999999999,3.2,0.69,12.1,7 956 | 7.6,0.43,0.4,2.7,0.08199999999999999,6.0,11.0,0.9953799999999999,3.44,0.54,12.2,6 957 | 8.5,0.21,0.52,1.9,0.09,9.0,23.0,0.9964799999999999,3.36,0.67,10.4,5 958 | 9.0,0.36,0.52,2.1,0.111,5.0,10.0,0.9956799999999999,3.31,0.62,11.3,6 959 | 9.5,0.37,0.52,2.0,0.08800000000000001,12.0,51.0,0.99613,3.29,0.58,11.1,6 960 | 6.4,0.57,0.12,2.3,0.12,25.0,36.0,0.99519,3.47,0.71,11.3,7 961 | 8.0,0.59,0.05,2.0,0.08900000000000001,12.0,32.0,0.99735,3.36,0.61,10.0,5 962 | 8.5,0.47,0.27,1.9,0.057999999999999996,18.0,38.0,0.99518,3.16,0.85,11.1,6 963 | 7.1,0.56,0.14,1.6,0.078,7.0,18.0,0.99592,3.27,0.62,9.3,5 964 | 6.6,0.57,0.02,2.1,0.115,6.0,16.0,0.99654,3.38,0.69,9.5,5 965 | 8.8,0.27,0.39,2.0,0.1,20.0,27.0,0.99546,3.15,0.69,11.2,6 966 | 8.5,0.47,0.27,1.9,0.057999999999999996,18.0,38.0,0.99518,3.16,0.85,11.1,6 967 | 8.3,0.34,0.4,2.4,0.065,24.0,48.0,0.99554,3.34,0.86,11.0,6 968 | 9.0,0.38,0.41,2.4,0.10300000000000001,6.0,10.0,0.9960399999999999,3.13,0.58,11.9,7 969 | 8.5,0.66,0.2,2.1,0.09699999999999999,23.0,113.0,0.9973299999999999,3.13,0.48,9.2,5 970 | 9.0,0.4,0.43,2.4,0.068,29.0,46.0,0.9943,3.2,0.6,12.2,6 971 | 6.7,0.56,0.09,2.9,0.079,7.0,22.0,0.99669,3.46,0.61,10.2,5 972 | 10.4,0.26,0.48,1.9,0.066,6.0,10.0,0.99724,3.33,0.87,10.9,6 973 | 10.4,0.26,0.48,1.9,0.066,6.0,10.0,0.99724,3.33,0.87,10.9,6 974 | 10.1,0.38,0.5,2.4,0.10400000000000001,6.0,13.0,0.9964299999999999,3.22,0.65,11.6,7 975 | 8.5,0.34,0.44,1.7,0.079,6.0,12.0,0.99605,3.52,0.63,10.7,5 976 | 8.8,0.33,0.41,5.9,0.073,7.0,13.0,0.9965799999999999,3.3,0.62,12.1,7 977 | 7.2,0.41,0.3,2.1,0.083,35.0,72.0,0.997,3.44,0.52,9.4,5 978 | 7.2,0.41,0.3,2.1,0.083,35.0,72.0,0.997,3.44,0.52,9.4,5 979 | 8.4,0.59,0.29,2.6,0.109,31.0,119.0,0.9980100000000001,3.15,0.5,9.1,5 980 | 7.0,0.4,0.32,3.6,0.061,9.0,29.0,0.99416,3.28,0.49,11.3,7 981 | 12.2,0.45,0.49,1.4,0.075,3.0,6.0,0.9969,3.13,0.63,10.4,5 982 | 9.1,0.5,0.3,1.9,0.065,8.0,17.0,0.99774,3.32,0.71,10.5,6 983 | 9.5,0.86,0.26,1.9,0.079,13.0,28.0,0.9971200000000001,3.25,0.62,10.0,5 984 | 7.3,0.52,0.32,2.1,0.07,51.0,70.0,0.99418,3.34,0.82,12.9,6 985 | 9.1,0.5,0.3,1.9,0.065,8.0,17.0,0.99774,3.32,0.71,10.5,6 986 | 12.2,0.45,0.49,1.4,0.075,3.0,6.0,0.9969,3.13,0.63,10.4,5 987 | 7.4,0.58,0.0,2.0,0.064,7.0,11.0,0.9956200000000001,3.45,0.58,11.3,6 988 | 9.8,0.34,0.39,1.4,0.066,3.0,7.0,0.9947,3.19,0.55,11.4,7 989 | 7.1,0.36,0.3,1.6,0.08,35.0,70.0,0.9969299999999999,3.44,0.5,9.4,5 990 | 7.7,0.39,0.12,1.7,0.09699999999999999,19.0,27.0,0.9959600000000001,3.16,0.49,9.4,5 991 | 9.7,0.295,0.4,1.5,0.073,14.0,21.0,0.99556,3.14,0.51,10.9,6 992 | 7.7,0.39,0.12,1.7,0.09699999999999999,19.0,27.0,0.9959600000000001,3.16,0.49,9.4,5 993 | 7.1,0.34,0.28,2.0,0.08199999999999999,31.0,68.0,0.9969399999999999,3.45,0.48,9.4,5 994 | 6.5,0.4,0.1,2.0,0.076,30.0,47.0,0.99554,3.36,0.48,9.4,6 995 | 7.1,0.34,0.28,2.0,0.08199999999999999,31.0,68.0,0.9969399999999999,3.45,0.48,9.4,5 996 | 10.0,0.35,0.45,2.5,0.092,20.0,88.0,0.99918,3.15,0.43,9.4,5 997 | 7.7,0.6,0.06,2.0,0.079,19.0,41.0,0.99697,3.39,0.62,10.1,6 998 | 5.6,0.66,0.0,2.2,0.087,3.0,11.0,0.9937799999999999,3.71,0.63,12.8,7 999 | 5.6,0.66,0.0,2.2,0.087,3.0,11.0,0.9937799999999999,3.71,0.63,12.8,7 1000 | 8.9,0.84,0.34,1.4,0.05,4.0,10.0,0.99554,3.12,0.48,9.1,6 1001 | 6.4,0.69,0.0,1.65,0.055,7.0,12.0,0.9916200000000001,3.47,0.53,12.9,6 1002 | 7.5,0.43,0.3,2.2,0.062,6.0,12.0,0.99495,3.44,0.72,11.5,7 1003 | 9.9,0.35,0.38,1.5,0.057999999999999996,31.0,47.0,0.9967600000000001,3.26,0.82,10.6,7 1004 | 9.1,0.29,0.33,2.05,0.063,13.0,27.0,0.99516,3.26,0.84,11.7,7 1005 | 6.8,0.36,0.32,1.8,0.067,4.0,8.0,0.9928,3.36,0.55,12.8,7 1006 | 8.2,0.43,0.29,1.6,0.081,27.0,45.0,0.99603,3.25,0.54,10.3,5 1007 | 6.8,0.36,0.32,1.8,0.067,4.0,8.0,0.9928,3.36,0.55,12.8,7 1008 | 9.1,0.29,0.33,2.05,0.063,13.0,27.0,0.99516,3.26,0.84,11.7,7 1009 | 9.1,0.3,0.34,2.0,0.064,12.0,25.0,0.99516,3.26,0.84,11.7,7 1010 | 8.9,0.35,0.4,3.6,0.11,12.0,24.0,0.99549,3.23,0.7,12.0,7 1011 | 9.6,0.5,0.36,2.8,0.11599999999999999,26.0,55.0,0.9972200000000001,3.18,0.68,10.9,5 1012 | 8.9,0.28,0.45,1.7,0.067,7.0,12.0,0.99354,3.25,0.55,12.3,7 1013 | 8.9,0.32,0.31,2.0,0.08800000000000001,12.0,19.0,0.9957,3.17,0.55,10.4,6 1014 | 7.7,1.005,0.15,2.1,0.102,11.0,32.0,0.9960399999999999,3.23,0.48,10.0,5 1015 | 7.5,0.71,0.0,1.6,0.092,22.0,31.0,0.99635,3.38,0.58,10.0,6 1016 | 8.0,0.58,0.16,2.0,0.12,3.0,7.0,0.99454,3.22,0.58,11.2,6 1017 | 10.5,0.39,0.46,2.2,0.075,14.0,27.0,0.99598,3.06,0.84,11.4,6 1018 | 8.9,0.38,0.4,2.2,0.068,12.0,28.0,0.9948600000000001,3.27,0.75,12.6,7 1019 | 8.0,0.18,0.37,0.9,0.049,36.0,109.0,0.9900700000000001,2.89,0.44,12.7,6 1020 | 8.0,0.18,0.37,0.9,0.049,36.0,109.0,0.9900700000000001,2.89,0.44,12.7,6 1021 | 7.0,0.5,0.14,1.8,0.078,10.0,23.0,0.99636,3.53,0.61,10.4,5 1022 | 11.3,0.36,0.66,2.4,0.12300000000000001,3.0,8.0,0.9964200000000001,3.2,0.53,11.9,6 1023 | 11.3,0.36,0.66,2.4,0.12300000000000001,3.0,8.0,0.9964200000000001,3.2,0.53,11.9,6 1024 | 7.0,0.51,0.09,2.1,0.062,4.0,9.0,0.99584,3.35,0.54,10.5,5 1025 | 8.2,0.32,0.42,2.3,0.098,3.0,9.0,0.9950600000000001,3.27,0.55,12.3,6 1026 | 7.7,0.58,0.01,1.8,0.08800000000000001,12.0,18.0,0.9956799999999999,3.32,0.56,10.5,7 1027 | 8.6,0.83,0.0,2.8,0.095,17.0,43.0,0.9982200000000001,3.33,0.6,10.4,6 1028 | 7.9,0.31,0.32,1.9,0.066,14.0,36.0,0.99364,3.41,0.56,12.6,6 1029 | 6.4,0.795,0.0,2.2,0.065,28.0,52.0,0.9937799999999999,3.49,0.52,11.6,5 1030 | 7.2,0.34,0.21,2.5,0.075,41.0,68.0,0.9958600000000001,3.37,0.54,10.1,6 1031 | 7.7,0.58,0.01,1.8,0.08800000000000001,12.0,18.0,0.9956799999999999,3.32,0.56,10.5,7 1032 | 7.1,0.59,0.0,2.1,0.091,9.0,14.0,0.9948799999999999,3.42,0.55,11.5,7 1033 | 7.3,0.55,0.01,1.8,0.09300000000000001,9.0,15.0,0.9951399999999999,3.35,0.58,11.0,7 1034 | 8.1,0.82,0.0,4.1,0.095,5.0,14.0,0.99854,3.36,0.53,9.6,5 1035 | 7.5,0.57,0.08,2.6,0.08900000000000001,14.0,27.0,0.99592,3.3,0.59,10.4,6 1036 | 8.9,0.745,0.18,2.5,0.077,15.0,48.0,0.99739,3.2,0.47,9.7,6 1037 | 10.1,0.37,0.34,2.4,0.085,5.0,17.0,0.9968299999999999,3.17,0.65,10.6,7 1038 | 7.6,0.31,0.34,2.5,0.08199999999999999,26.0,35.0,0.99356,3.22,0.59,12.5,7 1039 | 7.3,0.91,0.1,1.8,0.07400000000000001,20.0,56.0,0.99672,3.35,0.56,9.2,5 1040 | 8.7,0.41,0.41,6.2,0.078,25.0,42.0,0.9953,3.24,0.77,12.6,7 1041 | 8.9,0.5,0.21,2.2,0.08800000000000001,21.0,39.0,0.99692,3.33,0.83,11.1,6 1042 | 7.4,0.965,0.0,2.2,0.08800000000000001,16.0,32.0,0.99756,3.58,0.67,10.2,5 1043 | 6.9,0.49,0.19,1.7,0.079,13.0,26.0,0.9954700000000001,3.38,0.64,9.8,6 1044 | 8.9,0.5,0.21,2.2,0.08800000000000001,21.0,39.0,0.99692,3.33,0.83,11.1,6 1045 | 9.5,0.39,0.41,8.9,0.069,18.0,39.0,0.99859,3.29,0.81,10.9,7 1046 | 6.4,0.39,0.33,3.3,0.046,12.0,53.0,0.9929399999999999,3.36,0.62,12.2,6 1047 | 6.9,0.44,0.0,1.4,0.07,32.0,38.0,0.9943799999999999,3.32,0.58,11.4,6 1048 | 7.6,0.78,0.0,1.7,0.076,33.0,45.0,0.9961200000000001,3.31,0.62,10.7,6 1049 | 7.1,0.43,0.17,1.8,0.08199999999999999,27.0,51.0,0.99634,3.49,0.64,10.4,5 1050 | 9.3,0.49,0.36,1.7,0.081,3.0,14.0,0.99702,3.27,0.78,10.9,6 1051 | 9.3,0.5,0.36,1.8,0.084,6.0,17.0,0.9970399999999999,3.27,0.77,10.8,6 1052 | 7.1,0.43,0.17,1.8,0.08199999999999999,27.0,51.0,0.99634,3.49,0.64,10.4,5 1053 | 8.5,0.46,0.59,1.4,0.414,16.0,45.0,0.99702,3.03,1.34,9.2,5 1054 | 5.6,0.605,0.05,2.4,0.073,19.0,25.0,0.9925799999999999,3.56,0.55,12.9,5 1055 | 8.3,0.33,0.42,2.3,0.07,9.0,20.0,0.99426,3.38,0.77,12.7,7 1056 | 8.2,0.64,0.27,2.0,0.095,5.0,77.0,0.9974700000000001,3.13,0.62,9.1,6 1057 | 8.2,0.64,0.27,2.0,0.095,5.0,77.0,0.9974700000000001,3.13,0.62,9.1,6 1058 | 8.9,0.48,0.53,4.0,0.10099999999999999,3.0,10.0,0.9958600000000001,3.21,0.59,12.1,7 1059 | 7.6,0.42,0.25,3.9,0.10400000000000001,28.0,90.0,0.99784,3.15,0.57,9.1,5 1060 | 9.9,0.53,0.57,2.4,0.09300000000000001,30.0,52.0,0.9971,3.19,0.76,11.6,7 1061 | 8.9,0.48,0.53,4.0,0.10099999999999999,3.0,10.0,0.9958600000000001,3.21,0.59,12.1,7 1062 | 11.6,0.23,0.57,1.8,0.07400000000000001,3.0,8.0,0.9981,3.14,0.7,9.9,6 1063 | 9.1,0.4,0.5,1.8,0.071,7.0,16.0,0.9946200000000001,3.21,0.69,12.5,8 1064 | 8.0,0.38,0.44,1.9,0.098,6.0,15.0,0.9956,3.3,0.64,11.4,6 1065 | 10.2,0.29,0.65,2.4,0.075,6.0,17.0,0.99565,3.22,0.63,11.8,6 1066 | 8.2,0.74,0.09,2.0,0.067,5.0,10.0,0.99418,3.28,0.57,11.8,6 1067 | 7.7,0.61,0.18,2.4,0.083,6.0,20.0,0.9963,3.29,0.6,10.2,6 1068 | 6.6,0.52,0.08,2.4,0.07,13.0,26.0,0.9935799999999999,3.4,0.72,12.5,7 1069 | 11.1,0.31,0.53,2.2,0.06,3.0,10.0,0.99572,3.02,0.83,10.9,7 1070 | 11.1,0.31,0.53,2.2,0.06,3.0,10.0,0.99572,3.02,0.83,10.9,7 1071 | 8.0,0.62,0.35,2.8,0.086,28.0,52.0,0.997,3.31,0.62,10.8,5 1072 | 9.3,0.33,0.45,1.5,0.057,19.0,37.0,0.99498,3.18,0.89,11.1,7 1073 | 7.5,0.77,0.2,8.1,0.098,30.0,92.0,0.99892,3.2,0.58,9.2,5 1074 | 7.2,0.35,0.26,1.8,0.083,33.0,75.0,0.9968,3.4,0.58,9.5,6 1075 | 8.0,0.62,0.33,2.7,0.08800000000000001,16.0,37.0,0.9972,3.31,0.58,10.7,6 1076 | 7.5,0.77,0.2,8.1,0.098,30.0,92.0,0.99892,3.2,0.58,9.2,5 1077 | 9.1,0.25,0.34,2.0,0.071,45.0,67.0,0.99769,3.44,0.86,10.2,7 1078 | 9.9,0.32,0.56,2.0,0.073,3.0,8.0,0.99534,3.15,0.73,11.4,6 1079 | 8.6,0.37,0.65,6.4,0.08,3.0,8.0,0.9981700000000001,3.27,0.58,11.0,5 1080 | 8.6,0.37,0.65,6.4,0.08,3.0,8.0,0.9981700000000001,3.27,0.58,11.0,5 1081 | 7.9,0.3,0.68,8.3,0.05,37.5,278.0,0.99316,3.01,0.51,12.3,7 1082 | 10.3,0.27,0.56,1.4,0.047,3.0,8.0,0.99471,3.16,0.51,11.8,6 1083 | 7.9,0.3,0.68,8.3,0.05,37.5,289.0,0.99316,3.01,0.51,12.3,7 1084 | 7.2,0.38,0.3,1.8,0.073,31.0,70.0,0.99685,3.42,0.59,9.5,6 1085 | 8.7,0.42,0.45,2.4,0.07200000000000001,32.0,59.0,0.9961700000000001,3.33,0.77,12.0,6 1086 | 7.2,0.38,0.3,1.8,0.073,31.0,70.0,0.99685,3.42,0.59,9.5,6 1087 | 6.8,0.48,0.08,1.8,0.07400000000000001,40.0,64.0,0.99529,3.12,0.49,9.6,5 1088 | 8.5,0.34,0.4,4.7,0.055,3.0,9.0,0.9973799999999999,3.38,0.66,11.6,7 1089 | 7.9,0.19,0.42,1.6,0.057,18.0,30.0,0.9940000000000001,3.29,0.69,11.2,6 1090 | 11.6,0.41,0.54,1.5,0.095,22.0,41.0,0.99735,3.02,0.76,9.9,7 1091 | 11.6,0.41,0.54,1.5,0.095,22.0,41.0,0.99735,3.02,0.76,9.9,7 1092 | 10.0,0.26,0.54,1.9,0.083,42.0,74.0,0.99451,2.98,0.63,11.8,8 1093 | 7.9,0.34,0.42,2.0,0.086,8.0,19.0,0.99546,3.35,0.6,11.4,6 1094 | 7.0,0.54,0.09,2.0,0.081,10.0,16.0,0.99479,3.43,0.59,11.5,6 1095 | 9.2,0.31,0.36,2.2,0.079,11.0,31.0,0.99615,3.33,0.86,12.0,7 1096 | 6.6,0.725,0.09,5.5,0.11699999999999999,9.0,17.0,0.99655,3.35,0.49,10.8,6 1097 | 9.4,0.4,0.47,2.5,0.087,6.0,20.0,0.99772,3.15,0.5,10.5,5 1098 | 6.6,0.725,0.09,5.5,0.11699999999999999,9.0,17.0,0.99655,3.35,0.49,10.8,6 1099 | 8.6,0.52,0.38,1.5,0.096,5.0,18.0,0.99666,3.2,0.52,9.4,5 1100 | 8.0,0.31,0.45,2.1,0.21600000000000003,5.0,16.0,0.9935799999999999,3.15,0.81,12.5,7 1101 | 8.6,0.52,0.38,1.5,0.096,5.0,18.0,0.99666,3.2,0.52,9.4,5 1102 | 8.4,0.34,0.42,2.1,0.07200000000000001,23.0,36.0,0.99392,3.11,0.78,12.4,6 1103 | 7.4,0.49,0.27,2.1,0.071,14.0,25.0,0.9938799999999999,3.35,0.63,12.0,6 1104 | 6.1,0.48,0.09,1.7,0.078,18.0,30.0,0.9940200000000001,3.45,0.54,11.2,6 1105 | 7.4,0.49,0.27,2.1,0.071,14.0,25.0,0.9938799999999999,3.35,0.63,12.0,6 1106 | 8.0,0.48,0.34,2.2,0.073,16.0,25.0,0.9936,3.28,0.66,12.4,6 1107 | 6.3,0.57,0.28,2.1,0.048,13.0,49.0,0.99374,3.41,0.6,12.8,5 1108 | 8.2,0.23,0.42,1.9,0.069,9.0,17.0,0.9937600000000001,3.21,0.54,12.3,6 1109 | 9.1,0.3,0.41,2.0,0.068,10.0,24.0,0.99523,3.27,0.85,11.7,7 1110 | 8.1,0.78,0.1,3.3,0.09,4.0,13.0,0.99855,3.36,0.49,9.5,5 1111 | 10.8,0.47,0.43,2.1,0.171,27.0,66.0,0.9982,3.17,0.76,10.8,6 1112 | 8.3,0.53,0.0,1.4,0.07,6.0,14.0,0.99593,3.25,0.64,10.0,6 1113 | 5.4,0.42,0.27,2.0,0.092,23.0,55.0,0.99471,3.78,0.64,12.3,7 1114 | 7.9,0.33,0.41,1.5,0.055999999999999994,6.0,35.0,0.9939600000000001,3.29,0.71,11.0,6 1115 | 8.9,0.24,0.39,1.6,0.07400000000000001,3.0,10.0,0.99698,3.12,0.59,9.5,6 1116 | 5.0,0.4,0.5,4.3,0.046,29.0,80.0,0.9902,3.49,0.66,13.6,6 1117 | 7.0,0.69,0.07,2.5,0.091,15.0,21.0,0.99572,3.38,0.6,11.3,6 1118 | 7.0,0.69,0.07,2.5,0.091,15.0,21.0,0.99572,3.38,0.6,11.3,6 1119 | 7.0,0.69,0.07,2.5,0.091,15.0,21.0,0.99572,3.38,0.6,11.3,6 1120 | 7.1,0.39,0.12,2.1,0.065,14.0,24.0,0.9925200000000001,3.3,0.53,13.3,6 1121 | 5.6,0.66,0.0,2.5,0.066,7.0,15.0,0.99256,3.52,0.58,12.9,5 1122 | 7.9,0.54,0.34,2.5,0.076,8.0,17.0,0.99235,3.2,0.72,13.1,8 1123 | 6.6,0.5,0.0,1.8,0.062,21.0,28.0,0.9935200000000001,3.44,0.55,12.3,6 1124 | 6.3,0.47,0.0,1.4,0.055,27.0,33.0,0.9922,3.45,0.48,12.3,6 1125 | 10.7,0.4,0.37,1.9,0.081,17.0,29.0,0.99674,3.12,0.65,11.2,6 1126 | 6.5,0.58,0.0,2.2,0.096,3.0,13.0,0.9955700000000001,3.62,0.62,11.5,4 1127 | 8.8,0.24,0.35,1.7,0.055,13.0,27.0,0.9939399999999999,3.14,0.59,11.3,7 1128 | 5.8,0.29,0.26,1.7,0.063,3.0,11.0,0.9915,3.39,0.54,13.5,6 1129 | 6.3,0.76,0.0,2.9,0.07200000000000001,26.0,52.0,0.99379,3.51,0.6,11.5,6 1130 | 10.0,0.43,0.33,2.7,0.095,28.0,89.0,0.9984,3.22,0.68,10.0,5 1131 | 10.5,0.43,0.35,3.3,0.092,24.0,70.0,0.99798,3.21,0.69,10.5,6 1132 | 9.1,0.6,0.0,1.9,0.057999999999999996,5.0,10.0,0.9977,3.18,0.63,10.4,6 1133 | 5.9,0.19,0.21,1.7,0.045,57.0,135.0,0.99341,3.32,0.44,9.5,5 1134 | 7.4,0.36,0.34,1.8,0.075,18.0,38.0,0.9933,3.38,0.88,13.6,7 1135 | 7.2,0.48,0.07,5.5,0.08900000000000001,10.0,18.0,0.99684,3.37,0.68,11.2,7 1136 | 8.5,0.28,0.35,1.7,0.061,6.0,15.0,0.99524,3.3,0.74,11.8,7 1137 | 8.0,0.25,0.43,1.7,0.067,22.0,50.0,0.9946,3.38,0.6,11.9,6 1138 | 10.4,0.52,0.45,2.0,0.08,6.0,13.0,0.99774,3.22,0.76,11.4,6 1139 | 10.4,0.52,0.45,2.0,0.08,6.0,13.0,0.99774,3.22,0.76,11.4,6 1140 | 7.5,0.41,0.15,3.7,0.10400000000000001,29.0,94.0,0.9978600000000001,3.14,0.58,9.1,5 1141 | 8.2,0.51,0.24,2.0,0.079,16.0,86.0,0.99764,3.34,0.64,9.5,6 1142 | 7.3,0.4,0.3,1.7,0.08,33.0,79.0,0.9969,3.41,0.65,9.5,6 1143 | 8.2,0.38,0.32,2.5,0.08,24.0,71.0,0.99624,3.27,0.85,11.0,6 1144 | 6.9,0.45,0.11,2.4,0.043,6.0,12.0,0.99354,3.3,0.65,11.4,6 1145 | 7.0,0.22,0.3,1.8,0.065,16.0,20.0,0.99672,3.61,0.82,10.0,6 1146 | 7.3,0.32,0.23,2.3,0.066,35.0,70.0,0.9958799999999999,3.43,0.62,10.1,5 1147 | 8.2,0.2,0.43,2.5,0.076,31.0,51.0,0.99672,3.53,0.81,10.4,6 1148 | 7.8,0.5,0.12,1.8,0.17800000000000002,6.0,21.0,0.996,3.28,0.87,9.8,6 1149 | 10.0,0.41,0.45,6.2,0.071,6.0,14.0,0.99702,3.21,0.49,11.8,7 1150 | 7.8,0.39,0.42,2.0,0.086,9.0,21.0,0.99526,3.39,0.66,11.6,6 1151 | 10.0,0.35,0.47,2.0,0.061,6.0,11.0,0.99585,3.23,0.52,12.0,6 1152 | 8.2,0.33,0.32,2.8,0.067,4.0,12.0,0.9947299999999999,3.3,0.76,12.8,7 1153 | 6.1,0.58,0.23,2.5,0.044000000000000004,16.0,70.0,0.9935200000000001,3.46,0.65,12.5,6 1154 | 8.3,0.6,0.25,2.2,0.11800000000000001,9.0,38.0,0.99616,3.15,0.53,9.8,5 1155 | 9.6,0.42,0.35,2.1,0.083,17.0,38.0,0.9962200000000001,3.23,0.66,11.1,6 1156 | 6.6,0.58,0.0,2.2,0.1,50.0,63.0,0.99544,3.59,0.68,11.4,6 1157 | 8.3,0.6,0.25,2.2,0.11800000000000001,9.0,38.0,0.99616,3.15,0.53,9.8,5 1158 | 8.5,0.18,0.51,1.75,0.071,45.0,88.0,0.99524,3.33,0.76,11.8,7 1159 | 5.1,0.51,0.18,2.1,0.042,16.0,101.0,0.9924,3.46,0.87,12.9,7 1160 | 6.7,0.41,0.43,2.8,0.076,22.0,54.0,0.99572,3.42,1.16,10.6,6 1161 | 10.2,0.41,0.43,2.2,0.11,11.0,37.0,0.9972799999999999,3.16,0.67,10.8,5 1162 | 10.6,0.36,0.57,2.3,0.087,6.0,20.0,0.9967600000000001,3.14,0.72,11.1,7 1163 | 8.8,0.45,0.43,1.4,0.076,12.0,21.0,0.99551,3.21,0.75,10.2,6 1164 | 8.5,0.32,0.42,2.3,0.075,12.0,19.0,0.99434,3.14,0.71,11.8,7 1165 | 9.0,0.785,0.24,1.7,0.078,10.0,21.0,0.99692,3.29,0.67,10.0,5 1166 | 9.0,0.785,0.24,1.7,0.078,10.0,21.0,0.99692,3.29,0.67,10.0,5 1167 | 8.5,0.44,0.5,1.9,0.369,15.0,38.0,0.99634,3.01,1.1,9.4,5 1168 | 9.9,0.54,0.26,2.0,0.111,7.0,60.0,0.9970899999999999,2.94,0.98,10.2,5 1169 | 8.2,0.33,0.39,2.5,0.07400000000000001,29.0,48.0,0.9952799999999999,3.32,0.88,12.4,7 1170 | 6.5,0.34,0.27,2.8,0.067,8.0,44.0,0.99384,3.21,0.56,12.0,6 1171 | 7.6,0.5,0.29,2.3,0.086,5.0,14.0,0.9950200000000001,3.32,0.62,11.5,6 1172 | 9.2,0.36,0.34,1.6,0.062,5.0,12.0,0.9966700000000001,3.2,0.67,10.5,6 1173 | 7.1,0.59,0.0,2.2,0.078,26.0,44.0,0.9952200000000001,3.42,0.68,10.8,6 1174 | 9.7,0.42,0.46,2.1,0.07400000000000001,5.0,16.0,0.99649,3.27,0.74,12.3,6 1175 | 7.6,0.36,0.31,1.7,0.079,26.0,65.0,0.99716,3.46,0.62,9.5,6 1176 | 7.6,0.36,0.31,1.7,0.079,26.0,65.0,0.99716,3.46,0.62,9.5,6 1177 | 6.5,0.61,0.0,2.2,0.095,48.0,59.0,0.99541,3.61,0.7,11.5,6 1178 | 6.5,0.88,0.03,5.6,0.079,23.0,47.0,0.99572,3.58,0.5,11.2,4 1179 | 7.1,0.66,0.0,2.4,0.052000000000000005,6.0,11.0,0.99318,3.35,0.66,12.7,7 1180 | 5.6,0.915,0.0,2.1,0.040999999999999995,17.0,78.0,0.99346,3.68,0.73,11.4,5 1181 | 8.2,0.35,0.33,2.4,0.076,11.0,47.0,0.9959899999999999,3.27,0.81,11.0,6 1182 | 8.2,0.35,0.33,2.4,0.076,11.0,47.0,0.9959899999999999,3.27,0.81,11.0,6 1183 | 9.8,0.39,0.43,1.65,0.068,5.0,11.0,0.9947799999999999,3.19,0.46,11.4,5 1184 | 10.2,0.4,0.4,2.5,0.068,41.0,54.0,0.99754,3.38,0.86,10.5,6 1185 | 6.8,0.66,0.07,1.6,0.07,16.0,61.0,0.99572,3.29,0.6,9.3,5 1186 | 6.7,0.64,0.23,2.1,0.08,11.0,119.0,0.9953799999999999,3.36,0.7,10.9,5 1187 | 7.0,0.43,0.3,2.0,0.085,6.0,39.0,0.99346,3.33,0.46,11.9,6 1188 | 6.6,0.8,0.03,7.8,0.079,6.0,12.0,0.9963,3.52,0.5,12.2,5 1189 | 7.0,0.43,0.3,2.0,0.085,6.0,39.0,0.99346,3.33,0.46,11.9,6 1190 | 6.7,0.64,0.23,2.1,0.08,11.0,119.0,0.9953799999999999,3.36,0.7,10.9,5 1191 | 8.8,0.955,0.05,1.8,0.075,5.0,19.0,0.99616,3.3,0.44,9.6,4 1192 | 9.1,0.4,0.57,4.6,0.08,6.0,20.0,0.9965200000000001,3.28,0.57,12.5,6 1193 | 6.5,0.885,0.0,2.3,0.166,6.0,12.0,0.99551,3.56,0.51,10.8,5 1194 | 7.2,0.25,0.37,2.5,0.063,11.0,41.0,0.99439,3.52,0.8,12.4,7 1195 | 6.4,0.885,0.0,2.3,0.166,6.0,12.0,0.99551,3.56,0.51,10.8,5 1196 | 7.0,0.745,0.12,1.8,0.114,15.0,64.0,0.9958799999999999,3.22,0.59,9.5,6 1197 | 6.2,0.43,0.22,1.8,0.078,21.0,56.0,0.9963299999999999,3.52,0.6,9.5,6 1198 | 7.9,0.58,0.23,2.3,0.076,23.0,94.0,0.9968600000000001,3.21,0.58,9.5,6 1199 | 7.7,0.57,0.21,1.5,0.069,4.0,9.0,0.9945799999999999,3.16,0.54,9.8,6 1200 | 7.7,0.26,0.26,2.0,0.052000000000000005,19.0,77.0,0.9951,3.15,0.79,10.9,6 1201 | 7.9,0.58,0.23,2.3,0.076,23.0,94.0,0.9968600000000001,3.21,0.58,9.5,6 1202 | 7.7,0.57,0.21,1.5,0.069,4.0,9.0,0.9945799999999999,3.16,0.54,9.8,6 1203 | 7.9,0.34,0.36,1.9,0.065,5.0,10.0,0.99419,3.27,0.54,11.2,7 1204 | 8.6,0.42,0.39,1.8,0.068,6.0,12.0,0.99516,3.35,0.69,11.7,8 1205 | 9.9,0.74,0.19,5.8,0.111,33.0,76.0,0.9987799999999999,3.14,0.55,9.4,5 1206 | 7.2,0.36,0.46,2.1,0.07400000000000001,24.0,44.0,0.99534,3.4,0.85,11.0,7 1207 | 7.2,0.36,0.46,2.1,0.07400000000000001,24.0,44.0,0.99534,3.4,0.85,11.0,7 1208 | 7.2,0.36,0.46,2.1,0.07400000000000001,24.0,44.0,0.99534,3.4,0.85,11.0,7 1209 | 9.9,0.72,0.55,1.7,0.136,24.0,52.0,0.9975200000000001,3.35,0.94,10.0,5 1210 | 7.2,0.36,0.46,2.1,0.07400000000000001,24.0,44.0,0.99534,3.4,0.85,11.0,7 1211 | 6.2,0.39,0.43,2.0,0.071,14.0,24.0,0.9942799999999999,3.45,0.87,11.2,7 1212 | 6.8,0.65,0.02,2.1,0.078,8.0,15.0,0.99498,3.35,0.62,10.4,6 1213 | 6.6,0.44,0.15,2.1,0.076,22.0,53.0,0.9957,3.32,0.62,9.3,5 1214 | 6.8,0.65,0.02,2.1,0.078,8.0,15.0,0.99498,3.35,0.62,10.4,6 1215 | 9.6,0.38,0.42,1.9,0.071,5.0,13.0,0.99659,3.15,0.75,10.5,6 1216 | 10.2,0.33,0.46,1.9,0.081,6.0,9.0,0.9962799999999999,3.1,0.48,10.4,6 1217 | 8.8,0.27,0.46,2.1,0.095,20.0,29.0,0.9948799999999999,3.26,0.56,11.3,6 1218 | 7.9,0.57,0.31,2.0,0.079,10.0,79.0,0.99677,3.29,0.69,9.5,6 1219 | 8.2,0.34,0.37,1.9,0.057,43.0,74.0,0.99408,3.23,0.81,12.0,6 1220 | 8.2,0.4,0.31,1.9,0.08199999999999999,8.0,24.0,0.996,3.24,0.69,10.6,6 1221 | 9.0,0.39,0.4,1.3,0.044000000000000004,25.0,50.0,0.9947799999999999,3.2,0.83,10.9,6 1222 | 10.9,0.32,0.52,1.8,0.132,17.0,44.0,0.99734,3.28,0.77,11.5,6 1223 | 10.9,0.32,0.52,1.8,0.132,17.0,44.0,0.99734,3.28,0.77,11.5,6 1224 | 8.1,0.53,0.22,2.2,0.078,33.0,89.0,0.9967799999999999,3.26,0.46,9.6,6 1225 | 10.5,0.36,0.47,2.2,0.07400000000000001,9.0,23.0,0.9963799999999999,3.23,0.76,12.0,6 1226 | 12.6,0.39,0.49,2.5,0.08,8.0,20.0,0.9992,3.07,0.82,10.3,6 1227 | 9.2,0.46,0.23,2.6,0.091,18.0,77.0,0.9992200000000001,3.15,0.51,9.4,5 1228 | 7.5,0.58,0.03,4.1,0.08,27.0,46.0,0.99592,3.02,0.47,9.2,5 1229 | 9.0,0.58,0.25,2.0,0.10400000000000001,8.0,21.0,0.99769,3.27,0.72,9.6,5 1230 | 5.1,0.42,0.0,1.8,0.044000000000000004,18.0,88.0,0.9915700000000001,3.68,0.73,13.6,7 1231 | 7.6,0.43,0.29,2.1,0.075,19.0,66.0,0.99718,3.4,0.64,9.5,5 1232 | 7.7,0.18,0.34,2.7,0.066,15.0,58.0,0.9947,3.37,0.78,11.8,6 1233 | 7.8,0.815,0.01,2.6,0.07400000000000001,48.0,90.0,0.99621,3.38,0.62,10.8,5 1234 | 7.6,0.43,0.29,2.1,0.075,19.0,66.0,0.99718,3.4,0.64,9.5,5 1235 | 10.2,0.23,0.37,2.2,0.057,14.0,36.0,0.9961399999999999,3.23,0.49,9.3,4 1236 | 7.1,0.75,0.01,2.2,0.059000000000000004,11.0,18.0,0.9924200000000001,3.39,0.4,12.8,6 1237 | 6.0,0.33,0.32,12.9,0.054000000000000006,6.0,113.0,0.99572,3.3,0.56,11.5,4 1238 | 7.8,0.55,0.0,1.7,0.07,7.0,17.0,0.99659,3.26,0.64,9.4,6 1239 | 7.1,0.75,0.01,2.2,0.059000000000000004,11.0,18.0,0.9924200000000001,3.39,0.4,12.8,6 1240 | 8.1,0.73,0.0,2.5,0.081,12.0,24.0,0.99798,3.38,0.46,9.6,4 1241 | 6.5,0.67,0.0,4.3,0.057,11.0,20.0,0.9948799999999999,3.45,0.56,11.8,4 1242 | 7.5,0.61,0.2,1.7,0.076,36.0,60.0,0.9949399999999999,3.1,0.4,9.3,5 1243 | 9.8,0.37,0.39,2.5,0.079,28.0,65.0,0.99729,3.16,0.59,9.8,5 1244 | 9.0,0.4,0.41,2.0,0.057999999999999996,15.0,40.0,0.9941399999999999,3.22,0.6,12.2,6 1245 | 8.3,0.56,0.22,2.4,0.08199999999999999,10.0,86.0,0.9983,3.37,0.62,9.5,5 1246 | 5.9,0.29,0.25,13.4,0.067,72.0,160.0,0.99721,3.33,0.54,10.3,6 1247 | 7.4,0.55,0.19,1.8,0.08199999999999999,15.0,34.0,0.99655,3.49,0.68,10.5,5 1248 | 7.4,0.74,0.07,1.7,0.086,15.0,48.0,0.9950200000000001,3.12,0.48,10.0,5 1249 | 7.4,0.55,0.19,1.8,0.08199999999999999,15.0,34.0,0.99655,3.49,0.68,10.5,5 1250 | 6.9,0.41,0.33,2.2,0.081,22.0,36.0,0.9949,3.41,0.75,11.1,6 1251 | 7.1,0.6,0.01,2.3,0.079,24.0,37.0,0.9951399999999999,3.4,0.61,10.9,6 1252 | 7.1,0.6,0.01,2.3,0.079,24.0,37.0,0.9951399999999999,3.4,0.61,10.9,6 1253 | 7.5,0.58,0.14,2.2,0.077,27.0,60.0,0.9963,3.28,0.59,9.8,5 1254 | 7.1,0.72,0.0,1.8,0.12300000000000001,6.0,14.0,0.9962700000000001,3.45,0.58,9.8,5 1255 | 7.9,0.66,0.0,1.4,0.096,6.0,13.0,0.99569,3.43,0.58,9.5,5 1256 | 7.8,0.7,0.06,1.9,0.079,20.0,35.0,0.9962799999999999,3.4,0.69,10.9,5 1257 | 6.1,0.64,0.02,2.4,0.069,26.0,46.0,0.9935799999999999,3.47,0.45,11.0,5 1258 | 7.5,0.59,0.22,1.8,0.08199999999999999,43.0,60.0,0.9949899999999999,3.1,0.42,9.2,5 1259 | 7.0,0.58,0.28,4.8,0.085,12.0,69.0,0.9963299999999999,3.32,0.7,11.0,6 1260 | 6.8,0.64,0.0,2.7,0.12300000000000001,15.0,33.0,0.9953799999999999,3.44,0.63,11.3,6 1261 | 6.8,0.64,0.0,2.7,0.12300000000000001,15.0,33.0,0.9953799999999999,3.44,0.63,11.3,6 1262 | 8.6,0.635,0.68,1.8,0.40299999999999997,19.0,56.0,0.9963200000000001,3.02,1.15,9.3,5 1263 | 6.3,1.02,0.0,2.0,0.083,17.0,24.0,0.9943700000000001,3.59,0.55,11.2,4 1264 | 9.8,0.45,0.38,2.5,0.081,34.0,66.0,0.99726,3.15,0.58,9.8,5 1265 | 8.2,0.78,0.0,2.2,0.08900000000000001,13.0,26.0,0.9978,3.37,0.46,9.6,4 1266 | 8.5,0.37,0.32,1.8,0.066,26.0,51.0,0.99456,3.38,0.72,11.8,6 1267 | 7.2,0.57,0.05,2.3,0.081,16.0,36.0,0.99564,3.38,0.6,10.3,6 1268 | 7.2,0.57,0.05,2.3,0.081,16.0,36.0,0.99564,3.38,0.6,10.3,6 1269 | 10.4,0.43,0.5,2.3,0.068,13.0,19.0,0.996,3.1,0.87,11.4,6 1270 | 6.9,0.41,0.31,2.0,0.079,21.0,51.0,0.9966799999999999,3.47,0.55,9.5,6 1271 | 5.5,0.49,0.03,1.8,0.044000000000000004,28.0,87.0,0.9908,3.5,0.82,14.0,8 1272 | 5.0,0.38,0.01,1.6,0.048,26.0,60.0,0.9908399999999999,3.7,0.75,14.0,6 1273 | 7.3,0.44,0.2,1.6,0.049,24.0,64.0,0.9935,3.38,0.57,11.7,6 1274 | 5.9,0.46,0.0,1.9,0.077,25.0,44.0,0.99385,3.5,0.53,11.2,5 1275 | 7.5,0.58,0.2,2.0,0.073,34.0,44.0,0.9949399999999999,3.1,0.43,9.3,5 1276 | 7.8,0.58,0.13,2.1,0.102,17.0,36.0,0.9944,3.24,0.53,11.2,6 1277 | 8.0,0.715,0.22,2.3,0.075,13.0,81.0,0.9968799999999999,3.24,0.54,9.5,6 1278 | 8.5,0.4,0.4,6.3,0.05,3.0,10.0,0.99566,3.28,0.56,12.0,4 1279 | 7.0,0.69,0.0,1.9,0.114,3.0,10.0,0.99636,3.35,0.6,9.7,6 1280 | 8.0,0.715,0.22,2.3,0.075,13.0,81.0,0.9968799999999999,3.24,0.54,9.5,6 1281 | 9.8,0.3,0.39,1.7,0.062,3.0,9.0,0.9948,3.14,0.57,11.5,7 1282 | 7.1,0.46,0.2,1.9,0.077,28.0,54.0,0.9956,3.37,0.64,10.4,6 1283 | 7.1,0.46,0.2,1.9,0.077,28.0,54.0,0.9956,3.37,0.64,10.4,6 1284 | 7.9,0.765,0.0,2.0,0.084,9.0,22.0,0.9961899999999999,3.33,0.68,10.9,6 1285 | 8.7,0.63,0.28,2.7,0.096,17.0,69.0,0.99734,3.26,0.63,10.2,6 1286 | 7.0,0.42,0.19,2.3,0.071,18.0,36.0,0.9947600000000001,3.39,0.56,10.9,5 1287 | 11.3,0.37,0.5,1.8,0.09,20.0,47.0,0.99734,3.15,0.57,10.5,5 1288 | 7.1,0.16,0.44,2.5,0.068,17.0,31.0,0.9932799999999999,3.35,0.54,12.4,6 1289 | 8.0,0.6,0.08,2.6,0.055999999999999994,3.0,7.0,0.9928600000000001,3.22,0.37,13.0,5 1290 | 7.0,0.6,0.3,4.5,0.068,20.0,110.0,0.9991399999999999,3.3,1.17,10.2,5 1291 | 7.0,0.6,0.3,4.5,0.068,20.0,110.0,0.9991399999999999,3.3,1.17,10.2,5 1292 | 7.6,0.74,0.0,1.9,0.1,6.0,12.0,0.99521,3.36,0.59,11.0,5 1293 | 8.2,0.635,0.1,2.1,0.073,25.0,60.0,0.9963799999999999,3.29,0.75,10.9,6 1294 | 5.9,0.395,0.13,2.4,0.055999999999999994,14.0,28.0,0.9936200000000001,3.62,0.67,12.4,6 1295 | 7.5,0.755,0.0,1.9,0.084,6.0,12.0,0.99672,3.34,0.49,9.7,4 1296 | 8.2,0.635,0.1,2.1,0.073,25.0,60.0,0.9963799999999999,3.29,0.75,10.9,6 1297 | 6.6,0.63,0.0,4.3,0.09300000000000001,51.0,77.5,0.9955799999999999,3.2,0.45,9.5,5 1298 | 6.6,0.63,0.0,4.3,0.09300000000000001,51.0,77.5,0.9955799999999999,3.2,0.45,9.5,5 1299 | 7.2,0.53,0.14,2.1,0.064,15.0,29.0,0.99323,3.35,0.61,12.1,6 1300 | 5.7,0.6,0.0,1.4,0.063,11.0,18.0,0.9919100000000001,3.45,0.56,12.2,6 1301 | 7.6,1.58,0.0,2.1,0.13699999999999998,5.0,9.0,0.9947600000000001,3.5,0.4,10.9,3 1302 | 5.2,0.645,0.0,2.15,0.08,15.0,28.0,0.99444,3.78,0.61,12.5,6 1303 | 6.7,0.86,0.07,2.0,0.1,20.0,57.0,0.99598,3.6,0.74,11.7,6 1304 | 9.1,0.37,0.32,2.1,0.064,4.0,15.0,0.9957600000000001,3.3,0.8,11.2,6 1305 | 8.0,0.28,0.44,1.8,0.081,28.0,68.0,0.9950100000000001,3.36,0.66,11.2,5 1306 | 7.6,0.79,0.21,2.3,0.087,21.0,68.0,0.9955,3.12,0.44,9.2,5 1307 | 7.5,0.61,0.26,1.9,0.073,24.0,88.0,0.9961200000000001,3.3,0.53,9.8,5 1308 | 9.7,0.69,0.32,2.5,0.08800000000000001,22.0,91.0,0.9979,3.29,0.62,10.1,5 1309 | 6.8,0.68,0.09,3.9,0.068,15.0,29.0,0.99524,3.41,0.52,11.1,4 1310 | 9.7,0.69,0.32,2.5,0.08800000000000001,22.0,91.0,0.9979,3.29,0.62,10.1,5 1311 | 7.0,0.62,0.1,1.4,0.071,27.0,63.0,0.996,3.28,0.61,9.2,5 1312 | 7.5,0.61,0.26,1.9,0.073,24.0,88.0,0.9961200000000001,3.3,0.53,9.8,5 1313 | 6.5,0.51,0.15,3.0,0.064,12.0,27.0,0.9929,3.33,0.59,12.8,6 1314 | 8.0,1.18,0.21,1.9,0.083,14.0,41.0,0.9953200000000001,3.34,0.47,10.5,5 1315 | 7.0,0.36,0.21,2.3,0.086,20.0,65.0,0.9955799999999999,3.4,0.54,10.1,6 1316 | 7.0,0.36,0.21,2.4,0.086,24.0,69.0,0.99556,3.4,0.53,10.1,6 1317 | 7.5,0.63,0.27,2.0,0.083,17.0,91.0,0.99616,3.26,0.58,9.8,6 1318 | 5.4,0.74,0.0,1.2,0.040999999999999995,16.0,46.0,0.9925799999999999,4.01,0.59,12.5,6 1319 | 9.9,0.44,0.46,2.2,0.091,10.0,41.0,0.9963799999999999,3.18,0.69,11.9,6 1320 | 7.5,0.63,0.27,2.0,0.083,17.0,91.0,0.99616,3.26,0.58,9.8,6 1321 | 9.1,0.76,0.68,1.7,0.414,18.0,64.0,0.9965200000000001,2.9,1.33,9.1,6 1322 | 9.7,0.66,0.34,2.6,0.094,12.0,88.0,0.9979600000000001,3.26,0.66,10.1,5 1323 | 5.0,0.74,0.0,1.2,0.040999999999999995,16.0,46.0,0.9925799999999999,4.01,0.59,12.5,6 1324 | 9.1,0.34,0.42,1.8,0.057999999999999996,9.0,18.0,0.99392,3.18,0.55,11.4,5 1325 | 9.1,0.36,0.39,1.8,0.06,21.0,55.0,0.99495,3.18,0.82,11.0,7 1326 | 6.7,0.46,0.24,1.7,0.077,18.0,34.0,0.9948,3.39,0.6,10.6,6 1327 | 6.7,0.46,0.24,1.7,0.077,18.0,34.0,0.9948,3.39,0.6,10.6,6 1328 | 6.7,0.46,0.24,1.7,0.077,18.0,34.0,0.9948,3.39,0.6,10.6,6 1329 | 6.7,0.46,0.24,1.7,0.077,18.0,34.0,0.9948,3.39,0.6,10.6,6 1330 | 6.5,0.52,0.11,1.8,0.073,13.0,38.0,0.9955,3.34,0.52,9.3,5 1331 | 7.4,0.6,0.26,2.1,0.083,17.0,91.0,0.99616,3.29,0.56,9.8,6 1332 | 7.4,0.6,0.26,2.1,0.083,17.0,91.0,0.99616,3.29,0.56,9.8,6 1333 | 7.8,0.87,0.26,3.8,0.107,31.0,67.0,0.9966799999999999,3.26,0.46,9.2,5 1334 | 8.4,0.39,0.1,1.7,0.075,6.0,25.0,0.9958100000000001,3.09,0.43,9.7,6 1335 | 9.1,0.775,0.22,2.2,0.079,12.0,48.0,0.9976,3.18,0.51,9.6,5 1336 | 7.2,0.835,0.0,2.0,0.166,4.0,11.0,0.99608,3.39,0.52,10.0,5 1337 | 6.6,0.58,0.02,2.4,0.069,19.0,40.0,0.99387,3.38,0.66,12.6,6 1338 | 6.0,0.5,0.0,1.4,0.057,15.0,26.0,0.9944799999999999,3.36,0.45,9.5,5 1339 | 6.0,0.5,0.0,1.4,0.057,15.0,26.0,0.9944799999999999,3.36,0.45,9.5,5 1340 | 6.0,0.5,0.0,1.4,0.057,15.0,26.0,0.9944799999999999,3.36,0.45,9.5,5 1341 | 7.5,0.51,0.02,1.7,0.084,13.0,31.0,0.9953799999999999,3.36,0.54,10.5,6 1342 | 7.5,0.51,0.02,1.7,0.084,13.0,31.0,0.9953799999999999,3.36,0.54,10.5,6 1343 | 7.5,0.51,0.02,1.7,0.084,13.0,31.0,0.9953799999999999,3.36,0.54,10.5,6 1344 | 7.6,0.54,0.02,1.7,0.085,17.0,31.0,0.9958899999999999,3.37,0.51,10.4,6 1345 | 7.5,0.51,0.02,1.7,0.084,13.0,31.0,0.9953799999999999,3.36,0.54,10.5,6 1346 | 11.5,0.42,0.48,2.6,0.077,8.0,20.0,0.9985200000000001,3.09,0.53,11.0,5 1347 | 8.2,0.44,0.24,2.3,0.063,10.0,28.0,0.99613,3.25,0.53,10.2,6 1348 | 6.1,0.59,0.01,2.1,0.055999999999999994,5.0,13.0,0.99472,3.52,0.56,11.4,5 1349 | 7.2,0.655,0.03,1.8,0.078,7.0,12.0,0.99587,3.34,0.39,9.5,5 1350 | 7.2,0.655,0.03,1.8,0.078,7.0,12.0,0.99587,3.34,0.39,9.5,5 1351 | 6.9,0.57,0.0,2.8,0.081,21.0,41.0,0.99518,3.41,0.52,10.8,5 1352 | 9.0,0.6,0.29,2.0,0.069,32.0,73.0,0.99654,3.34,0.57,10.0,5 1353 | 7.2,0.62,0.01,2.3,0.065,8.0,46.0,0.9933200000000001,3.32,0.51,11.8,6 1354 | 7.6,0.645,0.03,1.9,0.086,14.0,57.0,0.9969,3.37,0.46,10.3,5 1355 | 7.6,0.645,0.03,1.9,0.086,14.0,57.0,0.9969,3.37,0.46,10.3,5 1356 | 7.2,0.58,0.03,2.3,0.077,7.0,28.0,0.9956799999999999,3.35,0.52,10.0,5 1357 | 6.1,0.32,0.25,1.8,0.086,5.0,32.0,0.99464,3.36,0.44,10.1,5 1358 | 6.1,0.34,0.25,1.8,0.084,4.0,28.0,0.99464,3.36,0.44,10.1,5 1359 | 7.3,0.43,0.24,2.5,0.078,27.0,67.0,0.9964799999999999,3.6,0.59,11.1,6 1360 | 7.4,0.64,0.17,5.4,0.168,52.0,98.0,0.99736,3.28,0.5,9.5,5 1361 | 11.6,0.475,0.4,1.4,0.091,6.0,28.0,0.9970399999999999,3.07,0.65,10.0333333333333,6 1362 | 9.2,0.54,0.31,2.3,0.11199999999999999,11.0,38.0,0.9969899999999999,3.24,0.56,10.9,5 1363 | 8.3,0.85,0.14,2.5,0.09300000000000001,13.0,54.0,0.99724,3.36,0.54,10.1,5 1364 | 11.6,0.475,0.4,1.4,0.091,6.0,28.0,0.9970399999999999,3.07,0.65,10.0333333333333,6 1365 | 8.0,0.83,0.27,2.0,0.08,11.0,63.0,0.9965200000000001,3.29,0.48,9.8,4 1366 | 7.2,0.605,0.02,1.9,0.096,10.0,31.0,0.995,3.46,0.53,11.8,6 1367 | 7.8,0.5,0.09,2.2,0.115,10.0,42.0,0.9971,3.18,0.62,9.5,5 1368 | 7.3,0.74,0.08,1.7,0.094,10.0,45.0,0.9957600000000001,3.24,0.5,9.8,5 1369 | 6.9,0.54,0.3,2.2,0.08800000000000001,9.0,105.0,0.99725,3.25,1.18,10.5,6 1370 | 8.0,0.77,0.32,2.1,0.079,16.0,74.0,0.99656,3.27,0.5,9.8,6 1371 | 6.6,0.61,0.0,1.6,0.069,4.0,8.0,0.9939600000000001,3.33,0.37,10.4,4 1372 | 8.7,0.78,0.51,1.7,0.415,12.0,66.0,0.99623,3.0,1.17,9.2,5 1373 | 7.5,0.58,0.56,3.1,0.153,5.0,14.0,0.9947600000000001,3.21,1.03,11.6,6 1374 | 8.7,0.78,0.51,1.7,0.415,12.0,66.0,0.99623,3.0,1.17,9.2,5 1375 | 7.7,0.75,0.27,3.8,0.11,34.0,89.0,0.99664,3.24,0.45,9.3,5 1376 | 6.8,0.815,0.0,1.2,0.267,16.0,29.0,0.99471,3.32,0.51,9.8,3 1377 | 7.2,0.56,0.26,2.0,0.083,13.0,100.0,0.9958600000000001,3.26,0.52,9.9,5 1378 | 8.2,0.885,0.2,1.4,0.086,7.0,31.0,0.9946,3.11,0.46,10.0,5 1379 | 5.2,0.49,0.26,2.3,0.09,23.0,74.0,0.9953,3.71,0.62,12.2,6 1380 | 7.2,0.45,0.15,2.0,0.078,10.0,28.0,0.9960899999999999,3.29,0.51,9.9,6 1381 | 7.5,0.57,0.02,2.6,0.077,11.0,35.0,0.9955700000000001,3.36,0.62,10.8,6 1382 | 7.5,0.57,0.02,2.6,0.077,11.0,35.0,0.9955700000000001,3.36,0.62,10.8,6 1383 | 6.8,0.83,0.09,1.8,0.07400000000000001,4.0,25.0,0.99534,3.38,0.45,9.6,5 1384 | 8.0,0.6,0.22,2.1,0.08,25.0,105.0,0.99613,3.3,0.49,9.9,5 1385 | 8.0,0.6,0.22,2.1,0.08,25.0,105.0,0.99613,3.3,0.49,9.9,5 1386 | 7.1,0.755,0.15,1.8,0.107,20.0,84.0,0.99593,3.19,0.5,9.5,5 1387 | 8.0,0.81,0.25,3.4,0.076,34.0,85.0,0.9966799999999999,3.19,0.42,9.2,5 1388 | 7.4,0.64,0.07,1.8,0.1,8.0,23.0,0.9961,3.3,0.58,9.6,5 1389 | 7.4,0.64,0.07,1.8,0.1,8.0,23.0,0.9961,3.3,0.58,9.6,5 1390 | 6.6,0.64,0.31,6.1,0.083,7.0,49.0,0.99718,3.35,0.68,10.3,5 1391 | 6.7,0.48,0.02,2.2,0.08,36.0,111.0,0.99524,3.1,0.53,9.7,5 1392 | 6.0,0.49,0.0,2.3,0.068,15.0,33.0,0.99292,3.58,0.59,12.5,6 1393 | 8.0,0.64,0.22,2.4,0.094,5.0,33.0,0.9961200000000001,3.37,0.58,11.0,5 1394 | 7.1,0.62,0.06,1.3,0.07,5.0,12.0,0.9942,3.17,0.48,9.8,5 1395 | 8.0,0.52,0.25,2.0,0.078,19.0,59.0,0.9961200000000001,3.3,0.48,10.2,5 1396 | 6.4,0.57,0.14,3.9,0.07,27.0,73.0,0.99669,3.32,0.48,9.2,5 1397 | 8.6,0.685,0.1,1.6,0.092,3.0,12.0,0.99745,3.31,0.65,9.55,6 1398 | 8.7,0.675,0.1,1.6,0.09,4.0,11.0,0.99745,3.31,0.65,9.55,5 1399 | 7.3,0.59,0.26,2.0,0.08,17.0,104.0,0.99584,3.28,0.52,9.9,5 1400 | 7.0,0.6,0.12,2.2,0.083,13.0,28.0,0.9966,3.52,0.62,10.2,7 1401 | 7.2,0.67,0.0,2.2,0.068,10.0,24.0,0.9956,3.42,0.72,11.1,6 1402 | 7.9,0.69,0.21,2.1,0.08,33.0,141.0,0.9962,3.25,0.51,9.9,5 1403 | 7.9,0.69,0.21,2.1,0.08,33.0,141.0,0.9962,3.25,0.51,9.9,5 1404 | 7.6,0.3,0.42,2.0,0.052000000000000005,6.0,24.0,0.9963,3.44,0.82,11.9,6 1405 | 7.2,0.33,0.33,1.7,0.061,3.0,13.0,0.996,3.23,1.1,10.0,8 1406 | 8.0,0.5,0.39,2.6,0.08199999999999999,12.0,46.0,0.9985,3.43,0.62,10.7,6 1407 | 7.7,0.28,0.3,2.0,0.062,18.0,34.0,0.9952,3.28,0.9,11.3,7 1408 | 8.2,0.24,0.34,5.1,0.062,8.0,22.0,0.9974,3.22,0.94,10.9,6 1409 | 6.0,0.51,0.0,2.1,0.064,40.0,54.0,0.995,3.54,0.93,10.7,6 1410 | 8.1,0.29,0.36,2.2,0.048,35.0,53.0,0.995,3.27,1.01,12.4,7 1411 | 6.0,0.51,0.0,2.1,0.064,40.0,54.0,0.995,3.54,0.93,10.7,6 1412 | 6.6,0.96,0.0,1.8,0.08199999999999999,5.0,16.0,0.9936,3.5,0.44,11.9,6 1413 | 6.4,0.47,0.4,2.4,0.071,8.0,19.0,0.9963,3.56,0.73,10.6,6 1414 | 8.2,0.24,0.34,5.1,0.062,8.0,22.0,0.9974,3.22,0.94,10.9,6 1415 | 9.9,0.57,0.25,2.0,0.10400000000000001,12.0,89.0,0.9963,3.04,0.9,10.1,5 1416 | 10.0,0.32,0.59,2.2,0.077,3.0,15.0,0.9994,3.2,0.78,9.6,5 1417 | 6.2,0.58,0.0,1.6,0.065,8.0,18.0,0.9966,3.56,0.84,9.4,5 1418 | 10.0,0.32,0.59,2.2,0.077,3.0,15.0,0.9994,3.2,0.78,9.6,5 1419 | 7.3,0.34,0.33,2.5,0.064,21.0,37.0,0.9952,3.35,0.77,12.1,7 1420 | 7.8,0.53,0.01,1.6,0.077,3.0,19.0,0.995,3.16,0.46,9.8,5 1421 | 7.7,0.64,0.21,2.2,0.077,32.0,133.0,0.9956,3.27,0.45,9.9,5 1422 | 7.8,0.53,0.01,1.6,0.077,3.0,19.0,0.995,3.16,0.46,9.8,5 1423 | 7.5,0.4,0.18,1.6,0.079,24.0,58.0,0.9965,3.34,0.58,9.4,5 1424 | 7.0,0.54,0.0,2.1,0.079,39.0,55.0,0.9956,3.39,0.84,11.4,6 1425 | 6.4,0.53,0.09,3.9,0.12300000000000001,14.0,31.0,0.9968,3.5,0.67,11.0,4 1426 | 8.3,0.26,0.37,1.4,0.076,8.0,23.0,0.9974,3.26,0.7,9.6,6 1427 | 8.3,0.26,0.37,1.4,0.076,8.0,23.0,0.9974,3.26,0.7,9.6,6 1428 | 7.7,0.23,0.37,1.8,0.046,23.0,60.0,0.9971,3.41,0.71,12.1,6 1429 | 7.6,0.41,0.33,2.5,0.078,6.0,23.0,0.9957,3.3,0.58,11.2,5 1430 | 7.8,0.64,0.0,1.9,0.07200000000000001,27.0,55.0,0.9962,3.31,0.63,11.0,5 1431 | 7.9,0.18,0.4,2.2,0.049,38.0,67.0,0.996,3.33,0.93,11.3,5 1432 | 7.4,0.41,0.24,1.8,0.066,18.0,47.0,0.9956,3.37,0.62,10.4,5 1433 | 7.6,0.43,0.31,2.1,0.069,13.0,74.0,0.9958,3.26,0.54,9.9,6 1434 | 5.9,0.44,0.0,1.6,0.042,3.0,11.0,0.9944,3.48,0.85,11.7,6 1435 | 6.1,0.4,0.16,1.8,0.069,11.0,25.0,0.9955,3.42,0.74,10.1,7 1436 | 10.2,0.54,0.37,15.4,0.214,55.0,95.0,1.00369,3.18,0.77,9.0,6 1437 | 10.2,0.54,0.37,15.4,0.214,55.0,95.0,1.00369,3.18,0.77,9.0,6 1438 | 10.0,0.38,0.38,1.6,0.16899999999999998,27.0,90.0,0.9991399999999999,3.15,0.65,8.5,5 1439 | 6.8,0.915,0.29,4.8,0.07,15.0,39.0,0.99577,3.53,0.54,11.1,5 1440 | 7.0,0.59,0.0,1.7,0.052000000000000005,3.0,8.0,0.996,3.41,0.47,10.3,5 1441 | 7.3,0.67,0.02,2.2,0.07200000000000001,31.0,92.0,0.99566,3.32,0.68,11.066666666666698,6 1442 | 7.2,0.37,0.32,2.0,0.062,15.0,28.0,0.9947,3.23,0.73,11.3,7 1443 | 7.4,0.785,0.19,5.2,0.094,19.0,98.0,0.99713,3.16,0.52,9.56666666666667,6 1444 | 6.9,0.63,0.02,1.9,0.078,18.0,30.0,0.9971200000000001,3.4,0.75,9.8,5 1445 | 6.9,0.58,0.2,1.75,0.057999999999999996,8.0,22.0,0.9932200000000001,3.38,0.49,11.7,5 1446 | 7.3,0.67,0.02,2.2,0.07200000000000001,31.0,92.0,0.99566,3.32,0.68,11.1,6 1447 | 7.4,0.785,0.19,5.2,0.094,19.0,98.0,0.99713,3.16,0.52,9.6,6 1448 | 6.9,0.63,0.02,1.9,0.078,18.0,30.0,0.9971200000000001,3.4,0.75,9.8,5 1449 | 6.8,0.67,0.0,1.9,0.08,22.0,39.0,0.9970100000000001,3.4,0.74,9.7,5 1450 | 6.9,0.58,0.01,1.9,0.08,40.0,54.0,0.9968299999999999,3.4,0.73,9.7,5 1451 | 7.2,0.38,0.31,2.0,0.055999999999999994,15.0,29.0,0.99472,3.23,0.76,11.3,8 1452 | 7.2,0.37,0.32,2.0,0.062,15.0,28.0,0.9947,3.23,0.73,11.3,7 1453 | 7.8,0.32,0.44,2.7,0.10400000000000001,8.0,17.0,0.9973200000000001,3.33,0.78,11.0,7 1454 | 6.6,0.58,0.02,2.0,0.062,37.0,53.0,0.99374,3.35,0.76,11.6,7 1455 | 7.6,0.49,0.33,1.9,0.07400000000000001,27.0,85.0,0.9970600000000001,3.41,0.58,9.0,5 1456 | 11.7,0.45,0.63,2.2,0.073,7.0,23.0,0.99974,3.21,0.69,10.9,6 1457 | 6.5,0.9,0.0,1.6,0.052000000000000005,9.0,17.0,0.99467,3.5,0.63,10.9,6 1458 | 6.0,0.54,0.06,1.8,0.05,38.0,89.0,0.99236,3.3,0.5,10.55,6 1459 | 7.6,0.49,0.33,1.9,0.07400000000000001,27.0,85.0,0.9970600000000001,3.41,0.58,9.0,5 1460 | 8.4,0.29,0.4,1.7,0.067,8.0,20.0,0.99603,3.39,0.6,10.5,5 1461 | 7.9,0.2,0.35,1.7,0.054000000000000006,7.0,15.0,0.9945799999999999,3.32,0.8,11.9,7 1462 | 6.4,0.42,0.09,2.3,0.054000000000000006,34.0,64.0,0.99724,3.41,0.68,10.4,6 1463 | 6.2,0.785,0.0,2.1,0.06,6.0,13.0,0.99664,3.59,0.61,10.0,4 1464 | 6.8,0.64,0.03,2.3,0.075,14.0,31.0,0.99545,3.36,0.58,10.4,6 1465 | 6.9,0.63,0.01,2.4,0.076,14.0,39.0,0.9952200000000001,3.34,0.53,10.8,6 1466 | 6.8,0.59,0.1,1.7,0.063,34.0,53.0,0.9958,3.41,0.67,9.7,5 1467 | 6.8,0.59,0.1,1.7,0.063,34.0,53.0,0.9958,3.41,0.67,9.7,5 1468 | 7.3,0.48,0.32,2.1,0.062,31.0,54.0,0.9972799999999999,3.3,0.65,10.0,7 1469 | 6.7,1.04,0.08,2.3,0.067,19.0,32.0,0.9964799999999999,3.52,0.57,11.0,4 1470 | 7.3,0.48,0.32,2.1,0.062,31.0,54.0,0.9972799999999999,3.3,0.65,10.0,7 1471 | 7.3,0.98,0.05,2.1,0.061,20.0,49.0,0.99705,3.31,0.55,9.7,3 1472 | 10.0,0.69,0.11,1.4,0.084,8.0,24.0,0.9957799999999999,2.88,0.47,9.7,5 1473 | 6.7,0.7,0.08,3.75,0.067,8.0,16.0,0.99334,3.43,0.52,12.6,5 1474 | 7.6,0.35,0.6,2.6,0.073,23.0,44.0,0.99656,3.38,0.79,11.1,6 1475 | 6.1,0.6,0.08,1.8,0.071,14.0,45.0,0.99336,3.38,0.54,11.0,5 1476 | 9.9,0.5,0.5,13.8,0.205,48.0,82.0,1.00242,3.16,0.75,8.8,5 1477 | 5.3,0.47,0.11,2.2,0.048,16.0,89.0,0.99182,3.54,0.88,13.566666666666698,7 1478 | 9.9,0.5,0.5,13.8,0.205,48.0,82.0,1.00242,3.16,0.75,8.8,5 1479 | 5.3,0.47,0.11,2.2,0.048,16.0,89.0,0.99182,3.54,0.88,13.6,7 1480 | 7.1,0.875,0.05,5.7,0.08199999999999999,3.0,14.0,0.99808,3.4,0.52,10.2,3 1481 | 8.2,0.28,0.6,3.0,0.10400000000000001,10.0,22.0,0.99828,3.39,0.68,10.6,5 1482 | 5.6,0.62,0.03,1.5,0.08,6.0,13.0,0.99498,3.66,0.62,10.1,4 1483 | 8.2,0.28,0.6,3.0,0.10400000000000001,10.0,22.0,0.99828,3.39,0.68,10.6,5 1484 | 7.2,0.58,0.54,2.1,0.114,3.0,9.0,0.9971899999999999,3.33,0.57,10.3,4 1485 | 8.1,0.33,0.44,1.5,0.042,6.0,12.0,0.9954200000000001,3.35,0.61,10.7,5 1486 | 6.8,0.91,0.06,2.0,0.06,4.0,11.0,0.99592,3.53,0.64,10.9,4 1487 | 7.0,0.655,0.16,2.1,0.07400000000000001,8.0,25.0,0.9960600000000001,3.37,0.55,9.7,5 1488 | 6.8,0.68,0.21,2.1,0.07,9.0,23.0,0.99546,3.38,0.6,10.3,5 1489 | 6.0,0.64,0.05,1.9,0.066,9.0,17.0,0.9949600000000001,3.52,0.78,10.6,5 1490 | 5.6,0.54,0.04,1.7,0.049,5.0,13.0,0.9942,3.72,0.58,11.4,5 1491 | 6.2,0.57,0.1,2.1,0.048,4.0,11.0,0.9944799999999999,3.44,0.76,10.8,6 1492 | 7.1,0.22,0.49,1.8,0.039,8.0,18.0,0.99344,3.39,0.56,12.4,6 1493 | 5.6,0.54,0.04,1.7,0.049,5.0,13.0,0.9942,3.72,0.58,11.4,5 1494 | 6.2,0.65,0.06,1.6,0.05,6.0,18.0,0.9934799999999999,3.57,0.54,11.95,5 1495 | 7.7,0.54,0.26,1.9,0.08900000000000001,23.0,147.0,0.99636,3.26,0.59,9.7,5 1496 | 6.4,0.31,0.09,1.4,0.066,15.0,28.0,0.99459,3.42,0.7,10.0,7 1497 | 7.0,0.43,0.02,1.9,0.08,15.0,28.0,0.99492,3.35,0.81,10.6,6 1498 | 7.7,0.54,0.26,1.9,0.08900000000000001,23.0,147.0,0.99636,3.26,0.59,9.7,5 1499 | 6.9,0.74,0.03,2.3,0.054000000000000006,7.0,16.0,0.99508,3.45,0.63,11.5,6 1500 | 6.6,0.895,0.04,2.3,0.068,7.0,13.0,0.99582,3.53,0.58,10.8,6 1501 | 6.9,0.74,0.03,2.3,0.054000000000000006,7.0,16.0,0.99508,3.45,0.63,11.5,6 1502 | 7.5,0.725,0.04,1.5,0.076,8.0,15.0,0.99508,3.26,0.53,9.6,5 1503 | 7.8,0.82,0.29,4.3,0.083,21.0,64.0,0.9964200000000001,3.16,0.53,9.4,5 1504 | 7.3,0.585,0.18,2.4,0.078,15.0,60.0,0.9963799999999999,3.31,0.54,9.8,5 1505 | 6.2,0.44,0.39,2.5,0.077,6.0,14.0,0.99555,3.51,0.69,11.0,6 1506 | 7.5,0.38,0.57,2.3,0.106,5.0,12.0,0.99605,3.36,0.55,11.4,6 1507 | 6.7,0.76,0.02,1.8,0.078,6.0,12.0,0.996,3.55,0.63,9.95,3 1508 | 6.8,0.81,0.05,2.0,0.07,6.0,14.0,0.9956200000000001,3.51,0.66,10.8,6 1509 | 7.5,0.38,0.57,2.3,0.106,5.0,12.0,0.99605,3.36,0.55,11.4,6 1510 | 7.1,0.27,0.6,2.1,0.07400000000000001,17.0,25.0,0.9981399999999999,3.38,0.72,10.6,6 1511 | 7.9,0.18,0.4,1.8,0.062,7.0,20.0,0.9941,3.28,0.7,11.1,5 1512 | 6.4,0.36,0.21,2.2,0.047,26.0,48.0,0.99661,3.47,0.77,9.7,6 1513 | 7.1,0.69,0.04,2.1,0.068,19.0,27.0,0.9971200000000001,3.44,0.67,9.8,5 1514 | 6.4,0.79,0.04,2.2,0.061,11.0,17.0,0.9958799999999999,3.53,0.65,10.4,6 1515 | 6.4,0.56,0.15,1.8,0.078,17.0,65.0,0.9929399999999999,3.33,0.6,10.5,6 1516 | 6.9,0.84,0.21,4.1,0.07400000000000001,16.0,65.0,0.9984200000000001,3.53,0.72,9.23333333333333,6 1517 | 6.9,0.84,0.21,4.1,0.07400000000000001,16.0,65.0,0.9984200000000001,3.53,0.72,9.25,6 1518 | 6.1,0.32,0.25,2.3,0.071,23.0,58.0,0.9963299999999999,3.42,0.97,10.6,5 1519 | 6.5,0.53,0.06,2.0,0.063,29.0,44.0,0.9948899999999999,3.38,0.83,10.3,6 1520 | 7.4,0.47,0.46,2.2,0.114,7.0,20.0,0.9964700000000001,3.32,0.63,10.5,5 1521 | 6.6,0.7,0.08,2.6,0.106,14.0,27.0,0.99665,3.44,0.58,10.2,5 1522 | 6.5,0.53,0.06,2.0,0.063,29.0,44.0,0.9948899999999999,3.38,0.83,10.3,6 1523 | 6.9,0.48,0.2,1.9,0.08199999999999999,9.0,23.0,0.99585,3.39,0.43,9.05,4 1524 | 6.1,0.32,0.25,2.3,0.071,23.0,58.0,0.9963299999999999,3.42,0.97,10.6,5 1525 | 6.8,0.48,0.25,2.0,0.076,29.0,61.0,0.9953,3.34,0.6,10.4,5 1526 | 6.0,0.42,0.19,2.0,0.075,22.0,47.0,0.9952200000000001,3.39,0.78,10.0,6 1527 | 6.7,0.48,0.08,2.1,0.064,18.0,34.0,0.9955200000000001,3.33,0.64,9.7,5 1528 | 6.8,0.47,0.08,2.2,0.064,18.0,38.0,0.9955299999999999,3.3,0.65,9.6,6 1529 | 7.1,0.53,0.07,1.7,0.071,15.0,24.0,0.9951,3.29,0.66,10.8,6 1530 | 7.9,0.29,0.49,2.2,0.096,21.0,59.0,0.9971399999999999,3.31,0.67,10.1,6 1531 | 7.1,0.69,0.08,2.1,0.063,42.0,52.0,0.99608,3.42,0.6,10.2,6 1532 | 6.6,0.44,0.09,2.2,0.063,9.0,18.0,0.99444,3.42,0.69,11.3,6 1533 | 6.1,0.705,0.1,2.8,0.081,13.0,28.0,0.99631,3.6,0.66,10.2,5 1534 | 7.2,0.53,0.13,2.0,0.057999999999999996,18.0,22.0,0.9957299999999999,3.21,0.68,9.9,6 1535 | 8.0,0.39,0.3,1.9,0.07400000000000001,32.0,84.0,0.9971700000000001,3.39,0.61,9.0,5 1536 | 6.6,0.56,0.14,2.4,0.064,13.0,29.0,0.99397,3.42,0.62,11.7,7 1537 | 7.0,0.55,0.13,2.2,0.075,15.0,35.0,0.9959,3.36,0.59,9.7,6 1538 | 6.1,0.53,0.08,1.9,0.077,24.0,45.0,0.9952799999999999,3.6,0.68,10.3,6 1539 | 5.4,0.58,0.08,1.9,0.059000000000000004,20.0,31.0,0.99484,3.5,0.64,10.2,6 1540 | 6.2,0.64,0.09,2.5,0.081,15.0,26.0,0.9953799999999999,3.57,0.63,12.0,5 1541 | 7.2,0.39,0.32,1.8,0.065,34.0,60.0,0.9971399999999999,3.46,0.78,9.9,5 1542 | 6.2,0.52,0.08,4.4,0.071,11.0,32.0,0.99646,3.56,0.63,11.6,6 1543 | 7.4,0.25,0.29,2.2,0.054000000000000006,19.0,49.0,0.99666,3.4,0.76,10.9,7 1544 | 6.7,0.855,0.02,1.9,0.064,29.0,38.0,0.99472,3.3,0.56,10.75,6 1545 | 11.1,0.44,0.42,2.2,0.064,14.0,19.0,0.9975799999999999,3.25,0.57,10.4,6 1546 | 8.4,0.37,0.43,2.3,0.063,12.0,19.0,0.9955,3.17,0.81,11.2,7 1547 | 6.5,0.63,0.33,1.8,0.059000000000000004,16.0,28.0,0.99531,3.36,0.64,10.1,6 1548 | 7.0,0.57,0.02,2.0,0.07200000000000001,17.0,26.0,0.99575,3.36,0.61,10.2,5 1549 | 6.3,0.6,0.1,1.6,0.048,12.0,26.0,0.99306,3.55,0.51,12.1,5 1550 | 11.2,0.4,0.5,2.0,0.099,19.0,50.0,0.9978299999999999,3.1,0.58,10.4,5 1551 | 7.4,0.36,0.3,1.8,0.07400000000000001,17.0,24.0,0.99419,3.24,0.7,11.4,8 1552 | 7.1,0.68,0.0,2.3,0.087,17.0,26.0,0.9978299999999999,3.45,0.53,9.5,5 1553 | 7.1,0.67,0.0,2.3,0.083,18.0,27.0,0.9976799999999999,3.44,0.54,9.4,5 1554 | 6.3,0.68,0.01,3.7,0.10300000000000001,32.0,54.0,0.9958600000000001,3.51,0.66,11.3,6 1555 | 7.3,0.735,0.0,2.2,0.08,18.0,28.0,0.99765,3.41,0.6,9.4,5 1556 | 6.6,0.855,0.02,2.4,0.062,15.0,23.0,0.9962700000000001,3.54,0.6,11.0,6 1557 | 7.0,0.56,0.17,1.7,0.065,15.0,24.0,0.9951399999999999,3.44,0.68,10.55,7 1558 | 6.6,0.88,0.04,2.2,0.066,12.0,20.0,0.99636,3.53,0.56,9.9,5 1559 | 6.6,0.855,0.02,2.4,0.062,15.0,23.0,0.9962700000000001,3.54,0.6,11.0,6 1560 | 6.9,0.63,0.33,6.7,0.235,66.0,115.0,0.99787,3.22,0.56,9.5,5 1561 | 7.8,0.6,0.26,2.0,0.08,31.0,131.0,0.9962200000000001,3.21,0.52,9.9,5 1562 | 7.8,0.6,0.26,2.0,0.08,31.0,131.0,0.9962200000000001,3.21,0.52,9.9,5 1563 | 7.8,0.6,0.26,2.0,0.08,31.0,131.0,0.9962200000000001,3.21,0.52,9.9,5 1564 | 7.2,0.695,0.13,2.0,0.076,12.0,20.0,0.99546,3.29,0.54,10.1,5 1565 | 7.2,0.695,0.13,2.0,0.076,12.0,20.0,0.99546,3.29,0.54,10.1,5 1566 | 7.2,0.695,0.13,2.0,0.076,12.0,20.0,0.99546,3.29,0.54,10.1,5 1567 | 6.7,0.67,0.02,1.9,0.061,26.0,42.0,0.9948899999999999,3.39,0.82,10.9,6 1568 | 6.7,0.16,0.64,2.1,0.059000000000000004,24.0,52.0,0.9949399999999999,3.34,0.71,11.2,6 1569 | 7.2,0.695,0.13,2.0,0.076,12.0,20.0,0.99546,3.29,0.54,10.1,5 1570 | 7.0,0.56,0.13,1.6,0.077,25.0,42.0,0.99629,3.34,0.59,9.2,5 1571 | 6.2,0.51,0.14,1.9,0.055999999999999994,15.0,34.0,0.9939600000000001,3.48,0.57,11.5,6 1572 | 6.4,0.36,0.53,2.2,0.23,19.0,35.0,0.9934,3.37,0.93,12.4,6 1573 | 6.4,0.38,0.14,2.2,0.038,15.0,25.0,0.9951399999999999,3.44,0.65,11.1,6 1574 | 7.3,0.69,0.32,2.2,0.069,35.0,104.0,0.9963200000000001,3.33,0.51,9.5,5 1575 | 6.0,0.58,0.2,2.4,0.075,15.0,50.0,0.99467,3.58,0.67,12.5,6 1576 | 5.6,0.31,0.78,13.9,0.07400000000000001,23.0,92.0,0.99677,3.39,0.48,10.5,6 1577 | 7.5,0.52,0.4,2.2,0.06,12.0,20.0,0.99474,3.26,0.64,11.8,6 1578 | 8.0,0.3,0.63,1.6,0.081,16.0,29.0,0.9958799999999999,3.3,0.78,10.8,6 1579 | 6.2,0.7,0.15,5.1,0.076,13.0,27.0,0.9962200000000001,3.54,0.6,11.9,6 1580 | 6.8,0.67,0.15,1.8,0.11800000000000001,13.0,20.0,0.9954,3.42,0.67,11.3,6 1581 | 6.2,0.56,0.09,1.7,0.053,24.0,32.0,0.9940200000000001,3.54,0.6,11.3,5 1582 | 7.4,0.35,0.33,2.4,0.068,9.0,26.0,0.9947,3.36,0.6,11.9,6 1583 | 6.2,0.56,0.09,1.7,0.053,24.0,32.0,0.9940200000000001,3.54,0.6,11.3,5 1584 | 6.1,0.715,0.1,2.6,0.053,13.0,27.0,0.9936200000000001,3.57,0.5,11.9,5 1585 | 6.2,0.46,0.29,2.1,0.07400000000000001,32.0,98.0,0.9957799999999999,3.33,0.62,9.8,5 1586 | 6.7,0.32,0.44,2.4,0.061,24.0,34.0,0.99484,3.29,0.8,11.6,7 1587 | 7.2,0.39,0.44,2.6,0.066,22.0,48.0,0.9949399999999999,3.3,0.84,11.5,6 1588 | 7.5,0.31,0.41,2.4,0.065,34.0,60.0,0.99492,3.34,0.85,11.4,6 1589 | 5.8,0.61,0.11,1.8,0.066,18.0,28.0,0.9948299999999999,3.55,0.66,10.9,6 1590 | 7.2,0.66,0.33,2.5,0.068,34.0,102.0,0.9941399999999999,3.27,0.78,12.8,6 1591 | 6.6,0.725,0.2,7.8,0.073,29.0,79.0,0.9977,3.29,0.54,9.2,5 1592 | 6.3,0.55,0.15,1.8,0.077,26.0,35.0,0.9931399999999999,3.32,0.82,11.6,6 1593 | 5.4,0.74,0.09,1.7,0.08900000000000001,16.0,26.0,0.9940200000000001,3.67,0.56,11.6,6 1594 | 6.3,0.51,0.13,2.3,0.076,29.0,40.0,0.99574,3.42,0.75,11.0,6 1595 | 6.8,0.62,0.08,1.9,0.068,28.0,38.0,0.99651,3.42,0.82,9.5,6 1596 | 6.2,0.6,0.08,2.0,0.09,32.0,44.0,0.9949,3.45,0.58,10.5,5 1597 | 5.9,0.55,0.1,2.2,0.062,39.0,51.0,0.9951200000000001,3.52,0.76,11.2,6 1598 | 6.3,0.51,0.13,2.3,0.076,29.0,40.0,0.99574,3.42,0.75,11.0,6 1599 | 5.9,0.645,0.12,2.0,0.075,32.0,44.0,0.9954700000000001,3.57,0.71,10.2,5 1600 | 6.0,0.31,0.47,3.6,0.067,18.0,42.0,0.99549,3.39,0.66,11.0,6 1601 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | from mlProject import logger 2 | from mlProject.pipeline.stage_01_data_ingestion import DataIngestionTrainingPipeline 3 | from mlProject.pipeline.stage_02_data_validation import DataValidationTrainingPipeline 4 | from mlProject.pipeline.stage_03_data_transformation import DataTransformationTrainingPipeline 5 | from mlProject.pipeline.stage_04_model_trainer import ModelTrainerTrainingPipeline 6 | from mlProject.pipeline.stage_05_model_evaluation import ModelEvaluationTrainingPipeline 7 | 8 | 9 | 10 | STAGE_NAME = "Data Ingestion stage" 11 | try: 12 | logger.info(f">>>>>> stage {STAGE_NAME} started <<<<<<") 13 | data_ingestion = DataIngestionTrainingPipeline() 14 | data_ingestion.main() 15 | logger.info(f">>>>>> stage {STAGE_NAME} completed <<<<<<\n\nx==========x") 16 | except Exception as e: 17 | logger.exception(e) 18 | raise e 19 | 20 | 21 | 22 | STAGE_NAME = "Data Validation stage" 23 | try: 24 | logger.info(f">>>>>> stage {STAGE_NAME} started <<<<<<") 25 | data_ingestion = DataValidationTrainingPipeline() 26 | data_ingestion.main() 27 | logger.info(f">>>>>> stage {STAGE_NAME} completed <<<<<<\n\nx==========x") 28 | except Exception as e: 29 | logger.exception(e) 30 | raise e 31 | 32 | 33 | 34 | STAGE_NAME = "Data Transformation stage" 35 | try: 36 | logger.info(f">>>>>> stage {STAGE_NAME} started <<<<<<") 37 | data_ingestion = DataTransformationTrainingPipeline() 38 | data_ingestion.main() 39 | logger.info(f">>>>>> stage {STAGE_NAME} completed <<<<<<\n\nx==========x") 40 | except Exception as e: 41 | logger.exception(e) 42 | raise e 43 | 44 | 45 | 46 | 47 | STAGE_NAME = "Model Trainer stage" 48 | try: 49 | logger.info(f">>>>>> stage {STAGE_NAME} started <<<<<<") 50 | data_ingestion = ModelTrainerTrainingPipeline() 51 | data_ingestion.main() 52 | logger.info(f">>>>>> stage {STAGE_NAME} completed <<<<<<\n\nx==========x") 53 | except Exception as e: 54 | logger.exception(e) 55 | raise e 56 | 57 | 58 | 59 | STAGE_NAME = "Model evaluation stage" 60 | try: 61 | logger.info(f">>>>>> stage {STAGE_NAME} started <<<<<<") 62 | data_ingestion = ModelEvaluationTrainingPipeline() 63 | data_ingestion.main() 64 | logger.info(f">>>>>> stage {STAGE_NAME} completed <<<<<<\n\nx==========x") 65 | except Exception as e: 66 | logger.exception(e) 67 | raise e 68 | 69 | -------------------------------------------------------------------------------- /params.yaml: -------------------------------------------------------------------------------- 1 | ElasticNet: 2 | alpha: 0.2 3 | l1_ratio: 0.1 -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | pandas 2 | numpy 3 | scikit-learn 4 | matplotlib 5 | python-box==6.0.2 6 | pyYAML 7 | tqdm 8 | ensure==1.0.2 9 | joblib 10 | types-PyYAML 11 | Flask 12 | Flask-Cors 13 | -e . -------------------------------------------------------------------------------- /research/01_data_ingestion.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 2, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "data": { 10 | "text/plain": [ 11 | "'d:\\\\Bappy\\\\Live Sessions\\\\Euron\\\\MLOPs Masters Batch\\\\End-to-End-Machine-Learning-Pipeline'" 12 | ] 13 | }, 14 | "execution_count": 2, 15 | "metadata": {}, 16 | "output_type": "execute_result" 17 | } 18 | ], 19 | "source": [ 20 | "import os\n", 21 | "os.chdir(\"../\")\n", 22 | "%pwd" 23 | ] 24 | }, 25 | { 26 | "cell_type": "code", 27 | "execution_count": 7, 28 | "metadata": {}, 29 | "outputs": [], 30 | "source": [ 31 | "from dataclasses import dataclass\n", 32 | "from pathlib import Path\n", 33 | "\n", 34 | "\n", 35 | "@dataclass(frozen=True)\n", 36 | "class DataIngestionConfig:\n", 37 | " root_dir: Path\n", 38 | " source_URL: str\n", 39 | " local_data_file: Path\n", 40 | " unzip_dir: Path" 41 | ] 42 | }, 43 | { 44 | "cell_type": "code", 45 | "execution_count": 4, 46 | "metadata": {}, 47 | "outputs": [], 48 | "source": [ 49 | "from mlProject.constants import *\n", 50 | "from mlProject.utils.common import read_yaml, create_directories" 51 | ] 52 | }, 53 | { 54 | "cell_type": "code", 55 | "execution_count": 8, 56 | "metadata": {}, 57 | "outputs": [], 58 | "source": [ 59 | "class ConfigurationManager:\n", 60 | " def __init__(\n", 61 | " self,\n", 62 | " config_filepath = CONFIG_FILE_PATH,\n", 63 | " params_filepath = PARAMS_FILE_PATH,\n", 64 | " schema_filepath = SCHEMA_FILE_PATH):\n", 65 | "\n", 66 | " self.config = read_yaml(config_filepath)\n", 67 | " self.params = read_yaml(params_filepath)\n", 68 | " self.schema = read_yaml(schema_filepath)\n", 69 | "\n", 70 | " create_directories([self.config.artifacts_root])\n", 71 | "\n", 72 | "\n", 73 | " \n", 74 | " def get_data_ingestion_config(self) -> DataIngestionConfig:\n", 75 | " config = self.config.data_ingestion\n", 76 | "\n", 77 | " create_directories([config.root_dir])\n", 78 | "\n", 79 | " data_ingestion_config = DataIngestionConfig(\n", 80 | " root_dir=config.root_dir,\n", 81 | " source_URL=config.source_URL,\n", 82 | " local_data_file=config.local_data_file,\n", 83 | " unzip_dir=config.unzip_dir \n", 84 | " )\n", 85 | "\n", 86 | " return data_ingestion_config" 87 | ] 88 | }, 89 | { 90 | "cell_type": "code", 91 | "execution_count": 11, 92 | "metadata": {}, 93 | "outputs": [], 94 | "source": [ 95 | "import os\n", 96 | "import urllib.request as request\n", 97 | "import zipfile\n", 98 | "from mlProject import logger\n", 99 | "from mlProject.utils.common import get_size" 100 | ] 101 | }, 102 | { 103 | "cell_type": "code", 104 | "execution_count": 9, 105 | "metadata": {}, 106 | "outputs": [], 107 | "source": [ 108 | "class DataIngestion:\n", 109 | " def __init__(self, config: DataIngestionConfig):\n", 110 | " self.config = config\n", 111 | "\n", 112 | "\n", 113 | " \n", 114 | " def download_file(self):\n", 115 | " if not os.path.exists(self.config.local_data_file):\n", 116 | " filename, headers = request.urlretrieve(\n", 117 | " url = self.config.source_URL,\n", 118 | " filename = self.config.local_data_file\n", 119 | " )\n", 120 | " logger.info(f\"{filename} download! with following info: \\n{headers}\")\n", 121 | " else:\n", 122 | " logger.info(f\"File already exists of size: {get_size(Path(self.config.local_data_file))}\")\n", 123 | "\n", 124 | "\n", 125 | "\n", 126 | " def extract_zip_file(self):\n", 127 | " \"\"\"\n", 128 | " zip_file_path: str\n", 129 | " Extracts the zip file into the data directory\n", 130 | " Function returns None\n", 131 | " \"\"\"\n", 132 | " unzip_path = self.config.unzip_dir\n", 133 | " os.makedirs(unzip_path, exist_ok=True)\n", 134 | " with zipfile.ZipFile(self.config.local_data_file, 'r') as zip_ref:\n", 135 | " zip_ref.extractall(unzip_path)\n", 136 | " " 137 | ] 138 | }, 139 | { 140 | "cell_type": "code", 141 | "execution_count": 12, 142 | "metadata": {}, 143 | "outputs": [ 144 | { 145 | "name": "stdout", 146 | "output_type": "stream", 147 | "text": [ 148 | "[2025-01-12 12:23:20,266: INFO: common: yaml file: config\\config.yaml loaded successfully]\n", 149 | "[2025-01-12 12:23:20,266: INFO: common: yaml file: params.yaml loaded successfully]\n", 150 | "[2025-01-12 12:23:20,269: INFO: common: yaml file: schema.yaml loaded successfully]\n", 151 | "[2025-01-12 12:23:20,269: INFO: common: created directory at: artifacts]\n", 152 | "[2025-01-12 12:23:20,269: INFO: common: created directory at: artifacts/data_ingestion]\n", 153 | "[2025-01-12 12:23:21,833: INFO: 2366278714: artifacts/data_ingestion/data.zip download! with following info: \n", 154 | "Connection: close\n", 155 | "Content-Length: 23329\n", 156 | "Cache-Control: max-age=300\n", 157 | "Content-Security-Policy: default-src 'none'; style-src 'unsafe-inline'; sandbox\n", 158 | "Content-Type: application/zip\n", 159 | "ETag: \"c69888a4ae59bc5a893392785a938ccd4937981c06ba8a9d6a21aa52b4ab5b6e\"\n", 160 | "Strict-Transport-Security: max-age=31536000\n", 161 | "X-Content-Type-Options: nosniff\n", 162 | "X-Frame-Options: deny\n", 163 | "X-XSS-Protection: 1; mode=block\n", 164 | "X-GitHub-Request-Id: 756E:27C4B:282C52:3CE0D8:67835FD3\n", 165 | "Accept-Ranges: bytes\n", 166 | "Date: Sun, 12 Jan 2025 06:23:21 GMT\n", 167 | "Via: 1.1 varnish\n", 168 | "X-Served-By: cache-sin-wsss1830061-SIN\n", 169 | "X-Cache: MISS\n", 170 | "X-Cache-Hits: 0\n", 171 | "X-Timer: S1736663001.478995,VS0,VE306\n", 172 | "Vary: Authorization,Accept-Encoding,Origin\n", 173 | "Access-Control-Allow-Origin: *\n", 174 | "Cross-Origin-Resource-Policy: cross-origin\n", 175 | "X-Fastly-Request-ID: b4c0c97594dd9af232a84570a8d595c5b76d362b\n", 176 | "Expires: Sun, 12 Jan 2025 06:28:21 GMT\n", 177 | "Source-Age: 0\n", 178 | "\n", 179 | "]\n" 180 | ] 181 | } 182 | ], 183 | "source": [ 184 | "try:\n", 185 | " config = ConfigurationManager()\n", 186 | " data_ingestion_config = config.get_data_ingestion_config()\n", 187 | " data_ingestion = DataIngestion(config=data_ingestion_config)\n", 188 | " data_ingestion.download_file()\n", 189 | " data_ingestion.extract_zip_file()\n", 190 | "except Exception as e:\n", 191 | " raise e" 192 | ] 193 | } 194 | ], 195 | "metadata": { 196 | "kernelspec": { 197 | "display_name": "mlproj", 198 | "language": "python", 199 | "name": "python3" 200 | }, 201 | "language_info": { 202 | "codemirror_mode": { 203 | "name": "ipython", 204 | "version": 3 205 | }, 206 | "file_extension": ".py", 207 | "mimetype": "text/x-python", 208 | "name": "python", 209 | "nbconvert_exporter": "python", 210 | "pygments_lexer": "ipython3", 211 | "version": "3.8.20" 212 | } 213 | }, 214 | "nbformat": 4, 215 | "nbformat_minor": 2 216 | } 217 | -------------------------------------------------------------------------------- /research/02_data_validation.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "data": { 10 | "text/plain": [ 11 | "'d:\\\\Bappy\\\\Live Sessions\\\\Euron\\\\MLOPs Masters Batch\\\\End-to-End-Machine-Learning-Pipeline'" 12 | ] 13 | }, 14 | "execution_count": 1, 15 | "metadata": {}, 16 | "output_type": "execute_result" 17 | } 18 | ], 19 | "source": [ 20 | "import os\n", 21 | "os.chdir(\"../\")\n", 22 | "%pwd" 23 | ] 24 | }, 25 | { 26 | "cell_type": "code", 27 | "execution_count": 17, 28 | "metadata": {}, 29 | "outputs": [], 30 | "source": [ 31 | "import pandas as pd" 32 | ] 33 | }, 34 | { 35 | "cell_type": "code", 36 | "execution_count": 18, 37 | "metadata": {}, 38 | "outputs": [ 39 | { 40 | "data": { 41 | "text/html": [ 42 | "
\n", 43 | "\n", 56 | "\n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | "
fixed acidityvolatile aciditycitric acidresidual sugarchloridesfree sulfur dioxidetotal sulfur dioxidedensitypHsulphatesalcoholquality
07.40.700.001.90.07611.034.00.99783.510.569.45
17.80.880.002.60.09825.067.00.99683.200.689.85
27.80.760.042.30.09215.054.00.99703.260.659.85
311.20.280.561.90.07517.060.00.99803.160.589.86
47.40.700.001.90.07611.034.00.99783.510.569.45
\n", 152 | "
" 153 | ], 154 | "text/plain": [ 155 | " fixed acidity volatile acidity citric acid residual sugar chlorides \\\n", 156 | "0 7.4 0.70 0.00 1.9 0.076 \n", 157 | "1 7.8 0.88 0.00 2.6 0.098 \n", 158 | "2 7.8 0.76 0.04 2.3 0.092 \n", 159 | "3 11.2 0.28 0.56 1.9 0.075 \n", 160 | "4 7.4 0.70 0.00 1.9 0.076 \n", 161 | "\n", 162 | " free sulfur dioxide total sulfur dioxide density pH sulphates \\\n", 163 | "0 11.0 34.0 0.9978 3.51 0.56 \n", 164 | "1 25.0 67.0 0.9968 3.20 0.68 \n", 165 | "2 15.0 54.0 0.9970 3.26 0.65 \n", 166 | "3 17.0 60.0 0.9980 3.16 0.58 \n", 167 | "4 11.0 34.0 0.9978 3.51 0.56 \n", 168 | "\n", 169 | " alcohol quality \n", 170 | "0 9.4 5 \n", 171 | "1 9.8 5 \n", 172 | "2 9.8 5 \n", 173 | "3 9.8 6 \n", 174 | "4 9.4 5 " 175 | ] 176 | }, 177 | "execution_count": 18, 178 | "metadata": {}, 179 | "output_type": "execute_result" 180 | } 181 | ], 182 | "source": [ 183 | "data = pd.read_csv(\"artifacts/data_ingestion/winequality-red.csv\")\n", 184 | "data.head()" 185 | ] 186 | }, 187 | { 188 | "cell_type": "code", 189 | "execution_count": 19, 190 | "metadata": {}, 191 | "outputs": [], 192 | "source": [ 193 | "from dataclasses import dataclass\n", 194 | "from pathlib import Path\n", 195 | "\n", 196 | "\n", 197 | "@dataclass(frozen=True)\n", 198 | "class DataValidationConfig:\n", 199 | " root_dir: Path\n", 200 | " STATUS_FILE: str\n", 201 | " unzip_data_dir: Path\n", 202 | " all_schema: dict" 203 | ] 204 | }, 205 | { 206 | "cell_type": "code", 207 | "execution_count": 20, 208 | "metadata": {}, 209 | "outputs": [], 210 | "source": [ 211 | "from mlProject.constants import *\n", 212 | "from mlProject.utils.common import read_yaml, create_directories" 213 | ] 214 | }, 215 | { 216 | "cell_type": "code", 217 | "execution_count": 21, 218 | "metadata": {}, 219 | "outputs": [], 220 | "source": [ 221 | "class ConfigurationManager:\n", 222 | " def __init__(\n", 223 | " self,\n", 224 | " config_filepath = CONFIG_FILE_PATH,\n", 225 | " params_filepath = PARAMS_FILE_PATH,\n", 226 | " schema_filepath = SCHEMA_FILE_PATH):\n", 227 | "\n", 228 | " self.config = read_yaml(config_filepath)\n", 229 | " self.params = read_yaml(params_filepath)\n", 230 | " self.schema = read_yaml(schema_filepath)\n", 231 | "\n", 232 | " create_directories([self.config.artifacts_root])\n", 233 | "\n", 234 | "\n", 235 | " \n", 236 | " def get_data_validation_config(self) -> DataValidationConfig:\n", 237 | " config = self.config.data_validation\n", 238 | " schema = self.schema.COLUMNS\n", 239 | "\n", 240 | " create_directories([config.root_dir])\n", 241 | "\n", 242 | " data_validation_config = DataValidationConfig(\n", 243 | " root_dir=config.root_dir,\n", 244 | " STATUS_FILE=config.STATUS_FILE,\n", 245 | " unzip_data_dir = config.unzip_data_dir,\n", 246 | " all_schema=schema,\n", 247 | " )\n", 248 | "\n", 249 | " return data_validation_config" 250 | ] 251 | }, 252 | { 253 | "cell_type": "code", 254 | "execution_count": 22, 255 | "metadata": {}, 256 | "outputs": [], 257 | "source": [ 258 | "import os\n", 259 | "from mlProject import logger" 260 | ] 261 | }, 262 | { 263 | "cell_type": "code", 264 | "execution_count": 23, 265 | "metadata": {}, 266 | "outputs": [], 267 | "source": [ 268 | "class DataValiadtion:\n", 269 | " def __init__(self, config: DataValidationConfig):\n", 270 | " self.config = config\n", 271 | "\n", 272 | "\n", 273 | " def validate_all_columns(self)-> bool:\n", 274 | " try:\n", 275 | " validation_status = None\n", 276 | "\n", 277 | " data = pd.read_csv(self.config.unzip_data_dir)\n", 278 | " all_cols = list(data.columns)\n", 279 | "\n", 280 | " all_schema = self.config.all_schema.keys()\n", 281 | "\n", 282 | " \n", 283 | " for col in all_cols:\n", 284 | " if col not in all_schema:\n", 285 | " validation_status = False\n", 286 | " with open(self.config.STATUS_FILE, 'w') as f:\n", 287 | " f.write(f\"Validation status: {validation_status}\")\n", 288 | " else:\n", 289 | " validation_status = True\n", 290 | " with open(self.config.STATUS_FILE, 'w') as f:\n", 291 | " f.write(f\"Validation status: {validation_status}\")\n", 292 | "\n", 293 | " return validation_status\n", 294 | " \n", 295 | " except Exception as e:\n", 296 | " raise e\n", 297 | "\n" 298 | ] 299 | }, 300 | { 301 | "cell_type": "code", 302 | "execution_count": 24, 303 | "metadata": {}, 304 | "outputs": [ 305 | { 306 | "name": "stdout", 307 | "output_type": "stream", 308 | "text": [ 309 | "[2025-01-12 12:40:28,683: INFO: common: yaml file: config\\config.yaml loaded successfully]\n", 310 | "[2025-01-12 12:40:28,684: INFO: common: yaml file: params.yaml loaded successfully]\n", 311 | "[2025-01-12 12:40:28,686: INFO: common: yaml file: schema.yaml loaded successfully]\n", 312 | "[2025-01-12 12:40:28,686: INFO: common: created directory at: artifacts]\n", 313 | "[2025-01-12 12:40:28,687: INFO: common: created directory at: artifacts/data_validation]\n" 314 | ] 315 | } 316 | ], 317 | "source": [ 318 | "try:\n", 319 | " config = ConfigurationManager()\n", 320 | " data_validation_config = config.get_data_validation_config()\n", 321 | " data_validation = DataValiadtion(config=data_validation_config)\n", 322 | " data_validation.validate_all_columns()\n", 323 | "except Exception as e:\n", 324 | " raise e" 325 | ] 326 | }, 327 | { 328 | "cell_type": "code", 329 | "execution_count": null, 330 | "metadata": {}, 331 | "outputs": [], 332 | "source": [] 333 | }, 334 | { 335 | "cell_type": "code", 336 | "execution_count": null, 337 | "metadata": {}, 338 | "outputs": [], 339 | "source": [] 340 | }, 341 | { 342 | "cell_type": "code", 343 | "execution_count": null, 344 | "metadata": {}, 345 | "outputs": [], 346 | "source": [] 347 | } 348 | ], 349 | "metadata": { 350 | "kernelspec": { 351 | "display_name": "mlproj", 352 | "language": "python", 353 | "name": "python3" 354 | }, 355 | "language_info": { 356 | "codemirror_mode": { 357 | "name": "ipython", 358 | "version": 3 359 | }, 360 | "file_extension": ".py", 361 | "mimetype": "text/x-python", 362 | "name": "python", 363 | "nbconvert_exporter": "python", 364 | "pygments_lexer": "ipython3", 365 | "version": "3.8.20" 366 | } 367 | }, 368 | "nbformat": 4, 369 | "nbformat_minor": 2 370 | } 371 | -------------------------------------------------------------------------------- /research/03_data_transformation.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "data": { 10 | "text/plain": [ 11 | "'d:\\\\Bappy\\\\Live Sessions\\\\Euron\\\\MLOPs Masters Batch\\\\End-to-End-Machine-Learning-Pipeline'" 12 | ] 13 | }, 14 | "execution_count": 1, 15 | "metadata": {}, 16 | "output_type": "execute_result" 17 | } 18 | ], 19 | "source": [ 20 | "import os\n", 21 | "os.chdir(\"../\")\n", 22 | "%pwd" 23 | ] 24 | }, 25 | { 26 | "cell_type": "code", 27 | "execution_count": 4, 28 | "metadata": {}, 29 | "outputs": [], 30 | "source": [ 31 | "from dataclasses import dataclass\n", 32 | "from pathlib import Path\n", 33 | "\n", 34 | "\n", 35 | "@dataclass(frozen=True)\n", 36 | "class DataTransformationConfig:\n", 37 | " root_dir: Path\n", 38 | " data_path: Path" 39 | ] 40 | }, 41 | { 42 | "cell_type": "code", 43 | "execution_count": 2, 44 | "metadata": {}, 45 | "outputs": [], 46 | "source": [ 47 | "from mlProject.constants import *\n", 48 | "from mlProject.utils.common import read_yaml, create_directories" 49 | ] 50 | }, 51 | { 52 | "cell_type": "code", 53 | "execution_count": 5, 54 | "metadata": {}, 55 | "outputs": [], 56 | "source": [ 57 | "class ConfigurationManager:\n", 58 | " def __init__(\n", 59 | " self,\n", 60 | " config_filepath = CONFIG_FILE_PATH,\n", 61 | " params_filepath = PARAMS_FILE_PATH,\n", 62 | " schema_filepath = SCHEMA_FILE_PATH):\n", 63 | "\n", 64 | " self.config = read_yaml(config_filepath)\n", 65 | " self.params = read_yaml(params_filepath)\n", 66 | " self.schema = read_yaml(schema_filepath)\n", 67 | "\n", 68 | " create_directories([self.config.artifacts_root])\n", 69 | "\n", 70 | "\n", 71 | " \n", 72 | " def get_data_transformation_config(self) -> DataTransformationConfig:\n", 73 | " config = self.config.data_transformation\n", 74 | "\n", 75 | " create_directories([config.root_dir])\n", 76 | "\n", 77 | " data_transformation_config = DataTransformationConfig(\n", 78 | " root_dir=config.root_dir,\n", 79 | " data_path=config.data_path,\n", 80 | " )\n", 81 | "\n", 82 | " return data_transformation_config" 83 | ] 84 | }, 85 | { 86 | "cell_type": "code", 87 | "execution_count": 6, 88 | "metadata": {}, 89 | "outputs": [], 90 | "source": [ 91 | "import os\n", 92 | "from mlProject import logger\n", 93 | "from sklearn.model_selection import train_test_split\n", 94 | "import pandas as pd" 95 | ] 96 | }, 97 | { 98 | "cell_type": "code", 99 | "execution_count": 7, 100 | "metadata": {}, 101 | "outputs": [], 102 | "source": [ 103 | "class DataTransformation:\n", 104 | " def __init__(self, config: DataTransformationConfig):\n", 105 | " self.config = config\n", 106 | "\n", 107 | " \n", 108 | " ## Note: You can add different data transformation techniques such as Scaler, PCA and all\n", 109 | " #You can perform all kinds of EDA in ML cycle here before passing this data to the model\n", 110 | "\n", 111 | " # I am only adding train_test_spliting cz this data is already cleaned up\n", 112 | "\n", 113 | "\n", 114 | " def train_test_spliting(self):\n", 115 | " data = pd.read_csv(self.config.data_path)\n", 116 | "\n", 117 | " # Split the data into training and test sets. (0.75, 0.25) split.\n", 118 | " train, test = train_test_split(data)\n", 119 | "\n", 120 | " train.to_csv(os.path.join(self.config.root_dir, \"train.csv\"),index = False)\n", 121 | " test.to_csv(os.path.join(self.config.root_dir, \"test.csv\"),index = False)\n", 122 | "\n", 123 | " logger.info(\"Splited data into training and test sets\")\n", 124 | " logger.info(train.shape)\n", 125 | " logger.info(test.shape)\n", 126 | "\n", 127 | " print(train.shape)\n", 128 | " print(test.shape)\n", 129 | " " 130 | ] 131 | }, 132 | { 133 | "cell_type": "code", 134 | "execution_count": 8, 135 | "metadata": {}, 136 | "outputs": [ 137 | { 138 | "name": "stdout", 139 | "output_type": "stream", 140 | "text": [ 141 | "[2025-01-12 12:51:51,319: INFO: common: yaml file: config\\config.yaml loaded successfully]\n", 142 | "[2025-01-12 12:51:51,320: INFO: common: yaml file: params.yaml loaded successfully]\n", 143 | "[2025-01-12 12:51:51,321: INFO: common: yaml file: schema.yaml loaded successfully]\n", 144 | "[2025-01-12 12:51:51,322: INFO: common: created directory at: artifacts]\n", 145 | "[2025-01-12 12:51:51,323: INFO: common: created directory at: artifacts/data_transformation]\n", 146 | "[2025-01-12 12:51:51,335: INFO: 741865018: Splited data into training and test sets]\n", 147 | "[2025-01-12 12:51:51,335: INFO: 741865018: (1199, 12)]\n", 148 | "[2025-01-12 12:51:51,336: INFO: 741865018: (400, 12)]\n", 149 | "(1199, 12)\n", 150 | "(400, 12)\n" 151 | ] 152 | } 153 | ], 154 | "source": [ 155 | "try:\n", 156 | " config = ConfigurationManager()\n", 157 | " data_transformation_config = config.get_data_transformation_config()\n", 158 | " data_transformation = DataTransformation(config=data_transformation_config)\n", 159 | " data_transformation.train_test_spliting()\n", 160 | "except Exception as e:\n", 161 | " raise e" 162 | ] 163 | }, 164 | { 165 | "cell_type": "code", 166 | "execution_count": null, 167 | "metadata": {}, 168 | "outputs": [], 169 | "source": [] 170 | } 171 | ], 172 | "metadata": { 173 | "kernelspec": { 174 | "display_name": "mlproj", 175 | "language": "python", 176 | "name": "python3" 177 | }, 178 | "language_info": { 179 | "codemirror_mode": { 180 | "name": "ipython", 181 | "version": 3 182 | }, 183 | "file_extension": ".py", 184 | "mimetype": "text/x-python", 185 | "name": "python", 186 | "nbconvert_exporter": "python", 187 | "pygments_lexer": "ipython3", 188 | "version": "3.8.20" 189 | } 190 | }, 191 | "nbformat": 4, 192 | "nbformat_minor": 2 193 | } 194 | -------------------------------------------------------------------------------- /research/04_model_trainer.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "data": { 10 | "text/plain": [ 11 | "'d:\\\\Bappy\\\\Live Sessions\\\\Euron\\\\MLOPs Masters Batch\\\\End-to-End-Machine-Learning-Pipeline'" 12 | ] 13 | }, 14 | "execution_count": 1, 15 | "metadata": {}, 16 | "output_type": "execute_result" 17 | } 18 | ], 19 | "source": [ 20 | "import os\n", 21 | "os.chdir(\"../\")\n", 22 | "%pwd" 23 | ] 24 | }, 25 | { 26 | "cell_type": "code", 27 | "execution_count": 2, 28 | "metadata": {}, 29 | "outputs": [], 30 | "source": [ 31 | "from dataclasses import dataclass\n", 32 | "from pathlib import Path\n", 33 | "\n", 34 | "\n", 35 | "@dataclass(frozen=True)\n", 36 | "class ModelTrainerConfig:\n", 37 | " root_dir: Path\n", 38 | " train_data_path: Path\n", 39 | " test_data_path: Path\n", 40 | " model_name: str\n", 41 | " alpha: float\n", 42 | " l1_ratio: float\n", 43 | " target_column: str" 44 | ] 45 | }, 46 | { 47 | "cell_type": "code", 48 | "execution_count": 3, 49 | "metadata": {}, 50 | "outputs": [], 51 | "source": [ 52 | "from mlProject.constants import *\n", 53 | "from mlProject.utils.common import read_yaml, create_directories" 54 | ] 55 | }, 56 | { 57 | "cell_type": "code", 58 | "execution_count": 4, 59 | "metadata": {}, 60 | "outputs": [], 61 | "source": [ 62 | "class ConfigurationManager:\n", 63 | " def __init__(\n", 64 | " self,\n", 65 | " config_filepath = CONFIG_FILE_PATH,\n", 66 | " params_filepath = PARAMS_FILE_PATH,\n", 67 | " schema_filepath = SCHEMA_FILE_PATH):\n", 68 | "\n", 69 | " self.config = read_yaml(config_filepath)\n", 70 | " self.params = read_yaml(params_filepath)\n", 71 | " self.schema = read_yaml(schema_filepath)\n", 72 | "\n", 73 | " create_directories([self.config.artifacts_root])\n", 74 | "\n", 75 | "\n", 76 | " def get_model_trainer_config(self) -> ModelTrainerConfig:\n", 77 | " config = self.config.model_trainer\n", 78 | " params = self.params.ElasticNet\n", 79 | " schema = self.schema.TARGET_COLUMN\n", 80 | "\n", 81 | " create_directories([config.root_dir])\n", 82 | "\n", 83 | " model_trainer_config = ModelTrainerConfig(\n", 84 | " root_dir=config.root_dir,\n", 85 | " train_data_path = config.train_data_path,\n", 86 | " test_data_path = config.test_data_path,\n", 87 | " model_name = config.model_name,\n", 88 | " alpha = params.alpha,\n", 89 | " l1_ratio = params.l1_ratio,\n", 90 | " target_column = schema.name\n", 91 | " \n", 92 | " )\n", 93 | "\n", 94 | " return model_trainer_config" 95 | ] 96 | }, 97 | { 98 | "cell_type": "code", 99 | "execution_count": 5, 100 | "metadata": {}, 101 | "outputs": [], 102 | "source": [ 103 | "import pandas as pd\n", 104 | "import os\n", 105 | "from mlProject import logger\n", 106 | "from sklearn.linear_model import ElasticNet\n", 107 | "import joblib" 108 | ] 109 | }, 110 | { 111 | "cell_type": "code", 112 | "execution_count": 6, 113 | "metadata": {}, 114 | "outputs": [], 115 | "source": [ 116 | "class ModelTrainer:\n", 117 | " def __init__(self, config: ModelTrainerConfig):\n", 118 | " self.config = config\n", 119 | "\n", 120 | " \n", 121 | " def train(self):\n", 122 | " train_data = pd.read_csv(self.config.train_data_path)\n", 123 | " test_data = pd.read_csv(self.config.test_data_path)\n", 124 | "\n", 125 | "\n", 126 | " train_x = train_data.drop([self.config.target_column], axis=1)\n", 127 | " test_x = test_data.drop([self.config.target_column], axis=1)\n", 128 | " train_y = train_data[[self.config.target_column]]\n", 129 | " test_y = test_data[[self.config.target_column]]\n", 130 | "\n", 131 | "\n", 132 | " lr = ElasticNet(alpha=self.config.alpha, l1_ratio=self.config.l1_ratio, random_state=42)\n", 133 | " lr.fit(train_x, train_y)\n", 134 | "\n", 135 | " joblib.dump(lr, os.path.join(self.config.root_dir, self.config.model_name))\n", 136 | "\n" 137 | ] 138 | }, 139 | { 140 | "cell_type": "code", 141 | "execution_count": 7, 142 | "metadata": {}, 143 | "outputs": [ 144 | { 145 | "name": "stdout", 146 | "output_type": "stream", 147 | "text": [ 148 | "[2025-01-12 13:04:48,406: INFO: common: yaml file: config\\config.yaml loaded successfully]\n", 149 | "[2025-01-12 13:04:48,407: INFO: common: yaml file: params.yaml loaded successfully]\n", 150 | "[2025-01-12 13:04:48,409: INFO: common: yaml file: schema.yaml loaded successfully]\n", 151 | "[2025-01-12 13:04:48,409: INFO: common: created directory at: artifacts]\n", 152 | "[2025-01-12 13:04:48,410: INFO: common: created directory at: artifacts/model_trainer]\n" 153 | ] 154 | } 155 | ], 156 | "source": [ 157 | "try:\n", 158 | " config = ConfigurationManager()\n", 159 | " model_trainer_config = config.get_model_trainer_config()\n", 160 | " model_trainer_config = ModelTrainer(config=model_trainer_config)\n", 161 | " model_trainer_config.train()\n", 162 | "except Exception as e:\n", 163 | " raise e" 164 | ] 165 | }, 166 | { 167 | "cell_type": "code", 168 | "execution_count": null, 169 | "metadata": {}, 170 | "outputs": [], 171 | "source": [] 172 | } 173 | ], 174 | "metadata": { 175 | "kernelspec": { 176 | "display_name": "mlproj", 177 | "language": "python", 178 | "name": "python3" 179 | }, 180 | "language_info": { 181 | "codemirror_mode": { 182 | "name": "ipython", 183 | "version": 3 184 | }, 185 | "file_extension": ".py", 186 | "mimetype": "text/x-python", 187 | "name": "python", 188 | "nbconvert_exporter": "python", 189 | "pygments_lexer": "ipython3", 190 | "version": "3.8.20" 191 | } 192 | }, 193 | "nbformat": 4, 194 | "nbformat_minor": 2 195 | } 196 | -------------------------------------------------------------------------------- /research/05_model_evaluation.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "data": { 10 | "text/plain": [ 11 | "'d:\\\\Bappy\\\\Live Sessions\\\\Euron\\\\MLOPs Masters Batch\\\\End-to-End-Machine-Learning-Pipeline'" 12 | ] 13 | }, 14 | "execution_count": 1, 15 | "metadata": {}, 16 | "output_type": "execute_result" 17 | } 18 | ], 19 | "source": [ 20 | "import os\n", 21 | "os.chdir(\"../\")\n", 22 | "%pwd" 23 | ] 24 | }, 25 | { 26 | "cell_type": "code", 27 | "execution_count": 2, 28 | "metadata": {}, 29 | "outputs": [], 30 | "source": [ 31 | "from dataclasses import dataclass\n", 32 | "from pathlib import Path\n", 33 | "\n", 34 | "\n", 35 | "@dataclass(frozen=True)\n", 36 | "class ModelEvaluationConfig:\n", 37 | " root_dir: Path\n", 38 | " test_data_path: Path\n", 39 | " model_path: Path\n", 40 | " all_params: dict\n", 41 | " metric_file_name: Path\n", 42 | " target_column: str" 43 | ] 44 | }, 45 | { 46 | "cell_type": "code", 47 | "execution_count": 3, 48 | "metadata": {}, 49 | "outputs": [], 50 | "source": [ 51 | "from mlProject.constants import *\n", 52 | "from mlProject.utils.common import read_yaml, create_directories, save_json" 53 | ] 54 | }, 55 | { 56 | "cell_type": "code", 57 | "execution_count": 4, 58 | "metadata": {}, 59 | "outputs": [], 60 | "source": [ 61 | "class ConfigurationManager:\n", 62 | " def __init__(\n", 63 | " self,\n", 64 | " config_filepath = CONFIG_FILE_PATH,\n", 65 | " params_filepath = PARAMS_FILE_PATH,\n", 66 | " schema_filepath = SCHEMA_FILE_PATH):\n", 67 | "\n", 68 | " self.config = read_yaml(config_filepath)\n", 69 | " self.params = read_yaml(params_filepath)\n", 70 | " self.schema = read_yaml(schema_filepath)\n", 71 | "\n", 72 | " create_directories([self.config.artifacts_root])\n", 73 | "\n", 74 | " \n", 75 | " def get_model_evaluation_config(self) -> ModelEvaluationConfig:\n", 76 | " config = self.config.model_evaluation\n", 77 | " params = self.params.ElasticNet\n", 78 | " schema = self.schema.TARGET_COLUMN\n", 79 | "\n", 80 | " create_directories([config.root_dir])\n", 81 | "\n", 82 | " model_evaluation_config = ModelEvaluationConfig(\n", 83 | " root_dir=config.root_dir,\n", 84 | " test_data_path=config.test_data_path,\n", 85 | " model_path = config.model_path,\n", 86 | " all_params=params,\n", 87 | " metric_file_name = config.metric_file_name,\n", 88 | " target_column = schema.name\n", 89 | " \n", 90 | " )\n", 91 | "\n", 92 | " return model_evaluation_config\n" 93 | ] 94 | }, 95 | { 96 | "cell_type": "code", 97 | "execution_count": 5, 98 | "metadata": {}, 99 | "outputs": [], 100 | "source": [ 101 | "import os\n", 102 | "import pandas as pd\n", 103 | "from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score\n", 104 | "from urllib.parse import urlparse\n", 105 | "import numpy as np\n", 106 | "import joblib" 107 | ] 108 | }, 109 | { 110 | "cell_type": "code", 111 | "execution_count": 6, 112 | "metadata": {}, 113 | "outputs": [], 114 | "source": [ 115 | "class ModelEvaluation:\n", 116 | " def __init__(self, config: ModelEvaluationConfig):\n", 117 | " self.config = config\n", 118 | "\n", 119 | " \n", 120 | " def eval_metrics(self,actual, pred):\n", 121 | " rmse = np.sqrt(mean_squared_error(actual, pred))\n", 122 | " mae = mean_absolute_error(actual, pred)\n", 123 | " r2 = r2_score(actual, pred)\n", 124 | " return rmse, mae, r2\n", 125 | " \n", 126 | "\n", 127 | "\n", 128 | " def save_results(self):\n", 129 | "\n", 130 | " test_data = pd.read_csv(self.config.test_data_path)\n", 131 | " model = joblib.load(self.config.model_path)\n", 132 | "\n", 133 | " test_x = test_data.drop([self.config.target_column], axis=1)\n", 134 | " test_y = test_data[[self.config.target_column]]\n", 135 | " \n", 136 | " predicted_qualities = model.predict(test_x)\n", 137 | "\n", 138 | " (rmse, mae, r2) = self.eval_metrics(test_y, predicted_qualities)\n", 139 | " \n", 140 | " # Saving metrics as local\n", 141 | " scores = {\"rmse\": rmse, \"mae\": mae, \"r2\": r2}\n", 142 | " save_json(path=Path(self.config.metric_file_name), data=scores)\n", 143 | "\n", 144 | "\n", 145 | "\n" 146 | ] 147 | }, 148 | { 149 | "cell_type": "code", 150 | "execution_count": 7, 151 | "metadata": {}, 152 | "outputs": [ 153 | { 154 | "name": "stdout", 155 | "output_type": "stream", 156 | "text": [ 157 | "[2025-01-12 13:09:29,149: INFO: common: yaml file: config\\config.yaml loaded successfully]\n", 158 | "[2025-01-12 13:09:29,150: INFO: common: yaml file: params.yaml loaded successfully]\n", 159 | "[2025-01-12 13:09:29,151: INFO: common: yaml file: schema.yaml loaded successfully]\n", 160 | "[2025-01-12 13:09:29,152: INFO: common: created directory at: artifacts]\n", 161 | "[2025-01-12 13:09:29,153: INFO: common: created directory at: artifacts/model_evaluation]\n", 162 | "[2025-01-12 13:09:29,189: INFO: common: json file saved at: artifacts\\model_evaluation\\metrics.json]\n" 163 | ] 164 | } 165 | ], 166 | "source": [ 167 | "try:\n", 168 | " config = ConfigurationManager()\n", 169 | " model_evaluation_config = config.get_model_evaluation_config()\n", 170 | " model_evaluation_config = ModelEvaluation(config=model_evaluation_config)\n", 171 | " model_evaluation_config.save_results()\n", 172 | "except Exception as e:\n", 173 | " raise e" 174 | ] 175 | }, 176 | { 177 | "cell_type": "code", 178 | "execution_count": null, 179 | "metadata": {}, 180 | "outputs": [], 181 | "source": [] 182 | } 183 | ], 184 | "metadata": { 185 | "kernelspec": { 186 | "display_name": "mlproj", 187 | "language": "python", 188 | "name": "python3" 189 | }, 190 | "language_info": { 191 | "codemirror_mode": { 192 | "name": "ipython", 193 | "version": 3 194 | }, 195 | "file_extension": ".py", 196 | "mimetype": "text/x-python", 197 | "name": "python", 198 | "nbconvert_exporter": "python", 199 | "pygments_lexer": "ipython3", 200 | "version": "3.8.20" 201 | } 202 | }, 203 | "nbformat": 4, 204 | "nbformat_minor": 2 205 | } 206 | -------------------------------------------------------------------------------- /research/test.yaml: -------------------------------------------------------------------------------- 1 | name: bappy 2 | email: entbappy73@gmail.com -------------------------------------------------------------------------------- /research/trials.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "name": "stdout", 10 | "output_type": "stream", 11 | "text": [ 12 | "Ok\n" 13 | ] 14 | } 15 | ], 16 | "source": [ 17 | "print(\"Ok\")" 18 | ] 19 | }, 20 | { 21 | "cell_type": "code", 22 | "execution_count": 2, 23 | "metadata": {}, 24 | "outputs": [ 25 | { 26 | "name": "stdout", 27 | "output_type": "stream", 28 | "text": [ 29 | "{'name': 'bappy', 'email': 'entbappy73@gmail.com'}\n", 30 | "\n" 31 | ] 32 | } 33 | ], 34 | "source": [ 35 | "import yaml\n", 36 | "\n", 37 | "yaml_file_path = \"test.yaml\"\n", 38 | "\n", 39 | "# Open the YAML file and load its contents\n", 40 | "with open(yaml_file_path, 'r') as yaml_file:\n", 41 | " data = yaml.safe_load(yaml_file)\n", 42 | "\n", 43 | "\n", 44 | "print(data)\n", 45 | "print(type(data))" 46 | ] 47 | }, 48 | { 49 | "cell_type": "code", 50 | "execution_count": 3, 51 | "metadata": {}, 52 | "outputs": [ 53 | { 54 | "data": { 55 | "text/plain": [ 56 | "'bappy'" 57 | ] 58 | }, 59 | "execution_count": 3, 60 | "metadata": {}, 61 | "output_type": "execute_result" 62 | } 63 | ], 64 | "source": [ 65 | "data['name']" 66 | ] 67 | }, 68 | { 69 | "cell_type": "code", 70 | "execution_count": 4, 71 | "metadata": {}, 72 | "outputs": [ 73 | { 74 | "data": { 75 | "text/plain": [ 76 | "'entbappy73@gmail.com'" 77 | ] 78 | }, 79 | "execution_count": 4, 80 | "metadata": {}, 81 | "output_type": "execute_result" 82 | } 83 | ], 84 | "source": [ 85 | "data['email']" 86 | ] 87 | }, 88 | { 89 | "cell_type": "code", 90 | "execution_count": 5, 91 | "metadata": {}, 92 | "outputs": [ 93 | { 94 | "ename": "AttributeError", 95 | "evalue": "'dict' object has no attribute 'name'", 96 | "output_type": "error", 97 | "traceback": [ 98 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", 99 | "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", 100 | "Cell \u001b[1;32mIn[5], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[43mdata\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mname\u001b[49m\n", 101 | "\u001b[1;31mAttributeError\u001b[0m: 'dict' object has no attribute 'name'" 102 | ] 103 | } 104 | ], 105 | "source": [ 106 | "data.name" 107 | ] 108 | }, 109 | { 110 | "cell_type": "markdown", 111 | "metadata": {}, 112 | "source": [ 113 | "# Configbox" 114 | ] 115 | }, 116 | { 117 | "cell_type": "code", 118 | "execution_count": 6, 119 | "metadata": {}, 120 | "outputs": [], 121 | "source": [ 122 | "from box import ConfigBox" 123 | ] 124 | }, 125 | { 126 | "cell_type": "code", 127 | "execution_count": 7, 128 | "metadata": {}, 129 | "outputs": [], 130 | "source": [ 131 | "d = ConfigBox(data)" 132 | ] 133 | }, 134 | { 135 | "cell_type": "code", 136 | "execution_count": 8, 137 | "metadata": {}, 138 | "outputs": [ 139 | { 140 | "data": { 141 | "text/plain": [ 142 | "ConfigBox({'name': 'bappy', 'email': 'entbappy73@gmail.com'})" 143 | ] 144 | }, 145 | "execution_count": 8, 146 | "metadata": {}, 147 | "output_type": "execute_result" 148 | } 149 | ], 150 | "source": [ 151 | "d" 152 | ] 153 | }, 154 | { 155 | "cell_type": "code", 156 | "execution_count": 9, 157 | "metadata": {}, 158 | "outputs": [ 159 | { 160 | "data": { 161 | "text/plain": [ 162 | "box.config_box.ConfigBox" 163 | ] 164 | }, 165 | "execution_count": 9, 166 | "metadata": {}, 167 | "output_type": "execute_result" 168 | } 169 | ], 170 | "source": [ 171 | "type(d)" 172 | ] 173 | }, 174 | { 175 | "cell_type": "code", 176 | "execution_count": 10, 177 | "metadata": {}, 178 | "outputs": [ 179 | { 180 | "data": { 181 | "text/plain": [ 182 | "'bappy'" 183 | ] 184 | }, 185 | "execution_count": 10, 186 | "metadata": {}, 187 | "output_type": "execute_result" 188 | } 189 | ], 190 | "source": [ 191 | "d.name" 192 | ] 193 | }, 194 | { 195 | "cell_type": "code", 196 | "execution_count": 11, 197 | "metadata": {}, 198 | "outputs": [ 199 | { 200 | "data": { 201 | "text/plain": [ 202 | "'entbappy73@gmail.com'" 203 | ] 204 | }, 205 | "execution_count": 11, 206 | "metadata": {}, 207 | "output_type": "execute_result" 208 | } 209 | ], 210 | "source": [ 211 | "d.email" 212 | ] 213 | }, 214 | { 215 | "cell_type": "markdown", 216 | "metadata": {}, 217 | "source": [ 218 | "# ensure_annotations" 219 | ] 220 | }, 221 | { 222 | "cell_type": "code", 223 | "execution_count": 12, 224 | "metadata": {}, 225 | "outputs": [], 226 | "source": [ 227 | "def get_product(x:int, y:int):\n", 228 | " return x*y" 229 | ] 230 | }, 231 | { 232 | "cell_type": "code", 233 | "execution_count": 13, 234 | "metadata": {}, 235 | "outputs": [ 236 | { 237 | "data": { 238 | "text/plain": [ 239 | "8" 240 | ] 241 | }, 242 | "execution_count": 13, 243 | "metadata": {}, 244 | "output_type": "execute_result" 245 | } 246 | ], 247 | "source": [ 248 | "get_product(x=2,y=4)" 249 | ] 250 | }, 251 | { 252 | "cell_type": "code", 253 | "execution_count": 14, 254 | "metadata": {}, 255 | "outputs": [ 256 | { 257 | "data": { 258 | "text/plain": [ 259 | "'44'" 260 | ] 261 | }, 262 | "execution_count": 14, 263 | "metadata": {}, 264 | "output_type": "execute_result" 265 | } 266 | ], 267 | "source": [ 268 | "\n", 269 | "get_product(x=2,y=\"4\")" 270 | ] 271 | }, 272 | { 273 | "cell_type": "code", 274 | "execution_count": 15, 275 | "metadata": {}, 276 | "outputs": [], 277 | "source": [ 278 | "from ensure import ensure_annotations" 279 | ] 280 | }, 281 | { 282 | "cell_type": "code", 283 | "execution_count": 16, 284 | "metadata": {}, 285 | "outputs": [], 286 | "source": [ 287 | "@ensure_annotations\n", 288 | "def get_product(x:int, y:int):\n", 289 | " return x*y" 290 | ] 291 | }, 292 | { 293 | "cell_type": "code", 294 | "execution_count": 17, 295 | "metadata": {}, 296 | "outputs": [ 297 | { 298 | "data": { 299 | "text/plain": [ 300 | "8" 301 | ] 302 | }, 303 | "execution_count": 17, 304 | "metadata": {}, 305 | "output_type": "execute_result" 306 | } 307 | ], 308 | "source": [ 309 | "get_product(x=2,y=4)" 310 | ] 311 | }, 312 | { 313 | "cell_type": "code", 314 | "execution_count": 18, 315 | "metadata": {}, 316 | "outputs": [ 317 | { 318 | "ename": "EnsureError", 319 | "evalue": "Argument y of type to does not match annotation type ", 320 | "output_type": "error", 321 | "traceback": [ 322 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", 323 | "\u001b[1;31mEnsureError\u001b[0m Traceback (most recent call last)", 324 | "Cell \u001b[1;32mIn[18], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[43mget_product\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m2\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43my\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m4\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", 325 | "File \u001b[1;32mc:\\Anaconda3\\envs\\mlproj\\lib\\site-packages\\ensure\\main.py:803\u001b[0m, in \u001b[0;36mWrappedFunction.__call__\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 798\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(value, templ):\n\u001b[0;32m 799\u001b[0m msg \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m 800\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mArgument \u001b[39m\u001b[38;5;132;01m{arg}\u001b[39;00m\u001b[38;5;124m of type \u001b[39m\u001b[38;5;132;01m{valt}\u001b[39;00m\u001b[38;5;124m to \u001b[39m\u001b[38;5;132;01m{f}\u001b[39;00m\u001b[38;5;124m \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 801\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdoes not match annotation type \u001b[39m\u001b[38;5;132;01m{t}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 802\u001b[0m )\n\u001b[1;32m--> 803\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m EnsureError(msg\u001b[38;5;241m.\u001b[39mformat(\n\u001b[0;32m 804\u001b[0m arg\u001b[38;5;241m=\u001b[39marg, f\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mf, t\u001b[38;5;241m=\u001b[39mtempl, valt\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mtype\u001b[39m(value)\n\u001b[0;32m 805\u001b[0m ))\n\u001b[0;32m 807\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mf(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", 326 | "\u001b[1;31mEnsureError\u001b[0m: Argument y of type to does not match annotation type " 327 | ] 328 | } 329 | ], 330 | "source": [ 331 | "get_product(x=2,y=\"4\")" 332 | ] 333 | }, 334 | { 335 | "cell_type": "code", 336 | "execution_count": null, 337 | "metadata": {}, 338 | "outputs": [], 339 | "source": [] 340 | } 341 | ], 342 | "metadata": { 343 | "kernelspec": { 344 | "display_name": "mlproj", 345 | "language": "python", 346 | "name": "python3" 347 | }, 348 | "language_info": { 349 | "codemirror_mode": { 350 | "name": "ipython", 351 | "version": 3 352 | }, 353 | "file_extension": ".py", 354 | "mimetype": "text/x-python", 355 | "name": "python", 356 | "nbconvert_exporter": "python", 357 | "pygments_lexer": "ipython3", 358 | "version": "3.8.20" 359 | } 360 | }, 361 | "nbformat": 4, 362 | "nbformat_minor": 2 363 | } 364 | -------------------------------------------------------------------------------- /schema.yaml: -------------------------------------------------------------------------------- 1 | COLUMNS: 2 | fixed acidity: float64 3 | volatile acidity: float64 4 | citric acid: float64 5 | residual sugar: float64 6 | chlorides: float64 7 | free sulfur dioxide: float64 8 | total sulfur dioxide: float64 9 | density: float64 10 | pH: float64 11 | sulphates: float64 12 | alcohol: float64 13 | quality: int64 14 | 15 | 16 | TARGET_COLUMN: 17 | name: quality 18 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | import setuptools 2 | 3 | with open("README.md", "r", encoding="utf-8") as f: 4 | long_description = f.read() 5 | 6 | 7 | __version__ = "0.0.0" 8 | 9 | REPO_NAME = "End-to-End-Machine-Learning-Pipeline" 10 | AUTHOR_USER_NAME = "entbappy" 11 | SRC_REPO = "mlProject" 12 | AUTHOR_EMAIL = "entbappy73@gmail.com" 13 | 14 | 15 | setuptools.setup( 16 | name=SRC_REPO, 17 | version=__version__, 18 | author=AUTHOR_USER_NAME, 19 | author_email=AUTHOR_EMAIL, 20 | description="A small python package for ml app", 21 | long_description=long_description, 22 | long_description_content="text/markdown", 23 | url=f"https://github.com/{AUTHOR_USER_NAME}/{REPO_NAME}", 24 | project_urls={ 25 | "Bug Tracker": f"https://github.com/{AUTHOR_USER_NAME}/{REPO_NAME}/issues", 26 | }, 27 | package_dir={"": "src"}, 28 | packages=setuptools.find_packages(where="src") 29 | ) -------------------------------------------------------------------------------- /src/mlProject/__init__.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | import logging 4 | 5 | logging_str = "[%(asctime)s: %(levelname)s: %(module)s: %(message)s]" 6 | 7 | log_dir = "logs" 8 | log_filepath = os.path.join(log_dir,"running_logs.log") 9 | os.makedirs(log_dir, exist_ok=True) 10 | 11 | 12 | logging.basicConfig( 13 | level= logging.INFO, 14 | format= logging_str, 15 | 16 | handlers=[ 17 | logging.FileHandler(log_filepath), 18 | logging.StreamHandler(sys.stdout) 19 | ] 20 | ) 21 | 22 | logger = logging.getLogger("mlProjectLogger") -------------------------------------------------------------------------------- /src/mlProject/components/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/entbappy/End-to-End-Machine-Learning-Pipeline/6d10e821647533e6a3a5af2dbe8c5b29aac9ca19/src/mlProject/components/__init__.py -------------------------------------------------------------------------------- /src/mlProject/components/data_ingestion.py: -------------------------------------------------------------------------------- 1 | import os 2 | import urllib.request as request 3 | import zipfile 4 | from mlProject import logger 5 | from mlProject.utils.common import get_size 6 | from mlProject.entity.config_entity import DataIngestionConfig 7 | from pathlib import Path 8 | 9 | 10 | 11 | class DataIngestion: 12 | def __init__(self, config: DataIngestionConfig): 13 | self.config = config 14 | 15 | 16 | 17 | def download_file(self): 18 | if not os.path.exists(self.config.local_data_file): 19 | filename, headers = request.urlretrieve( 20 | url = self.config.source_URL, 21 | filename = self.config.local_data_file 22 | ) 23 | logger.info(f"{filename} download! with following info: \n{headers}") 24 | else: 25 | logger.info(f"File already exists of size: {get_size(Path(self.config.local_data_file))}") 26 | 27 | 28 | 29 | def extract_zip_file(self): 30 | """ 31 | zip_file_path: str 32 | Extracts the zip file into the data directory 33 | Function returns None 34 | """ 35 | unzip_path = self.config.unzip_dir 36 | os.makedirs(unzip_path, exist_ok=True) 37 | with zipfile.ZipFile(self.config.local_data_file, 'r') as zip_ref: 38 | zip_ref.extractall(unzip_path) 39 | -------------------------------------------------------------------------------- /src/mlProject/components/data_transformation.py: -------------------------------------------------------------------------------- 1 | import os 2 | from mlProject import logger 3 | from sklearn.model_selection import train_test_split 4 | import pandas as pd 5 | from mlProject.entity.config_entity import DataTransformationConfig 6 | 7 | 8 | class DataTransformation: 9 | def __init__(self, config: DataTransformationConfig): 10 | self.config = config 11 | 12 | 13 | ## Note: You can add different data transformation techniques such as Scaler, PCA and all 14 | #You can perform all kinds of EDA in ML cycle here before passing this data to the model 15 | 16 | # I am only adding train_test_spliting cz this data is already cleaned up 17 | 18 | 19 | def train_test_spliting(self): 20 | data = pd.read_csv(self.config.data_path) 21 | 22 | # Split the data into training and test sets. (0.75, 0.25) split. 23 | train, test = train_test_split(data) 24 | 25 | train.to_csv(os.path.join(self.config.root_dir, "train.csv"),index = False) 26 | test.to_csv(os.path.join(self.config.root_dir, "test.csv"),index = False) 27 | 28 | logger.info("Splited data into training and test sets") 29 | logger.info(train.shape) 30 | logger.info(test.shape) 31 | 32 | print(train.shape) 33 | print(test.shape) 34 | -------------------------------------------------------------------------------- /src/mlProject/components/data_validation.py: -------------------------------------------------------------------------------- 1 | import os 2 | from mlProject import logger 3 | from mlProject.entity.config_entity import DataValidationConfig 4 | import pandas as pd 5 | 6 | 7 | class DataValiadtion: 8 | def __init__(self, config: DataValidationConfig): 9 | self.config = config 10 | 11 | 12 | def validate_all_columns(self)-> bool: 13 | try: 14 | validation_status = None 15 | 16 | data = pd.read_csv(self.config.unzip_data_dir) 17 | all_cols = list(data.columns) 18 | 19 | all_schema = self.config.all_schema.keys() 20 | 21 | 22 | for col in all_cols: 23 | if col not in all_schema: 24 | validation_status = False 25 | with open(self.config.STATUS_FILE, 'w') as f: 26 | f.write(f"Validation status: {validation_status}") 27 | else: 28 | validation_status = True 29 | with open(self.config.STATUS_FILE, 'w') as f: 30 | f.write(f"Validation status: {validation_status}") 31 | 32 | return validation_status 33 | 34 | except Exception as e: 35 | raise e 36 | 37 | -------------------------------------------------------------------------------- /src/mlProject/components/model_evaluation.py: -------------------------------------------------------------------------------- 1 | import os 2 | import pandas as pd 3 | from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score 4 | from urllib.parse import urlparse 5 | import numpy as np 6 | import joblib 7 | from mlProject.entity.config_entity import ModelEvaluationConfig 8 | from pathlib import Path 9 | from mlProject.utils.common import save_json 10 | 11 | 12 | class ModelEvaluation: 13 | def __init__(self, config: ModelEvaluationConfig): 14 | self.config = config 15 | 16 | 17 | def eval_metrics(self,actual, pred): 18 | rmse = np.sqrt(mean_squared_error(actual, pred)) 19 | mae = mean_absolute_error(actual, pred) 20 | r2 = r2_score(actual, pred) 21 | return rmse, mae, r2 22 | 23 | 24 | 25 | def save_results(self): 26 | 27 | test_data = pd.read_csv(self.config.test_data_path) 28 | model = joblib.load(self.config.model_path) 29 | 30 | test_x = test_data.drop([self.config.target_column], axis=1) 31 | test_y = test_data[[self.config.target_column]] 32 | 33 | predicted_qualities = model.predict(test_x) 34 | 35 | (rmse, mae, r2) = self.eval_metrics(test_y, predicted_qualities) 36 | 37 | # Saving metrics as local 38 | scores = {"rmse": rmse, "mae": mae, "r2": r2} 39 | save_json(path=Path(self.config.metric_file_name), data=scores) 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /src/mlProject/components/model_trainer.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | import os 3 | from mlProject import logger 4 | from sklearn.linear_model import ElasticNet 5 | import joblib 6 | from mlProject.entity.config_entity import ModelTrainerConfig 7 | 8 | 9 | class ModelTrainer: 10 | def __init__(self, config: ModelTrainerConfig): 11 | self.config = config 12 | 13 | 14 | def train(self): 15 | train_data = pd.read_csv(self.config.train_data_path) 16 | test_data = pd.read_csv(self.config.test_data_path) 17 | 18 | 19 | train_x = train_data.drop([self.config.target_column], axis=1) 20 | test_x = test_data.drop([self.config.target_column], axis=1) 21 | train_y = train_data[[self.config.target_column]] 22 | test_y = test_data[[self.config.target_column]] 23 | 24 | 25 | lr = ElasticNet(alpha=self.config.alpha, l1_ratio=self.config.l1_ratio, random_state=42) 26 | lr.fit(train_x, train_y) 27 | 28 | joblib.dump(lr, os.path.join(self.config.root_dir, self.config.model_name)) 29 | 30 | -------------------------------------------------------------------------------- /src/mlProject/config/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/entbappy/End-to-End-Machine-Learning-Pipeline/6d10e821647533e6a3a5af2dbe8c5b29aac9ca19/src/mlProject/config/__init__.py -------------------------------------------------------------------------------- /src/mlProject/config/configuration.py: -------------------------------------------------------------------------------- 1 | from mlProject.constants import * 2 | from mlProject.utils.common import read_yaml, create_directories 3 | from mlProject.entity.config_entity import (DataIngestionConfig, 4 | DataValidationConfig, 5 | DataTransformationConfig, 6 | ModelTrainerConfig, 7 | ModelEvaluationConfig) 8 | 9 | class ConfigurationManager: 10 | def __init__( 11 | self, 12 | config_filepath = CONFIG_FILE_PATH, 13 | params_filepath = PARAMS_FILE_PATH, 14 | schema_filepath = SCHEMA_FILE_PATH): 15 | 16 | self.config = read_yaml(config_filepath) 17 | self.params = read_yaml(params_filepath) 18 | self.schema = read_yaml(schema_filepath) 19 | 20 | create_directories([self.config.artifacts_root]) 21 | 22 | 23 | 24 | def get_data_ingestion_config(self) -> DataIngestionConfig: 25 | config = self.config.data_ingestion 26 | 27 | create_directories([config.root_dir]) 28 | 29 | data_ingestion_config = DataIngestionConfig( 30 | root_dir=config.root_dir, 31 | source_URL=config.source_URL, 32 | local_data_file=config.local_data_file, 33 | unzip_dir=config.unzip_dir 34 | ) 35 | 36 | return data_ingestion_config 37 | 38 | 39 | def get_data_validation_config(self) -> DataValidationConfig: 40 | config = self.config.data_validation 41 | schema = self.schema.COLUMNS 42 | 43 | create_directories([config.root_dir]) 44 | 45 | data_validation_config = DataValidationConfig( 46 | root_dir=config.root_dir, 47 | STATUS_FILE=config.STATUS_FILE, 48 | unzip_data_dir = config.unzip_data_dir, 49 | all_schema=schema, 50 | ) 51 | 52 | return data_validation_config 53 | 54 | 55 | def get_data_transformation_config(self) -> DataTransformationConfig: 56 | config = self.config.data_transformation 57 | 58 | create_directories([config.root_dir]) 59 | 60 | data_transformation_config = DataTransformationConfig( 61 | root_dir=config.root_dir, 62 | data_path=config.data_path, 63 | ) 64 | 65 | return data_transformation_config 66 | 67 | 68 | def get_model_trainer_config(self) -> ModelTrainerConfig: 69 | config = self.config.model_trainer 70 | params = self.params.ElasticNet 71 | schema = self.schema.TARGET_COLUMN 72 | 73 | create_directories([config.root_dir]) 74 | 75 | model_trainer_config = ModelTrainerConfig( 76 | root_dir=config.root_dir, 77 | train_data_path = config.train_data_path, 78 | test_data_path = config.test_data_path, 79 | model_name = config.model_name, 80 | alpha = params.alpha, 81 | l1_ratio = params.l1_ratio, 82 | target_column = schema.name 83 | 84 | ) 85 | 86 | return model_trainer_config 87 | 88 | 89 | def get_model_evaluation_config(self) -> ModelEvaluationConfig: 90 | config = self.config.model_evaluation 91 | params = self.params.ElasticNet 92 | schema = self.schema.TARGET_COLUMN 93 | 94 | create_directories([config.root_dir]) 95 | 96 | model_evaluation_config = ModelEvaluationConfig( 97 | root_dir=config.root_dir, 98 | test_data_path=config.test_data_path, 99 | model_path = config.model_path, 100 | all_params=params, 101 | metric_file_name = config.metric_file_name, 102 | target_column = schema.name 103 | 104 | ) 105 | 106 | return model_evaluation_config 107 | -------------------------------------------------------------------------------- /src/mlProject/constants/__init__.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | CONFIG_FILE_PATH = Path("config/config.yaml") 4 | PARAMS_FILE_PATH = Path("params.yaml") 5 | SCHEMA_FILE_PATH = Path("schema.yaml") -------------------------------------------------------------------------------- /src/mlProject/entity/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/entbappy/End-to-End-Machine-Learning-Pipeline/6d10e821647533e6a3a5af2dbe8c5b29aac9ca19/src/mlProject/entity/__init__.py -------------------------------------------------------------------------------- /src/mlProject/entity/config_entity.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | from pathlib import Path 3 | 4 | 5 | @dataclass(frozen=True) 6 | class DataIngestionConfig: 7 | root_dir: Path 8 | source_URL: str 9 | local_data_file: Path 10 | unzip_dir: Path 11 | 12 | 13 | 14 | @dataclass(frozen=True) 15 | class DataValidationConfig: 16 | root_dir: Path 17 | STATUS_FILE: str 18 | unzip_data_dir: Path 19 | all_schema: dict 20 | 21 | 22 | 23 | @dataclass(frozen=True) 24 | class DataTransformationConfig: 25 | root_dir: Path 26 | data_path: Path 27 | 28 | 29 | 30 | @dataclass(frozen=True) 31 | class ModelTrainerConfig: 32 | root_dir: Path 33 | train_data_path: Path 34 | test_data_path: Path 35 | model_name: str 36 | alpha: float 37 | l1_ratio: float 38 | target_column: str 39 | 40 | 41 | 42 | @dataclass(frozen=True) 43 | class ModelEvaluationConfig: 44 | root_dir: Path 45 | test_data_path: Path 46 | model_path: Path 47 | all_params: dict 48 | metric_file_name: Path 49 | target_column: str -------------------------------------------------------------------------------- /src/mlProject/pipeline/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/entbappy/End-to-End-Machine-Learning-Pipeline/6d10e821647533e6a3a5af2dbe8c5b29aac9ca19/src/mlProject/pipeline/__init__.py -------------------------------------------------------------------------------- /src/mlProject/pipeline/prediction.py: -------------------------------------------------------------------------------- 1 | import joblib 2 | import numpy as np 3 | import pandas as pd 4 | from pathlib import Path 5 | 6 | 7 | 8 | class PredictionPipeline: 9 | def __init__(self): 10 | self.model = joblib.load(Path('artifacts/model_trainer/model.joblib')) 11 | 12 | 13 | def predict(self, data): 14 | prediction = self.model.predict(data) 15 | 16 | return prediction -------------------------------------------------------------------------------- /src/mlProject/pipeline/stage_01_data_ingestion.py: -------------------------------------------------------------------------------- 1 | from mlProject.config.configuration import ConfigurationManager 2 | from mlProject.components.data_ingestion import DataIngestion 3 | from mlProject import logger 4 | 5 | 6 | 7 | STAGE_NAME = "Data Ingestion stage" 8 | 9 | class DataIngestionTrainingPipeline: 10 | def __init__(self): 11 | pass 12 | 13 | def main(self): 14 | config = ConfigurationManager() 15 | data_ingestion_config = config.get_data_ingestion_config() 16 | data_ingestion = DataIngestion(config=data_ingestion_config) 17 | data_ingestion.download_file() 18 | data_ingestion.extract_zip_file() 19 | 20 | -------------------------------------------------------------------------------- /src/mlProject/pipeline/stage_02_data_validation.py: -------------------------------------------------------------------------------- 1 | from mlProject.config.configuration import ConfigurationManager 2 | from mlProject.components.data_validation import DataValiadtion 3 | from mlProject import logger 4 | 5 | 6 | STAGE_NAME = "Data Validation stage" 7 | 8 | class DataValidationTrainingPipeline: 9 | def __init__(self): 10 | pass 11 | 12 | def main(self): 13 | config = ConfigurationManager() 14 | data_validation_config = config.get_data_validation_config() 15 | data_validation = DataValiadtion(config=data_validation_config) 16 | data_validation.validate_all_columns() 17 | -------------------------------------------------------------------------------- /src/mlProject/pipeline/stage_03_data_transformation.py: -------------------------------------------------------------------------------- 1 | from mlProject.config.configuration import ConfigurationManager 2 | from mlProject.components.data_transformation import DataTransformation 3 | from mlProject import logger 4 | from pathlib import Path 5 | 6 | 7 | 8 | 9 | STAGE_NAME = "Data Transformation stage" 10 | 11 | class DataTransformationTrainingPipeline: 12 | def __init__(self): 13 | pass 14 | 15 | 16 | def main(self): 17 | try: 18 | with open(Path("artifacts/data_validation/status.txt"), "r") as f: 19 | status = f.read().split(" ")[-1] 20 | 21 | if status == "True": 22 | config = ConfigurationManager() 23 | data_transformation_config = config.get_data_transformation_config() 24 | data_transformation = DataTransformation(config=data_transformation_config) 25 | data_transformation.train_test_spliting() 26 | 27 | else: 28 | raise Exception("You data schema is not valid") 29 | 30 | except Exception as e: 31 | print(e) -------------------------------------------------------------------------------- /src/mlProject/pipeline/stage_04_model_trainer.py: -------------------------------------------------------------------------------- 1 | from mlProject.config.configuration import ConfigurationManager 2 | from mlProject.components.model_trainer import ModelTrainer 3 | from mlProject import logger 4 | 5 | 6 | 7 | STAGE_NAME = "Model Trainer stage" 8 | 9 | class ModelTrainerTrainingPipeline: 10 | def __init__(self): 11 | pass 12 | 13 | def main(self): 14 | config = ConfigurationManager() 15 | model_trainer_config = config.get_model_trainer_config() 16 | model_trainer_config = ModelTrainer(config=model_trainer_config) 17 | model_trainer_config.train() -------------------------------------------------------------------------------- /src/mlProject/pipeline/stage_05_model_evaluation.py: -------------------------------------------------------------------------------- 1 | from mlProject.config.configuration import ConfigurationManager 2 | from mlProject.components.model_evaluation import ModelEvaluation 3 | from mlProject import logger 4 | 5 | STAGE_NAME = "Model evaluation stage" 6 | 7 | class ModelEvaluationTrainingPipeline: 8 | def __init__(self): 9 | pass 10 | 11 | def main(self): 12 | config = ConfigurationManager() 13 | model_evaluation_config = config.get_model_evaluation_config() 14 | model_evaluation_config = ModelEvaluation(config=model_evaluation_config) 15 | model_evaluation_config.save_results() 16 | -------------------------------------------------------------------------------- /src/mlProject/utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/entbappy/End-to-End-Machine-Learning-Pipeline/6d10e821647533e6a3a5af2dbe8c5b29aac9ca19/src/mlProject/utils/__init__.py -------------------------------------------------------------------------------- /src/mlProject/utils/common.py: -------------------------------------------------------------------------------- 1 | import os 2 | from box.exceptions import BoxValueError 3 | import yaml 4 | from mlProject import logger 5 | import json 6 | import joblib 7 | from ensure import ensure_annotations 8 | from box import ConfigBox 9 | from pathlib import Path 10 | from typing import Any 11 | 12 | 13 | 14 | @ensure_annotations 15 | def read_yaml(path_to_yaml: Path) -> ConfigBox: 16 | """reads yaml file and returns 17 | 18 | Args: 19 | path_to_yaml (str): path like input 20 | 21 | Raises: 22 | ValueError: if yaml file is empty 23 | e: empty file 24 | 25 | Returns: 26 | ConfigBox: ConfigBox type 27 | """ 28 | try: 29 | with open(path_to_yaml) as yaml_file: 30 | content = yaml.safe_load(yaml_file) 31 | logger.info(f"yaml file: {path_to_yaml} loaded successfully") 32 | return ConfigBox(content) 33 | except BoxValueError: 34 | raise ValueError("yaml file is empty") 35 | except Exception as e: 36 | raise e 37 | 38 | 39 | 40 | @ensure_annotations 41 | def create_directories(path_to_directories: list, verbose=True): 42 | """create list of directories 43 | 44 | Args: 45 | path_to_directories (list): list of path of directories 46 | ignore_log (bool, optional): ignore if multiple dirs is to be created. Defaults to False. 47 | """ 48 | for path in path_to_directories: 49 | os.makedirs(path, exist_ok=True) 50 | if verbose: 51 | logger.info(f"created directory at: {path}") 52 | 53 | 54 | @ensure_annotations 55 | def save_json(path: Path, data: dict): 56 | """save json data 57 | 58 | Args: 59 | path (Path): path to json file 60 | data (dict): data to be saved in json file 61 | """ 62 | with open(path, "w") as f: 63 | json.dump(data, f, indent=4) 64 | 65 | logger.info(f"json file saved at: {path}") 66 | 67 | 68 | 69 | 70 | @ensure_annotations 71 | def load_json(path: Path) -> ConfigBox: 72 | """load json files data 73 | 74 | Args: 75 | path (Path): path to json file 76 | 77 | Returns: 78 | ConfigBox: data as class attributes instead of dict 79 | """ 80 | with open(path) as f: 81 | content = json.load(f) 82 | 83 | logger.info(f"json file loaded succesfully from: {path}") 84 | return ConfigBox(content) 85 | 86 | 87 | @ensure_annotations 88 | def save_bin(data: Any, path: Path): 89 | """save binary file 90 | 91 | Args: 92 | data (Any): data to be saved as binary 93 | path (Path): path to binary file 94 | """ 95 | joblib.dump(value=data, filename=path) 96 | logger.info(f"binary file saved at: {path}") 97 | 98 | 99 | @ensure_annotations 100 | def load_bin(path: Path) -> Any: 101 | """load binary data 102 | 103 | Args: 104 | path (Path): path to binary file 105 | 106 | Returns: 107 | Any: object stored in the file 108 | """ 109 | data = joblib.load(path) 110 | logger.info(f"binary file loaded from: {path}") 111 | return data 112 | 113 | 114 | 115 | @ensure_annotations 116 | def get_size(path: Path) -> str: 117 | """get size in KB 118 | 119 | Args: 120 | path (Path): path of the file 121 | 122 | Returns: 123 | str: size in KB 124 | """ 125 | size_in_kb = round(os.path.getsize(path)/1024) 126 | return f"~ {size_in_kb} KB" 127 | 128 | 129 | 130 | 131 | -------------------------------------------------------------------------------- /static/assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/entbappy/End-to-End-Machine-Learning-Pipeline/6d10e821647533e6a3a5af2dbe8c5b29aac9ca19/static/assets/favicon.ico -------------------------------------------------------------------------------- /static/assets/img/form-v9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/entbappy/End-to-End-Machine-Learning-Pipeline/6d10e821647533e6a3a5af2dbe8c5b29aac9ca19/static/assets/img/form-v9.jpg -------------------------------------------------------------------------------- /static/css2/nunito-font.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Nunito'; 3 | src: url('../fonts/Nunito/Nunito-LightItalic.ttf') format('truetype'); 4 | font-weight: 300; 5 | font-style: italic; 6 | } 7 | 8 | @font-face { 9 | font-family: 'Nunito'; 10 | src: url('../fonts/Nunito/Nunito-BoldItalic.ttf') format('truetype'); 11 | font-weight: bold; 12 | font-style: italic; 13 | } 14 | 15 | @font-face { 16 | font-family: 'Nunito'; 17 | src: url('../fonts/Nunito/Nunito-ExtraLightItalic.ttf') format('truetype'); 18 | font-weight: 200; 19 | font-style: italic; 20 | } 21 | 22 | @font-face { 23 | font-family: 'Nunito'; 24 | src: url('../fonts/Nunito/Nunito-BlackItalic.ttf') format('truetype'); 25 | font-weight: 900; 26 | font-style: italic; 27 | } 28 | 29 | @font-face { 30 | font-family: 'Nunito'; 31 | src: url('../fonts/Nunito/Nunito-SemiBold.ttf') format('truetype'); 32 | font-weight: 600; 33 | font-style: normal; 34 | } 35 | 36 | @font-face { 37 | font-family: 'Nunito'; 38 | src: url('../fonts/Nunito/Nunito-Italic.ttf') format('truetype'); 39 | font-weight: normal; 40 | font-style: italic; 41 | } 42 | 43 | @font-face { 44 | font-family: 'Nunito'; 45 | src: url('../fonts/Nunito/Nunito-Black.ttf') format('truetype'); 46 | font-weight: 900; 47 | font-style: normal; 48 | } 49 | 50 | @font-face { 51 | font-family: 'Nunito'; 52 | src: url('../fonts/Nunito/Nunito-SemiBoldItalic.ttf') format('truetype'); 53 | font-weight: 600; 54 | font-style: italic; 55 | } 56 | 57 | @font-face { 58 | font-family: 'Nunito'; 59 | src: url('../fonts/Nunito/Nunito-Light.ttf') format('truetype'); 60 | font-weight: 300; 61 | font-style: normal; 62 | } 63 | 64 | @font-face { 65 | font-family: 'Nunito'; 66 | src: url('../fonts/Nunito/Nunito-ExtraLight.ttf') format('truetype'); 67 | font-weight: 200; 68 | font-style: normal; 69 | } 70 | 71 | @font-face { 72 | font-family: 'Nunito'; 73 | src: url('../fonts/Nunito/Nunito-Bold.ttf') format('truetype'); 74 | font-weight: bold; 75 | font-style: normal; 76 | } 77 | 78 | @font-face { 79 | font-family: 'Nunito'; 80 | src: url('../fonts/Nunito/Nunito-ExtraBoldItalic.ttf') format('truetype'); 81 | font-weight: 800; 82 | font-style: italic; 83 | } 84 | 85 | @font-face { 86 | font-family: 'Nunito'; 87 | src: url('../fonts/Nunito/Nunito-ExtraBold.ttf') format('truetype'); 88 | font-weight: 800; 89 | font-style: normal; 90 | } 91 | 92 | @font-face { 93 | font-family: 'Nunito'; 94 | src: url('../fonts/Nunito/Nunito-Regular.ttf') format('truetype'); 95 | font-weight: normal; 96 | font-style: normal; 97 | } 98 | 99 | -------------------------------------------------------------------------------- /static/css2/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | } 4 | .page-content { 5 | width: 100%; 6 | margin: 0 auto; 7 | background: #4077c8; 8 | display: flex; 9 | display: -webkit-flex; 10 | justify-content: center; 11 | -o-justify-content: center; 12 | -ms-justify-content: center; 13 | -moz-justify-content: center; 14 | -webkit-justify-content: center; 15 | align-items: center; 16 | -o-align-items: center; 17 | -ms-align-items: center; 18 | -moz-align-items: center; 19 | -webkit-align-items: center; 20 | } 21 | .form-v9-content { 22 | width: 975px; 23 | border-radius: 15px; 24 | -o-border-radius: 15px; 25 | -ms-border-radius: 15px; 26 | -moz-border-radius: 15px; 27 | -webkit-border-radius: 15px; 28 | margin: 185px 0; 29 | font-family: 'Nunito', sans-serif; 30 | color: #fff; 31 | font-weight: 700; 32 | font-size: 16px; 33 | position: relative; 34 | } 35 | .form-v9-content .form-detail { 36 | padding: 30px 135px 30px 100px; 37 | position: relative; 38 | } 39 | .form-v9-content .form-detail h2 { 40 | font-size: 35px; 41 | text-align: center; 42 | position: relative; 43 | padding: 16px 0 13px; 44 | margin-bottom: 55px; 45 | } 46 | .form-v9-content .form-detail h2::after { 47 | background: #fff; 48 | width: 73px; 49 | height: 3px; 50 | content: ""; 51 | position: absolute; 52 | top: 100%; 53 | left: 50%; 54 | transform: translateX(-50%); 55 | -o-transform: translateX(-50%); 56 | -ms-transform: translateX(-50%); 57 | -moz-transform: translateX(-50%); 58 | -webkit-transform: translateX(-50%); 59 | } 60 | .form-v9-content .form-row-total { 61 | display: flex; 62 | display: -webkit-flex; 63 | justify-content: space-between; 64 | -o-justify-content: space-between; 65 | -ms-justify-content: space-between; 66 | -moz-justify-content: space-between; 67 | -webkit-justify-content: space-between; 68 | } 69 | .form-v9-content .form-row { 70 | width: 45%; 71 | } 72 | .form-v9-content .form-detail .form-row-last { 73 | text-align: center; 74 | } 75 | .form-v9-content .form-detail .input-text { 76 | margin-bottom: 45px; 77 | } 78 | .form-v9-content .form-detail input { 79 | width: 100%; 80 | padding: 14.5px 0px 14.5px 30px; 81 | border: 2px solid #ccc; 82 | appearance: unset; 83 | -moz-appearance: unset; 84 | -webkit-appearance: unset; 85 | -o-appearance: unset; 86 | -ms-appearance: unset; 87 | outline: none; 88 | -moz-outline: none; 89 | -webkit-outline: none; 90 | -o-outline: none; 91 | -ms-outline: none; 92 | border-radius: 27.5px; 93 | -o-border-radius: 27.5px; 94 | -ms-border-radius: 27.5px; 95 | -moz-border-radius: 27.5px; 96 | -webkit-border-radius: 27.5px; 97 | font-family: 'Nunito', sans-serif; 98 | font-size: 16px; 99 | font-weight: 700; 100 | background: rgba(255, 255, 255, 0.2) 101 | } 102 | .form-v9-content .form-detail input:focus { 103 | border: 2px solid #999; 104 | } 105 | .form-v9-content .form-detail .register { 106 | background: #f25d5d; 107 | border-radius: 25px; 108 | -o-border-radius: 25px; 109 | -ms-border-radius: 25px; 110 | -moz-border-radius: 25px; 111 | -webkit-border-radius: 25px; 112 | width: 180px; 113 | box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); 114 | -o-box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); 115 | -ms-box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); 116 | -moz-box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); 117 | -webkit-box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); 118 | border: none; 119 | margin: 20px 0 73px 35px; 120 | cursor: pointer; 121 | font-family: 'Nunito', sans-serif; 122 | color: #fff; 123 | font-weight: 700; 124 | font-size: 16px; 125 | } 126 | .form-v9-content .form-detail .register:hover { 127 | background: #d95252; 128 | } 129 | .form-v9-content .form-detail .form-row-last input { 130 | padding: 14px; 131 | } 132 | input::-webkit-input-placeholder { /* Chrome/Opera/Safari */ 133 | color: #e5e5e5; 134 | font-size: 16px; 135 | } 136 | input::-moz-placeholder { /* Firefox 19+ */ 137 | color: #e5e5e5; 138 | font-size: 16px; 139 | } 140 | input:-ms-input-placeholder { /* IE 10+ */ 141 | color: #e5e5e5; 142 | font-size: 16px; 143 | } 144 | input:-moz-placeholder { /* Firefox 18- */ 145 | color: #e5e5e5; 146 | font-size: 16px; 147 | } 148 | 149 | /* Responsive */ 150 | @media screen and (max-width: 1199px) { 151 | .form-v9-content { 152 | margin: 185px 20px; 153 | } 154 | } 155 | @media screen and (max-width: 767px) { 156 | .form-v9-content .form-row-total { 157 | flex-direction: column; 158 | -o-flex-direction: column; 159 | -ms-flex-direction: column; 160 | -moz-flex-direction: column; 161 | -webkit-flex-direction: column; 162 | } 163 | .form-v9-content .form-row { 164 | width: 100%; 165 | } 166 | } 167 | @media screen and (max-width: 575px) { 168 | .form-v9-content .form-detail { 169 | padding: 30px 45px 30px 10px; 170 | } 171 | } 172 | -------------------------------------------------------------------------------- /static/js/scripts.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Start Bootstrap - Clean Blog v6.0.5 (https://startbootstrap.com/theme/clean-blog) 3 | * Copyright 2013-2021 Start Bootstrap 4 | * Licensed under MIT (https://github.com/StartBootstrap/startbootstrap-clean-blog/blob/master/LICENSE) 5 | */ 6 | window.addEventListener('DOMContentLoaded', () => { 7 | let scrollPos = 0; 8 | const mainNav = document.getElementById('mainNav'); 9 | const headerHeight = mainNav.clientHeight; 10 | window.addEventListener('scroll', function() { 11 | const currentTop = document.body.getBoundingClientRect().top * -1; 12 | if ( currentTop < scrollPos) { 13 | // Scrolling Up 14 | if (currentTop > 0 && mainNav.classList.contains('is-fixed')) { 15 | mainNav.classList.add('is-visible'); 16 | } else { 17 | console.log(123); 18 | mainNav.classList.remove('is-visible', 'is-fixed'); 19 | } 20 | } else { 21 | // Scrolling Down 22 | mainNav.classList.remove(['is-visible']); 23 | if (currentTop > headerHeight && !mainNav.classList.contains('is-fixed')) { 24 | mainNav.classList.add('is-fixed'); 25 | } 26 | } 27 | scrollPos = currentTop; 28 | }); 29 | }) 30 | -------------------------------------------------------------------------------- /template.py: -------------------------------------------------------------------------------- 1 | import os 2 | from pathlib import Path 3 | import logging 4 | 5 | logging.basicConfig(level=logging.INFO, format='[%(asctime)s]: %(message)s:') 6 | 7 | project_name = "mlProject" 8 | 9 | list_of_files = [ 10 | f"src/{project_name}/__init__.py", 11 | f"src/{project_name}/components/__init__.py", 12 | f"src/{project_name}/utils/__init__.py", 13 | f"src/{project_name}/utils/common.py", 14 | f"src/{project_name}/config/__init__.py", 15 | f"src/{project_name}/config/configuration.py", 16 | f"src/{project_name}/pipeline/__init__.py", 17 | f"src/{project_name}/entity/__init__.py", 18 | f"src/{project_name}/entity/config_entity.py", 19 | f"src/{project_name}/constants/__init__.py", 20 | "config/config.yaml", 21 | "params.yaml", 22 | "schema.yaml", 23 | "main.py", 24 | "app.py", 25 | "requirements.txt", 26 | "setup.py", 27 | "research/trials.ipynb", 28 | "templates/index.html", 29 | "test.py" 30 | 31 | 32 | ] 33 | 34 | 35 | for filepath in list_of_files: 36 | filepath = Path(filepath) 37 | filedir, filename = os.path.split(filepath) 38 | 39 | 40 | if filedir !="": 41 | os.makedirs(filedir, exist_ok=True) 42 | logging.info(f"Creating directory; {filedir} for the file: {filename}") 43 | 44 | if (not os.path.exists(filepath)) or (os.path.getsize(filepath) == 0): 45 | with open(filepath, "w") as f: 46 | pass 47 | logging.info(f"Creating empty file: {filepath}") 48 | 49 | 50 | else: 51 | logging.info(f"{filename} is already exists") -------------------------------------------------------------------------------- /templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Web App 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 37 | 38 |
39 |
40 |
41 |
42 |
43 |

Wine Quality Prediction

44 | A Wine Quality Checking Web App by Bappy 45 |
46 |
47 |
48 |
49 |
50 | 51 | 52 | 53 |
54 | 55 | 56 | 57 | 58 | 59 | Form-v9 by Colorlib 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 |
69 |
70 |
71 |

Please Fill The Information

72 |
73 | 74 |
75 | 76 | 77 |
78 | 79 |
80 | 81 | 82 |
83 | 84 |
85 | 86 | 87 |
88 | 89 |
90 | 91 | 92 |
93 | 94 | 95 |
96 | 97 | 98 |
99 | 100 |
101 | 102 | 103 |
104 | 105 |
106 | 107 | 108 |
109 | 110 |
111 | 112 | 113 |
114 | 115 |
116 | 117 | 118 |
119 | 120 |
121 | 122 | 123 |
124 | 125 |
126 | 127 | 128 |
129 | 130 |
131 | 132 | 133 |
134 | 135 |
136 | 137 | 138 |
139 | 140 |
141 | 142 | 143 |
144 | 145 |
146 | 147 | 148 |
149 | 150 |
151 | 152 | 153 |
154 | 155 | 156 |
157 | 158 | 159 |
160 | 161 |
162 |
163 |
164 |
165 | 166 | 167 | 168 |
169 | 170 | 171 | 172 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | -------------------------------------------------------------------------------- /templates/results.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Prediction 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 37 | 38 |
39 |
40 |
41 |
42 |
43 |

Wine Quality

44 |

{{prediction}}

45 | 46 |
47 |
48 |
49 |
50 |
51 | 52 | 53 | 54 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | --------------------------------------------------------------------------------