Machine Learning, Modeling, & Cross Validation
Unsupervised Learning Algorithms and Predictive modeling
Big Back Behavior |
[Report]
Predicting obesity rankings based on behavioral survey results [click
for more details]
- Real world data; medium data set (approx 2,200 observations)
- CART regression prediction models, CART classification prediction
models, Bootstrap BAGGING regression prediction models, & Bootstrap
BAGGING classification prediction models
- Variable importance analysis, hyperparameter tuning, model pruning,
ROC curve analysis & optimal cutoff identification
- Analysis goals:
- Develop overweight/obesity prediction model utilizing patient
lifestyle and behavioral information, excluding weight
- Develop weight independent prediction models for overweight/obesity
to allow for prediction of those at risk based on behavioral &
lifestyle choices
Can you pay me back? |
[Report]
&
[Presentation]
Loan Default Borrower Data Clustering & Analysis [click for more
details]
- Report & supporting presentation
- Synthetic data. Medium data set (approx. 1000 observations)
- K means clustering, agglomerative hierarchical data clustering,
principal component analysis, local outlier factor analysis
Blind Breast Biopsies |
[Report]
Predicting Breast Tissue Biopsy Diagnosis In the Event of Incomplete
Biopsy [click for more details]
- Synthetic data. Small data set (approx. 600 observations)
- Logistic predictive modeling, single-layer neural network model
(perceptron) prediction, decision tree algorithms, ROC analysis, and
bagging
Linear & Logistic Regression Modeling Using Machine learning
Approaches
A Blind Taste Test |
[Report]
Predicting sommelier quality rankings of wine and wine type (red/white)
utilizing chemical composition alone [click for more details]
- Real world data; medium data set (approx. 6,500 observations)
- Regularized linear & logistic regression prediction models,
support vector machine (SVM) regression and classification models
- Coefficient path analysis, hyperparameter tuning, and optimal cut
off probability analysis for optimized accuracy and specificity.
- Analysis goals:
- Identifying the best possible prediction model for sommelier wine
quality ranking based on chemical composition
- Creating a white vs red prediction model for blend wines that do not
neatly fall into either category
Hold That Plane! |
[Report]
An analisis of global flight delay data and prediction model creation to
reduce delays and increase live prediction capabilities [click for more
details]
- Synthetic data with forced missing values. Medium data set (over
3,500 observations)
- Multiple Imputation by Chained Equations, Ruben’s rules, Recursive
feature elimination, Principal Component Analysis, k-Means
Clustering
- Forward elimination model creation, cross validation, Receiver
Operating Characteristic (ROC) comparison
- Analysis goals:
- Identifying the variables with greatest impact on overall flight
delay for subsequent mitigation and preventative efforts
- Live flight delay prediction based on available flight data prior to
landing (predicting total delay time before flights depart)
Regression
Regression Analysis & Model Creation
Can We Predict the Future in Health? |
[Report]
Framingham Heart Study Model Fitting and Cross Validatiion for BMI
Predictions [click for more details]
- Real world data. Medium data set (approx. 4,200 observations)
- Linear regression model creation, box-cox transformation, mean
square error (MSE) cross validation, logistic regression model creation,
receiver operating characteristic (ROC) and area under the curve (AUC)
model comparison
Dominating the Lies in the IIP - DOMI
Sub-Scale |
[Presentation]
&
[SAS
Code] &
[Requirements]
NIDA Cocaine Data Analysis for Improved Weighting and Predictions of
IIP-DOMI Sub-scale [click for more details]
- Real world data. Medium data data set (Approx. 2,700
observations)
- Analysis of the potential relationship between DOMI score and
treatment type with best fit covariates to determine if treatment type
impacts patients’ self reported DOMI scores
- Analysis of the potential relationship between DOMI score and the
interaction of treatment type and type of cocaine used (cocaine or
crack) to determine if the combination of treatment type and type of
cocaine used impacts patients’ self reported DOMI scores
- Analysis of the potential relationship between DOMI score and a
selection of aggregate “home stability” variables, comprised of the
interaction between marital status (married or single), employment
status, and education status (HS diploma, GED, or lesser education vs
greater than HS education) to determine if the combination of home
stability variables impacts patients’ self reported DOMI scores
Linear Regression Dashboard
Melbourne Housing Market |
[R Shiny
FlexDashboard]
Housing market price simple linear regression analysis [click for more
details]
- Real world data. Large data set (over 34,000 observations)
- Interactive design allowing for variable selection and model
manipulation
- Interactive and input responsive plots utilizing Plot_ly
- Responsive regression model diagnostics
- Developed using Shiny/FlexDashboard
- Note regression model not built for accuracy, developed to showcase
dashboard build ability
Presentations
Computer Randomization Algorithms: Drug Development
Pipeline |
[Presentation]
A background review of various computer driven randomization algorithms
in the drug development pipeline [click for more details]
- Mass Spectrometry plate randomization through block randomization
software
- Integrated Web Randomization Service (IWRS) for patient
randomization in clinical trials
Pizzaz.com Speed Dating Comparability
Prediction |
[Proposal]
&
[Presentation]
&
[SAS
Code]
Speed Dating Analytics & Online Dating Optimization [click for more
details]
- Synthetic data. Small data set (276 observations)
- An analysis of variables impacting overall dater interest and linear
regression prediction model creation
- Proposal for data utilization and business improvement
Data Visualization and Exploratory Data Analysis
Exploratory Data Analysis & Variable Relationship
Exploration
I’m Going to Miss my Flight! |
[Report]
An analysis of flight delay times across airports [click for more
details]
- Synthetic data with forced missing values. Medium data set (over
3,500 observations)
- Analysis of variables impacting flight delays & solution
implementation
- ggplot & Plot_ly interactive visualizations
Presidential Fitness Test |
[Report]
The Impact of Local Education, Poverty, and Unemployment Rates on County
Presidential Election Results [click for more details]
- Four real world data sets utilized. Large data sets (over 72,000
observations)
- Relational data sets and data aggregation
- GeoJSON & leaflet Interactive Map, ggplot
Data Visualization
The Price of Longevity |
[Report]
An Analysis of Annual Income on Life Expectancy [click for more details]
- Real world data. Large data set (over 35,000 observations)
- An analysis of variables impacting average life expectancy
- ggplot & Plot_ly interactive visualizations
Presidential Election Results Per County Per
Year |
[Map]
Geo-spatial data interactive mapping in Tableau | [click for more
details]
- Real world data. Large data set (over 72,000 observations)
- An analysis of Presidential Election Data from 2000 through
2020
National Health and Nutrition Examination Survey
(NHANES) |
[Storypoint]
&
[Dashboard]
Public health data analysis in Tableau Storypoint & Dashboard |
[click for more details]
- Real world data. Medium data set (approx. 7,900 observations)
- An analysis of NHANES data of Smoking, Blood Pressure, and Serum
Cholesterol Levels
LS0tDQp0aXRsZTogIlByb2plY3RzIGFuZCBQcmVzZW50YXRpb25zOiA8aW1nIHNyYz1cImh0dHBzOi8vbmxlcGVyYS5naXRodWIuaW8vc3RhNTUxL0hXMDEvaW1nL3Blbmd1aW5fY3V0ZS5wbmdcIiBzdHlsZT1cImZsb2F0OiByaWdodDsgd2lkdGg6IDEyJVwiLz4iDQpzdWJ0aXRsZTogIkNoZWNrIG91dCB0aGUgbGlua3MgYmVsb3cgdG8gc2VlIHdoYXQgSSBoYXZlIGJlZW4gd29ya2luZyBvbiEiDQphdXRob3I6DQotIG5hbWU6IE5hdGFsaWUgTGVQZXJhDQogIGFmZmlsaWF0aW9uOiBXZXN0IENoZXN0ZXIgVW5pdmVyc2l0eSB8IE0uUy4gQXBwbGllZCBTdGF0aXN0aWNzLCBEYXRhIFNjaWVuY2UgQ29uY2VudHJhdG9uDQpkYXRlOiAiTGFzdCBVcGRhdGU6IDA3IEFwciAyMDI2Ig0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50OiANCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNA0KICAgIHRvY19mbG9hdDogeWVzDQogICAgdG9jX2NvbGxhcHNlOiB5ZXMNCiAgICBudW1iZXJfc2VjdGlvbnM6IG5vDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgc21vb3RoX3Njcm9sbDogdHJ1ZQ0KICAgIHRoZW1lOiByZWFkYWJsZQ0KICAgIGZpZ19hbGlnbjogY2VudGVyDQogICAgZGZfcHJpbnQ6IGthYmxlDQotLS0NCg0KYGBge2NzcywgZWNobyA9IEZBTFNFfQ0KaDEudGl0bGUgeyAgLyogVGl0bGUgLSBmb250IHNwZWNpZmljYXRpb25zIG9mIHRoZSByZXBvcnQgdGl0bGUgKi8NCiAgZm9udC13ZWlnaHQ6Ym9sZDsNCiAgY29sb3I6IGRhcmttYWdlbnRhIDsNCn0NCmgxLnN1YnRpdGxlIHsgIC8qIFRpdGxlIC0gZm9udCBzcGVjaWZpY2F0aW9ucyBvZiB0aGUgcmVwb3J0IHRpdGxlICovDQogIGZvbnQtd2VpZ2h0OmJvbGQ7DQogIGNvbG9yOiBkYXJrbWFnZW50YSA7DQp9DQpoNC5hdXRob3IgeyAvKiBIZWFkZXIgNCAtIGZvbnQgc3BlY2lmaWNhdGlvbnMgZm9yIGF1dGhvcnMgICovDQogIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7DQogIGNvbG9yOiBuYXZ5Ow0KfQ0KaDQuZGF0ZSB7IC8qIEhlYWRlciA0IC0gZm9udCBzcGVjaWZpY2F0aW9ucyBmb3IgdGhlIGRhdGUgICovDQogIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7DQogIGNvbG9yOiBuYXZ5Ow0KfQ0KaDEgeyAvKiBIZWFkZXIgMSAtIGZvbnQgc3BlY2lmaWNhdGlvbnMgZm9yIGxldmVsIDEgc2VjdGlvbiB0aXRsZSAgKi8NCiAgICBmb250LXdlaWdodDpib2xkOw0KICAgIGNvbG9yOiBuYXZ5Ow0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQogICAgZm9udC1mYW1pbHk6IHZlcmRhbmE7DQp9DQpoMiB7IC8qIEhlYWRlciAyIC0gZm9udCBzcGVjaWZpY2F0aW9ucyBmb3IgbGV2ZWwgMiBzZWN0aW9uIHRpdGxlICovDQogICAgZm9udC13ZWlnaHQ6Ym9sZDsNCiAgICBjb2xvcjogbmF2eTsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KICAgIGZvbnQtZmFtaWx5OiB2ZXJkYW5hOw0KfQ0KDQpoMyB7IC8qIEhlYWRlciAzIC0gZm9udCBzcGVjaWZpY2F0aW9ucyBvZiBsZXZlbCAzIHNlY3Rpb24gdGl0bGUgICovDQogICAgZm9udC13ZWlnaHQ6Ym9sZDsNCiAgICBjb2xvcjogbmF2eTsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KICAgIGZvbnQtZmFtaWx5OiB2ZXJkYW5hOw0KfQ0KDQpoNCB7IC8qIEhlYWRlciA0IC0gZm9udCBzcGVjaWZpY2F0aW9ucyBvZiBsZXZlbCA0IHNlY3Rpb24gdGl0bGUgICovDQogICAgY29sb3I6IGRhcmtyZWQ7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCiAgICBmb250LWZhbWlseTogdmVyZGFuYTsNCn0NCg0KYm9keSB7DQogIGJhY2tncm91bmQtY29sb3I6d2hpdGU7DQogIGZvbnQtZmFtaWx5OiB2ZXJkYW5hOw0KICAgIH0NCg0KLmhpZ2hsaWdodG1lIHsgDQogIGJhY2tncm91bmQtY29sb3I6eWVsbG93OyANCn0NCg0KcCB7IA0KICBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyANCiAgICBmb250LWZhbWlseTogdmVyZGFuYTsNCn0NCg0KaDUgew0KICBjb2xvcjogbmF2eTsNCiAgZm9udC1mYW1pbHk6IHZlcmRhbmE7DQp9DQoNCi5pZnJhbWUgew0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQoNCmE6bGluayB7DQogIGNvbG9yOiBwdXJwbGUgOw0KICBmb250LWZhbWlseTogdmVyZGFuYTsNCn0NCg0KLmZpZ2xhYmVsIHsNCiAgdGV4dC1hbGlnbjogY2VudGVyOw0KICBjb2xvcjogZGFya3NsYXRlZ3JheTsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogIGZvbnQtc2l6ZTogMTg7DQogICAgZm9udC1mYW1pbHk6IHZlcmRhbmE7DQp9DQoNCi50ZDEgew0KICBmb250LXdlaWdodDogYm9sZDsNCiAgZm9udC1mYW1pbHk6IHZlcmRhbmE7DQp9DQoNCnRoLCB0ZCB7DQogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkOw0KICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQp0cjpob3ZlciB7YmFja2dyb3VuZC1jb2xvcjogY29yYWw7fQ0KYGBgDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KYGBgDQoNCjxzY3JpcHQgc3JjPSJodHRwczovL2VsZnNpZ2h0Y2RuLmNvbS9wbGF0Zm9ybS5qcyIgYXN5bmM+PC9zY3JpcHQ+DQo8ZGl2IGNsYXNzPSJlbGZzaWdodC1hcHAtNWZjODQ2NWQtOGI2Mi00NjVlLTkzNGUtNzFkNmQ3NDI2OTY1IiBkYXRhLWVsZnNpZ2h0LWFwcC1sYXp5PjwvZGl2Pg0KICANCg0KDQojIyBNYWNoaW5lIExlYXJuaW5nLCBNb2RlbGluZywgJiBDcm9zcyBWYWxpZGF0aW9uIA0KDQojIyMjIFVuc3VwZXJ2aXNlZCBMZWFybmluZyBBbGdvcml0aG1zIGFuZCBQcmVkaWN0aXZlIG1vZGVsaW5nDQoNCjxmb250IGNsYXNzID0gInRkMSI+QmlnIEJhY2sgQmVoYXZpb3I8L2ZvbnQ+IHwgPGEgaHJlZj0iaHR0cHM6Ly9ycHVicy5jb20vbmxlcGVyYS9zdGE1NTJfSFcwNSIgdGFyZ2V0ID0gImJsYW5rIj5bUmVwb3J0XTwvYT4NCjxkZXRhaWxzPjxzdW1tYXJ5PlByZWRpY3Rpbmcgb2Jlc2l0eSByYW5raW5ncyBiYXNlZCBvbiBiZWhhdmlvcmFsIHN1cnZleSByZXN1bHRzIFtjbGljayBmb3IgbW9yZSBkZXRhaWxzXTwvc3VtbWFyeT48cD4NCg0KICAtIFJlYWwgd29ybGQgZGF0YTsgbWVkaXVtIGRhdGEgc2V0IChhcHByb3ggMiwyMDAgb2JzZXJ2YXRpb25zKQ0KICAtIENBUlQgcmVncmVzc2lvbiBwcmVkaWN0aW9uIG1vZGVscywgQ0FSVCBjbGFzc2lmaWNhdGlvbiBwcmVkaWN0aW9uIG1vZGVscywgQm9vdHN0cmFwIEJBR0dJTkcgcmVncmVzc2lvbiBwcmVkaWN0aW9uIG1vZGVscywgJiBCb290c3RyYXAgQkFHR0lORyBjbGFzc2lmaWNhdGlvbiBwcmVkaWN0aW9uIG1vZGVscw0KICAtIFZhcmlhYmxlIGltcG9ydGFuY2UgYW5hbHlzaXMsIGh5cGVycGFyYW1ldGVyIHR1bmluZywgbW9kZWwgcHJ1bmluZywgUk9DIGN1cnZlIGFuYWx5c2lzICYgb3B0aW1hbCBjdXRvZmYgaWRlbnRpZmljYXRpb24NCiAgLSBBbmFseXNpcyBnb2FsczoNCiAgICAtIERldmVsb3Agb3ZlcndlaWdodC9vYmVzaXR5IHByZWRpY3Rpb24gbW9kZWwgdXRpbGl6aW5nIHBhdGllbnQgbGlmZXN0eWxlIGFuZCBiZWhhdmlvcmFsIGluZm9ybWF0aW9uLCA8Yj5leGNsdWRpbmc8L2I+IHdlaWdodA0KICAgIC0gRGV2ZWxvcCB3ZWlnaHQgaW5kZXBlbmRlbnQgcHJlZGljdGlvbiBtb2RlbHMgZm9yIG92ZXJ3ZWlnaHQvb2Jlc2l0eSB0byBhbGxvdyBmb3IgcHJlZGljdGlvbiBvZiB0aG9zZSBhdCByaXNrIGJhc2VkIG9uIGJlaGF2aW9yYWwgJiBsaWZlc3R5bGUgY2hvaWNlcw0KPC9wPjwvZGV0YWlscz4NCjxicj4NCg0KPGZvbnQgY2xhc3MgPSAidGQxIj5DYW4geW91IHBheSBtZSBiYWNrPzwvZm9udD4gfCA8YSBocmVmPSJodHRwczovL3JwdWJzLmNvbS9ubGVwZXJhL3N0YTU1MV9odzA0IiB0YXJnZXQgPSJibGFuayI+W1JlcG9ydF08L2E+ICYgPGEgaHJlZj0iaHR0cHM6Ly9ubGVwZXJhLmdpdGh1Yi5pby9zdGE1NTEvRklOQUwvIiB0YXJnZXQgPSJibGFuayI+W1ByZXNlbnRhdGlvbl08L2E+DQo8ZGV0YWlscz48c3VtbWFyeT5Mb2FuIERlZmF1bHQgQm9ycm93ZXIgRGF0YSBDbHVzdGVyaW5nICYgQW5hbHlzaXMgW2NsaWNrIGZvciBtb3JlIGRldGFpbHNdPC9zdW1tYXJ5PjxwPg0KDQogIC0gUmVwb3J0ICYgc3VwcG9ydGluZyBwcmVzZW50YXRpb24NCiAgLSBTeW50aGV0aWMgZGF0YS4gTWVkaXVtIGRhdGEgc2V0IChhcHByb3guIDEwMDAgb2JzZXJ2YXRpb25zKQ0KICAtIEsgbWVhbnMgY2x1c3RlcmluZywgYWdnbG9tZXJhdGl2ZSBoaWVyYXJjaGljYWwgZGF0YSBjbHVzdGVyaW5nLCBwcmluY2lwYWwgY29tcG9uZW50IGFuYWx5c2lzLCBsb2NhbCBvdXRsaWVyIGZhY3RvciBhbmFseXNpcw0KPC9wPjwvZGV0YWlscz4NCjxicj4NCg0KDQo8Zm9udCBjbGFzcyA9ICJ0ZDEiPkJsaW5kIEJyZWFzdCBCaW9wc2llczwvZm9udD4gfCA8YSBocmVmPSJodHRwczovL3JwdWJzLmNvbS9ubGVwZXJhL3N0YTU1MV9odzAzIiB0YXJnZXQgPSJibGFuayI+W1JlcG9ydF08L2E+DQo8ZGV0YWlscz48c3VtbWFyeT5QcmVkaWN0aW5nIEJyZWFzdCBUaXNzdWUgQmlvcHN5IERpYWdub3NpcyBJbiB0aGUgRXZlbnQgb2YgSW5jb21wbGV0ZSBCaW9wc3kgW2NsaWNrIGZvciBtb3JlIGRldGFpbHNdPC9zdW1tYXJ5PjxwPg0KDQogIC0gU3ludGhldGljIGRhdGEuIFNtYWxsIGRhdGEgc2V0IChhcHByb3guIDYwMCBvYnNlcnZhdGlvbnMpDQogIC0gTG9naXN0aWMgcHJlZGljdGl2ZSBtb2RlbGluZywgc2luZ2xlLWxheWVyIG5ldXJhbCBuZXR3b3JrIG1vZGVsIChwZXJjZXB0cm9uKSBwcmVkaWN0aW9uLCBkZWNpc2lvbiB0cmVlIGFsZ29yaXRobXMsIFJPQyBhbmFseXNpcywgYW5kIGJhZ2dpbmcNCjwvcD48L2RldGFpbHM+DQo8YnI+DQoNCiMjIyMgTGluZWFyICYgTG9naXN0aWMgUmVncmVzc2lvbiBNb2RlbGluZyBVc2luZyBNYWNoaW5lIGxlYXJuaW5nIEFwcHJvYWNoZXMNCg0KPGZvbnQgY2xhc3MgPSAidGQxIj5BIEJsaW5kIFRhc3RlIFRlc3Q8L2ZvbnQ+IHwgPGEgaHJlZj0iaHR0cHM6Ly9ycHVicy5jb20vbmxlcGVyYS9zdGE1NTJfSFcwNCIgdGFyZ2V0ID0gImJsYW5rIj5bUmVwb3J0XTwvYT4NCjxkZXRhaWxzPjxzdW1tYXJ5PlByZWRpY3Rpbmcgc29tbWVsaWVyIHF1YWxpdHkgcmFua2luZ3Mgb2Ygd2luZSBhbmQgd2luZSB0eXBlIChyZWQvd2hpdGUpIHV0aWxpemluZyBjaGVtaWNhbCBjb21wb3NpdGlvbiBhbG9uZSBbY2xpY2sgZm9yIG1vcmUgZGV0YWlsc108L3N1bW1hcnk+PHA+DQoNCiAgLSBSZWFsIHdvcmxkIGRhdGE7IG1lZGl1bSBkYXRhIHNldCAoYXBwcm94LiA2LDUwMCBvYnNlcnZhdGlvbnMpDQogIC0gUmVndWxhcml6ZWQgbGluZWFyICYgbG9naXN0aWMgcmVncmVzc2lvbiBwcmVkaWN0aW9uIG1vZGVscywgc3VwcG9ydCB2ZWN0b3IgbWFjaGluZSAoU1ZNKSByZWdyZXNzaW9uIGFuZCBjbGFzc2lmaWNhdGlvbiBtb2RlbHMNCiAgLSBDb2VmZmljaWVudCBwYXRoIGFuYWx5c2lzLCBoeXBlcnBhcmFtZXRlciB0dW5pbmcsIGFuZCBvcHRpbWFsIGN1dCBvZmYgcHJvYmFiaWxpdHkgYW5hbHlzaXMgZm9yIG9wdGltaXplZCBhY2N1cmFjeSBhbmQgc3BlY2lmaWNpdHkuDQogIC0gQW5hbHlzaXMgZ29hbHM6DQogICAgICAtIElkZW50aWZ5aW5nIHRoZSBiZXN0IHBvc3NpYmxlIHByZWRpY3Rpb24gbW9kZWwgZm9yIHNvbW1lbGllciB3aW5lIHF1YWxpdHkgcmFua2luZyBiYXNlZCBvbiBjaGVtaWNhbCBjb21wb3NpdGlvbg0KICAgICAgLSBDcmVhdGluZyBhIHdoaXRlIHZzIHJlZCBwcmVkaWN0aW9uIG1vZGVsIGZvciBibGVuZCB3aW5lcyB0aGF0IGRvIG5vdCBuZWF0bHkgZmFsbCBpbnRvIGVpdGhlciBjYXRlZ29yeQ0KPC9wPjwvZGV0YWlscz4NCjxicj4NCg0KICA8Zm9udCBjbGFzcyA9ICJ0ZDEiPiBIb2xkIFRoYXQgUGxhbmUhIDwvZm9udD4gfCA8YSBocmVmPSJodHRwczovL3JwdWJzLmNvbS9ubGVwZXJhL3N0YTU1Ml9IVzAzIiB0YXJnZXQgPSJibGFuayI+W1JlcG9ydF08L2E+IA0KPGRldGFpbHM+PHN1bW1hcnk+QW4gYW5hbGlzaXMgb2YgZ2xvYmFsIGZsaWdodCBkZWxheSBkYXRhIGFuZCBwcmVkaWN0aW9uIG1vZGVsIGNyZWF0aW9uIHRvIHJlZHVjZSBkZWxheXMgYW5kIGluY3JlYXNlIGxpdmUgcHJlZGljdGlvbiBjYXBhYmlsaXRpZXMgW2NsaWNrIGZvciBtb3JlIGRldGFpbHNdPC9zdW1tYXJ5PjxwPg0KDQogIC0gU3ludGhldGljIGRhdGEgd2l0aCBmb3JjZWQgbWlzc2luZyB2YWx1ZXMuIE1lZGl1bSBkYXRhIHNldCAob3ZlciAzLDUwMCBvYnNlcnZhdGlvbnMpDQogIC0gTXVsdGlwbGUgSW1wdXRhdGlvbiBieSBDaGFpbmVkIEVxdWF0aW9ucywgUnViZW4ncyBydWxlcywgUmVjdXJzaXZlIGZlYXR1cmUgZWxpbWluYXRpb24sIFByaW5jaXBhbCBDb21wb25lbnQgQW5hbHlzaXMsIGstTWVhbnMgQ2x1c3RlcmluZw0KICAtIEZvcndhcmQgZWxpbWluYXRpb24gbW9kZWwgY3JlYXRpb24sIGNyb3NzIHZhbGlkYXRpb24sIFJlY2VpdmVyIE9wZXJhdGluZyBDaGFyYWN0ZXJpc3RpYyAoUk9DKSBjb21wYXJpc29uDQogIC0gQW5hbHlzaXMgZ29hbHM6DQogICAgICAtIElkZW50aWZ5aW5nIHRoZSB2YXJpYWJsZXMgd2l0aCBncmVhdGVzdCBpbXBhY3Qgb24gb3ZlcmFsbCBmbGlnaHQgZGVsYXkgZm9yIHN1YnNlcXVlbnQgbWl0aWdhdGlvbiBhbmQgcHJldmVudGF0aXZlIGVmZm9ydHMNCiAgICAgIC0gTGl2ZSBmbGlnaHQgZGVsYXkgcHJlZGljdGlvbiBiYXNlZCBvbiBhdmFpbGFibGUgZmxpZ2h0IGRhdGEgcHJpb3IgdG8gbGFuZGluZyAocHJlZGljdGluZyB0b3RhbCBkZWxheSB0aW1lIGJlZm9yZSBmbGlnaHRzIGRlcGFydCkNCjwvcD4NCjwvZGV0YWlscz4NCjxicj4NCg0KDQojIyBSZWdyZXNzaW9uDQoNCiMjIyMgUmVncmVzc2lvbiBBbmFseXNpcyAmIE1vZGVsIENyZWF0aW9uDQoNCjxmb250IGNsYXNzID0gInRkMSI+Q2FuIFdlIFByZWRpY3QgdGhlIEZ1dHVyZSBpbiBIZWFsdGg/PC9mb250PiB8IDxhIGhyZWY9Imh0dHBzOi8vcnB1YnMuY29tL25sZXBlcmEvc3RhNTUxX2h3MDIiIHRhcmdldCA9ImJsYW5rIj5bUmVwb3J0XTwvYT4NCjxkZXRhaWxzPjxzdW1tYXJ5PkZyYW1pbmdoYW0gSGVhcnQgU3R1ZHkgTW9kZWwgRml0dGluZyBhbmQgQ3Jvc3MgVmFsaWRhdGlpb24gZm9yIEJNSSBQcmVkaWN0aW9ucyBbY2xpY2sgZm9yIG1vcmUgZGV0YWlsc108L3N1bW1hcnk+PHA+DQoNCiAgLSBSZWFsIHdvcmxkIGRhdGEuIE1lZGl1bSBkYXRhIHNldCAoYXBwcm94LiA0LDIwMCBvYnNlcnZhdGlvbnMpDQogIC0gTGluZWFyIHJlZ3Jlc3Npb24gbW9kZWwgY3JlYXRpb24sIGJveC1jb3ggdHJhbnNmb3JtYXRpb24sIG1lYW4gc3F1YXJlIGVycm9yIChNU0UpIGNyb3NzIHZhbGlkYXRpb24sIGxvZ2lzdGljIHJlZ3Jlc3Npb24gbW9kZWwgY3JlYXRpb24sIHJlY2VpdmVyIG9wZXJhdGluZyBjaGFyYWN0ZXJpc3RpYyAoUk9DKSBhbmQgYXJlYSB1bmRlciB0aGUgY3VydmUgKEFVQykgbW9kZWwgY29tcGFyaXNvbg0KPC9wPjwvZGV0YWlscz4NCjxicj4NCg0KPGZvbnQgY2xhc3MgPSAidGQxIj5Eb21pbmF0aW5nIHRoZSBMaWVzIGluIHRoZSBJSVAgLSBET01JIFN1Yi1TY2FsZTwvZm9udD4gfCA8YSBocmVmPSJodHRwczovL25sZXBlcmEuZ2l0aHViLmlvL3N0YTUxMy9MZVBlcmFfTl9GaW5hbCUyMFByb2plY3RfMjAyNS0xMi0wOV9JUFAlMjBET01JLnBkZiIgdGFyZ2V0ID0iYmxhbmsiPltQcmVzZW50YXRpb25dPC9hPiAmIDxhIGhyZWY9Imh0dHBzOi8vbmxlcGVyYS5naXRodWIuaW8vc3RhNTEzL0xlUGVyYV9OX0ZpbmFsJTIwUHJvamVjdF8yMDI1LTEyLTA5X0lQUCUyMERPTUklMjBTQVMucGRmIiB0YXJnZXQgPSJibGFuayI+W1NBUyBDb2RlXTwvYT4gJiA8YSBocmVmID0gImh0dHBzOi8vbmxlcGVyYS5naXRodWIuaW8vc3RhNTEzL0xlUGVyYV9OX0ZpbmFsJTIwUHJvamVjdF8yMDI1LTEyLTA5X0luc3RydWN0aW9ucy5wZGYiIHRhcmdldCA9ImJsYW5rIj5bUmVxdWlyZW1lbnRzXTwvYT4NCjxkZXRhaWxzPjxzdW1tYXJ5Pk5JREEgQ29jYWluZSBEYXRhIEFuYWx5c2lzIGZvciBJbXByb3ZlZCBXZWlnaHRpbmcgYW5kIFByZWRpY3Rpb25zIG9mIElJUC1ET01JIFN1Yi1zY2FsZSBbY2xpY2sgZm9yIG1vcmUgZGV0YWlsc108L3N1bW1hcnk+PHA+DQoNCiAgLSBSZWFsIHdvcmxkIGRhdGEuIE1lZGl1bSBkYXRhIGRhdGEgc2V0IChBcHByb3guIDIsNzAwIG9ic2VydmF0aW9ucykNCiAgLSBBbmFseXNpcyBvZiB0aGUgcG90ZW50aWFsIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIERPTUkgc2NvcmUgYW5kIHRyZWF0bWVudCB0eXBlIHdpdGggYmVzdCBmaXQgY292YXJpYXRlcyB0byBkZXRlcm1pbmUNCmlmIHRyZWF0bWVudCB0eXBlIGltcGFjdHMgcGF0aWVudHPigJkgc2VsZiByZXBvcnRlZCBET01JIHNjb3Jlcw0KICAtIEFuYWx5c2lzIG9mIHRoZSBwb3RlbnRpYWwgcmVsYXRpb25zaGlwIGJldHdlZW4gRE9NSSBzY29yZSBhbmQgdGhlIGludGVyYWN0aW9uIG9mIHRyZWF0bWVudCB0eXBlIGFuZCB0eXBlIG9mDQpjb2NhaW5lIHVzZWQgKGNvY2FpbmUgb3IgY3JhY2spIHRvIGRldGVybWluZSBpZiB0aGUgY29tYmluYXRpb24gb2YgdHJlYXRtZW50IHR5cGUgYW5kIHR5cGUgb2YgY29jYWluZSB1c2VkDQppbXBhY3RzIHBhdGllbnRz4oCZIHNlbGYgcmVwb3J0ZWQgRE9NSSBzY29yZXMNCiAgLSBBbmFseXNpcyBvZiB0aGUgcG90ZW50aWFsIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIERPTUkgc2NvcmUgYW5kIGEgc2VsZWN0aW9uIG9mIGFnZ3JlZ2F0ZSDigJxob21lIHN0YWJpbGl0eeKAnSB2YXJpYWJsZXMsDQpjb21wcmlzZWQgb2YgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gbWFyaXRhbCBzdGF0dXMgKG1hcnJpZWQgb3Igc2luZ2xlKSwgZW1wbG95bWVudCBzdGF0dXMsIGFuZCBlZHVjYXRpb24gc3RhdHVzDQooSFMgZGlwbG9tYSwgR0VELCBvciBsZXNzZXIgZWR1Y2F0aW9uIHZzIGdyZWF0ZXIgdGhhbiBIUyBlZHVjYXRpb24pIHRvIGRldGVybWluZSBpZiB0aGUgY29tYmluYXRpb24gb2YgaG9tZQ0Kc3RhYmlsaXR5IHZhcmlhYmxlcyBpbXBhY3RzIHBhdGllbnRz4oCZIHNlbGYgcmVwb3J0ZWQgRE9NSSBzY29yZXMNCjwvcD48L2RldGFpbHM+DQo8YnI+DQoNCiMjIyMgTGluZWFyIFJlZ3Jlc3Npb24gRGFzaGJvYXJkDQoNCjxmb250IGNsYXNzID0gInRkMSI+TWVsYm91cm5lIEhvdXNpbmcgTWFya2V0PC9mb250PiB8IDxhIGhyZWY9Imh0dHBzOi8vbmxlcGVyYS5zaGlueWFwcHMuaW8vZmluYWwvIiB0YXJnZXQgPSJibGFuayI+W1IgU2hpbnkgRmxleERhc2hib2FyZF08L2E+DQo8ZGV0YWlscz48c3VtbWFyeT5Ib3VzaW5nIG1hcmtldCBwcmljZSBzaW1wbGUgbGluZWFyIHJlZ3Jlc3Npb24gYW5hbHlzaXMgW2NsaWNrIGZvciBtb3JlIGRldGFpbHNdPC9zdW1tYXJ5PjxwPg0KDQogIC0gUmVhbCB3b3JsZCBkYXRhLiAgTGFyZ2UgZGF0YSBzZXQgKG92ZXIgMzQsMDAwIG9ic2VydmF0aW9ucykNCiAgLSBJbnRlcmFjdGl2ZSBkZXNpZ24gYWxsb3dpbmcgZm9yIHZhcmlhYmxlIHNlbGVjdGlvbiBhbmQgbW9kZWwgbWFuaXB1bGF0aW9uDQogIC0gSW50ZXJhY3RpdmUgYW5kIGlucHV0IHJlc3BvbnNpdmUgcGxvdHMgdXRpbGl6aW5nIFBsb3RfbHkNCiAgLSBSZXNwb25zaXZlIHJlZ3Jlc3Npb24gbW9kZWwgZGlhZ25vc3RpY3MNCiAgLSBEZXZlbG9wZWQgdXNpbmcgU2hpbnkvRmxleERhc2hib2FyZA0KICAgIC0gTm90ZSByZWdyZXNzaW9uIG1vZGVsIG5vdCBidWlsdCBmb3IgYWNjdXJhY3ksIGRldmVsb3BlZCB0byBzaG93Y2FzZSBkYXNoYm9hcmQgYnVpbGQgYWJpbGl0eQ0KPC9wPjwvZGV0YWlscz4NCjxicj4NCg0KDQojIyBQcmVzZW50YXRpb25zDQoNCjxmb250IGNsYXNzID0gInRkMSI+Q29tcHV0ZXIgUmFuZG9taXphdGlvbiBBbGdvcml0aG1zOiBEcnVnIERldmVsb3BtZW50IFBpcGVsaW5lPC9mb250PiB8IDxhIGhyZWY9Imh0dHBzOi8vbmxlcGVyYS5naXRodWIuaW8vc3RhMTIvTGVQZXJhX05fUHJvamVjdCAxXzIwMjYtMDQtMDYucGRmIiB0YXJnZXQgPSJibGFuayI+W1ByZXNlbnRhdGlvbl08L2E+IA0KPGRldGFpbHM+PHN1bW1hcnk+QSBiYWNrZ3JvdW5kIHJldmlldyBvZiB2YXJpb3VzIGNvbXB1dGVyIGRyaXZlbiByYW5kb21pemF0aW9uIGFsZ29yaXRobXMgaW4gdGhlIGRydWcgZGV2ZWxvcG1lbnQgcGlwZWxpbmUgW2NsaWNrIGZvciBtb3JlIGRldGFpbHNdPC9zdW1tYXJ5PjxwPg0KDQogIC0gTWFzcyBTcGVjdHJvbWV0cnkgcGxhdGUgcmFuZG9taXphdGlvbiB0aHJvdWdoIGJsb2NrIHJhbmRvbWl6YXRpb24gc29mdHdhcmUNCiAgLSBJbnRlZ3JhdGVkIFdlYiBSYW5kb21pemF0aW9uIFNlcnZpY2UgKElXUlMpIGZvciBwYXRpZW50IHJhbmRvbWl6YXRpb24gaW4gY2xpbmljYWwgdHJpYWxzDQo8L3A+PC9kZXRhaWxzPg0KPGJyPg0KDQoNCjxmb250IGNsYXNzID0gInRkMSI+UGl6emF6LmNvbSBTcGVlZCBEYXRpbmcgQ29tcGFyYWJpbGl0eSBQcmVkaWN0aW9uPC9mb250PiB8IDxhIGhyZWY9Imh0dHBzOi8vbmxlcGVyYS5naXRodWIuaW8vc3RhNTExL0xlUGVyYV9OX0V4YW0lMjAyXzIwMjUuMDQuMjIucGRmIiB0YXJnZXQgPSJibGFuayI+W1Byb3Bvc2FsXTwvYT4gJiA8YSBocmVmPSJodHRwczovL25sZXBlcmEuZ2l0aHViLmlvL3N0YTUxMS9leGFtMl9wZGYucGRmIiB0YXJnZXQgPSJibGFuayI+W1ByZXNlbnRhdGlvbl08L2E+ICYgPGEgaHJlZiA9ICJodHRwczovL25sZXBlcmEuZ2l0aHViLmlvL3N0YTUxMS9leGFtMl9TQVMucGRmIiB0YXJnZXQ9ImJsYW5rIj5bU0FTIENvZGVdPC9hPg0KPGRldGFpbHM+PHN1bW1hcnk+U3BlZWQgRGF0aW5nIEFuYWx5dGljcyAmIE9ubGluZSBEYXRpbmcgT3B0aW1pemF0aW9uIFtjbGljayBmb3IgbW9yZSBkZXRhaWxzXTwvc3VtbWFyeT48cD4NCg0KICAtIFN5bnRoZXRpYyBkYXRhLiBTbWFsbCBkYXRhIHNldCAoMjc2IG9ic2VydmF0aW9ucykNCiAgLSBBbiBhbmFseXNpcyBvZiB2YXJpYWJsZXMgaW1wYWN0aW5nIG92ZXJhbGwgZGF0ZXIgaW50ZXJlc3QgYW5kIGxpbmVhciByZWdyZXNzaW9uIHByZWRpY3Rpb24gbW9kZWwgY3JlYXRpb24NCiAgLSBQcm9wb3NhbCBmb3IgZGF0YSB1dGlsaXphdGlvbiBhbmQgYnVzaW5lc3MgaW1wcm92ZW1lbnQNCjwvcD48L2RldGFpbHM+DQo8YnI+DQoNCg0KIyMgRGF0YSBWaXN1YWxpemF0aW9uIGFuZCBFeHBsb3JhdG9yeSBEYXRhIEFuYWx5c2lzDQoNCiMjIyMgRXhwbG9yYXRvcnkgRGF0YSBBbmFseXNpcyAmIFZhcmlhYmxlIFJlbGF0aW9uc2hpcCBFeHBsb3JhdGlvbg0KDQo8Zm9udCBjbGFzcyA9ICJ0ZDEiPkknbSBHb2luZyB0byBNaXNzIG15IEZsaWdodCE8L2ZvbnQ+IHwgPGEgaHJlZj0iaHR0cHM6Ly9ubGVwZXJhLmdpdGh1Yi5pby9zdGE1NTIvSFcwMS9pbmRleC5odG1sIiB0YXJnZXQgPSJibGFuayI+W1JlcG9ydF08L2E+DQo8ZGV0YWlscz48c3VtbWFyeT5BbiBhbmFseXNpcyBvZiBmbGlnaHQgZGVsYXkgdGltZXMgYWNyb3NzIGFpcnBvcnRzIFtjbGljayBmb3IgbW9yZSBkZXRhaWxzXTwvc3VtbWFyeT48cD4NCg0KICAtIFN5bnRoZXRpYyBkYXRhIHdpdGggZm9yY2VkIG1pc3NpbmcgdmFsdWVzLiBNZWRpdW0gZGF0YSBzZXQgKG92ZXIgMyw1MDAgb2JzZXJ2YXRpb25zKQ0KICAtIEFuYWx5c2lzIG9mIHZhcmlhYmxlcyBpbXBhY3RpbmcgZmxpZ2h0IGRlbGF5cyAmIHNvbHV0aW9uIGltcGxlbWVudGF0aW9uDQogIC0gZ2dwbG90ICYgUGxvdF9seSBpbnRlcmFjdGl2ZSB2aXN1YWxpemF0aW9ucyANCjwvcD48L2RldGFpbHM+DQo8YnI+DQoNCjxmb250IGNsYXNzID0gInRkMSI+UHJlc2lkZW50aWFsIEZpdG5lc3MgVGVzdDwvZm9udD4gfCA8YSBocmVmPSJodHRwczovL3JwdWJzLmNvbS9ubGVwZXJhL3N0YTU1MV9odzAxIiB0YXJnZXQgPSJibGFuayI+W1JlcG9ydF08L2E+DQo8ZGV0YWlscz48c3VtbWFyeT5UaGUgSW1wYWN0IG9mIExvY2FsIEVkdWNhdGlvbiwgUG92ZXJ0eSwgYW5kIFVuZW1wbG95bWVudCBSYXRlcyBvbiBDb3VudHkgUHJlc2lkZW50aWFsIEVsZWN0aW9uIFJlc3VsdHMgW2NsaWNrIGZvciBtb3JlIGRldGFpbHNdPC9zdW1tYXJ5PjxwPg0KDQogIC0gRm91ciByZWFsIHdvcmxkIGRhdGEgc2V0cyB1dGlsaXplZC4gTGFyZ2UgZGF0YSBzZXRzIChvdmVyIDcyLDAwMCBvYnNlcnZhdGlvbnMpDQogIC0gUmVsYXRpb25hbCBkYXRhIHNldHMgYW5kIGRhdGEgYWdncmVnYXRpb24NCiAgLSBHZW9KU09OICYgbGVhZmxldCBJbnRlcmFjdGl2ZSBNYXAsIGdncGxvdA0KPC9wPjwvZGV0YWlscz4NCjxicj4NCg0KIyMjIyBEYXRhIFZpc3VhbGl6YXRpb24NCg0KPGZvbnQgY2xhc3MgPSAidGQxIj5UaGUgUHJpY2Ugb2YgTG9uZ2V2aXR5PC9mb250PiB8IDxhIGhyZWY9Imh0dHBzOi8vbmxlcGVyYS5naXRodWIuaW8vc3RhNTUzL3cwNl9wbG90bHkvIiB0YXJnZXQgPSJibGFuayI+W1JlcG9ydF08L2E+DQo8ZGV0YWlscz48c3VtbWFyeT5BbiBBbmFseXNpcyBvZiBBbm51YWwgSW5jb21lIG9uIExpZmUgRXhwZWN0YW5jeSBbY2xpY2sgZm9yIG1vcmUgZGV0YWlsc108L3N1bW1hcnk+PHA+DQoNCiAgLSBSZWFsIHdvcmxkIGRhdGEuIExhcmdlIGRhdGEgc2V0IChvdmVyIDM1LDAwMCBvYnNlcnZhdGlvbnMpDQogIC0gQW4gYW5hbHlzaXMgb2YgdmFyaWFibGVzIGltcGFjdGluZyBhdmVyYWdlIGxpZmUgZXhwZWN0YW5jeQ0KICAtIGdncGxvdCAmIFBsb3RfbHkgaW50ZXJhY3RpdmUgdmlzdWFsaXphdGlvbnMNCjwvcD48L2RldGFpbHM+DQo8YnI+DQogIA0KPGZvbnQgY2xhc3MgPSAidGQxIj5QcmVzaWRlbnRpYWwgRWxlY3Rpb24gUmVzdWx0cyBQZXIgQ291bnR5IFBlciBZZWFyPC9mb250PiB8IDxhIGhyZWY9Imh0dHBzOi8vcHVibGljLnRhYmxlYXUuY29tL3ZpZXdzL1ByZXNpZGVudGlhbEVsZWN0aW9uUmVzdWx0c1BlckNvdW50eVBlclllYXIvU2hlZXQxPzpsYW5ndWFnZT1lbi1VUyY6c2lkPSY6cmVkaXJlY3Q9YXV0aCY6ZGlzcGxheV9jb3VudD1uJjpvcmlnaW49dml6X3NoYXJlX2xpbmsiIHRhcmdldCA9ImJsYW5rIj5bTWFwXTwvYT4NCjxkZXRhaWxzPjxzdW1tYXJ5Pkdlby1zcGF0aWFsIGRhdGEgaW50ZXJhY3RpdmUgbWFwcGluZyBpbiBUYWJsZWF1IHwgW2NsaWNrIGZvciBtb3JlIGRldGFpbHNdPC9zdW1tYXJ5PjxwPg0KDQogIC0gUmVhbCB3b3JsZCBkYXRhLiBMYXJnZSBkYXRhIHNldCAob3ZlciA3MiwwMDAgb2JzZXJ2YXRpb25zKQ0KICAtIEFuIGFuYWx5c2lzIG9mIFByZXNpZGVudGlhbCBFbGVjdGlvbiBEYXRhIGZyb20gMjAwMCB0aHJvdWdoIDIwMjANCjwvcD48L2RldGFpbHM+DQo8YnI+DQoNCjxmb250IGNsYXNzID0gInRkMSI+TmF0aW9uYWwgSGVhbHRoIGFuZCBOdXRyaXRpb24gRXhhbWluYXRpb24gU3VydmV5IChOSEFORVMpPC9mb250PiB8IDxhIGhyZWY9Imh0dHBzOi8vcHVibGljLnRhYmxlYXUuY29tL3ZpZXdzL05IQU5FU0hlYWx0aERhdGEtU3Rvcnlwb2ludC9TbW9raW5nSGVhbHRoPzpsYW5ndWFnZT1lbi1VUyY6c2lkPSY6cmVkaXJlY3Q9YXV0aCY6ZGlzcGxheV9jb3VudD1uJjpvcmlnaW49dml6X3NoYXJlX2xpbmsiIHRhcmdldCA9ImJsYW5rIj5bU3Rvcnlwb2ludF08L2E+ICYgPGEgaHJlZj0iaHR0cHM6Ly9wdWJsaWMudGFibGVhdS5jb20vdmlld3MvTkhBTkVTSGVhbHRoRGF0YS9TbW9raW5nRGFzaGJvYXJkPzpsYW5ndWFnZT1lbi1VUyY6c2lkPSY6cmVkaXJlY3Q9YXV0aCY6ZGlzcGxheV9jb3VudD1uJjpvcmlnaW49dml6X3NoYXJlX2xpbmsiIHRhcmdldCA9ImJsYW5rIj5bRGFzaGJvYXJkXTwvYT4NCjxkZXRhaWxzPjxzdW1tYXJ5PlB1YmxpYyBoZWFsdGggZGF0YSBhbmFseXNpcyBpbiBUYWJsZWF1IFN0b3J5cG9pbnQgJiBEYXNoYm9hcmQgfCBbY2xpY2sgZm9yIG1vcmUgZGV0YWlsc108L3N1bW1hcnk+PHA+DQoNCiAgLSBSZWFsIHdvcmxkIGRhdGEuIE1lZGl1bSBkYXRhIHNldCAoYXBwcm94LiA3LDkwMCBvYnNlcnZhdGlvbnMpDQogIC0gQW4gYW5hbHlzaXMgb2YgTkhBTkVTIGRhdGEgb2YgU21va2luZywgQmxvb2QgUHJlc3N1cmUsIGFuZCBTZXJ1bSBDaG9sZXN0ZXJvbCBMZXZlbHMNCjwvcD48L2RldGFpbHM+DQoNCg==