library(tidyverse)
library(gtsummary)
library(broom)
library(gt)
ncd <- read.csv("ncd.csv")
# Previewdata
head(ncd)
Interpretation of the Dataset (n=6)
This small dataset (6 rows × 11 columns) appears to represent
demographic information of research participants. Based on the subset of
columns you shared (participant_id, age, sex, residence, and education),
here’s a broad interpretation:
Sample Size and Composition
The dataset includes 6 participants, which suggests this might be a
small pilot sample or an excerpt from a larger dataset.
All participants have unique IDs (participant_id 1–6).
Age Distribution
Participants range from 31 to 56 years old, showing a mid-adult to
older-adult demographic spread.
The age distribution may indicate that the study focuses on
working-age or mature adults rather than youth or elderly
populations.
Gender Balance
Five males and one female are represented.
This shows a gender imbalance, with males being overrepresented
(≈83%). Depending on the study’s purpose, this may affect
generalizability or indicate male-dominated participation in the studied
context.
Residence Pattern
Five participants are urban residents, and one is rural.
This indicates the sample is largely urban-based, possibly reflecting
easier access to urban respondents or an urban-centered study.
Educational Background
Participants have varying education levels: No formal, Primary,
Secondary, and Higher.
This variety suggests diverse educational attainment, which could be
valuable for examining how education influences attitudes, behaviors, or
socioeconomic outcomes.
Overall Impression
The sample skews male, urban, and moderately educated.
If representative, it may reflect urban middle-class adult males; if
not, it may highlight a sampling bias that needs to be addressed in
further data collection or analysis.
ncd %>%
tbl_summary()
| Characteristic |
N = 220 |
| participant_id |
111 (56, 166) |
| age |
50 (38, 67) |
| sex |
|
| Female |
118 (54%) |
| Male |
102 (46%) |
| residence |
|
| Rural |
133 (60%) |
| Urban |
87 (40%) |
| education |
|
| Higher |
50 (23%) |
| No formal |
25 (11%) |
| Primary |
66 (30%) |
| Secondary |
79 (36%) |
| occupation |
|
| Business |
46 (21%) |
| Farmer |
61 (28%) |
| Retired |
24 (11%) |
| Service |
66 (30%) |
| Unemployed |
23 (10%) |
| bmi |
25.4 (21.3, 28.3) |
| systolic_bp |
134 (114, 165) |
| diastolic_bp |
91 (76, 107) |
| diabetes |
51 (23%) |
| hypertension |
84 (38%) |
Interpretation:
The dataset includes 2,201 participants with a median age of 50 years
(IQR: 38–67), indicating that the study population is primarily composed
of middle-aged and older adults. Females constitute a slightly higher
proportion (54%) compared to males (46%). A majority of the participants
(60%) reside in rural areas, suggesting that the sample is predominantly
rural-based.
Educational attainment varies, with most participants having primary
(30%) or secondary (36%) education, while 23% attained higher education
and 11% had no formal education. This distribution reflects a moderately
educated population, typical of semi-rural communities.
Occupationally, the largest groups are those engaged in service (30%)
and farming (28%), followed by business (21%). Smaller proportions are
retired (11%) or unemployed (10%). This pattern indicates a mix of
formal and informal employment, with a significant share of participants
involved in agriculture and service-related work.
Health indicators show a median BMI of 25.4 (IQR: 21.3–28.3),
suggesting that the average participant is slightly overweight. The
median systolic and diastolic blood pressures are 134 mmHg (IQR:
114–165) and 91 mmHg (IQR: 76–107), respectively—values that are on the
higher end of the normal range, indicating potential risks of
hypertension. Indeed, hypertension is reported among 38% of
participants, and 23% have diabetes.
Overall, the data describe a population that is largely rural,
middle-aged, and moderately educated, with a mixed occupational profile.
The relatively high prevalence of hypertension and diabetes, along with
elevated BMI, points to a significant burden of non-communicable
diseases in this group, likely influenced by lifestyle and limited
access to healthcare services.
ncd %>%
tbl_summary(
by = residence)
| Characteristic |
Rural
N = 133 |
Urban
N = 87 |
| participant_id |
108 (64, 156) |
115 (44, 176) |
| age |
51 (38, 69) |
49 (37, 65) |
| sex |
|
|
| Female |
74 (56%) |
44 (51%) |
| Male |
59 (44%) |
43 (49%) |
| education |
|
|
| Higher |
33 (25%) |
17 (20%) |
| No formal |
13 (9.8%) |
12 (14%) |
| Primary |
38 (29%) |
28 (32%) |
| Secondary |
49 (37%) |
30 (34%) |
| occupation |
|
|
| Business |
20 (15%) |
26 (30%) |
| Farmer |
39 (29%) |
22 (25%) |
| Retired |
14 (11%) |
10 (11%) |
| Service |
42 (32%) |
24 (28%) |
| Unemployed |
18 (14%) |
5 (5.7%) |
| bmi |
25.5 (21.1, 28.3) |
24.9 (21.9, 28.4) |
| systolic_bp |
136 (114, 166) |
131 (111, 164) |
| diastolic_bp |
91 (74, 104) |
93 (77, 108) |
| diabetes |
34 (26%) |
17 (20%) |
| hypertension |
55 (41%) |
29 (33%) |
Interpretation:
The study included 2,202 participants, comprising 1,331 rural and 871
urban residents. The median age of rural participants was 51 years (IQR:
38–69), slightly higher than that of urban participants (49 years; IQR:
37–65), indicating a somewhat older rural population.
In both settings, females constituted a slightly higher
proportion—56% in rural areas and 51% in urban areas—suggesting a
relatively balanced gender distribution across residences.
Educational attainment showed modest differences between groups. A
slightly higher proportion of rural participants (25%) had higher
education compared to urban participants (20%), whereas those with no
formal education were marginally fewer in rural (9.8%) than in urban
(14%) settings. Across both groups, primary and secondary education were
the most common levels, together accounting for over 60% of
participants, reflecting a moderately educated sample overall.
Occupational patterns varied notably between rural and urban areas.
Farming was more prevalent among rural participants (29%) than urban
participants (25%), while business-related occupations were more common
in urban areas (30% vs. 15%). Service employment was comparable (32%
rural; 28% urban). Unemployment was nearly three times higher in rural
areas (14%) than in urban settings (5.7%), which may suggest limited job
opportunities outside agriculture.
Health indicators showed small but meaningful rural–urban
differences. The median BMI was similar across groups—25.5 (IQR:
21.1–28.3) in rural areas and 24.9 (IQR: 21.9–28.4) in urban
areas—indicating a generally overweight population. However, blood
pressure readings were higher among rural participants, with median
systolic/diastolic values of 136/91 mmHg compared to 131/93 mmHg in
urban participants.
Consistent with these findings, hypertension was more prevalent in
rural areas (41%) than in urban ones (33%). Diabetes also followed a
similar pattern, affecting 26% of rural participants and 20% of urban
participants.
Overall, the results indicate that rural participants are slightly
older, less employed, and experience higher rates of hypertension and
diabetes compared to their urban counterparts. These findings suggest a
potential rural disadvantage in health outcomes, possibly linked to
differences in lifestyle, healthcare access, and socioeconomic
opportunities.
model <- glm( factor(hypertension) ~ age + sex + bmi + residence + education + occupation + diabetes, data = ncd, family = binomial)
tbl_regression(model)
| Characteristic |
log(OR) |
95% CI |
p-value |
| age |
0.00 |
-0.02, 0.02 |
0.8 |
| sex |
|
|
|
| Female |
— |
— |
|
| Male |
0.30 |
-0.27, 0.87 |
0.3 |
| bmi |
-0.01 |
-0.07, 0.04 |
0.6 |
| residence |
|
|
|
| Rural |
— |
— |
|
| Urban |
-0.41 |
-1.0, 0.18 |
0.2 |
| education |
|
|
|
| Higher |
— |
— |
|
| No formal |
0.52 |
-0.48, 1.5 |
0.3 |
| Primary |
0.05 |
-0.72, 0.84 |
0.9 |
| Secondary |
0.09 |
-0.66, 0.85 |
0.8 |
| occupation |
|
|
|
| Business |
— |
— |
|
| Farmer |
-0.41 |
-1.2, 0.41 |
0.3 |
| Retired |
-0.56 |
-1.7, 0.49 |
0.3 |
| Service |
-0.12 |
-0.91, 0.67 |
0.8 |
| Unemployed |
-0.26 |
-1.4, 0.80 |
0.6 |
| diabetes |
|
|
|
| No |
— |
— |
|
| Yes |
0.06 |
-0.61, 0.71 |
0.9 |
| Abbreviations: CI = Confidence Interval, OR = Odds Ratio |
NA
NA
Interpretation of Logistic Regression Results:
The multivariable logistic regression model examined the association
between several demographic and health-related variables and the outcome
of interest (unspecified). None of the covariates showed statistically
significant associations at the conventional 5% significance level.
Age had a log(OR) of 0.00 (95% CI: −0.02 to 0.02, p = 0.8),
indicating no measurable association with the outcome. Similarly, sex
did not demonstrate a significant effect; males had higher odds compared
to females (log(OR) = 0.30, 95% CI: −0.27 to 0.87, p = 0.3), but the
confidence interval included zero, suggesting no evidence of a true
difference.
Body mass index (BMI) also showed no significant relationship
(log(OR) = −0.01, 95% CI: −0.07 to 0.04, p = 0.6). Residence type did
not substantially affect the odds of the outcome, with urban
participants having lower odds than rural participants (log(OR) = −0.41,
95% CI: −1.0 to 0.18, p = 0.2), though this difference was not
statistically significant.
Education level was not significantly associated with the outcome in
any category compared to the higher-education reference group. The
log(OR) ranged from 0.05 for primary education (p = 0.9) to 0.52 for no
formal education (p = 0.3), with all confidence intervals crossing
zero.
Occupational categories also revealed no significant differences
relative to the business group. The estimated log odds ranged from −0.56
for retired participants to −0.12 for those in service occupations, all
with p-values above 0.3. Likewise, diabetes status showed no meaningful
association with the outcome (log(OR) = 0.06, 95% CI: −0.61 to 0.71, p =
0.9).
Overall, the regression analysis suggests that none of the examined
variables—age, sex, BMI, residence, education, occupation, or
diabetes—were significantly associated with the outcome. The direction
and magnitude of the coefficients indicate that any observed differences
are small and likely due to random variation rather than systematic
effects.
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7cn0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShndHN1bW1hcnkpDQpsaWJyYXJ5KGJyb29tKQ0KbGlicmFyeShndCkNCmBgYA0KDQpgYGB7cn0NCm5jZCA8LSByZWFkLmNzdigibmNkLmNzdiIpDQoNCiMgUHJldmlld2RhdGENCmhlYWQobmNkKQ0KYGBgDQpJbnRlcnByZXRhdGlvbiBvZiB0aGUgRGF0YXNldCAobj02KQ0KDQpUaGlzIHNtYWxsIGRhdGFzZXQgKDYgcm93cyDDlyAxMSBjb2x1bW5zKSBhcHBlYXJzIHRvIHJlcHJlc2VudCBkZW1vZ3JhcGhpYyBpbmZvcm1hdGlvbiBvZiByZXNlYXJjaCBwYXJ0aWNpcGFudHMuIEJhc2VkIG9uIHRoZSBzdWJzZXQgb2YgY29sdW1ucyB5b3Ugc2hhcmVkIChwYXJ0aWNpcGFudF9pZCwgYWdlLCBzZXgsIHJlc2lkZW5jZSwgYW5kIGVkdWNhdGlvbiksIGhlcmXigJlzIGEgYnJvYWQgaW50ZXJwcmV0YXRpb246DQoNClNhbXBsZSBTaXplIGFuZCBDb21wb3NpdGlvbg0KDQpUaGUgZGF0YXNldCBpbmNsdWRlcyA2IHBhcnRpY2lwYW50cywgd2hpY2ggc3VnZ2VzdHMgdGhpcyBtaWdodCBiZSBhIHNtYWxsIHBpbG90IHNhbXBsZSBvciBhbiBleGNlcnB0IGZyb20gYSBsYXJnZXIgZGF0YXNldC4NCg0KQWxsIHBhcnRpY2lwYW50cyBoYXZlIHVuaXF1ZSBJRHMgKHBhcnRpY2lwYW50X2lkIDHigJM2KS4NCg0KQWdlIERpc3RyaWJ1dGlvbg0KDQpQYXJ0aWNpcGFudHMgcmFuZ2UgZnJvbSAzMSB0byA1NiB5ZWFycyBvbGQsIHNob3dpbmcgYSBtaWQtYWR1bHQgdG8gb2xkZXItYWR1bHQgZGVtb2dyYXBoaWMgc3ByZWFkLg0KDQpUaGUgYWdlIGRpc3RyaWJ1dGlvbiBtYXkgaW5kaWNhdGUgdGhhdCB0aGUgc3R1ZHkgZm9jdXNlcyBvbiB3b3JraW5nLWFnZSBvciBtYXR1cmUgYWR1bHRzIHJhdGhlciB0aGFuIHlvdXRoIG9yIGVsZGVybHkgcG9wdWxhdGlvbnMuDQoNCkdlbmRlciBCYWxhbmNlDQoNCkZpdmUgbWFsZXMgYW5kIG9uZSBmZW1hbGUgYXJlIHJlcHJlc2VudGVkLg0KDQpUaGlzIHNob3dzIGEgZ2VuZGVyIGltYmFsYW5jZSwgd2l0aCBtYWxlcyBiZWluZyBvdmVycmVwcmVzZW50ZWQgKOKJiDgzJSkuIERlcGVuZGluZyBvbiB0aGUgc3R1ZHnigJlzIHB1cnBvc2UsIHRoaXMgbWF5IGFmZmVjdCBnZW5lcmFsaXphYmlsaXR5IG9yIGluZGljYXRlIG1hbGUtZG9taW5hdGVkIHBhcnRpY2lwYXRpb24gaW4gdGhlIHN0dWRpZWQgY29udGV4dC4NCg0KUmVzaWRlbmNlIFBhdHRlcm4NCg0KRml2ZSBwYXJ0aWNpcGFudHMgYXJlIHVyYmFuIHJlc2lkZW50cywgYW5kIG9uZSBpcyBydXJhbC4NCg0KVGhpcyBpbmRpY2F0ZXMgdGhlIHNhbXBsZSBpcyBsYXJnZWx5IHVyYmFuLWJhc2VkLCBwb3NzaWJseSByZWZsZWN0aW5nIGVhc2llciBhY2Nlc3MgdG8gdXJiYW4gcmVzcG9uZGVudHMgb3IgYW4gdXJiYW4tY2VudGVyZWQgc3R1ZHkuDQoNCkVkdWNhdGlvbmFsIEJhY2tncm91bmQNCg0KUGFydGljaXBhbnRzIGhhdmUgdmFyeWluZyBlZHVjYXRpb24gbGV2ZWxzOiBObyBmb3JtYWwsIFByaW1hcnksIFNlY29uZGFyeSwgYW5kIEhpZ2hlci4NCg0KVGhpcyB2YXJpZXR5IHN1Z2dlc3RzIGRpdmVyc2UgZWR1Y2F0aW9uYWwgYXR0YWlubWVudCwgd2hpY2ggY291bGQgYmUgdmFsdWFibGUgZm9yIGV4YW1pbmluZyBob3cgZWR1Y2F0aW9uIGluZmx1ZW5jZXMgYXR0aXR1ZGVzLCBiZWhhdmlvcnMsIG9yIHNvY2lvZWNvbm9taWMgb3V0Y29tZXMuDQoNCk92ZXJhbGwgSW1wcmVzc2lvbg0KDQpUaGUgc2FtcGxlIHNrZXdzIG1hbGUsIHVyYmFuLCBhbmQgbW9kZXJhdGVseSBlZHVjYXRlZC4NCg0KSWYgcmVwcmVzZW50YXRpdmUsIGl0IG1heSByZWZsZWN0IHVyYmFuIG1pZGRsZS1jbGFzcyBhZHVsdCBtYWxlczsgaWYgbm90LCBpdCBtYXkgaGlnaGxpZ2h0IGEgc2FtcGxpbmcgYmlhcyB0aGF0IG5lZWRzIHRvIGJlIGFkZHJlc3NlZCBpbiBmdXJ0aGVyIGRhdGEgY29sbGVjdGlvbiBvciBhbmFseXNpcy4NCg0KDQpgYGB7cn0NCm5jZCAlPiUgDQogICB0Ymxfc3VtbWFyeSgpDQpgYGANCkludGVycHJldGF0aW9uOg0KDQpUaGUgZGF0YXNldCBpbmNsdWRlcyAyLDIwMSBwYXJ0aWNpcGFudHMgd2l0aCBhIG1lZGlhbiBhZ2Ugb2YgNTAgeWVhcnMgKElRUjogMzjigJM2NyksIGluZGljYXRpbmcgdGhhdCB0aGUgc3R1ZHkgcG9wdWxhdGlvbiBpcyBwcmltYXJpbHkgY29tcG9zZWQgb2YgbWlkZGxlLWFnZWQgYW5kIG9sZGVyIGFkdWx0cy4gRmVtYWxlcyBjb25zdGl0dXRlIGEgc2xpZ2h0bHkgaGlnaGVyIHByb3BvcnRpb24gKDU0JSkgY29tcGFyZWQgdG8gbWFsZXMgKDQ2JSkuIEEgbWFqb3JpdHkgb2YgdGhlIHBhcnRpY2lwYW50cyAoNjAlKSByZXNpZGUgaW4gcnVyYWwgYXJlYXMsIHN1Z2dlc3RpbmcgdGhhdCB0aGUgc2FtcGxlIGlzIHByZWRvbWluYW50bHkgcnVyYWwtYmFzZWQuDQoNCkVkdWNhdGlvbmFsIGF0dGFpbm1lbnQgdmFyaWVzLCB3aXRoIG1vc3QgcGFydGljaXBhbnRzIGhhdmluZyBwcmltYXJ5ICgzMCUpIG9yIHNlY29uZGFyeSAoMzYlKSBlZHVjYXRpb24sIHdoaWxlIDIzJSBhdHRhaW5lZCBoaWdoZXIgZWR1Y2F0aW9uIGFuZCAxMSUgaGFkIG5vIGZvcm1hbCBlZHVjYXRpb24uIFRoaXMgZGlzdHJpYnV0aW9uIHJlZmxlY3RzIGEgbW9kZXJhdGVseSBlZHVjYXRlZCBwb3B1bGF0aW9uLCB0eXBpY2FsIG9mIHNlbWktcnVyYWwgY29tbXVuaXRpZXMuDQoNCk9jY3VwYXRpb25hbGx5LCB0aGUgbGFyZ2VzdCBncm91cHMgYXJlIHRob3NlIGVuZ2FnZWQgaW4gc2VydmljZSAoMzAlKSBhbmQgZmFybWluZyAoMjglKSwgZm9sbG93ZWQgYnkgYnVzaW5lc3MgKDIxJSkuIFNtYWxsZXIgcHJvcG9ydGlvbnMgYXJlIHJldGlyZWQgKDExJSkgb3IgdW5lbXBsb3llZCAoMTAlKS4gVGhpcyBwYXR0ZXJuIGluZGljYXRlcyBhIG1peCBvZiBmb3JtYWwgYW5kIGluZm9ybWFsIGVtcGxveW1lbnQsIHdpdGggYSBzaWduaWZpY2FudCBzaGFyZSBvZiBwYXJ0aWNpcGFudHMgaW52b2x2ZWQgaW4gYWdyaWN1bHR1cmUgYW5kIHNlcnZpY2UtcmVsYXRlZCB3b3JrLg0KDQpIZWFsdGggaW5kaWNhdG9ycyBzaG93IGEgbWVkaWFuIEJNSSBvZiAyNS40IChJUVI6IDIxLjPigJMyOC4zKSwgc3VnZ2VzdGluZyB0aGF0IHRoZSBhdmVyYWdlIHBhcnRpY2lwYW50IGlzIHNsaWdodGx5IG92ZXJ3ZWlnaHQuIFRoZSBtZWRpYW4gc3lzdG9saWMgYW5kIGRpYXN0b2xpYyBibG9vZCBwcmVzc3VyZXMgYXJlIDEzNCBtbUhnIChJUVI6IDExNOKAkzE2NSkgYW5kIDkxIG1tSGcgKElRUjogNzbigJMxMDcpLCByZXNwZWN0aXZlbHnigJR2YWx1ZXMgdGhhdCBhcmUgb24gdGhlIGhpZ2hlciBlbmQgb2YgdGhlIG5vcm1hbCByYW5nZSwgaW5kaWNhdGluZyBwb3RlbnRpYWwgcmlza3Mgb2YgaHlwZXJ0ZW5zaW9uLiBJbmRlZWQsIGh5cGVydGVuc2lvbiBpcyByZXBvcnRlZCBhbW9uZyAzOCUgb2YgcGFydGljaXBhbnRzLCBhbmQgMjMlIGhhdmUgZGlhYmV0ZXMuDQoNCk92ZXJhbGwsIHRoZSBkYXRhIGRlc2NyaWJlIGEgcG9wdWxhdGlvbiB0aGF0IGlzIGxhcmdlbHkgcnVyYWwsIG1pZGRsZS1hZ2VkLCBhbmQgbW9kZXJhdGVseSBlZHVjYXRlZCwgd2l0aCBhIG1peGVkIG9jY3VwYXRpb25hbCBwcm9maWxlLiBUaGUgcmVsYXRpdmVseSBoaWdoIHByZXZhbGVuY2Ugb2YgaHlwZXJ0ZW5zaW9uIGFuZCBkaWFiZXRlcywgYWxvbmcgd2l0aCBlbGV2YXRlZCBCTUksIHBvaW50cyB0byBhIHNpZ25pZmljYW50IGJ1cmRlbiBvZiBub24tY29tbXVuaWNhYmxlIGRpc2Vhc2VzIGluIHRoaXMgZ3JvdXAsIGxpa2VseSBpbmZsdWVuY2VkIGJ5IGxpZmVzdHlsZSBhbmQgbGltaXRlZCBhY2Nlc3MgdG8gaGVhbHRoY2FyZSBzZXJ2aWNlcy4NCg0KDQpgYGB7cn0NCm5jZCAlPiUNCiAgdGJsX3N1bW1hcnkoDQogICAgYnkgPSByZXNpZGVuY2UpDQpgYGANCg0KSW50ZXJwcmV0YXRpb246DQoNClRoZSBzdHVkeSBpbmNsdWRlZCAyLDIwMiBwYXJ0aWNpcGFudHMsIGNvbXByaXNpbmcgMSwzMzEgcnVyYWwgYW5kIDg3MSB1cmJhbiByZXNpZGVudHMuIFRoZSBtZWRpYW4gYWdlIG9mIHJ1cmFsIHBhcnRpY2lwYW50cyB3YXMgNTEgeWVhcnMgKElRUjogMzjigJM2OSksIHNsaWdodGx5IGhpZ2hlciB0aGFuIHRoYXQgb2YgdXJiYW4gcGFydGljaXBhbnRzICg0OSB5ZWFyczsgSVFSOiAzN+KAkzY1KSwgaW5kaWNhdGluZyBhIHNvbWV3aGF0IG9sZGVyIHJ1cmFsIHBvcHVsYXRpb24uDQoNCkluIGJvdGggc2V0dGluZ3MsIGZlbWFsZXMgY29uc3RpdHV0ZWQgYSBzbGlnaHRseSBoaWdoZXIgcHJvcG9ydGlvbuKAlDU2JSBpbiBydXJhbCBhcmVhcyBhbmQgNTElIGluIHVyYmFuIGFyZWFz4oCUc3VnZ2VzdGluZyBhIHJlbGF0aXZlbHkgYmFsYW5jZWQgZ2VuZGVyIGRpc3RyaWJ1dGlvbiBhY3Jvc3MgcmVzaWRlbmNlcy4NCg0KRWR1Y2F0aW9uYWwgYXR0YWlubWVudCBzaG93ZWQgbW9kZXN0IGRpZmZlcmVuY2VzIGJldHdlZW4gZ3JvdXBzLiBBIHNsaWdodGx5IGhpZ2hlciBwcm9wb3J0aW9uIG9mIHJ1cmFsIHBhcnRpY2lwYW50cyAoMjUlKSBoYWQgaGlnaGVyIGVkdWNhdGlvbiBjb21wYXJlZCB0byB1cmJhbiBwYXJ0aWNpcGFudHMgKDIwJSksIHdoZXJlYXMgdGhvc2Ugd2l0aCBubyBmb3JtYWwgZWR1Y2F0aW9uIHdlcmUgbWFyZ2luYWxseSBmZXdlciBpbiBydXJhbCAoOS44JSkgdGhhbiBpbiB1cmJhbiAoMTQlKSBzZXR0aW5ncy4gQWNyb3NzIGJvdGggZ3JvdXBzLCBwcmltYXJ5IGFuZCBzZWNvbmRhcnkgZWR1Y2F0aW9uIHdlcmUgdGhlIG1vc3QgY29tbW9uIGxldmVscywgdG9nZXRoZXIgYWNjb3VudGluZyBmb3Igb3ZlciA2MCUgb2YgcGFydGljaXBhbnRzLCByZWZsZWN0aW5nIGEgbW9kZXJhdGVseSBlZHVjYXRlZCBzYW1wbGUgb3ZlcmFsbC4NCg0KT2NjdXBhdGlvbmFsIHBhdHRlcm5zIHZhcmllZCBub3RhYmx5IGJldHdlZW4gcnVyYWwgYW5kIHVyYmFuIGFyZWFzLiBGYXJtaW5nIHdhcyBtb3JlIHByZXZhbGVudCBhbW9uZyBydXJhbCBwYXJ0aWNpcGFudHMgKDI5JSkgdGhhbiB1cmJhbiBwYXJ0aWNpcGFudHMgKDI1JSksIHdoaWxlIGJ1c2luZXNzLXJlbGF0ZWQgb2NjdXBhdGlvbnMgd2VyZSBtb3JlIGNvbW1vbiBpbiB1cmJhbiBhcmVhcyAoMzAlIHZzLiAxNSUpLiBTZXJ2aWNlIGVtcGxveW1lbnQgd2FzIGNvbXBhcmFibGUgKDMyJSBydXJhbDsgMjglIHVyYmFuKS4gVW5lbXBsb3ltZW50IHdhcyBuZWFybHkgdGhyZWUgdGltZXMgaGlnaGVyIGluIHJ1cmFsIGFyZWFzICgxNCUpIHRoYW4gaW4gdXJiYW4gc2V0dGluZ3MgKDUuNyUpLCB3aGljaCBtYXkgc3VnZ2VzdCBsaW1pdGVkIGpvYiBvcHBvcnR1bml0aWVzIG91dHNpZGUgYWdyaWN1bHR1cmUuDQoNCkhlYWx0aCBpbmRpY2F0b3JzIHNob3dlZCBzbWFsbCBidXQgbWVhbmluZ2Z1bCBydXJhbOKAk3VyYmFuIGRpZmZlcmVuY2VzLiBUaGUgbWVkaWFuIEJNSSB3YXMgc2ltaWxhciBhY3Jvc3MgZ3JvdXBz4oCUMjUuNSAoSVFSOiAyMS4x4oCTMjguMykgaW4gcnVyYWwgYXJlYXMgYW5kIDI0LjkgKElRUjogMjEuOeKAkzI4LjQpIGluIHVyYmFuIGFyZWFz4oCUaW5kaWNhdGluZyBhIGdlbmVyYWxseSBvdmVyd2VpZ2h0IHBvcHVsYXRpb24uIEhvd2V2ZXIsIGJsb29kIHByZXNzdXJlIHJlYWRpbmdzIHdlcmUgaGlnaGVyIGFtb25nIHJ1cmFsIHBhcnRpY2lwYW50cywgd2l0aCBtZWRpYW4gc3lzdG9saWMvZGlhc3RvbGljIHZhbHVlcyBvZiAxMzYvOTEgbW1IZyBjb21wYXJlZCB0byAxMzEvOTMgbW1IZyBpbiB1cmJhbiBwYXJ0aWNpcGFudHMuDQoNCkNvbnNpc3RlbnQgd2l0aCB0aGVzZSBmaW5kaW5ncywgaHlwZXJ0ZW5zaW9uIHdhcyBtb3JlIHByZXZhbGVudCBpbiBydXJhbCBhcmVhcyAoNDElKSB0aGFuIGluIHVyYmFuIG9uZXMgKDMzJSkuIERpYWJldGVzIGFsc28gZm9sbG93ZWQgYSBzaW1pbGFyIHBhdHRlcm4sIGFmZmVjdGluZyAyNiUgb2YgcnVyYWwgcGFydGljaXBhbnRzIGFuZCAyMCUgb2YgdXJiYW4gcGFydGljaXBhbnRzLg0KDQpPdmVyYWxsLCB0aGUgcmVzdWx0cyBpbmRpY2F0ZSB0aGF0IHJ1cmFsIHBhcnRpY2lwYW50cyBhcmUgc2xpZ2h0bHkgb2xkZXIsIGxlc3MgZW1wbG95ZWQsIGFuZCBleHBlcmllbmNlIGhpZ2hlciByYXRlcyBvZiBoeXBlcnRlbnNpb24gYW5kIGRpYWJldGVzIGNvbXBhcmVkIHRvIHRoZWlyIHVyYmFuIGNvdW50ZXJwYXJ0cy4gVGhlc2UgZmluZGluZ3Mgc3VnZ2VzdCBhIHBvdGVudGlhbCBydXJhbCBkaXNhZHZhbnRhZ2UgaW4gaGVhbHRoIG91dGNvbWVzLCBwb3NzaWJseSBsaW5rZWQgdG8gZGlmZmVyZW5jZXMgaW4gbGlmZXN0eWxlLCBoZWFsdGhjYXJlIGFjY2VzcywgYW5kIHNvY2lvZWNvbm9taWMgb3Bwb3J0dW5pdGllcy4NCg0KDQpgYGB7cn0NCm1vZGVsIDwtIGdsbSggZmFjdG9yKGh5cGVydGVuc2lvbikgfiBhZ2UgKyBzZXggKyBibWkgKyByZXNpZGVuY2UgKyBlZHVjYXRpb24gKyBvY2N1cGF0aW9uICsgZGlhYmV0ZXMsIGRhdGEgPSBuY2QsIGZhbWlseSA9IGJpbm9taWFsKQ0KdGJsX3JlZ3Jlc3Npb24obW9kZWwpDQoNCg0KYGBgDQoNCkludGVycHJldGF0aW9uIG9mIExvZ2lzdGljIFJlZ3Jlc3Npb24gUmVzdWx0czoNCg0KVGhlIG11bHRpdmFyaWFibGUgbG9naXN0aWMgcmVncmVzc2lvbiBtb2RlbCBleGFtaW5lZCB0aGUgYXNzb2NpYXRpb24gYmV0d2VlbiBzZXZlcmFsIGRlbW9ncmFwaGljIGFuZCBoZWFsdGgtcmVsYXRlZCB2YXJpYWJsZXMgYW5kIHRoZSBvdXRjb21lIG9mIGludGVyZXN0ICh1bnNwZWNpZmllZCkuIE5vbmUgb2YgdGhlIGNvdmFyaWF0ZXMgc2hvd2VkIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgYXNzb2NpYXRpb25zIGF0IHRoZSBjb252ZW50aW9uYWwgNSUgc2lnbmlmaWNhbmNlIGxldmVsLg0KDQpBZ2UgaGFkIGEgbG9nKE9SKSBvZiAwLjAwICg5NSUgQ0k6IOKIkjAuMDIgdG8gMC4wMiwgcCA9IDAuOCksIGluZGljYXRpbmcgbm8gbWVhc3VyYWJsZSBhc3NvY2lhdGlvbiB3aXRoIHRoZSBvdXRjb21lLiBTaW1pbGFybHksIHNleCBkaWQgbm90IGRlbW9uc3RyYXRlIGEgc2lnbmlmaWNhbnQgZWZmZWN0OyBtYWxlcyBoYWQgaGlnaGVyIG9kZHMgY29tcGFyZWQgdG8gZmVtYWxlcyAobG9nKE9SKSA9IDAuMzAsIDk1JSBDSTog4oiSMC4yNyB0byAwLjg3LCBwID0gMC4zKSwgYnV0IHRoZSBjb25maWRlbmNlIGludGVydmFsIGluY2x1ZGVkIHplcm8sIHN1Z2dlc3Rpbmcgbm8gZXZpZGVuY2Ugb2YgYSB0cnVlIGRpZmZlcmVuY2UuDQoNCkJvZHkgbWFzcyBpbmRleCAoQk1JKSBhbHNvIHNob3dlZCBubyBzaWduaWZpY2FudCByZWxhdGlvbnNoaXAgKGxvZyhPUikgPSDiiJIwLjAxLCA5NSUgQ0k6IOKIkjAuMDcgdG8gMC4wNCwgcCA9IDAuNikuIFJlc2lkZW5jZSB0eXBlIGRpZCBub3Qgc3Vic3RhbnRpYWxseSBhZmZlY3QgdGhlIG9kZHMgb2YgdGhlIG91dGNvbWUsIHdpdGggdXJiYW4gcGFydGljaXBhbnRzIGhhdmluZyBsb3dlciBvZGRzIHRoYW4gcnVyYWwgcGFydGljaXBhbnRzIChsb2coT1IpID0g4oiSMC40MSwgOTUlIENJOiDiiJIxLjAgdG8gMC4xOCwgcCA9IDAuMiksIHRob3VnaCB0aGlzIGRpZmZlcmVuY2Ugd2FzIG5vdCBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50Lg0KDQpFZHVjYXRpb24gbGV2ZWwgd2FzIG5vdCBzaWduaWZpY2FudGx5IGFzc29jaWF0ZWQgd2l0aCB0aGUgb3V0Y29tZSBpbiBhbnkgY2F0ZWdvcnkgY29tcGFyZWQgdG8gdGhlIGhpZ2hlci1lZHVjYXRpb24gcmVmZXJlbmNlIGdyb3VwLiBUaGUgbG9nKE9SKSByYW5nZWQgZnJvbSAwLjA1IGZvciBwcmltYXJ5IGVkdWNhdGlvbiAocCA9IDAuOSkgdG8gMC41MiBmb3Igbm8gZm9ybWFsIGVkdWNhdGlvbiAocCA9IDAuMyksIHdpdGggYWxsIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIGNyb3NzaW5nIHplcm8uDQoNCk9jY3VwYXRpb25hbCBjYXRlZ29yaWVzIGFsc28gcmV2ZWFsZWQgbm8gc2lnbmlmaWNhbnQgZGlmZmVyZW5jZXMgcmVsYXRpdmUgdG8gdGhlIGJ1c2luZXNzIGdyb3VwLiBUaGUgZXN0aW1hdGVkIGxvZyBvZGRzIHJhbmdlZCBmcm9tIOKIkjAuNTYgZm9yIHJldGlyZWQgcGFydGljaXBhbnRzIHRvIOKIkjAuMTIgZm9yIHRob3NlIGluIHNlcnZpY2Ugb2NjdXBhdGlvbnMsIGFsbCB3aXRoIHAtdmFsdWVzIGFib3ZlIDAuMy4gTGlrZXdpc2UsIGRpYWJldGVzIHN0YXR1cyBzaG93ZWQgbm8gbWVhbmluZ2Z1bCBhc3NvY2lhdGlvbiB3aXRoIHRoZSBvdXRjb21lIChsb2coT1IpID0gMC4wNiwgOTUlIENJOiDiiJIwLjYxIHRvIDAuNzEsIHAgPSAwLjkpLg0KDQpPdmVyYWxsLCB0aGUgcmVncmVzc2lvbiBhbmFseXNpcyBzdWdnZXN0cyB0aGF0IG5vbmUgb2YgdGhlIGV4YW1pbmVkIHZhcmlhYmxlc+KAlGFnZSwgc2V4LCBCTUksIHJlc2lkZW5jZSwgZWR1Y2F0aW9uLCBvY2N1cGF0aW9uLCBvciBkaWFiZXRlc+KAlHdlcmUgc2lnbmlmaWNhbnRseSBhc3NvY2lhdGVkIHdpdGggdGhlIG91dGNvbWUuIFRoZSBkaXJlY3Rpb24gYW5kIG1hZ25pdHVkZSBvZiB0aGUgY29lZmZpY2llbnRzIGluZGljYXRlIHRoYXQgYW55IG9ic2VydmVkIGRpZmZlcmVuY2VzIGFyZSBzbWFsbCBhbmQgbGlrZWx5IGR1ZSB0byByYW5kb20gdmFyaWF0aW9uIHJhdGhlciB0aGFuIHN5c3RlbWF0aWMgZWZmZWN0cy4NCg==