data management and simulation support accelerating...
TRANSCRIPT
FOQUS (Framework for Optimization and Quantification of Uncertainty and Sensitivity)
FOQUS Flowsheet
Meta-Flowsheet
Turbine Turbine Web API
SimSinter Process Simulator
FOQUS Worker
Flowsheet Analysis Tools: UQ, Simulation based Optimization, ALAMO, Heat Integration, UQ, OUU, D-RM
Cluster/Remote: Use Turbine to queue meta-flowsheet jobs and distribute them to worker instances of FOQUS
Worker/Desktop: Run flowsheet in local FOQUS, and submit process simulations to Turbine
Tear
Data Transfer
Simulation Consumer
FOQUS Consumer
Sim
ulation Queue
FOQ
US
Queue
TurbineLite Instance Results Samples
Process Simulation
Data Management Framework (DMF)
Data Management and Simulation Support Accelerating Carbon Capture through Computing
You-Wei Cheah, Joshua Boverhof, Abdelrahman Elbashandy, Deb Agarwal, Jim Leek, Thomas Epperly, John Eslick, David Miller
Contact: David C. Miller, NETL, [email protected]
Disclaimer:This presentation was prepared as an account of work sponsored by an agency of the United States Government. Neither the United States Government nor any agency thereof, nor any of their employees, makes any warranty, express or implied, or assumes any legal liability or responsibility for the accuracy, completeness, or usefulness of any information, apparatus, product, or process disclosed, or represents that its use would not infringe privately owned rights. Reference herein to any specific commercial product, process, or service by trade name, trademark, manufacturer, or otherwise does not necessarily constitute or imply its endorsement, recommendation, or favoring by the United States Government or any agency thereof. The views and opinions of authors expressed herein do not necessarily state or reflect those of the United States Government or any agency thereof.
Rapidly synthesize optimized processes to identify promising concepts
Better understand internal behavior to reduce time for
troubleshooting
Quantify sources and effects of uncertainty to guide testing &
reach larger scales faster Stabilize the cost during commercial deployment
2010 2015 2020 2025 2030 2035 2040 2045 2050
1 MWe 1 kWe 10 MWe 100 MWe 500 MWe
Laboratory Development 10-15 years Process Scale Up
20-30 years
Accelerated deployment timeline
Process Scale Up 15 years
1 M
We
10 M
We
500
MW
e
100
MW
e Accelerating Carbon Capture
SimSinter Standardized interface for simulation software
Steady state & dynamic
Simulation Aspen
gPROMS Excel
SimSinter Config GUI
Res
ults
FOQUS FrameworkforOp-miza-onQuan-fica-onofUncertaintyandSensi-vity
Meta-flowsheet: Links simulations, parallel execution, heat integration
Sam
ples
Simulation Based Optimization UQ ALAMO
Surrogate Models
Turbine Parallel simulation execution management system
Desktop – Cloud – Cluster
iREVEAL Surrogate Models
Optimization Under Uncertainty
D-RM Builder Heat Integration
Data Management Framework (DMF)
Data Management Framework
FOQUS
SimSinter Config GUI
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●
●●●
●
●●
●●●●
●
●●●
●
●
●
●
●
●●
●●●
●
●
●●●
●
●
●●●
●
●
●
●
●
●
●●
●●●
●
●
●●
●●●●●
●●●
●●
●
●
●●●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●●
●
●
●●●
●
●
●
●●●
●
●●●
●
●
●
●
●
●
●●●
●
●
●
●
●●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●●
●
●●
●●
●
●
●●
●●●
●
●
●
●
●
●
●
●
●●●
●
●
●●●
●
●●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●●
●●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●●
●
●
●●
●
●●●●●
●●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●●●
●●●
●●
●
●
●
●●
●
●
●●●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●●●●
●●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●
●
●
●●●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●●●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●●
●
●
●
●
●●●●
●
●
●
●
●
●●
●●●
●
●
●●●
●
●●●●
●●●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●●
●
●●
●
●
●●●●●●●
●
●
●
●●
●
●
●
●
●
●
●●●●●●●
●●
●
●
●
●●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●●
●
●
●
●●●
●
●●
●
●●
●
●
●●●
●●
●
●
●
●
●
●
●●
●
●
●●●●
●
●
●
●●
●
●
●
●●
●●
●
●
●●
●
●●●●●
●
●
●
●
●
●
●
●●
●●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●●●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●●●
●
●
●●
●
●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●●●●
●
●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●●●●●
●
●
●
●●●●
●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●●●
●
●
●
●
●
●●●
●
●
●
●
●
●●●
●
●●
●
●
●
●
●
●
●
●
●●●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●●
●
●
●●
●
●
●
●
●●
●●●
●
●
●
●
●
●
●●
●●
●●●●●●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●●●
●
●●●
●
●
●●●●●●
●
●
●
●
●
●
●●
●●
●●
●
●
●●●
●
●
●
●●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●●●●●
●
●
●●
●●
●
●
●
●
●
●●●
●
●
●
●●●●
●
●●●
●
●
●
●
●●
●●
●
●●
●
●
●●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●●
●
●
●
●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●
●●●●
●
●
●
●●
●
●●
●
●
●
●
●
●
●●●
●
●
●●
●
●
●
●
●●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●
●
●
●●●●
●
●
●
●●●
●
●●
●
●
●
●
●
●
●
●
●
●●●
●
●●●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●●
●●
●
●●
●
●
●
●●●●
●●●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●●
●
●●
●
●
●
●●●●●
●●●
●
●●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●
●
●
●●●
●
●
●
●
●
●●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●●
●
●●●
●
●●
●
●
●
●●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●●●
●
●
●●●●
●
●
●●●●●
●●●●●●
●
●
●●●
●●●
●
●
●
●
●●
●
●
●●
●
●
●●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●●
●●
●
●
●●
●
●
●●●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●●
●●
●
●●●●●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●●●●●●●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●●●
●
●●●●
●
●●●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●●
●
●
●
●
●
●●●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●●●●
●
●●
●
●●●
●●●
●
●●●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●●●
●
●
●
●
●●●
●
●
●●●
●
●●
●
●
●
●
●
●
●
●
●
●●●●●●
●
●●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●●
●●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●●●●●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●●
●
●
●
●
●
●●●●●
●
●
●
●●
●
●●
●
●
●
●
●
●●●
●●●●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●
●●
●
●
●
●●●
●
●
●●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●
●
●
●●
●●
●
●●
●
●
●
●
●●●
●
●
●
●●
●
●
●●●●
●
●
●
●
●
●
●
●
●●●
●
●●
●
●
●●●●●●●
●
●
●
●●●●●●
●
●
●
●
●
●
●
●
●
●
●
●●●●●
●
●
●
●
●
●
●
●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●●●●●
●
●●
●●
●
●
●●
●
●●●●●●●●●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●●
●●
●
●
●
●
●
●
●
●●●
●
●●
●
●
●
●●
●
●●●●●●
●
●
●
●
●
●●
●
●
●●●
●●
●
●
●
●
●
●
●
●●●●●
●●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●●●●●
●
●
●●●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●●●
●
●
●●
●
●●
●●
●●●
●●●●●●
●
●
●●
●
●●
●
●
●
●
●●●●●●●●
●
●
●
●●●●
●
●
●
●
●
●
●●●●●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●●●●
●
●
●●●
●
●●●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●●●
●●
●
●
●
●
●●●●●
●
●●●
●
●
●●●
●
●
●
●
●●
●
●●●●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●●
●
●
●●●●●●●
●●
●
●●
●
●
●
●
●
●
●●●●●●●●
●●●●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●●●●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●●●●
●
●●●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●●●
●
●
●●●●●●
●●●●
●
●●
●
●
●●
●
●
●
●
●
●●●●●
●
●
●
●
●
●
●
●●●●●
●
●●
●
●
●
●
●●
●
●●●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●●●
●
●●
●●●●●●●●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●●●●
●
●●
●
●
●●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●●
●
●●●
●
●●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●●
●
●
●
●
●
●●●●●
●
●●●
●
●●
●
●●●
●
●●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●●●●●●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●●●●
●
●
●
●
●
●
●●●●●
●
●●●
●
●●
●
●
●●●●●
●
●
●
●
●
●●●●●●
●
●
●
●●
●
●●●●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●●●
●
●
●●●
●
●
●●
●
●
●●
●●●●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●●●●
●
●●●●
●
●●
●
●
●●●●
●
●●
●
●●●●
●
●●●●●
●
●
●
●●
●
●●
●
●
●●●●●●
●
●
●
●●●●●
●
●●●●●●●
●
●
●
●●●●
●
●
●
●
●
●
●
●●
●
●●●●●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●●●
●
●●
●
●
●
●
●●●●
●
●●●●●
●
●
●
●
●
●●●
●
●●
●
●●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●●●●●
●
●
●
●●●
●
●
●
●●
●
●●
●
●
●
●●●
●
●
●
●●
●
●●●●●●
●
●
●
●
●●●
●
●
●
●●●●
●
●
●●●●
●
●
●●●
●
●●●●●●●
●●
●
●
●
●●●
●
●
●
●
●
●
●●●●●●
●
●●●
●
●●●●●
●
●
●
●●●●●●●●
●●●
●
●
●
●
●
●●
●
●●●●●
●
●●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●●
●●●●
●
●●●●●●
●
●●●
●
●●
●
●
●●●●●
●
●
●●
●
●●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●
●
●●●
●
●
●
●●●●●●●●
●
●●
●
●●●●●
●
●
●
●●●●
●
●●
●●
●
●●
●
●●●●
●
●
●●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●●●
●
●●●
●
●●
●
●
●
●
●
●●●●
●●●●●
●
●●●
●
●●●●●●●
●
●●●●●
●
●●●
●
●●●●●●●
●
●●●●
●
●●
●
●
●●
●
●●●
●●●
●
●●●●●●●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●●●●●●
●
●
●
●
●
●●
●
●
●
●
●
●●●●●●
●●●●●●
●●
●
●
●●●●●
●
●●●●●
●
●
●
●
●
●●
●
●
●●●
●
●
●
●●●
●
●●
●
●●●●●●
●
●●●●
●
●
●●●●●
●
●
●●●●
●
●●
●
●●
●
●
●●●●
●●
●
●
●
●●
●
●●●
●
●
●
●●●●
●●
●●●
●
●●●●●●
●●●
●
●●●●
●
●●●●●●●●●●
●
●
●
●●●
●
●●●●
●
●
●
●●●●
●
●●●●
●
●●●●●
●●●●●●
●
●●
●
●
●
●
●●●●
●
●
●
●
●●●●●●
●
●●●●●●
●
●
●●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●●
●●●●
●
●●●●●●●
●
●●●
●
●
●
●
●
●
●●●●●
●●●●●
●
●
●
●●●●●
●
●●●●
●
●●●●●●
●●
●●
●
●●●●●●●
●●●●
●
●●●
●
●
●●
●
●
●●●●
●
●
●
●
●
●
●●●●●●
●
●
●
●
●●●●●●●●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●●
●●
●
●●●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●●
●
●●
●
●
●
●●
●
●
●●●●
●
●●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●●
●●●
●
●
●
●
●
●
●
●●
●
●●●●
●
●
●
●●●
●
●●●
●
●
●
●
●
●
●●●●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●●●●●●
●●
●
●
●
●
●
●●
●●●●
●●●●●●
●
●●
●●●●●
●
●
●
●●●●●
●
●
●
●
●●●●●●●
●●●
●
●●
●●●
●
●
●●
●●
●
●
●
●●●●●●●●
●
●●●●●
●
●●
●
●
●●●●
●●●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●●
●
●●●●●●●
●
●
●●●●
●
●●
●
●●
●
●●●●●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●●●●●●●
●
●
●
●
●●●●
●
●●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●
●●
●
●
●
●
●●
●●
●
●●●●
●
●●
●
●●●
●
●
●
●
●●
●●●
●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●●
●
●●●●●
●
●
●●
●
●
●
●
●
●
●●
●●●
●
●●
●
●
●
●
●
●●
●
●●●●●●
●
●●●
●
●
●
●
●
●
●
●
●●●●●●
●
●●●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●●●
●
●●●
●
●
●
●
●
●
●
●
●●●●●
●
●●●●●●●
●
●
●
●
●
●
●●
●●
●
●●
●●●●●●●
●
●●
●
●●●●
●●
●●●●●●
●
●●
●●
●
●●●
●
●●
●
●
●
●●
●
●●●
●
●
●
●●●●●●●●●●●
●
●
●●
●
●
●
●
●●
●
●●●
●
●
●
●●
●
●
●
●●●●
●
●●●
●
●●●●
●
●
●●
●
●●●●●●●●●●●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●●
●
●●●
●
●●●●●●●●●●●●●●
●
●
●
●
●
●●●
●
●●
●●
●
●●
●
●●●●
●●
●●
●
●
●
●
●●
●●●
●
●●
●
●
●
●
●●
●
●
●
●●●●●●●●
●
●●●●●●●●●
●●●●●●
●
●
●
●●●●●●●
●
●●●
●
●
●
●
●
●
●●●●●●
●
●●●●●
●
●
●●●●●●●●●●
●
●●●●●●●
●
●
●
●
●●●
●
●●
●
●
●●
●
●
●
●●●●●
●
●●
●
●●
●●
●●
●
●
●
●
●●
●
●
●●
●●●
●
●●●
●
●●●
●
●●●●
●
●●
●
●●●●
●
●
●
●
●
●●●●●●
●
●
●
●
●
●●●●●●●
●
●●●●●
●
●●●●
●●●●●●
●
●
●
●●●
●
●
●
●
●
●
●●●●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●●
●●
●
●
●
●●●●
●
●●
●
●
●
●
●●●●
●
●
●
●
●●●●
●
●●
●
●●●●
●
●●●●●
●
●●
●●
●
●
●●●●●●●
●
●●●
●
●
●
●
●
●●●
●
●●●●
●
●
●●
●●
●
●
●
●
●
●
●
●●●●
●
●●●●
●
●
●
●●●●●
●
●●●●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●●●●
●
●
●
●
●●
●
●●
●
●
●●●●●●
●
●●●
●
●
●
●
●●●●
●
●
●
●
●●●●
●
●
●
●●●●●
●
●●●●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●●●●●●●
●
●●●●
●
●●●●●●●●
●
●
●
●●
●
●●
●
●
●
●●●
●●●
●
●●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●●●●●
●●
●
●●●
●
●
●
●●
●
●●
●●●●●
●●●●●
●
●●●
●
●
●●●●
●●●●●
●
●
●●
●
●
●
●●
●
●●●●●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●●●
●
●●●●
●
●
●
●●●
●
●
●●
●
●●
●●●●●
●
●
●●●●●●●●●
●
●
●
●
●●●●●●●●
●
●
●●●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●●●●●●●●●●●●
●●●●●
●
●
●
●
●
●
●
●●●●●●●●●
●
●●●
●
●
●●
●
●
●
●●●●●●●●●
●●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●
●
●●●
●
●●●●
●
●●●●
●
●
●
●
●
●
●●
●
●
●
●●
●●●
●
●
●
●
●
●
●●
●
●●●●
●
●●
●
●●
●
●●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●●
●
●
●●
●
●●
●●●
●
●●
●
●●●
●
●●
●
●●●●●
●
●
●
●
●
●
●●●●●●
●
●
●
●
●●
●
●●●
●
●●●●●●●●●●●●●●●●
●
●●●●
●
●
●●
●
●
●
●●●●
●
●
●
●●
●
●
●
●●●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●
●●
●
●
●●
●
●●●●●
●
●●●●
●
●
●
●
●
●
●
●
●●●●●
●
●
●●●●●●
●●
●
●●●●●●●●
●
●●
●
●
●
●
●●
●
●
●
●●●
●
●●●
●
●
●●
●
●●●
●
●●●●
●
●
●
●
●●●●●
●
●
●●●●
●
●●●
●
●
●
●
●●●●●●
●●●●
●
●
●
●●
●
●
●
●●●●
●
●
●
●
●●
●
●●●●
●
●●●●●●
●
●
●
●●●
●
●
●
●
●●
●
●
●●●
●
●
●●●●●●●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●
●●●●●
●
●
●
●●●●●●●
●
●
●
●
●●●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●●●●
●
●
●●
●
●●●●
●
●
●
●
●●●●●●●
●
●●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●●
●●●
●
●●
●●●
●
●
●
●
●●●●●●●●
●
●●
●●
●
●
●●●●
●
●●
●●
●●
●
●●●●
●
●●●
●●●●●
●●
●
●●
●
●●●●
●
●
●
●
●●●●●●
●
●●●
●
●●
●
●●●●
●
●●●
●
●●
●
●●
●
●
●
●
●
●●●
●
●
●●●
●
●●
●
●
●
●●●●●●
●●
●
●
●●●
●
●●
●
●●●●●●●
●
●
●
●
●●●
●
●
●
●
●●●
●
●
●
●●●
●
●
●
●●●●●●
●
●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●●●●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●●
●
●
●
●
●●●●
●
●
●
●
●●●●●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●●●●●
●●
●●●
●
●●●●●●●
●
●●●●●
●
●●●●
●
●
●
●
●
●
●
●●
●
●●●●
●
●●●●●
●
●
●
●
●
●
●●
●
●●●●●
●
●
●
●
●●●●
●
●●●●
●
●
●
●●
●●●●●●●●●●●●
●
●●●
●
●●●
●
●●●●●
●●
●
●
●●●●●●●
●●
●●●●
●●
●
●●●●●●●●●●
●
●
●
●
●●●●●●●●●●●●●●
●●●●
●●
●
●●●●
●●●●
●
●
●●●
●
●●●●●●●●●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●●●●●
●
●●
●●
●
●●●●
●
●●
●
●●
●
●
●
●●●
●
●●
●
●
●
●
●●●●
●●
●
●●
●
●
●
●●●
●
●●●
●
●●●●
●●
●●●●
●
●●●
●
●
●●●
●
●
●●●
●
●
●●●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●●●
●
●
●●
●
●
●
●
●
●
●
●●●
●
●
●
●●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●●
●
●
●●
●
●
●
●
●●
●
●
●●●●●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●●●
●
●●
●
●
●
●
●
●
●●●●
●●
●
●●
●
●
●
●●●●●
●
●
●
●
●
●●
●
●●●●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●●
●
●●
●
●
●●●●●
●
●
●
●
●
●
●
●●
●
●●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●●
●●●
●
●
●●●●●●
●
●●●●●●
●●
●●●●●●●●●●●●●
●
●
●●●●
●
●
●
●
●●●●
●
●●
●
●●
●●●●●
●
●
●
●
●
●
●
●●
●
●●●
●
●●
●
●●●
●
●
●●●
●
●
●●●●●
●
●
●
●
●●●●●
●
●●●●●●
●
●●●●●
●●
●
●
●
●
●
●●
●
●
●●●
●
●
●
●
●
●●●●●
●
●
●
●
●
●
●●●●
●
●●●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●●●●
●
●
●
●
●
●●●
●
●●●
●
●●●●●
●
●
●
●
●
●
●
●
●
●●●
●
●●●
●
●
●
●●
●
●
●
●●●●
●●●●
●
●●
●
●
●
●
●●
●
●
●●
●
●●
●●
●
●
●
●
●
●●●●●●
●●
●
●●●●●●
●
●●
●
●●
●●●●
●
●
●
●●
●●●
●
●
●
●●●
●
●
●
●
●
●●●●●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●●●●●●
●
●
●
●●●●
●
●
●●●●
●
●
●
●●●●
●
●●
●
●
●
●●●●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●●●
●
●●
●
●●●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●
●●●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●●
●●
●
●●
●
●●●
●
●
●●
●
●
●
●
●
●●●
●●●●
●●●●●
●●●●●●
●
●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●●●●
●
●
●●
●
●●●
●
●●
●●
●●●●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●●●●
●●
●
●
●
●
●
●●●●●
●
●●●
●
●
●●●●
●
●●●
●
●●●●●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●●●●●
●
●●●●●
●
●
●
●
●
●●
●
●●●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●
●
●●●●●
●
●
●
●
●
●●●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●●
●
●
●
●●●●●
●
●
●
●
●
●
●●●●
●
●●●●
●
●
●
●●●
●
●●
●
●
●●
●
●●●●
●
●●●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●●●●●●●●
●●●●●
●
●
●●●
●●
●●
●
●
●
●●●
●
●
●●
●
●
●●●
●●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●●
●
●
●●
●
●●
●
●●
●●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●●●●●●
●
●●●
●
●
●
●●●●●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●●
●●●●
●●●●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●●●
●
●
●
●●
●
●●●
●●●●
●
●
●
●●
●
●●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●●●●
●
●
●
●●●
●
●
●
●
●
●●●●
●●
●
●
●●
●
●
●
●
●●●●●●
●
●
●
●
●●
●
●
●
●●●
●●●●
●
●
●
●
●
●
●●
●●●
●
●
●●●●●●
●
●
●
●
●
●●●●●●
●
●
●
●
●
●
●
●●●
●
●●
●
●
●
●
●
●●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●●●●●●
●
●
●
●●
●
●●●●●●●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●●
●
●●●●
●
●
●
●●
●
●●●
●
●
●●●
●
●
●
●●●
●
●●
●●
●
●●
●
●●●●●
●
●
●●
●
●
●
●
●●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●●●●●●●
●
●
●
●
●
●●
●
●
●●
●
●●
●●●●
●
●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●●●●
●
●
●●
●
●
●
●●
●
●●●
●●
●●●
●
●●
●
●
●●
●●●●●
●
●
●
●
●●
●
●●
●
●●●●●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●●
●
●
●
●
●
●●●●●●
●
●
●●●
●
●
●
●
●
●●
●
●
●
●●●
●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●●●●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●●●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●●
●
●
●
●●
●
●
●
●
●
●
●
●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●●
●
●●●●●●●
●
●
●●●
●
●
●
●
●
●
●
●
●●
●●●
●
●
●●●●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●●●
●
●●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●●●
●
●●●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●●●●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●●●
●
●●
●
●
●
●
●●
●
●●
●●●
●
●●●●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●●
●●
●●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●●
●
●
●●
●
●
●
●
●
●
●●
●●
●
●
●
●●●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●●●●●
●
●
●
●●●●●
●
●●
●
●
●●
●●
●
●
●
●●
●●
●
●
●
●
●
●●
●
●●
●●●
●●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●●●●●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●●●
●
●●●●●
●●●
●●
●
●
●
●●●
●
●
●
●
●
●
●●●●●
●
●
●
●●●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●●●●●●●●●●●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●
●
●
●●●●●
●
●●
●
●●●●
●
●
●
●
●
●
●
●●
●●●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●●●
●
●
●
●
●
●
●
●●
●
●●●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●●●●
●
●●●
●
●●●●●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●●
●
●●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●●
●●●●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●
●
●●●●
●
●●●
●
●
●
●
●
●
●●●
●
●●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●●●
●
●●●
●
●●●●●
●
●
●
●●●●●●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●
●●
●
●
●●
●
●●
●
●
●●●
●
●●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●●
●●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●●
●●
●
●
●●
●
●
●
●●
●●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●●
●
●●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●●●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●●
●
●
●
●●
●●
●
●
●
●●●
●
●
●
●
●●●
●
●●●●
●
●●
●
●
●
●●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●●●
●
●
●
●●
●●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●●
●
●
●●
●●●●
●
●●
●
●●●
●
●
●
●●●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●●●●●●●●●
●
●
●
●●●●●
●
●●
●
●
●
●
●●●●
●
●●
●
●
●
●
●●●●
●
●
●
●●●●
●
●●●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●●
●
●
●●●●●●●●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●●●●●
●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●
●●
●●
●
●
●
●●
●●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●
●
●●
●●
●●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●●●●●●●●
●
●
●●
●
●
●
●
●
●●●
●●●
●
●●
●●●
●
●●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●●●●
●●
●
●
●
●
●
●
●●●●●
●
●
●●●
●
●●●
●
●●
●
●
●
●
●●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●●
●●
●
●
●
●●
●
●
●
●●●●●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●●●
●
●●●●●
●
●
●
●●●●●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●●●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●
●
●●●
●
●
●●
●●
●●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●●●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●●●●●
●
●
●●
●●
●
●
●●
●●●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●●
●●●
●
●
●
●
●
●●●
●
●
●●
●
●
●●
●●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●●●●
●
●●●●●
●●●
●
●
●
●●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●●
●
●
●
●
●●
●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●●●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●●●
●
●●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●●●●●●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●●●
●
●
●
●●●●●●
●
●
●
●●●●●●●
●
●
●
●
●
●
●
●
●●●●●
●●●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●●●●
●
●
●
●
●
●
●●
●●●
●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●●●
●●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●●
●
●
●●
●
●
●
●
●●●
●●
●
●●
●●
●
●●
●
●
●
●
●
●
●●
●●●●
●
●
●
●●
●
●●●
●
●
●
●●
●●●
●
●
●●
●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●
●
●
●
●
●●●●●●●●●
●
●
●
●
●●●
●
●
●●●
●
●
●
●●●●
●
●
●
●
●●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●●●●●●
●
●●●
●
●
●●
●
●
●
●
●
●
●●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●●
●●
●
●
●●●●
●
●
●
●
●●
●
●
●
●
●●●●●
●
●
●
●
●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●●●●●●
●
●
●●
●
●
●
●
●●●
●●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●●●●●
●
●
●
●●
●
●
●
●
●●
●
●●●
●
●
●●
●●●
●
●
●
●
●
●
●●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●●●●●
●
●
●
●
●●●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●●
●
●●
●
●
●
●
●●
●
●
●●
●●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●●
●
●
●
●
●●●
●
●
●
●
●
●●●●●●●
●●
●
●●●●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●●
●
●
●●●
●
●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●●●●
●
●
●
●
●
●●
●
●
●●●
●●●
●
●
●
●●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●●
●●
●
●
●●
●●●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●●●●
●
●
●
●
●
●●●
●
●●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●●●●
●
●●●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●●●
●
●●●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●●
●
●
●
●●●
●
●
●
●
●
●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●●
●
●●
●●
●
●
●
●
●●●●●
●●
●●●
●
●
●
●●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●●●
●●
●●●●●●
●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●●●
●
●
●
●
●●
●●
●
●
●
●●●
●
●●●
●
●●
●
●
●●●●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●●●
●
●●
●
●
●
●●
●
●
●
●●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●●
●●
●
●
●●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●●●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●●●
●
●
●
●●
●●
●
●●●
●
●
●
●●●
●
●
●●
●●●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●●●●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●●
●
●
●
●●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●●●●●
●
●●
●
●
●●
●●
●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●●
●
●
●
●●
●●●
●
●
●
●●
●
●
●
●
●
●●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●●●
●
●●●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●●●
●
●●●
●●
●
●
●
●●●
●
●
●●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●●●●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●●
●●
●●
●
●●●
●
●
●●●●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●●
●●●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●●●●●
●●
●
●
●●●●
●
●●●
●
●
●●●
●
●●
●
●
●
●
●●●●
●
●
●
●●●●
●
●
●●●●●●●●
●
●
●
●●●
●
●●
●●●●●
●
●
●
●
●
●
●●●●●
●
●
●●●●●
●
●●●●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●●●
●
●●●●●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●
●●
●●●
●
●
●●●●
●
●●
●●
●●●●
●●
●
●
●●●●●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●●●●●
●
●●
●
●●●●●
●●●●
●
●
●
●
●
●●●●
●
●●●
●●
●
●●
●●
●●
●
●
●●●●●●
●
●●
●
●●●
●
●
●
●
●
●●
●
●
●●●●●●
●
●
●●
●
●
●●●●●●●
●●
●
●
●
●
●●●●
●
●
●
●
●
●
●●●
●●●●●
●●●
●●
●
●
●
●
●●●
●
●●
●
●●●●●●
●
●
●●
●
●●●
●
●●●●●
●
●
●●
●
●●
●
●
●
●
●
●●
●●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●●●●
●
●
●
●
●
●●●●●
●●●●
●
●
●●
●
●●
●
●●●●
●
●●
●
●
●●
●●●
●
●
●●
●●
●
●●
●●
●
●
●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●●
●
●
●
●
●
●
●●●●●●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●●●●
●●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●●
●●●
●●●
●
●
●
●●
●●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●●●
●
●
●●●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●●●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●●●●
●
●
●
●
●
●
●●●
●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●●
●
●●
●
●
●
●
●●
●
●
●
●●●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●●
●
●
●
●●
●
●●
●
●
●●
●
●●
●
●
●
●●●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●●●●●●
●●
●
●●
●
●●
●
●
●
●
●●●
●
●●●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●
●●●●
●
●
●
●
●●
●
●●●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●●●
●
●
●●
●
●
●●●
●
●
●
●
●●
●●●●●
●
●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●●
●
●
●
●
●
●
●●●
●●●
●●
●
●
●
●
●
●●
●
●
●
●●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●●
●
●●●
●
●
●●●
●
●
●
●
●
●
●●
●●
●●
●
●
●●
●
●●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●●●●●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●
●
●●
●
●
●●●
●
●
●
●
●●
●●●
●●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●●
●
●
●
●
●
●●●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●●●●
●●
●●
●
●
●
●
●●●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●
●
●
●●●
●●●
●
●
●
●
●●
●
●
●●●●
●
●●
●
●
●
●
●●
●
●
●
●●
●●●
●
●
●
●●●
●
●
●
●
●
●
●●
●●●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●●●●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●●●
●
●●●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●●●●●
●
●
●
●●
●
●
●
●
●●●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●●●●●
●●
●
●
●
●
●
●
●●
●●
●
●●●●
●●
●
●●
●
●●
●
●●●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●●
●●
●
●●●●
●
●
●●
●
●
●
●
●
●
●
●●●●
●●
●
●
●
●
●
●
●
●●●
●
●
●●
●
●
●●●
●
●●
●
●
●●●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●●
●
●
●
●
●
●●●●
●
●●
●
●
●●
●●●●
●
●
●
●
●
●
●
●
●●●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●●
●
●●●
●
●
●
●
●●
●
●●●●●●●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●●●●
●●●●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●●
●
●
●●●
●
●
●
●
●
●●
●
●●
●
●
●
●●●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●●●●
●
●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●●●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●●
●
●
●●●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●●●
●●
●
●●●
●
●
●●●
●
●
●
●
●●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●●●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●●●●●
●
●●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●
●●●
●
●
●
●
●
●●●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●●
●
●●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●●
●
●
●
●●●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●●●
●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●●●
●
●●●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●
●●
●●
●
●●●
●
●
●●
●
●
●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●●●
●
●●
●
●
●
●
●●
●●●●
●
●●
●
●
●
●
●●
●
●
●
●●●●●●●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●●
●
●
●
●
●
●●
●●●●●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●
●
●●
●●
●
●●
●
●
●
●
●●●
●●●
●●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●
●
●●●
●
●
●
●
●
●●
●
●
●●●●●
●●
●
●
●
●●●
●●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●●●
●
●●
●
●●●●
●
●
●
●
●●
●
●
●
●
●
●●
●●●●●
●
●
●●●
●●
●●
●
●
●
●●●●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●●●
●
●
●●●
●●●●●
●
●●
●
●●●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●●●
●●●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●●●
●
●
●●
●
●
●●
●
●
●●
●●●
●
●
●
●
●
●●
●●
●
●
●
●
●●●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●●●●●●
●
●●●
●
●
●
●●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●●●●●
●
●●●
●●
●
●●●●●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●●●
●
●●
●
●
●
●
●●●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●●●●●
●
●
●
●
●
●
●●
●
●●●
●
●
●
●●
●
●●●●
●
●
●●●●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●●●
●
●●
●
●
●
●
●
●
●●●
●
●●●
●
●
●
●
●●●●
●
●●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●●●
●
●
●
●
●
●●●
●●●●
●
●
●
●
●
●
●●●
●
●
●
●
●●●●●●
●
●
●●
●
●
●●●
●
●
●●
●
●●
●
●
●
●
●
●●
●●
●
●●●●
●
●
●●
●
●
●●●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●●●
●
●
●
●●
●
●
●●
●
●●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●●
●
●●
●
●
●●●●
●
●●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●●●●●
●●
●●●
●●●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●●
●●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●●
●
●●
●●
●●●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●●●●
●●●
●
●
●
●
●
●●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●●
●
●
●●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●●
●●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●●
●
●●●
●
●
●
●●●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●●
●
●
●
●
●●
●
●
●●●●
●
●
●
●
●
●●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●●●●
●
●●
●
●
●
●
●
●
●
●
●●●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●●
●●●
●
●●
●
●●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●●
●
●●
●
●
●
●
●●
●
●●●
●●
●
●●
●
●
●
●
●
●
●
●●●●
●
●●●●●●
●
●
●
●●
●
●
●
●
●●●
●
●●●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●●●●●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●●●●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●
●
●
●●●
●
●●
●●●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●●●●●●
●
●
●
●
●●
●
●●●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●
●●
●●
●●●
●●●
●
●●●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●●●
●●●●●
●
●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●●●●
●●
●
●
●●●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●●●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●●●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●
●●
●
●
●
●
●●
●●
●
●
●●
●
●
●●
●
●
●
●
●●
●●●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●●
●●●
●
●●●●
●
●
●●
●●
●
●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●●●●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●●●
●
●●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●●●
●
●
●●
●
●●
●
●
●
●●●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●●●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●●
●
●●
●●
●
●
●●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●●●
●●
●
●
●●●●
●●●
●●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●●
●
●●
●●
●●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●●
●
●●●●
●
●
●
●●
●
●
●
●●●
●
●●
●●●
●
●
●●
●
●
●
●
●
●●●
●●●
●
●
●
●●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●●●
●●●●
●
●
●
●
●
●
●
●●●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●●
●●●●
●
●
●●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●●
●●●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●●
●●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●●●
●●●
●
●
●
●
●
●
●
●●●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●●
●
●●
●
●
●
●
●
●
●
●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●●●
●
●
●
●●●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●●
●
●
●
●●●
●●
●●●
●
●●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●●●
●
●
●
●●
●
●●
●●●
●●
●●●
●
●
●
●
●●●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●
●
●
●
●
●●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●●●●●
●
●
●
●
●
●
●
●
●●
●●●
●
●
●●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●●●
●
●●●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●●
●
●●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●●
●
●
●
●●●
●
●
●●
●
●●
●
●●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●●●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●●●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●●
●●
●
●
●
●
●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●●
●
●●●●●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●●●●●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●●
●
●●●●
●
●
●
●
●
●●●●●
●●
●
●
●
●
●
●
●
●
●
●●●●●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●●●
●
●
●●
●
●●●
●●
●
●
●●
●
●●
●
●
●
●
●
●●●●
●
●●●●
●
●
●●
●●●
●
●
●●●●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●●
●●●●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●●●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●
●
●●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●●
●
●●
●●
●
●
●
●●●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●●
●
●
●
●●●
●●
●
●
●
●
●
●●●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●●●
●
●
●●
●
●
●
●
●
●
●●●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●●●
●●●●
●
●
●
●
●
●
●●
●
●
●●
●
●●●●●
●
●
●
●
●
●
●
●
●
●
●●
●●●
●
●
●
●
●
●●
●
●●●
●●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●●
●
●
●
●●●
●
●
●
●
●
●
●
●●
●
●
●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●●
●●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●●●
●
●
●
●●●
●
●
●
●
●
●●
●
●
●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●●●●●
●
●
●
●●
●
●
●
●
●●●
●
●
●●
●●
●
●
●
●
●
●
●●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●●
●●●●
●
●●
●●
●
●●
●
●●●●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●●●●
●
●●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●
●
●
●●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
00:00
00:10
00:20
Jan 22 Jan 23 Jan 24 Jan 25start time
runt
ime
(min
utes
)
NETL Optimization: Successes and Failures
Turbine