1 Basic Descriptive Indicators

1.1 Graph Showing Countries Added Yearwise

The following graph shows how countries are being added every year with the progression in the dataset since the end of WWII

1.2 Proportion of Dynastic Countries Across Time (All Regime Types)

The necessary pre-condition for the dynast in our dataset is that a leader will only be classified as a dynast if and only if a that leader in our dataset has a parent, in-law, or any kind of direct relative who has contested and won an election at any level of politics in their respective polities, then that politician is a dynast. Therefore a dynastic country i at point t will be a country whose leader is a dynast.

The first graph shows the proportion of dynastic countries at a given time over the years.

The second graph shows the proportion of dynastic countries at a given time over a period of 25-25-25 years.

1.3 Proportion of Dynastic Countries (Ruled by Dynastic Leaders) across regime/time by different Regions of the world

1.4 Table on the Proportion of Dynastic Leaders Over Time in a Region (Classified by Regime Type)

1.5 Proportion of Years Under Dynastic Rule by Democratic Regime Type (Presidential, Parliamentary, and Mixed Democratic)

The necessary pre-condition for the dynast in our dataset is that a leader will only be classified as a dynast if and only if a that leader in our dataset has a parent, in-law, or any kind of direct relative who has contested and won an election at any level of politics in their respective polities, then that politician is a dynast. Therefore, dynastic rule will be years under a dynast.

These classifications are extended and replicated based on the regime types given in WhoGov Dataset (Nuffield Research Center which is based in turn on Cheibub et. al (2010))

Proportion of Years Under Dynastic Rule in Democratic Regimes
system_category year_bin Prop_Dyn_Years
Mixed Democratic 1945-1970 5.902778
Mixed Democratic 1970-1995 14.804159
Mixed Democratic 1995-2020 10.337995
Parliamentary Democracy 1945-1970 27.408962
Parliamentary Democracy 1970-1995 22.937322
Parliamentary Democracy 1995-2020 16.101495
Parliamentary Democracy NA NA
Presidential Democracy 1945-1970 29.876087
Presidential Democracy 1970-1995 18.575780
Presidential Democracy 1995-2020 26.030800
Presidential Democracy NA NA

1.6 Proportion of Years Under Dynastic Rule, Year-by-year Dynastic Rule, Proportion of dynastic leaders by Dictatorship/Democracy Status and System Category

## # A tibble: 2 × 4
##   dictatorship Prop_Dyn_Years Cummulative_Dyn_Years Dynastic_Rulers_percentage
##          <dbl>          <dbl>                 <dbl>                      <dbl>
## 1            0           NA                      NA                       NA  
## 2            1           30.8                  1641                       24.1

1.7 Proportion of Years Under Dynastic Rule, Year-by-year Dynastic Rule, Proportion of dynastic leaders by Regime Type (System Category)

## # A tibble: 9 × 4
##   system_category    Prop_Dyn_Years Cummulative_Dyn_Years Dynastic_Rulers_perc…¹
##   <chr>                       <dbl>                 <dbl>                  <dbl>
## 1 ""                           23.6                    13                   6.35
## 2 "Civilian Dictato…           21.5                   590                  18.7 
## 3 "Military Dictato…           14.5                   257                  20.2 
## 4 "Mixed Democratic"           11.9                   146                  10.4 
## 5 "Parliamentary De…           NA                     468                  19.5 
## 6 "Presidential Dem…           NA                     451                  25.2 
## 7 "Royal Dictatorsh…           98.9                   794                  72.7 
## 8 "military Dictato…            0                       0                   0   
## 9 "system_category"            NA                      NA                  NA   
## # ℹ abbreviated name: ¹​Dynastic_Rulers_percentage

##Proportion of Years Under Dynastic Rule, Year-by-year Dynastic Rule, Proportion of dynastic leaders by Regime Change Binary

## # A tibble: 2 × 4
##   Regime_Change Prop_Dyn_Years Cummulative_Dyn_Years Dynastic_Rulers_percentage
##           <dbl>          <dbl>                 <dbl>                      <dbl>
## 1             0             NA                    NA                       NA  
## 2             1             NA                  1247                       20.4
##Country Count and dynastic information for Countries by Regime Change Status
Country Count for Countries that have/haven’t undergone Regime change
Regime_Change Number_Of_Countries
0 92
1 78

1.8 Country Count for Countries that have faced no regime change and have either remained Democracies or Dictatorships throughout and Dynastic Information

Country Count for Countries that have faced no regime change and have either remained Democracies or Dictatorships throughout
dictatorship Number_Of_Countries_With_No_RegChange
0 48
1 44

1.9 Countries that have had no regime change and have remained Democratic by democracy type

Percentage of years under Dynastic Rule in PURE Democracies by System Category
system_category Prop_Dyn_Years
Mixed Democratic 12.46291
Parliamentary Democracy NA
Presidential Democracy 35.66667
system_category NA

1.10 Countries that have had no regime change and have remained dictatorship by dictatorship type

Percentage of years under Dynastic Rule in PURE Dictatorships by System Category
system_category Prop_Dyn_Years
Civilian Dictatorship 10.33275
Military Dictatorship 16.86747
Royal Dictatorship 99.44341

1.11 Country Count for number of Regime Transitions and Dynastic Information

Country Count for number of Regime Transitions
Num_Transitions Number_Countries
0 92
1 34
2 17
3 12
4 6
5 4
6 2
7 1
8 2
Percentage of years under Dynastic Rule by number of Regime Transitions
Num_Transitions Percentage_Dynastic_Years
1 NA
2 28.46088
3 28.34437
4 14.04959
5 12.95547
6 30.87248
7 10.66667
8 24.00000
Percentage of years under Dynastic Rule by One and Two or More transitions
Number_of_Transitions Percentage_Dynastic_Years
One Transition NA
Two or More Transitions 24.74156
Percentage of Dynastic Leaders by One and Two or More transitions
Number_of_Transitions Dynastic_Rulers_percentage
One Transition 16.71470
Two or More Transitions 22.64808

1.12 Proportion of Years Under Dynastic Rule, Year-by-year Dynastic Rule, Proportion of dynastic leaders by Post-WW2 Independence status

## # A tibble: 33 × 6
##    year_bin.x postww2_ind Prop_Dyn_Years Cummulative_Dyn_Years year_bin.y
##    <ord>            <dbl>          <dbl>                 <dbl> <ord>     
##  1 1945-1970            0           29.6                   462 1945-1970 
##  2 1945-1970            0           29.6                   462 1970-1995 
##  3 1945-1970            0           29.6                   462 1995-2020 
##  4 1945-1970            1           28.7                   205 1945-1970 
##  5 1945-1970            1           28.7                   205 1970-1995 
##  6 1945-1970            1           28.7                   205 1995-2020 
##  7 1945-1970           NA            0                       0 1945-1970 
##  8 1945-1970           NA            0                       0 1995-2020 
##  9 1945-1970           NA            0                       0 <NA>      
## 10 1970-1995            0           27.0                   438 1945-1970 
## # ℹ 23 more rows
## # ℹ 1 more variable: Dynastic_Rulers_percentage <dbl>

1.13 Proportion of Years Under Dynastic Rule by Former British Colony Status (Information Scraped from Wikipedia)

Proportion of Years Under Dynastic Rule in Democratic Regimes
former_british_colony year_bin Prop_Dyn_Years
0 1945-1970 25.06917
0 1970-1995 18.15867
0 1995-2020 21.96514
0 NA NA
1 1945-1970 38.09904
1 1970-1995 36.20000
1 1995-2020 35.83490

1.14 Proportion of Years Under Dynastic Rule by Regions (Across all regime types)

1.15 Mapping of Dynastic Relation Type Across all regime Types

The necessary pre-condition for the dynast in our dataset is that a leader will only be classified as a dynast if and only if a that leader in our dataset has a parent, in-law, or any kind of direct relative who has contested and won an election at any level of politics in their respective polities, then that politician is a dynast.

This graph shows what kind of dynastic relationships are most relevant across regime types (Civilian Dictatorship, Military Dictatorship, Mixed Democratic, Parliamentary Democracy, Presidential Democracy, Royal Dictatorship)

gdd_relation_all <- gdd %>% 
    distinct(nominal_leader, .keep_all = TRUE) %>% 
    filter(pred_bin == 1, relation_code_pred != 0)

gdd_relation_all <-gdd_relation_all %>% 
  group_by(fln_gender) %>%
  count(relation_code_pred) %>%
  mutate(Relation_Type = case_when(
  fln_gender == 0 & relation_code_pred == 2  ~ "Father-Son",
  fln_gender == 0 & relation_code_pred == 3  ~ "Mother-Son",
  fln_gender == 0 & relation_code_pred == 8  ~ "Brother-Brother",
  fln_gender == 0 & relation_code_pred == 10 ~ "Grandfather-Grandson",
  fln_gender == 0 & relation_code_pred == 11 ~ "Grandmother-Grandson",
  fln_gender == 0 & relation_code_pred == 14 ~ "Uncle-Nephew",
  relation_code_pred == 18 ~ "Cousin-Cousin",
  relation_code_pred == 19 ~ "Other",
  fln_gender == 1 & relation_code_pred == 2  ~ "Father-Daughter",
  fln_gender == 1 & relation_code_pred == 6  ~ "Husband-Wife",
  fln_gender == 1 & relation_code_pred == 8  ~ "Brother-Sister",
  fln_gender == 1 & relation_code_pred == 10  ~ "Grandfather-Granddaughter",
    TRUE ~ NA_character_)
  ) %>% 
  rename(Total = n) %>% 
  mutate(percentage_tot_dyn = Total/sum(Total)*100)

relation <- ggplot(gdd_relation_all, aes(x = Relation_Type, y = Total, fill = Relation_Type)) +
  geom_bar(stat = "identity") +
  labs(title = "Dynastic Relationship Across All Regime Types",
       x = "Dynastic Relationship Type",
       y = "Total") +
  theme_stata()+
  theme(axis.text.x = element_text(angle = 45, hjust = 1),
        legend.position = "none")

ggplotly(relation)

1.16 Mapping of Dynastic Relation Type in Democratic regime Types

The necessary pre-condition for the dynast in our dataset is that a leader will only be classified as a dynast if and only if a that leader in our dataset has a parent, in-law, or any kind of direct relative who has contested and won an election at any level of politics in their respective polities, then that politician is a dynast.

This graph shows what kind of dynastic relationships are most relevant in democratic regime types (Mixed Democratic, Parliamentary Democracy, Presidential Democracy)

2 The Different Dynasts (across regime types)

While our definition of a dynast is clear as stated in the previous section. This section expands on that definition at talks about three different kinds of dynast.

2.1 THE FIRST DYNAST

The First definition of Dynast is the one mentioned before. This shows the proportion of leaders that necessarily have an ancestor in politics and may or may not have a successor. The necessary precondition is a family member preceding him/her in politics before his time. ((pred_bin == 1 & suc_bin doesn’t matter))

2.2 THE SECOND DYNAST (DYNASTY-SUSTAINER)

The Second definition of Dynast is the one of dynasty sustainers. This means that the following graph shows the proportion of leaders that necessarily come from apolitical family and also leaves a successor in politics. Therefore, a dynasty sustainer The necessary preconditions are a family member preceding him/her in politics before his/her time and a family member suceeding him/her in politics after his/her time. (pred_bin == 1 & suc_bin == 1)

2.3 THE THIRD DYNAST (DYNASTY-ENDER)

The THIRD definition of Dynast is the one of dynasty-enderss. This means that the following graph shows the proportion of leaders that necessarily come from a political family BUT DO NOT LEAVE a successor in politics. Therefore, for a dynasty ENDER The necessary preconditions are a family member preceding him/her in politics before his/her time and a family member NOT suceeding him/her in politics after his/her time. (pred_bin == 1 & suc_bin == 0)

2.4 THE FOURTH DYNAST (DYNASTY-FORMERS)

The fourth definition of Dynast is the one of dynasty-formers. This means that the following graph shows the proportion of leaders that DO NOT come from a political family HAVE a successor in politics. Therefore, for a dynasty former the necessary preconditions are the ABSENCE OF A family member preceding him/her in politics before his/her time and a family member SUCCEEDING him/her in politics after his/her time. (pred_bin == 0 & suc_bin == 1)

2.5 THE PURE NON-DYNAST

The last category is a category of leaders that have no family before or after them in politics. These are not-dynasts and are included to show declining prevalence of family ties in politics.

3 Predicted Probabilities and Regime Types: Two Different Models

3.1 Model 1,2,3: Using dictatorship as the independent variable

## 
## Call:
## glm(formula = dynastic ~ dictatorship, family = binomial(link = "logit"), 
##     data = gdd)
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -1.32226    0.03463  -38.18   <2e-16 ***
## dictatorship  0.50447    0.04564   11.05   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 11850  on 10343  degrees of freedom
## Residual deviance: 11726  on 10342  degrees of freedom
## AIC: 11730
## 
## Number of Fisher Scoring iterations: 4
## 
## Call:
## glm(formula = dynastic ~ dictatorship + factor(Country) + factor(Year), 
##     family = binomial(link = "logit"), data = gdd)
## 
## Coefficients:
##                                                   Estimate Std. Error z value
## (Intercept)                                      1.311e+00  4.208e-01   3.114
## dictatorship                                    -2.001e-01  1.006e-01  -1.989
## factor(Country)Albania                          -2.338e+00  3.907e-01  -5.983
## factor(Country)Algeria                          -2.039e+01  1.391e+03  -0.015
## factor(Country)Angola                           -2.039e+01  1.575e+03  -0.013
## factor(Country)Argentina                        -1.678e+00  3.606e-01  -4.653
## factor(Country)Armenia                          -2.062e+01  1.951e+03  -0.011
## factor(Country)Australia                        -9.492e-01  3.582e-01  -2.650
## factor(Country)Austria                          -2.062e+01  1.233e+03  -0.017
## factor(Country)Azerbaijan                       -4.137e-01  4.547e-01  -0.910
## factor(Country)Bahamas                          -2.056e+01  1.543e+03  -0.013
## factor(Country)Bahrain                           1.882e+01  1.513e+03   0.012
## factor(Country)Bangladesh                       -4.380e-01  3.874e-01  -1.131
## factor(Country)Barbados                         -2.262e+00  4.263e-01  -5.305
## factor(Country)Belarus                          -2.042e+01  1.951e+03  -0.010
## factor(Country)Belgium                          -3.338e+00  4.822e-01  -6.922
## factor(Country)Belize                           -2.055e+01  1.689e+03  -0.012
## factor(Country)Benin                             1.115e-01  3.859e-01   0.289
## factor(Country)Bhutan                            6.375e-01  3.912e-01   1.630
## factor(Country)Bosnia and Herzegovina           -1.857e+00  4.882e-01  -3.805
## factor(Country)Botswana                         -2.157e+00  4.194e-01  -5.142
## factor(Country)Brazil                           -3.458e+00  5.022e-01  -6.886
## factor(Country)Bulgaria                         -2.818e+00  4.270e-01  -6.599
## factor(Country)Burkina Faso                     -3.202e+00  5.319e-01  -6.020
## factor(Country)Burundi                          -1.569e+00  3.790e-01  -4.139
## factor(Country)Cambodia                          9.098e-02  3.684e-01   0.247
## factor(Country)Cameroon                         -2.035e+01  1.370e+03  -0.015
## factor(Country)Canada                           -1.677e+00  3.657e-01  -4.585
## factor(Country)Cape Verde                       -2.050e+01  1.573e+03  -0.013
## factor(Country)Central African Republic         -2.150e+00  4.048e-01  -5.311
## factor(Country)Chad                             -2.035e+01  1.370e+03  -0.015
## factor(Country)Chile                            -2.322e+00  3.890e-01  -5.968
## factor(Country)China                            -2.241e+00  3.850e-01  -5.821
## factor(Country)Colombia                         -1.277e+00  3.591e-01  -3.555
## factor(Country)Costa Rica                       -3.852e-01  3.657e-01  -1.053
## factor(Country)Croatia                          -2.062e+01  1.951e+03  -0.011
## factor(Country)Cuba                             -2.517e+00  4.051e-01  -6.212
## factor(Country)Cyprus                           -2.039e+00  3.984e-01  -5.118
## factor(Country)Czech Republic                   -2.064e+01  2.020e+03  -0.010
## factor(Country)Democratic Republic of the Congo -1.741e+00  3.829e-01  -4.547
## factor(Country)Denmark                          -2.062e+01  1.233e+03  -0.017
## factor(Country)Djibouti                         -7.600e-01  3.961e-01  -1.919
## factor(Country)Dominican Republic               -2.768e+00  4.206e-01  -6.582
## factor(Country)Ecuador                          -2.303e+00  3.871e-01  -5.950
## factor(Country)Egypt                            -3.138e+00  4.717e-01  -6.651
## factor(Country)El Salvador                      -2.052e+01  1.233e+03  -0.017
## factor(Country)Equatorial Guinea                 5.964e-01  4.243e-01   1.406
## factor(Country)Eritrea                          -2.044e+01  2.020e+03  -0.010
## factor(Country)Estonia                          -2.663e+00  5.617e-01  -4.741
## factor(Country)Eswatini                          1.883e+01  1.470e+03   0.013
## factor(Country)Ethiopia                         -1.367e+00  3.491e-01  -3.916
## factor(Country)Fiji                             -1.073e+00  3.813e-01  -2.815
## factor(Country)Finland                          -4.962e+00  6.438e-01  -7.707
## factor(Country)France                           -3.338e+00  4.822e-01  -6.922
## factor(Country)Gabon                            -2.294e+00  4.195e-01  -5.468
## factor(Country)Georgia                          -2.055e+01  1.942e+03  -0.011
## factor(Country)Germany                          -2.061e+01  1.919e+03  -0.011
## factor(Country)Ghana                            -1.987e+00  3.891e-01  -5.107
## factor(Country)Greece                           -9.822e-01  3.554e-01  -2.764
## factor(Country)Guatemala                        -3.014e+00  4.448e-01  -6.776
## factor(Country)Guinea                           -2.039e+01  1.345e+03  -0.015
## factor(Country)Guinea-Bissau                    -2.043e+01  1.556e+03  -0.013
## factor(Country)Guyana                           -4.135e+00  7.653e-01  -5.403
## factor(Country)Haiti                            -1.188e+00  3.461e-01  -3.432
## factor(Country)Honduras                         -3.131e+00  4.585e-01  -6.829
## factor(Country)Hungary                          -2.052e+01  1.232e+03  -0.017
## factor(Country)Iceland                          -1.799e+00  3.690e-01  -4.875
## factor(Country)India                            -2.039e+00  3.787e-01  -5.383
## factor(Country)Indonesia                        -3.744e+00  5.759e-01  -6.501
## factor(Country)Iran                             -6.399e-01  3.444e-01  -1.858
## factor(Country)Iraq                             -1.662e+00  3.572e-01  -4.653
## factor(Country)Ireland                          -1.799e+00  3.690e-01  -4.875
## factor(Country)Israel                           -4.210e+00  4.982e-01  -8.450
## factor(Country)Italy                            -3.705e+00  5.378e-01  -6.890
## factor(Country)Ivory Coast                      -2.035e+01  1.370e+03  -0.015
## factor(Country)Jamaica                          -1.644e+00  3.881e-01  -4.236
## factor(Country)Japan                            -6.366e-01  3.619e-01  -1.759
## factor(Country)Jordan                            1.876e+01  1.233e+03   0.015
## factor(Country)Kazakhstan                       -2.042e+01  1.951e+03  -0.010
## factor(Country)Kenya                            -2.717e+00  4.616e-01  -5.886
## factor(Country)Kosovo                           -2.084e+01  3.577e+03  -0.006
## factor(Country)Kuwait                            2.208e+00  6.448e-01   3.424
## factor(Country)Kyrgyzstan                       -2.054e+01  1.942e+03  -0.011
## factor(Country)Laos                              3.983e-01  3.829e-01   1.040
## factor(Country)Latvia                           -2.062e+01  1.951e+03  -0.011
## factor(Country)Lebanon                          -7.786e-03  3.614e-01  -0.022
## factor(Country)Lesotho                          -2.040e+01  1.439e+03  -0.014
## factor(Country)Liberia                          -8.274e-01  3.442e-01  -2.404
## factor(Country)Libya                            -1.544e+00  3.603e-01  -4.285
## factor(Country)Lithuania                        -2.062e+01  1.951e+03  -0.011
## factor(Country)Luxembourg                       -2.062e+01  1.233e+03  -0.017
## factor(Country)Madagascar                       -2.039e+01  1.369e+03  -0.015
## factor(Country)Malawi                           -3.245e+00  5.366e-01  -6.047
## factor(Country)Malaysia                         -1.127e+00  3.602e-01  -3.128
## factor(Country)Maldives                         -1.178e-01  3.812e-01  -0.309
## factor(Country)Mali                             -2.182e+00  4.069e-01  -5.361
## factor(Country)Malta                            -2.805e+00  4.696e-01  -5.974
## factor(Country)Mauritius                        -1.629e+00  3.991e-01  -4.083
## factor(Country)Mexico                           -2.943e-01  3.515e-01  -0.837
## factor(Country)Moldova                          -2.062e+01  1.951e+03  -0.011
## factor(Country)Mongolia                         -2.051e+01  1.232e+03  -0.017
## factor(Country)Montenegro                       -2.065e+01  2.772e+03  -0.007
## factor(Country)Morocco                           1.881e+01  1.327e+03   0.014
## factor(Country)Mozambique                       -2.036e+01  1.576e+03  -0.013
## factor(Country)Myanmar                          -3.512e+00  5.299e-01  -6.627
## factor(Country)Namibia                          -2.041e+01  1.919e+03  -0.011
## factor(Country)Nepal                             4.299e-01  3.813e-01   1.127
## factor(Country)Netherlands                      -2.062e+01  1.233e+03  -0.017
## factor(Country)New Zealand                      -2.601e+00  4.102e-01  -6.340
## factor(Country)Nicaragua                        -1.328e+00  3.496e-01  -3.797
## factor(Country)Niger                            -2.043e+01  1.366e+03  -0.015
## factor(Country)Nigeria                          -2.530e+00  4.345e-01  -5.821
## factor(Country)North Korea                      -2.286e+00  3.916e-01  -5.836
## factor(Country)North Macedonia                  -1.734e+00  4.749e-01  -3.651
## factor(Country)Norway                           -1.737e+00  3.673e-01  -4.730
## factor(Country)Oman                              1.883e+01  1.498e+03   0.013
## factor(Country)Pakistan                         -1.881e+00  3.673e-01  -5.120
## factor(Country)Panama                           -6.155e-01  3.538e-01  -1.740
## factor(Country)Papua New Guinea                 -2.056e+01  1.576e+03  -0.013
## factor(Country)Paraguay                         -3.832e+00  5.755e-01  -6.658
## factor(Country)Peru                             -1.658e+00  3.588e-01  -4.620
## factor(Country)Philippines                       2.021e-01  3.780e-01   0.535
## factor(Country)Poland                           -3.591e+00  5.304e-01  -6.771
## factor(Country)Portugal                         -3.622e+00  5.317e-01  -6.813
## factor(Country)Qatar                             1.882e+01  1.381e+03   0.014
## factor(Country)Republic of the Congo            -2.036e+01  1.370e+03  -0.015
## factor(Country)Republic of the Gambia           -7.108e-01  3.700e-01  -1.921
## factor(Country)Romania                          -2.940e+00  4.395e-01  -6.688
## factor(Country)Russia                           -2.042e+01  1.233e+03  -0.017
## factor(Country)Rwanda                           -2.035e+01  1.393e+03  -0.015
## factor(Country)Saudi Arabia                      1.876e+01  1.233e+03   0.015
## factor(Country)Senegal                          -2.043e+01  1.365e+03  -0.015
## factor(Country)Serbia                           -2.057e+01  1.944e+03  -0.011
## factor(Country)Sierra Leone                     -2.082e+00  4.025e-01  -5.172
## factor(Country)Singapore                        -1.613e+00  3.870e-01  -4.167
## factor(Country)Slovakia                         -2.064e+01  2.020e+03  -0.010
## factor(Country)Slovenia                         -3.256e+00  6.678e-01  -4.876
## factor(Country)Solomon Islands                  -2.055e+01  1.630e+03  -0.013
## factor(Country)Somalia                          -2.038e+01  1.369e+03  -0.015
## factor(Country)South Africa                     -2.593e+00  3.400e-01  -7.628
## factor(Country)South Korea                      -4.147e+00  6.465e-01  -6.415
## factor(Country)South Sudan                      -2.065e+01  3.394e+03  -0.006
## factor(Country)Spain                            -2.969e+00  4.410e-01  -6.732
## factor(Country)Sri Lanka                        -5.657e-01  3.597e-01  -1.573
## factor(Country)Sudan                            -7.280e-01  3.566e-01  -2.042
## factor(Country)Suriname                         -2.053e+01  1.574e+03  -0.013
## factor(Country)Sweden                           -2.528e+00  4.034e-01  -6.267
## factor(Country)Switzerland                      -4.247e+00  6.498e-01  -6.536
## factor(Country)Syria                            -2.185e+00  3.806e-01  -5.742
## factor(Country)Taiwan                           -2.629e+00  4.170e-01  -6.305
## factor(Country)Tajikistan                       -2.042e+01  1.951e+03  -0.010
## factor(Country)Tanzania                         -2.036e+01  1.417e+03  -0.014
## factor(Country)Thailand                         -2.702e+00  4.159e-01  -6.495
## factor(Country)Timor-Leste                      -2.078e+01  2.460e+03  -0.008
## factor(Country)Togo                             -1.488e+00  3.733e-01  -3.986
## factor(Country)Trinidad and Tobago              -1.722e+00  3.907e-01  -4.407
## factor(Country)Tunisia                          -2.040e+01  1.324e+03  -0.015
## factor(Country)Turkey                           -3.314e+00  4.801e-01  -6.903
## factor(Country)Turkmenistan                     -2.042e+01  1.951e+03  -0.010
## factor(Country)Uganda                           -2.652e+00  4.587e-01  -5.782
## factor(Country)Ukraine                          -2.062e+01  1.951e+03  -0.011
## factor(Country)United Arab Emirates              1.882e+01  1.513e+03   0.012
## factor(Country)United Kingdom                   -2.061e+00  3.783e-01  -5.449
## factor(Country)United States of America         -1.927e+00  3.731e-01  -5.164
## factor(Country)Uruguay                          -2.036e+00  3.754e-01  -5.425
## factor(Country)Uzbekistan                       -2.042e+01  1.951e+03  -0.010
## factor(Country)Venezuela                        -1.959e+00  3.716e-01  -5.271
## factor(Country)Vietnam                          -2.035e+01  1.594e+03  -0.013
## factor(Country)Yemen                            -2.172e+00  3.796e-01  -5.722
## factor(Country)Zambia                           -2.041e+01  1.415e+03  -0.014
## factor(Year)1947                                 6.267e-02  4.466e-01   0.140
## factor(Year)1948                                -1.403e-01  4.453e-01  -0.315
## factor(Year)1949                                -7.046e-02  4.414e-01  -0.160
## factor(Year)1950                                -1.625e-01  4.439e-01  -0.366
## factor(Year)1951                                 1.569e-01  4.342e-01   0.361
## factor(Year)1952                                 3.233e-01  4.313e-01   0.750
## factor(Year)1953                                 3.487e-01  4.289e-01   0.813
## factor(Year)1954                                 1.926e-01  4.315e-01   0.446
## factor(Year)1955                                 2.804e-01  4.303e-01   0.652
## factor(Year)1956                                -2.674e-02  4.339e-01  -0.062
## factor(Year)1957                                -1.052e-02  4.300e-01  -0.024
## factor(Year)1958                                -1.741e-01  4.336e-01  -0.401
## factor(Year)1959                                -3.455e-01  4.379e-01  -0.789
## factor(Year)1960                                -5.397e-01  4.318e-01  -1.250
## factor(Year)1961                                -5.517e-01  4.305e-01  -1.281
## factor(Year)1962                                -4.576e-01  4.236e-01  -1.080
## factor(Year)1963                                -4.012e-01  4.208e-01  -0.953
## factor(Year)1964                                -3.437e-01  4.183e-01  -0.822
## factor(Year)1965                                -1.740e-01  4.106e-01  -0.424
## factor(Year)1966                                 4.081e-02  4.050e-01   0.101
## factor(Year)1967                                -7.424e-02  4.070e-01  -0.182
## factor(Year)1968                                -4.688e-01  4.139e-01  -1.133
## factor(Year)1969                                -4.594e-01  4.139e-01  -1.110
## factor(Year)1970                                -6.204e-01  4.168e-01  -1.488
## factor(Year)1971                                -3.312e-01  4.081e-01  -0.811
## factor(Year)1972                                -4.574e-01  4.111e-01  -1.113
## factor(Year)1973                                -5.213e-01  4.128e-01  -1.263
## factor(Year)1974                                -3.310e-01  4.082e-01  -0.811
## factor(Year)1975                                -7.922e-02  4.041e-01  -0.196
## factor(Year)1976                                -2.071e-01  4.057e-01  -0.510
## factor(Year)1977                                -3.570e-01  4.078e-01  -0.876
## factor(Year)1978                                -2.954e-01  4.064e-01  -0.727
## factor(Year)1979                                -4.198e-01  4.090e-01  -1.026
## factor(Year)1980                                -1.842e-01  4.038e-01  -0.456
## factor(Year)1981                                -5.555e-01  4.118e-01  -1.349
## factor(Year)1982                                -5.516e-01  4.119e-01  -1.339
## factor(Year)1983                                -3.625e-01  4.074e-01  -0.890
## factor(Year)1984                                -3.643e-01  4.074e-01  -0.894
## factor(Year)1985                                -5.562e-01  4.118e-01  -1.351
## factor(Year)1986                                -6.309e-01  4.138e-01  -1.525
## factor(Year)1987                                -6.309e-01  4.138e-01  -1.525
## factor(Year)1988                                -6.986e-01  4.157e-01  -1.680
## factor(Year)1989                                -7.013e-01  4.157e-01  -1.687
## factor(Year)1990                                -5.894e-01  4.114e-01  -1.432
## factor(Year)1991                                -5.315e-01  4.073e-01  -1.305
## factor(Year)1992                                -7.271e-01  4.123e-01  -1.764
## factor(Year)1993                                -6.687e-01  4.104e-01  -1.629
## factor(Year)1994                                -6.737e-01  4.103e-01  -1.642
## factor(Year)1995                                -7.379e-01  4.121e-01  -1.791
## factor(Year)1996                                -6.128e-01  4.086e-01  -1.500
## factor(Year)1997                                -4.885e-01  4.057e-01  -1.204
## factor(Year)1998                                -6.739e-01  4.103e-01  -1.643
## factor(Year)1999                                -4.888e-01  4.056e-01  -1.205
## factor(Year)2000                                -5.471e-01  4.071e-01  -1.344
## factor(Year)2001                                -3.111e-01  4.022e-01  -0.774
## factor(Year)2002                                -4.279e-01  4.042e-01  -1.059
## factor(Year)2003                                -3.696e-01  4.030e-01  -0.917
## factor(Year)2004                                -3.125e-01  4.018e-01  -0.778
## factor(Year)2005                                -3.696e-01  4.030e-01  -0.917
## factor(Year)2006                                -1.530e-01  3.992e-01  -0.383
## factor(Year)2007                                 1.134e-02  3.967e-01   0.029
## factor(Year)2008                                 6.246e-02  3.961e-01   0.158
## factor(Year)2009                                -1.592e-01  3.994e-01  -0.398
## factor(Year)2010                                 5.397e-02  3.964e-01   0.136
## factor(Year)2011                                 1.565e-03  3.971e-01   0.004
## factor(Year)2012                                -1.050e-01  3.985e-01  -0.264
## factor(Year)2013                                 1.076e-01  3.956e-01   0.272
## factor(Year)2014                                 1.602e-01  3.950e-01   0.406
## factor(Year)2015                                 2.148e-01  3.944e-01   0.545
## factor(Year)2016                                -1.540e-01  3.992e-01  -0.386
## factor(Year)2017                                 3.824e-03  3.969e-01   0.010
## factor(Year)2018                                -2.750e-01  4.015e-01  -0.685
## factor(Year)2019                                -1.643e-01  3.996e-01  -0.411
## factor(Year)2020                                -1.643e-01  3.996e-01  -0.411
##                                                 Pr(>|z|)    
## (Intercept)                                     0.001844 ** 
## dictatorship                                    0.046702 *  
## factor(Country)Albania                          2.19e-09 ***
## factor(Country)Algeria                          0.988309    
## factor(Country)Angola                           0.989671    
## factor(Country)Argentina                        3.28e-06 ***
## factor(Country)Armenia                          0.991567    
## factor(Country)Australia                        0.008043 ** 
## factor(Country)Austria                          0.986654    
## factor(Country)Azerbaijan                       0.362867    
## factor(Country)Bahamas                          0.989373    
## factor(Country)Bahrain                          0.990073    
## factor(Country)Bangladesh                       0.258160    
## factor(Country)Barbados                         1.13e-07 ***
## factor(Country)Belarus                          0.991648    
## factor(Country)Belgium                          4.46e-12 ***
## factor(Country)Belize                           0.990294    
## factor(Country)Benin                            0.772671    
## factor(Country)Bhutan                           0.103152    
## factor(Country)Bosnia and Herzegovina           0.000142 ***
## factor(Country)Botswana                         2.71e-07 ***
## factor(Country)Brazil                           5.73e-12 ***
## factor(Country)Bulgaria                         4.13e-11 ***
## factor(Country)Burkina Faso                     1.75e-09 ***
## factor(Country)Burundi                          3.48e-05 ***
## factor(Country)Cambodia                         0.804920    
## factor(Country)Cameroon                         0.988148    
## factor(Country)Canada                           4.54e-06 ***
## factor(Country)Cape Verde                       0.989602    
## factor(Country)Central African Republic         1.09e-07 ***
## factor(Country)Chad                             0.988148    
## factor(Country)Chile                            2.40e-09 ***
## factor(Country)China                            5.84e-09 ***
## factor(Country)Colombia                         0.000378 ***
## factor(Country)Costa Rica                       0.292198    
## factor(Country)Croatia                          0.991567    
## factor(Country)Cuba                             5.24e-10 ***
## factor(Country)Cyprus                           3.08e-07 ***
## factor(Country)Czech Republic                   0.991846    
## factor(Country)Democratic Republic of the Congo 5.45e-06 ***
## factor(Country)Denmark                          0.986654    
## factor(Country)Djibouti                         0.055046 .  
## factor(Country)Dominican Republic               4.64e-11 ***
## factor(Country)Ecuador                          2.68e-09 ***
## factor(Country)Egypt                            2.91e-11 ***
## factor(Country)El Salvador                      0.986723    
## factor(Country)Equatorial Guinea                0.159806    
## factor(Country)Eritrea                          0.991925    
## factor(Country)Estonia                          2.12e-06 ***
## factor(Country)Eswatini                         0.989776    
## factor(Country)Ethiopia                         8.99e-05 ***
## factor(Country)Fiji                             0.004876 ** 
## factor(Country)Finland                          1.29e-14 ***
## factor(Country)France                           4.46e-12 ***
## factor(Country)Gabon                            4.54e-08 ***
## factor(Country)Georgia                          0.991556    
## factor(Country)Germany                          0.991431    
## factor(Country)Ghana                            3.27e-07 ***
## factor(Country)Greece                           0.005713 ** 
## factor(Country)Guatemala                        1.23e-11 ***
## factor(Country)Guinea                           0.987902    
## factor(Country)Guinea-Bissau                    0.989525    
## factor(Country)Guyana                           6.56e-08 ***
## factor(Country)Haiti                            0.000600 ***
## factor(Country)Honduras                         8.54e-12 ***
## factor(Country)Hungary                          0.986706    
## factor(Country)Iceland                          1.09e-06 ***
## factor(Country)India                            7.32e-08 ***
## factor(Country)Indonesia                        7.98e-11 ***
## factor(Country)Iran                             0.063139 .  
## factor(Country)Iraq                             3.27e-06 ***
## factor(Country)Ireland                          1.09e-06 ***
## factor(Country)Israel                            < 2e-16 ***
## factor(Country)Italy                            5.59e-12 ***
## factor(Country)Ivory Coast                      0.988146    
## factor(Country)Jamaica                          2.27e-05 ***
## factor(Country)Japan                            0.078520 .  
## factor(Country)Jordan                           0.987864    
## factor(Country)Kazakhstan                       0.991648    
## factor(Country)Kenya                            3.96e-09 ***
## factor(Country)Kosovo                           0.995351    
## factor(Country)Kuwait                           0.000616 ***
## factor(Country)Kyrgyzstan                       0.991563    
## factor(Country)Laos                             0.298204    
## factor(Country)Latvia                           0.991567    
## factor(Country)Lebanon                          0.982811    
## factor(Country)Lesotho                          0.988687    
## factor(Country)Liberia                          0.016208 *  
## factor(Country)Libya                            1.83e-05 ***
## factor(Country)Lithuania                        0.991567    
## factor(Country)Luxembourg                       0.986654    
## factor(Country)Madagascar                       0.988121    
## factor(Country)Malawi                           1.47e-09 ***
## factor(Country)Malaysia                         0.001762 ** 
## factor(Country)Maldives                         0.757267    
## factor(Country)Mali                             8.26e-08 ***
## factor(Country)Malta                            2.31e-09 ***
## factor(Country)Mauritius                        4.45e-05 ***
## factor(Country)Mexico                           0.402413    
## factor(Country)Moldova                          0.991567    
## factor(Country)Mongolia                         0.986720    
## factor(Country)Montenegro                       0.994058    
## factor(Country)Morocco                          0.988691    
## factor(Country)Mozambique                       0.989694    
## factor(Country)Myanmar                          3.43e-11 ***
## factor(Country)Namibia                          0.991514    
## factor(Country)Nepal                            0.259557    
## factor(Country)Netherlands                      0.986654    
## factor(Country)New Zealand                      2.29e-10 ***
## factor(Country)Nicaragua                        0.000146 ***
## factor(Country)Niger                            0.988066    
## factor(Country)Nigeria                          5.85e-09 ***
## factor(Country)North Korea                      5.34e-09 ***
## factor(Country)North Macedonia                  0.000262 ***
## factor(Country)Norway                           2.24e-06 ***
## factor(Country)Oman                             0.989971    
## factor(Country)Pakistan                         3.05e-07 ***
## factor(Country)Panama                           0.081873 .  
## factor(Country)Papua New Guinea                 0.989593    
## factor(Country)Paraguay                         2.77e-11 ***
## factor(Country)Peru                             3.84e-06 ***
## factor(Country)Philippines                      0.592904    
## factor(Country)Poland                           1.28e-11 ***
## factor(Country)Portugal                         9.58e-12 ***
## factor(Country)Qatar                            0.989129    
## factor(Country)Republic of the Congo            0.988146    
## factor(Country)Republic of the Gambia           0.054738 .  
## factor(Country)Romania                          2.26e-11 ***
## factor(Country)Russia                           0.986783    
## factor(Country)Rwanda                           0.988339    
## factor(Country)Saudi Arabia                     0.987864    
## factor(Country)Senegal                          0.988059    
## factor(Country)Serbia                           0.991554    
## factor(Country)Sierra Leone                     2.32e-07 ***
## factor(Country)Singapore                        3.08e-05 ***
## factor(Country)Slovakia                         0.991846    
## factor(Country)Slovenia                         1.08e-06 ***
## factor(Country)Solomon Islands                  0.989939    
## factor(Country)Somalia                          0.988122    
## factor(Country)South Africa                     2.38e-14 ***
## factor(Country)South Korea                      1.41e-10 ***
## factor(Country)South Sudan                      0.995147    
## factor(Country)Spain                            1.68e-11 ***
## factor(Country)Sri Lanka                        0.115797    
## factor(Country)Sudan                            0.041183 *  
## factor(Country)Suriname                         0.989594    
## factor(Country)Sweden                           3.69e-10 ***
## factor(Country)Switzerland                      6.33e-11 ***
## factor(Country)Syria                            9.36e-09 ***
## factor(Country)Taiwan                           2.89e-10 ***
## factor(Country)Tajikistan                       0.991648    
## factor(Country)Tanzania                         0.988535    
## factor(Country)Thailand                         8.31e-11 ***
## factor(Country)Timor-Leste                      0.993261    
## factor(Country)Togo                             6.72e-05 ***
## factor(Country)Trinidad and Tobago              1.05e-05 ***
## factor(Country)Tunisia                          0.987712    
## factor(Country)Turkey                           5.08e-12 ***
## factor(Country)Turkmenistan                     0.991648    
## factor(Country)Uganda                           7.39e-09 ***
## factor(Country)Ukraine                          0.991567    
## factor(Country)United Arab Emirates             0.990073    
## factor(Country)United Kingdom                   5.06e-08 ***
## factor(Country)United States of America         2.42e-07 ***
## factor(Country)Uruguay                          5.81e-08 ***
## factor(Country)Uzbekistan                       0.991648    
## factor(Country)Venezuela                        1.35e-07 ***
## factor(Country)Vietnam                          0.989810    
## factor(Country)Yemen                            1.05e-08 ***
## factor(Country)Zambia                           0.988487    
## factor(Year)1947                                0.888407    
## factor(Year)1948                                0.752723    
## factor(Year)1949                                0.873186    
## factor(Year)1950                                0.714394    
## factor(Year)1951                                0.717852    
## factor(Year)1952                                0.453450    
## factor(Year)1953                                0.416255    
## factor(Year)1954                                0.655348    
## factor(Year)1955                                0.514598    
## factor(Year)1956                                0.950861    
## factor(Year)1957                                0.980486    
## factor(Year)1958                                0.688092    
## factor(Year)1959                                0.430193    
## factor(Year)1960                                0.211305    
## factor(Year)1961                                0.200033    
## factor(Year)1962                                0.279996    
## factor(Year)1963                                0.340394    
## factor(Year)1964                                0.411245    
## factor(Year)1965                                0.671682    
## factor(Year)1966                                0.919723    
## factor(Year)1967                                0.855265    
## factor(Year)1968                                0.257416    
## factor(Year)1969                                0.266993    
## factor(Year)1970                                0.136644    
## factor(Year)1971                                0.417132    
## factor(Year)1972                                0.265851    
## factor(Year)1973                                0.206577    
## factor(Year)1974                                0.417523    
## factor(Year)1975                                0.844565    
## factor(Year)1976                                0.609714    
## factor(Year)1977                                0.381247    
## factor(Year)1978                                0.467282    
## factor(Year)1979                                0.304706    
## factor(Year)1980                                0.648174    
## factor(Year)1981                                0.177334    
## factor(Year)1982                                0.180598    
## factor(Year)1983                                0.373654    
## factor(Year)1984                                0.371168    
## factor(Year)1985                                0.176815    
## factor(Year)1986                                0.127381    
## factor(Year)1987                                0.127381    
## factor(Year)1988                                0.092873 .  
## factor(Year)1989                                0.091576 .  
## factor(Year)1990                                0.152017    
## factor(Year)1991                                0.191863    
## factor(Year)1992                                0.077773 .  
## factor(Year)1993                                0.103258    
## factor(Year)1994                                0.100592    
## factor(Year)1995                                0.073352 .  
## factor(Year)1996                                0.133716    
## factor(Year)1997                                0.228463    
## factor(Year)1998                                0.100452    
## factor(Year)1999                                0.228197    
## factor(Year)2000                                0.178941    
## factor(Year)2001                                0.439141    
## factor(Year)2002                                0.289797    
## factor(Year)2003                                0.359008    
## factor(Year)2004                                0.436763    
## factor(Year)2005                                0.359008    
## factor(Year)2006                                0.701549    
## factor(Year)2007                                0.977190    
## factor(Year)2008                                0.874707    
## factor(Year)2009                                0.690274    
## factor(Year)2010                                0.891695    
## factor(Year)2011                                0.996855    
## factor(Year)2012                                0.792065    
## factor(Year)2013                                0.785709    
## factor(Year)2014                                0.685018    
## factor(Year)2015                                0.586081    
## factor(Year)2016                                0.699542    
## factor(Year)2017                                0.992313    
## factor(Year)2018                                0.493482    
## factor(Year)2019                                0.681063    
## factor(Year)2020                                0.681063    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 11844.3  on 10340  degrees of freedom
## Residual deviance:  7104.2  on 10097  degrees of freedom
##   (3 observations deleted due to missingness)
## AIC: 7592.2
## 
## Number of Fisher Scoring iterations: 18
## 
## Call:
## glm(formula = dynastic ~ dictatorship + v2x_polyarchy + former_british_colony + 
##     factor(Year) + factor(Country), family = binomial(link = "logit"), 
##     data = gdd_clean, na.action = na.exclude)
## 
## Coefficients: (1 not defined because of singularities)
##                                                   Estimate Std. Error z value
## (Intercept)                                       -1.28918    0.44619  -2.889
## dictatorship                                       0.23038    0.12719   1.811
## v2x_polyarchy                                      1.64381    0.29592   5.555
## former_british_colony                              2.15460    0.38103   5.655
## factor(Year)1947                                   0.10467    0.44631   0.235
## factor(Year)1948                                  -0.16131    0.44466  -0.363
## factor(Year)1949                                  -0.08298    0.44094  -0.188
## factor(Year)1950                                  -0.19198    0.44363  -0.433
## factor(Year)1951                                   0.11850    0.43384   0.273
## factor(Year)1952                                   0.27251    0.43135   0.632
## factor(Year)1953                                   0.28598    0.42982   0.665
## factor(Year)1954                                   0.11317    0.43251   0.262
## factor(Year)1955                                   0.18552    0.43154   0.430
## factor(Year)1956                                  -0.12669    0.43532  -0.291
## factor(Year)1957                                  -0.12307    0.43148  -0.285
## factor(Year)1958                                  -0.29832    0.43501  -0.686
## factor(Year)1959                                  -0.47678    0.43937  -1.085
## factor(Year)1960                                  -0.67114    0.43371  -1.547
## factor(Year)1961                                  -0.69096    0.43217  -1.599
## factor(Year)1962                                  -0.60625    0.42514  -1.426
## factor(Year)1963                                  -0.55108    0.42204  -1.306
## factor(Year)1964                                  -0.50144    0.41959  -1.195
## factor(Year)1965                                  -0.33792    0.41246  -0.819
## factor(Year)1966                                  -0.11081    0.40647  -0.273
## factor(Year)1967                                  -0.23235    0.40859  -0.569
## factor(Year)1968                                  -0.62218    0.41549  -1.497
## factor(Year)1969                                  -0.62233    0.41574  -1.497
## factor(Year)1970                                  -0.79202    0.41909  -1.890
## factor(Year)1971                                  -0.49917    0.41003  -1.217
## factor(Year)1972                                  -0.61962    0.41277  -1.501
## factor(Year)1973                                  -0.68413    0.41474  -1.650
## factor(Year)1974                                  -0.49566    0.41013  -1.209
## factor(Year)1975                                  -0.24701    0.40615  -0.608
## factor(Year)1976                                  -0.37509    0.40766  -0.920
## factor(Year)1977                                  -0.53863    0.40971  -1.315
## factor(Year)1978                                  -0.48963    0.40868  -1.198
## factor(Year)1979                                  -0.62526    0.41134  -1.520
## factor(Year)1980                                  -0.39634    0.40619  -0.976
## factor(Year)1981                                  -0.76948    0.41433  -1.857
## factor(Year)1982                                  -0.77125    0.41429  -1.862
## factor(Year)1983                                  -0.58294    0.40979  -1.423
## factor(Year)1984                                  -0.60046    0.40991  -1.465
## factor(Year)1985                                  -0.80160    0.41430  -1.935
## factor(Year)1986                                  -0.87133    0.41540  -2.098
## factor(Year)1987                                  -0.88037    0.41579  -2.117
## factor(Year)1988                                  -0.95487    0.41781  -2.285
## factor(Year)1989                                  -0.95223    0.41751  -2.281
## factor(Year)1990                                  -0.86096    0.41366  -2.081
## factor(Year)1991                                  -0.88472    0.41220  -2.146
## factor(Year)1992                                  -1.03359    0.41583  -2.486
## factor(Year)1993                                  -0.98731    0.41419  -2.384
## factor(Year)1994                                  -0.98174    0.41398  -2.371
## factor(Year)1995                                  -1.05946    0.41590  -2.547
## factor(Year)1996                                  -0.93975    0.41247  -2.278
## factor(Year)1997                                  -0.83959    0.40987  -2.048
## factor(Year)1998                                  -1.02930    0.41468  -2.482
## factor(Year)1999                                  -0.84785    0.41006  -2.068
## factor(Year)2000                                  -0.91005    0.41146  -2.212
## factor(Year)2001                                  -0.67516    0.40647  -1.661
## factor(Year)2002                                  -0.80738    0.40913  -1.973
## factor(Year)2003                                  -0.76353    0.40819  -1.871
## factor(Year)2004                                  -0.70178    0.40686  -1.725
## factor(Year)2005                                  -0.76652    0.40836  -1.877
## factor(Year)2006                                  -0.54968    0.40451  -1.359
## factor(Year)2007                                  -0.38608    0.40211  -0.960
## factor(Year)2008                                  -0.34460    0.40215  -0.857
## factor(Year)2009                                  -0.55683    0.40535  -1.374
## factor(Year)2010                                  -0.34473    0.40236  -0.857
## factor(Year)2011                                  -0.39868    0.40302  -0.989
## factor(Year)2012                                  -0.50131    0.40445  -1.240
## factor(Year)2013                                  -0.28425    0.40137  -0.708
## factor(Year)2014                                  -0.22837    0.40092  -0.570
## factor(Year)2015                                  -0.18001    0.40074  -0.449
## factor(Year)2016                                  -0.54687    0.40559  -1.348
## factor(Year)2017                                  -0.38232    0.40316  -0.948
## factor(Year)2018                                  -0.64875    0.40713  -1.593
## factor(Year)2019                                  -0.52715    0.40487  -1.302
## factor(Year)2020                                  -0.51873    0.40458  -1.282
## factor(Country)Albania                            -0.03882    0.41206  -0.094
## factor(Country)Algeria                           -18.24924 1391.20064  -0.013
## factor(Country)Angola                            -18.13545 1571.87286  -0.012
## factor(Country)Argentina                           0.13303    0.38995   0.341
## factor(Country)Armenia                           -18.36965 1950.19456  -0.009
## factor(Country)Australia                           0.47481    0.40434   1.174
## factor(Country)Austria                           -19.16783 1232.04162  -0.016
## factor(Country)Azerbaijan                          1.75264    0.47154   3.717
## factor(Country)Bahrain                            18.98251 1509.24635   0.013
## factor(Country)Bangladesh                          1.64079    0.40959   4.006
## factor(Country)Barbados                           -2.75363    0.43701  -6.301
## factor(Country)Belarus                           -18.37092 1958.38092  -0.009
## factor(Country)Belgium                            -1.86600    0.51514  -3.622
## factor(Country)Benin                               2.14194    0.40882   5.239
## factor(Country)Bhutan                              2.90404    0.41339   7.025
## factor(Country)Bosnia and Herzegovina             -0.36042    0.53320  -0.676
## factor(Country)Botswana                           -2.51443    0.42569  -5.907
## factor(Country)Brazil                             -1.63982    0.52396  -3.130
## factor(Country)Bulgaria                           -0.87586    0.44867  -1.952
## factor(Country)Burkina Faso                       -1.40427    0.55349  -2.537
## factor(Country)Burundi                             0.68583    0.40032   1.713
## factor(Country)Cambodia                            2.15234    0.39134   5.500
## factor(Country)Cameroon                          -18.29136 1380.62798  -0.013
## factor(Country)Canada                             -0.17053    0.40646  -0.420
## factor(Country)Cape Verde                        -18.72468 1564.91139  -0.012
## factor(Country)Central African Republic            0.05232    0.42520   0.123
## factor(Country)Chad                              -18.23321 1367.28189  -0.013
## factor(Country)Chile                              -0.53326    0.41868  -1.274
## factor(Country)China                               0.01380    0.40678   0.034
## factor(Country)Colombia                            0.84058    0.38214   2.200
## factor(Country)Costa Rica                          1.14244    0.40495   2.821
## factor(Country)Croatia                           -18.79862 1919.06710  -0.010
## factor(Country)Cuba                               -0.38688    0.42810  -0.904
## factor(Country)Cyprus                             -2.56716    0.41122  -6.243
## factor(Country)Czech Republic                    -19.11344 2022.40469  -0.009
## factor(Country)Democratic Republic of the Congo    0.39193    0.40509   0.968
## factor(Country)Denmark                           -19.29134 1229.41692  -0.016
## factor(Country)Djibouti                            1.36464    0.41659   3.276
## factor(Country)Dominican Republic                 -0.71107    0.44070  -1.614
## factor(Country)Ecuador                            -0.39020    0.41052  -0.950
## factor(Country)Egypt                              -3.19435    0.47315  -6.751
## factor(Country)El Salvador                       -18.46026 1224.17982  -0.015
## factor(Country)Equatorial Guinea                   2.83000    0.44354   6.380
## factor(Country)Eritrea                           -18.02846 2023.67542  -0.009
## factor(Country)Estonia                            -1.10823    0.58788  -1.885
## factor(Country)Eswatini                           18.92802 1470.45066   0.013
## factor(Country)Ethiopia                            0.82622    0.37210   2.220
## factor(Country)Fiji                               -1.38640    0.38867  -3.567
## factor(Country)Finland                            -3.51354    0.66991  -5.245
## factor(Country)France                             -1.86667    0.51529  -3.623
## factor(Country)Gabon                              -0.29039    0.44025  -0.660
## factor(Country)Georgia                           -18.56807 1943.97556  -0.010
## factor(Country)Germany                           -19.11035 1921.31786  -0.010
## factor(Country)Ghana                              -2.20799    0.39542  -5.584
## factor(Country)Greece                              0.75995    0.38759   1.961
## factor(Country)Guatemala                          -0.86157    0.46411  -1.856
## factor(Country)Guinea                            -18.20467 1347.80977  -0.014
## factor(Country)Guinea-Bissau                     -18.29967 1551.68028  -0.012
## factor(Country)Guyana                             -4.45558    0.76864  -5.797
## factor(Country)Haiti                               0.80897    0.37147   2.178
## factor(Country)Honduras                           -0.95937    0.47586  -2.016
## factor(Country)Hungary                           -18.59729 1224.09313  -0.015
## factor(Country)Iceland                            -0.35515    0.41300  -0.860
## factor(Country)India                              -2.37872    0.38586  -6.165
## factor(Country)Indonesia                          -1.83893    0.59336  -3.099
## factor(Country)Iran                                1.52004    0.36809   4.130
## factor(Country)Iraq                               -1.70212    0.36086  -4.717
## factor(Country)Ireland                            -0.34770    0.41244  -0.843
## factor(Country)Israel                             -4.67998    0.50694  -9.232
## factor(Country)Italy                              -2.15733    0.56459  -3.821
## factor(Country)Ivory Coast                       -18.41110 1362.72506  -0.014
## factor(Country)Jamaica                            -1.95883    0.39504  -4.959
## factor(Country)Japan                               0.91770    0.40379   2.273
## factor(Country)Jordan                             18.73269 1230.89062   0.015
## factor(Country)Kazakhstan                        -18.29548 1955.20394  -0.009
## factor(Country)Kenya                              -2.75245    0.46199  -5.958
## factor(Country)Kuwait                              2.10451    0.64637   3.256
## factor(Country)Kyrgyzstan                        -18.34779 1951.49502  -0.009
## factor(Country)Laos                                2.61767    0.40517   6.461
## factor(Country)Latvia                            -18.95981 1949.74734  -0.010
## factor(Country)Lebanon                             1.94610    0.38607   5.041
## factor(Country)Lesotho                           -20.60356 1427.53754  -0.014
## factor(Country)Liberia                             1.14790    0.37080   3.096
## factor(Country)Libya                              -1.47055    0.36311  -4.050
## factor(Country)Lithuania                         -19.00826 1951.99628  -0.010
## factor(Country)Luxembourg                        -19.21934 1230.69625  -0.016
## factor(Country)Madagascar                        -18.39562 1366.97685  -0.013
## factor(Country)Malawi                             -3.29708    0.53746  -6.135
## factor(Country)Malaysia                            0.92778    0.38279   2.424
## factor(Country)Maldives                           -0.14469    0.38359  -0.377
## factor(Country)Mali                               -0.11651    0.42781  -0.272
## factor(Country)Malta                              -3.29703    0.47934  -6.878
## factor(Country)Mauritius                          -2.07795    0.40866  -5.085
## factor(Country)Mexico                              1.56686    0.37828   4.142
## factor(Country)Moldova                           -18.57277 1948.12724  -0.010
## factor(Country)Mongolia                          -18.54997 1228.73801  -0.015
## factor(Country)Montenegro                        -18.88022 2772.66129  -0.007
## factor(Country)Morocco                            20.95029 1326.42002   0.016
## factor(Country)Mozambique                        -18.38779 1564.30253  -0.012
## factor(Country)Myanmar                            -3.52642    0.53232  -6.625
## factor(Country)Namibia                           -18.95287 1917.98357  -0.010
## factor(Country)Nepal                               2.61026    0.40323   6.473
## factor(Country)Netherlands                       -19.16154 1232.24221  -0.016
## factor(Country)New Zealand                        -1.17294    0.45098  -2.601
## factor(Country)Nicaragua                           0.73772    0.37270   1.979
## factor(Country)Niger                             -18.36368 1363.85548  -0.013
## factor(Country)Nigeria                            -2.52580    0.43551  -5.800
## factor(Country)North Korea                        -0.02693    0.41305  -0.065
## factor(Country)North Macedonia                     0.42164    0.49347   0.854
## factor(Country)Norway                             -0.31242    0.41242  -0.758
## factor(Country)Oman                               19.03748 1493.81617   0.013
## factor(Country)Pakistan                           -1.81627    0.36823  -4.932
## factor(Country)Panama                              1.39759    0.37900   3.688
## factor(Country)Papua New Guinea                  -18.46800 1579.27273  -0.012
## factor(Country)Paraguay                           -1.78594    0.59057  -3.024
## factor(Country)Peru                                0.23627    0.38620   0.612
## factor(Country)Philippines                         2.26472    0.40032   5.657
## factor(Country)Poland                             -1.80470    0.55244  -3.267
## factor(Country)Portugal                           -1.93045    0.55682  -3.467
## factor(Country)Qatar                              19.07847 1381.43129   0.014
## factor(Country)Republic of the Congo             -18.20471 1369.07479  -0.013
## factor(Country)Republic of the Gambia             -0.98530    0.37521  -2.626
## factor(Country)Romania                            -0.96704    0.46025  -2.101
## factor(Country)Russia                            -18.35568 1232.76039  -0.015
## factor(Country)Rwanda                            -18.22115 1391.24310  -0.013
## factor(Country)Saudi Arabia                       21.15107 1230.42025   0.017
## factor(Country)Senegal                           -18.70002 1370.49232  -0.014
## factor(Country)Serbia                            -18.47499 1941.95196  -0.010
## factor(Country)Sierra Leone                       -2.09318    0.40420  -5.179
## factor(Country)Singapore                           0.23310    0.41210   0.566
## factor(Country)Slovakia                          -19.02467 2016.86880  -0.009
## factor(Country)Slovenia                           -1.66728    0.68827  -2.422
## factor(Country)Solomon Islands                   -20.64135 1628.90694  -0.013
## factor(Country)Somalia                           -18.16513 1369.43366  -0.013
## factor(Country)South Africa                       -0.68842    0.36799  -1.871
## factor(Country)South Korea                        -2.27421    0.66212  -3.435
## factor(Country)South Sudan                       -20.53437 3394.49700  -0.006
## factor(Country)Spain                              -1.24071    0.47036  -2.638
## factor(Country)Sri Lanka                          -0.84526    0.36569  -2.311
## factor(Country)Sudan                              -0.63405    0.35887  -1.767
## factor(Country)Suriname                          -18.77421 1567.17492  -0.012
## factor(Country)Sweden                             -1.11606    0.44549  -2.505
## factor(Country)Switzerland                        -2.71332    0.67258  -4.034
## factor(Country)Syria                               0.00709    0.40211   0.018
## factor(Country)Taiwan                             -0.70708    0.44161  -1.601
## factor(Country)Tajikistan                        -18.22706 1953.06173  -0.009
## factor(Country)Tanzania                          -18.50024 1414.62307  -0.013
## factor(Country)Thailand                           -0.54657    0.43565  -1.255
## factor(Country)Timor-Leste                       -18.82401 2458.01431  -0.008
## factor(Country)Togo                                0.53296    0.39754   1.341
## factor(Country)Trinidad and Tobago                -2.13924    0.39939  -5.356
## factor(Country)Tunisia                           -18.35183 1315.37036  -0.014
## factor(Country)Turkey                             -1.27310    0.49827  -2.555
## factor(Country)Turkmenistan                      -18.08434 1952.12287  -0.009
## factor(Country)Uganda                             -2.70274    0.46041  -5.870
## factor(Country)Ukraine                           -18.43611 1950.50820  -0.009
## factor(Country)United Arab Emirates               19.08168 1512.16792   0.013
## factor(Country)United Kingdom                     -0.59643    0.42040  -1.419
## factor(Country)United States of America           -2.52798    0.39021  -6.478
## factor(Country)Uruguay                            -0.44787    0.41469  -1.080
## factor(Country)Uzbekistan                        -18.15927 1952.95158  -0.009
## factor(Country)Venezuela                          -0.05291    0.39667  -0.133
## factor(Country)Vietnam                           -18.11124 1595.43535  -0.011
## factor(Country)Yemen                                    NA         NA      NA
## factor(Country)Zambia                            -20.58289 1412.26997  -0.015
##                                                 Pr(>|z|)    
## (Intercept)                                     0.003861 ** 
## dictatorship                                    0.070083 .  
## v2x_polyarchy                                   2.78e-08 ***
## former_british_colony                           1.56e-08 ***
## factor(Year)1947                                0.814573    
## factor(Year)1948                                0.716782    
## factor(Year)1949                                0.850734    
## factor(Year)1950                                0.665196    
## factor(Year)1951                                0.784741    
## factor(Year)1952                                0.527545    
## factor(Year)1953                                0.505824    
## factor(Year)1954                                0.793585    
## factor(Year)1955                                0.667278    
## factor(Year)1956                                0.771028    
## factor(Year)1957                                0.775466    
## factor(Year)1958                                0.492862    
## factor(Year)1959                                0.277857    
## factor(Year)1960                                0.121760    
## factor(Year)1961                                0.109859    
## factor(Year)1962                                0.153870    
## factor(Year)1963                                0.191636    
## factor(Year)1964                                0.232062    
## factor(Year)1965                                0.412627    
## factor(Year)1966                                0.785158    
## factor(Year)1967                                0.569593    
## factor(Year)1968                                0.134272    
## factor(Year)1969                                0.134421    
## factor(Year)1970                                0.058780 .  
## factor(Year)1971                                0.223452    
## factor(Year)1972                                0.133325    
## factor(Year)1973                                0.099039 .  
## factor(Year)1974                                0.226835    
## factor(Year)1975                                0.543066    
## factor(Year)1976                                0.357517    
## factor(Year)1977                                0.188625    
## factor(Year)1978                                0.230887    
## factor(Year)1979                                0.128491    
## factor(Year)1980                                0.329193    
## factor(Year)1981                                0.063288 .  
## factor(Year)1982                                0.062655 .  
## factor(Year)1983                                0.154877    
## factor(Year)1984                                0.142962    
## factor(Year)1985                                0.053014 .  
## factor(Year)1986                                0.035946 *  
## factor(Year)1987                                0.034229 *  
## factor(Year)1988                                0.022288 *  
## factor(Year)1989                                0.022563 *  
## factor(Year)1990                                0.037402 *  
## factor(Year)1991                                0.031849 *  
## factor(Year)1992                                0.012932 *  
## factor(Year)1993                                0.017139 *  
## factor(Year)1994                                0.017718 *  
## factor(Year)1995                                0.010853 *  
## factor(Year)1996                                0.022707 *  
## factor(Year)1997                                0.040516 *  
## factor(Year)1998                                0.013058 *  
## factor(Year)1999                                0.038676 *  
## factor(Year)2000                                0.026983 *  
## factor(Year)2001                                0.096705 .  
## factor(Year)2002                                0.048451 *  
## factor(Year)2003                                0.061409 .  
## factor(Year)2004                                0.084548 .  
## factor(Year)2005                                0.060505 .  
## factor(Year)2006                                0.174179    
## factor(Year)2007                                0.336996    
## factor(Year)2008                                0.391514    
## factor(Year)2009                                0.169532    
## factor(Year)2010                                0.391576    
## factor(Year)2011                                0.322556    
## factor(Year)2012                                0.215159    
## factor(Year)2013                                0.478813    
## factor(Year)2014                                0.568939    
## factor(Year)2015                                0.653293    
## factor(Year)2016                                0.177553    
## factor(Year)2017                                0.342976    
## factor(Year)2018                                0.111052    
## factor(Year)2019                                0.192912    
## factor(Year)2020                                0.199789    
## factor(Country)Albania                          0.924934    
## factor(Country)Algeria                          0.989534    
## factor(Country)Angola                           0.990795    
## factor(Country)Argentina                        0.733004    
## factor(Country)Armenia                          0.992485    
## factor(Country)Australia                        0.240285    
## factor(Country)Austria                          0.987587    
## factor(Country)Azerbaijan                       0.000202 ***
## factor(Country)Bahrain                          0.989965    
## factor(Country)Bangladesh                       6.18e-05 ***
## factor(Country)Barbados                         2.96e-10 ***
## factor(Country)Belarus                          0.992515    
## factor(Country)Belgium                          0.000292 ***
## factor(Country)Benin                            1.61e-07 ***
## factor(Country)Bhutan                           2.14e-12 ***
## factor(Country)Bosnia and Herzegovina           0.499068    
## factor(Country)Botswana                         3.49e-09 ***
## factor(Country)Brazil                           0.001750 ** 
## factor(Country)Bulgaria                         0.050924 .  
## factor(Country)Burkina Faso                     0.011176 *  
## factor(Country)Burundi                          0.086675 .  
## factor(Country)Cambodia                         3.80e-08 ***
## factor(Country)Cameroon                         0.989429    
## factor(Country)Canada                           0.674813    
## factor(Country)Cape Verde                       0.990453    
## factor(Country)Central African Republic         0.902066    
## factor(Country)Chad                             0.989360    
## factor(Country)Chile                            0.202786    
## factor(Country)China                            0.972930    
## factor(Country)Colombia                         0.027830 *  
## factor(Country)Costa Rica                       0.004785 ** 
## factor(Country)Croatia                          0.992184    
## factor(Country)Cuba                             0.366145    
## factor(Country)Cyprus                           4.30e-10 ***
## factor(Country)Czech Republic                   0.992459    
## factor(Country)Democratic Republic of the Congo 0.333292    
## factor(Country)Denmark                          0.987481    
## factor(Country)Djibouti                         0.001054 ** 
## factor(Country)Dominican Republic               0.106636    
## factor(Country)Ecuador                          0.341860    
## factor(Country)Egypt                            1.47e-11 ***
## factor(Country)El Salvador                      0.987969    
## factor(Country)Equatorial Guinea                1.77e-10 ***
## factor(Country)Eritrea                          0.992892    
## factor(Country)Estonia                          0.059412 .  
## factor(Country)Eswatini                         0.989730    
## factor(Country)Ethiopia                         0.026391 *  
## factor(Country)Fiji                             0.000361 ***
## factor(Country)Finland                          1.56e-07 ***
## factor(Country)France                           0.000292 ***
## factor(Country)Gabon                            0.509519    
## factor(Country)Georgia                          0.992379    
## factor(Country)Germany                          0.992064    
## factor(Country)Ghana                            2.35e-08 ***
## factor(Country)Greece                           0.049913 *  
## factor(Country)Guatemala                        0.063401 .  
## factor(Country)Guinea                           0.989223    
## factor(Country)Guinea-Bissau                    0.990590    
## factor(Country)Guyana                           6.76e-09 ***
## factor(Country)Haiti                            0.029424 *  
## factor(Country)Honduras                         0.043790 *  
## factor(Country)Hungary                          0.987878    
## factor(Country)Iceland                          0.389835    
## factor(Country)India                            7.06e-10 ***
## factor(Country)Indonesia                        0.001940 ** 
## factor(Country)Iran                             3.64e-05 ***
## factor(Country)Iraq                             2.40e-06 ***
## factor(Country)Ireland                          0.399209    
## factor(Country)Israel                            < 2e-16 ***
## factor(Country)Italy                            0.000133 ***
## factor(Country)Ivory Coast                      0.989221    
## factor(Country)Jamaica                          7.10e-07 ***
## factor(Country)Japan                            0.023042 *  
## factor(Country)Jordan                           0.987858    
## factor(Country)Kazakhstan                       0.992534    
## factor(Country)Kenya                            2.56e-09 ***
## factor(Country)Kuwait                           0.001130 ** 
## factor(Country)Kyrgyzstan                       0.992498    
## factor(Country)Laos                             1.04e-10 ***
## factor(Country)Latvia                           0.992241    
## factor(Country)Lebanon                          4.64e-07 ***
## factor(Country)Lesotho                          0.988485    
## factor(Country)Liberia                          0.001963 ** 
## factor(Country)Libya                            5.12e-05 ***
## factor(Country)Lithuania                        0.992230    
## factor(Country)Luxembourg                       0.987540    
## factor(Country)Madagascar                       0.989263    
## factor(Country)Malawi                           8.54e-10 ***
## factor(Country)Malaysia                         0.015361 *  
## factor(Country)Maldives                         0.706023    
## factor(Country)Mali                             0.785363    
## factor(Country)Malta                            6.06e-12 ***
## factor(Country)Mauritius                        3.68e-07 ***
## factor(Country)Mexico                           3.44e-05 ***
## factor(Country)Moldova                          0.992393    
## factor(Country)Mongolia                         0.987955    
## factor(Country)Montenegro                       0.994567    
## factor(Country)Morocco                          0.987398    
## factor(Country)Mozambique                       0.990621    
## factor(Country)Myanmar                          3.48e-11 ***
## factor(Country)Namibia                          0.992116    
## factor(Country)Nepal                            9.58e-11 ***
## factor(Country)Netherlands                      0.987593    
## factor(Country)New Zealand                      0.009299 ** 
## factor(Country)Nicaragua                        0.047770 *  
## factor(Country)Niger                            0.989257    
## factor(Country)Nigeria                          6.64e-09 ***
## factor(Country)North Korea                      0.948009    
## factor(Country)North Macedonia                  0.392865    
## factor(Country)Norway                           0.448725    
## factor(Country)Oman                             0.989832    
## factor(Country)Pakistan                         8.12e-07 ***
## factor(Country)Panama                           0.000226 ***
## factor(Country)Papua New Guinea                 0.990670    
## factor(Country)Paraguay                         0.002494 ** 
## factor(Country)Peru                             0.540678    
## factor(Country)Philippines                      1.54e-08 ***
## factor(Country)Poland                           0.001088 ** 
## factor(Country)Portugal                         0.000527 ***
## factor(Country)Qatar                            0.988981    
## factor(Country)Republic of the Congo            0.989391    
## factor(Country)Republic of the Gambia           0.008640 ** 
## factor(Country)Romania                          0.035628 *  
## factor(Country)Russia                           0.988120    
## factor(Country)Rwanda                           0.989550    
## factor(Country)Saudi Arabia                     0.986285    
## factor(Country)Senegal                          0.989113    
## factor(Country)Serbia                           0.992409    
## factor(Country)Sierra Leone                     2.24e-07 ***
## factor(Country)Singapore                        0.571641    
## factor(Country)Slovakia                         0.992474    
## factor(Country)Slovenia                         0.015417 *  
## factor(Country)Solomon Islands                  0.989890    
## factor(Country)Somalia                          0.989417    
## factor(Country)South Africa                     0.061376 .  
## factor(Country)South Korea                      0.000593 ***
## factor(Country)South Sudan                      0.995173    
## factor(Country)Spain                            0.008345 ** 
## factor(Country)Sri Lanka                        0.020810 *  
## factor(Country)Sudan                            0.077261 .  
## factor(Country)Suriname                         0.990442    
## factor(Country)Sweden                           0.012238 *  
## factor(Country)Switzerland                      5.48e-05 ***
## factor(Country)Syria                            0.985932    
## factor(Country)Taiwan                           0.109341    
## factor(Country)Tajikistan                       0.992554    
## factor(Country)Tanzania                         0.989566    
## factor(Country)Thailand                         0.209617    
## factor(Country)Timor-Leste                      0.993890    
## factor(Country)Togo                             0.180039    
## factor(Country)Trinidad and Tobago              8.50e-08 ***
## factor(Country)Tunisia                          0.988868    
## factor(Country)Turkey                           0.010617 *  
## factor(Country)Turkmenistan                     0.992609    
## factor(Country)Uganda                           4.35e-09 ***
## factor(Country)Ukraine                          0.992459    
## factor(Country)United Arab Emirates             0.989932    
## factor(Country)United Kingdom                   0.155979    
## factor(Country)United States of America         9.27e-11 ***
## factor(Country)Uruguay                          0.280132    
## factor(Country)Uzbekistan                       0.992581    
## factor(Country)Venezuela                        0.893892    
## factor(Country)Vietnam                          0.990943    
## factor(Country)Yemen                                  NA    
## factor(Country)Zambia                           0.988372    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 11781.8  on 10240  degrees of freedom
## Residual deviance:  7067.3  on  9999  degrees of freedom
## AIC: 7551.3
## 
## Number of Fisher Scoring iterations: 18

3.2 Model 4: Using Dem_Type as the independent variable, with mixed (1) as the reference category

# Model 4: Using Dem_Type as the independent variable, with mixed (1) as the reference category
gdd_clean$Dem_Type <- factor(gdd_clean$Dem_Type, levels = c(1, 0, 2, 3))

model4 <- glm(dynastic ~ Dem_Type + v2x_polyarchy + former_british_colony + factor(Year) + factor(Country), data = gdd_clean, family = binomial(link = "logit"))
summary(model4)
## 
## Call:
## glm(formula = dynastic ~ Dem_Type + v2x_polyarchy + former_british_colony + 
##     factor(Year) + factor(Country), family = binomial(link = "logit"), 
##     data = gdd_clean)
## 
## Coefficients: (1 not defined because of singularities)
##                                                   Estimate Std. Error z value
## (Intercept)                                     -1.369e+00  4.826e-01  -2.837
## Dem_Type0                                        2.274e-01  2.147e-01   1.059
## Dem_Type2                                        1.489e-02  2.272e-01   0.066
## Dem_Type3                                       -4.008e-02  2.401e-01  -0.167
## v2x_polyarchy                                    1.629e+00  2.985e-01   5.459
## former_british_colony                            2.152e+00  3.808e-01   5.651
## factor(Year)1947                                 1.163e-01  4.541e-01   0.256
## factor(Year)1948                                -1.523e-01  4.526e-01  -0.336
## factor(Year)1949                                -7.008e-02  4.487e-01  -0.156
## factor(Year)1950                                -1.824e-01  4.517e-01  -0.404
## factor(Year)1951                                 1.402e-01  4.410e-01   0.318
## factor(Year)1952                                 2.986e-01  4.383e-01   0.681
## factor(Year)1953                                 3.136e-01  4.365e-01   0.718
## factor(Year)1954                                 2.214e-01  4.380e-01   0.505
## factor(Year)1955                                 2.952e-01  4.371e-01   0.675
## factor(Year)1956                                -2.050e-02  4.406e-01  -0.047
## factor(Year)1957                                -1.729e-02  4.368e-01  -0.040
## factor(Year)1958                                -1.950e-01  4.402e-01  -0.443
## factor(Year)1959                                -3.748e-01  4.444e-01  -0.843
## factor(Year)1960                                -5.710e-01  4.386e-01  -1.302
## factor(Year)1961                                -5.906e-01  4.371e-01  -1.351
## factor(Year)1962                                -5.059e-01  4.301e-01  -1.176
## factor(Year)1963                                -4.505e-01  4.270e-01  -1.055
## factor(Year)1964                                -4.005e-01  4.246e-01  -0.943
## factor(Year)1965                                -2.363e-01  4.176e-01  -0.566
## factor(Year)1966                                -8.184e-03  4.117e-01  -0.020
## factor(Year)1967                                -1.302e-01  4.137e-01  -0.315
## factor(Year)1968                                -5.225e-01  4.204e-01  -1.243
## factor(Year)1969                                -5.229e-01  4.207e-01  -1.243
## factor(Year)1970                                -6.932e-01  4.240e-01  -1.635
## factor(Year)1971                                -3.995e-01  4.151e-01  -0.963
## factor(Year)1972                                -5.206e-01  4.177e-01  -1.246
## factor(Year)1973                                -5.852e-01  4.197e-01  -1.394
## factor(Year)1974                                -3.959e-01  4.152e-01  -0.954
## factor(Year)1975                                -1.456e-01  4.114e-01  -0.354
## factor(Year)1976                                -2.745e-01  4.129e-01  -0.665
## factor(Year)1977                                -4.393e-01  4.148e-01  -1.059
## factor(Year)1978                                -3.906e-01  4.138e-01  -0.944
## factor(Year)1979                                -5.271e-01  4.164e-01  -1.266
## factor(Year)1980                                -2.968e-01  4.113e-01  -0.722
## factor(Year)1981                                -6.724e-01  4.193e-01  -1.604
## factor(Year)1982                                -6.766e-01  4.190e-01  -1.615
## factor(Year)1983                                -4.877e-01  4.146e-01  -1.176
## factor(Year)1984                                -5.053e-01  4.147e-01  -1.218
## factor(Year)1985                                -7.071e-01  4.190e-01  -1.688
## factor(Year)1986                                -7.760e-01  4.201e-01  -1.847
## factor(Year)1987                                -7.850e-01  4.205e-01  -1.867
## factor(Year)1988                                -8.597e-01  4.224e-01  -2.035
## factor(Year)1989                                -8.576e-01  4.222e-01  -2.031
## factor(Year)1990                                -7.665e-01  4.184e-01  -1.832
## factor(Year)1991                                -7.880e-01  4.169e-01  -1.890
## factor(Year)1992                                -9.378e-01  4.204e-01  -2.231
## factor(Year)1993                                -8.915e-01  4.188e-01  -2.129
## factor(Year)1994                                -8.856e-01  4.186e-01  -2.116
## factor(Year)1995                                -9.633e-01  4.205e-01  -2.291
## factor(Year)1996                                -8.438e-01  4.171e-01  -2.023
## factor(Year)1997                                -7.432e-01  4.146e-01  -1.793
## factor(Year)1998                                -9.332e-01  4.193e-01  -2.226
## factor(Year)1999                                -7.512e-01  4.148e-01  -1.811
## factor(Year)2000                                -8.138e-01  4.161e-01  -1.956
## factor(Year)2001                                -5.783e-01  4.112e-01  -1.406
## factor(Year)2002                                -7.109e-01  4.139e-01  -1.718
## factor(Year)2003                                -6.669e-01  4.130e-01  -1.615
## factor(Year)2004                                -6.050e-01  4.117e-01  -1.470
## factor(Year)2005                                -6.696e-01  4.131e-01  -1.621
## factor(Year)2006                                -4.519e-01  4.093e-01  -1.104
## factor(Year)2007                                -2.885e-01  4.070e-01  -0.709
## factor(Year)2008                                -2.466e-01  4.070e-01  -0.606
## factor(Year)2009                                -4.589e-01  4.102e-01  -1.119
## factor(Year)2010                                -2.461e-01  4.072e-01  -0.604
## factor(Year)2011                                -3.002e-01  4.079e-01  -0.736
## factor(Year)2012                                -4.032e-01  4.093e-01  -0.985
## factor(Year)2013                                -1.857e-01  4.062e-01  -0.457
## factor(Year)2014                                -1.299e-01  4.058e-01  -0.320
## factor(Year)2015                                -8.110e-02  4.056e-01  -0.200
## factor(Year)2016                                -4.988e-01  4.115e-01  -1.212
## factor(Year)2017                                -3.312e-01  4.090e-01  -0.810
## factor(Year)2018                                -6.033e-01  4.132e-01  -1.460
## factor(Year)2019                                -4.795e-01  4.109e-01  -1.167
## factor(Year)2020                                -4.709e-01  4.106e-01  -1.147
## factor(Country)Albania                          -1.070e+00  6.831e-01  -1.567
## factor(Country)Algeria                          -1.828e+01  1.511e+03  -0.012
## factor(Country)Angola                           -1.812e+01  1.664e+03  -0.011
## factor(Country)Argentina                         1.257e-01  3.952e-01   0.318
## factor(Country)Armenia                          -1.837e+01  1.951e+03  -0.009
## factor(Country)Australia                         5.208e-01  4.220e-01   1.234
## factor(Country)Austria                          -1.916e+01  1.233e+03  -0.016
## factor(Country)Azerbaijan                        1.750e+00  4.715e-01   3.712
## factor(Country)Bahrain                           1.898e+01  1.509e+03   0.013
## factor(Country)Bangladesh                        1.649e+00  4.117e-01   4.005
## factor(Country)Barbados                         -2.713e+00  4.546e-01  -5.968
## factor(Country)Belarus                          -1.837e+01  1.958e+03  -0.009
## factor(Country)Belgium                          -1.819e+00  5.293e-01  -3.436
## factor(Country)Benin                             2.128e+00  4.105e-01   5.184
## factor(Country)Bhutan                            2.904e+00  4.134e-01   7.024
## factor(Country)Bosnia and Herzegovina           -3.576e-01  5.333e-01  -0.670
## factor(Country)Botswana                         -2.515e+00  4.577e-01  -5.495
## factor(Country)Brazil                           -1.647e+00  5.286e-01  -3.116
## factor(Country)Bulgaria                         -8.727e-01  4.556e-01  -1.915
## factor(Country)Burkina Faso                     -1.407e+00  5.533e-01  -2.543
## factor(Country)Burundi                           6.740e-01  4.006e-01   1.682
## factor(Country)Cambodia                          2.145e+00  3.913e-01   5.482
## factor(Country)Cameroon                         -1.830e+01  1.381e+03  -0.013
## factor(Country)Canada                           -1.243e-01  4.244e-01  -0.293
## factor(Country)Cape Verde                       -1.873e+01  1.567e+03  -0.012
## factor(Country)Central African Republic          4.172e-02  4.255e-01   0.098
## factor(Country)Chad                             -1.824e+01  1.367e+03  -0.013
## factor(Country)Chile                            -5.416e-01  4.255e-01  -1.273
## factor(Country)China                             1.422e-02  4.065e-01   0.035
## factor(Country)Colombia                          8.260e-01  3.906e-01   2.115
## factor(Country)Costa Rica                        1.133e+00  4.149e-01   2.730
## factor(Country)Croatia                          -1.880e+01  1.920e+03  -0.010
## factor(Country)Cuba                             -3.825e-01  4.276e-01  -0.895
## factor(Country)Cyprus                           -2.578e+00  4.163e-01  -6.192
## factor(Country)Czech Republic                   -1.907e+01  2.022e+03  -0.009
## factor(Country)Democratic Republic of the Congo  3.845e-01  4.052e-01   0.949
## factor(Country)Denmark                          -1.924e+01  1.230e+03  -0.016
## factor(Country)Djibouti                          1.360e+00  4.165e-01   3.265
## factor(Country)Dominican Republic               -7.197e-01  4.449e-01  -1.618
## factor(Country)Ecuador                          -3.981e-01  4.152e-01  -0.959
## factor(Country)Egypt                            -3.189e+00  4.729e-01  -6.745
## factor(Country)El Salvador                      -1.847e+01  1.225e+03  -0.015
## factor(Country)Equatorial Guinea                 2.822e+00  4.434e-01   6.363
## factor(Country)Eritrea                          -1.803e+01  2.024e+03  -0.009
## factor(Country)Estonia                          -1.064e+00  6.010e-01  -1.770
## factor(Country)Eswatini                          1.892e+01  1.471e+03   0.013
## factor(Country)Ethiopia                          8.271e-01  3.720e-01   2.224
## factor(Country)Fiji                             -1.387e+00  3.895e-01  -3.562
## factor(Country)Finland                          -3.504e+00  6.903e-01  -5.076
## factor(Country)France                           -1.859e+00  5.416e-01  -3.433
## factor(Country)Gabon                            -2.965e-01  4.402e-01  -0.674
## factor(Country)Georgia                          -1.857e+01  1.946e+03  -0.010
## factor(Country)Germany                          -1.907e+01  1.921e+03  -0.010
## factor(Country)Ghana                            -2.219e+00  3.976e-01  -5.580
## factor(Country)Greece                            7.782e-01  3.889e-01   2.001
## factor(Country)Guatemala                        -8.695e-01  4.683e-01  -1.857
## factor(Country)Guinea                           -1.822e+01  1.348e+03  -0.014
## factor(Country)Guinea-Bissau                    -1.831e+01  1.551e+03  -0.012
## factor(Country)Guyana                           -4.460e+00  7.690e-01  -5.800
## factor(Country)Haiti                             8.099e-01  3.713e-01   2.181
## factor(Country)Honduras                         -9.683e-01  4.792e-01  -2.021
## factor(Country)Hungary                          -1.857e+01  1.225e+03  -0.015
## factor(Country)Iceland                          -3.481e-01  4.453e-01  -0.782
## factor(Country)India                            -2.335e+00  4.063e-01  -5.748
## factor(Country)Indonesia                        -1.844e+00  5.942e-01  -3.103
## factor(Country)Iran                              1.518e+00  3.679e-01   4.127
## factor(Country)Iraq                             -1.698e+00  3.605e-01  -4.711
## factor(Country)Ireland                          -3.408e-01  4.448e-01  -0.766
## factor(Country)Israel                           -4.634e+00  5.221e-01  -8.876
## factor(Country)Italy                            -2.110e+00  5.778e-01  -3.652
## factor(Country)Ivory Coast                      -1.842e+01  1.375e+03  -0.013
## factor(Country)Jamaica                          -1.924e+00  4.107e-01  -4.684
## factor(Country)Japan                             9.611e-01  4.219e-01   2.278
## factor(Country)Jordan                            1.873e+01  1.232e+03   0.015
## factor(Country)Kazakhstan                       -1.830e+01  1.955e+03  -0.009
## factor(Country)Kenya                            -2.763e+00  4.633e-01  -5.964
## factor(Country)Kuwait                            2.099e+00  6.463e-01   3.249
## factor(Country)Kyrgyzstan                       -1.835e+01  1.951e+03  -0.009
## factor(Country)Laos                              2.609e+00  4.051e-01   6.440
## factor(Country)Latvia                           -1.892e+01  1.950e+03  -0.010
## factor(Country)Lebanon                           1.961e+00  3.888e-01   5.045
## factor(Country)Lesotho                          -2.060e+01  1.429e+03  -0.014
## factor(Country)Liberia                           1.147e+00  3.708e-01   3.092
## factor(Country)Libya                            -1.474e+00  3.629e-01  -4.063
## factor(Country)Lithuania                        -1.901e+01  1.952e+03  -0.010
## factor(Country)Luxembourg                       -1.917e+01  1.232e+03  -0.016
## factor(Country)Madagascar                       -1.840e+01  1.367e+03  -0.013
## factor(Country)Malawi                           -3.308e+00  5.392e-01  -6.136
## factor(Country)Malaysia                          9.202e-01  3.840e-01   2.396
## factor(Country)Maldives                         -1.514e-01  3.836e-01  -0.395
## factor(Country)Mali                             -1.230e-01  4.361e-01  -0.282
## factor(Country)Malta                            -3.257e+00  4.954e-01  -6.574
## factor(Country)Mauritius                        -2.037e+00  4.276e-01  -4.764
## factor(Country)Mexico                            1.564e+00  3.790e-01   4.128
## factor(Country)Moldova                          -1.854e+01  1.948e+03  -0.010
## factor(Country)Mongolia                         -1.855e+01  1.230e+03  -0.015
## factor(Country)Montenegro                       -1.887e+01  2.772e+03  -0.007
## factor(Country)Morocco                           2.094e+01  1.327e+03   0.016
## factor(Country)Mozambique                       -1.839e+01  1.565e+03  -0.012
## factor(Country)Myanmar                          -3.523e+00  5.337e-01  -6.602
## factor(Country)Namibia                          -1.895e+01  1.918e+03  -0.010
## factor(Country)Nepal                             2.620e+00  4.054e-01   6.463
## factor(Country)Netherlands                      -1.911e+01  1.233e+03  -0.016
## factor(Country)New Zealand                      -1.124e+00  4.669e-01  -2.408
## factor(Country)Nicaragua                         7.318e-01  3.743e-01   1.955
## factor(Country)Niger                            -1.837e+01  1.365e+03  -0.013
## factor(Country)Nigeria                          -2.534e+00  4.368e-01  -5.802
## factor(Country)North Korea                      -2.946e-02  4.129e-01  -0.071
## factor(Country)North Macedonia                   4.206e-01  5.223e-01   0.805
## factor(Country)Norway                           -2.653e-01  4.297e-01  -0.617
## factor(Country)Oman                              1.903e+01  1.494e+03   0.013
## factor(Country)Pakistan                         -1.796e+00  3.730e-01  -4.815
## factor(Country)Panama                            1.387e+00  3.835e-01   3.618
## factor(Country)Papua New Guinea                 -1.843e+01  1.579e+03  -0.012
## factor(Country)Paraguay                         -1.790e+00  5.918e-01  -3.024
## factor(Country)Peru                              2.298e-01  3.899e-01   0.589
## factor(Country)Philippines                       2.253e+00  4.044e-01   5.572
## factor(Country)Poland                           -1.801e+00  5.597e-01  -3.217
## factor(Country)Portugal                         -1.926e+00  5.694e-01  -3.382
## factor(Country)Qatar                             1.907e+01  1.381e+03   0.014
## factor(Country)Republic of the Congo            -1.821e+01  1.369e+03  -0.013
## factor(Country)Republic of the Gambia           -9.887e-01  3.752e-01  -2.635
## factor(Country)Romania                          -9.636e-01  4.667e-01  -2.064
## factor(Country)Russia                           -1.835e+01  1.233e+03  -0.015
## factor(Country)Rwanda                           -1.823e+01  1.391e+03  -0.013
## factor(Country)Saudi Arabia                      2.115e+01  1.231e+03   0.017
## factor(Country)Senegal                          -1.870e+01  1.371e+03  -0.014
## factor(Country)Serbia                           -1.845e+01  1.943e+03  -0.009
## factor(Country)Sierra Leone                     -2.100e+00  4.052e-01  -5.183
## factor(Country)Singapore                         2.286e-01  4.121e-01   0.555
## factor(Country)Slovakia                         -1.902e+01  2.017e+03  -0.009
## factor(Country)Slovenia                         -1.637e+00  6.934e-01  -2.361
## factor(Country)Solomon Islands                  -2.060e+01  1.629e+03  -0.013
## factor(Country)Somalia                          -1.817e+01  1.370e+03  -0.013
## factor(Country)South Africa                     -6.669e-01  3.715e-01  -1.795
## factor(Country)South Korea                      -2.281e+00  6.633e-01  -3.438
## factor(Country)South Sudan                      -2.052e+01  3.393e+03  -0.006
## factor(Country)Spain                            -1.209e+00  4.777e-01  -2.530
## factor(Country)Sri Lanka                        -8.354e-01  3.673e-01  -2.274
## factor(Country)Sudan                            -6.311e-01  3.603e-01  -1.751
## factor(Country)Suriname                         -1.878e+01  1.567e+03  -0.012
## factor(Country)Sweden                           -1.068e+00  4.616e-01  -2.314
## factor(Country)Switzerland                      -2.721e+00  6.786e-01  -4.010
## factor(Country)Syria                             7.387e-03  4.025e-01   0.018
## factor(Country)Taiwan                           -7.066e-01  4.468e-01  -1.582
## factor(Country)Tajikistan                       -1.823e+01  1.953e+03  -0.009
## factor(Country)Tanzania                         -1.850e+01  1.415e+03  -0.013
## factor(Country)Thailand                         -5.291e-01  4.386e-01  -1.206
## factor(Country)Timor-Leste                      -1.882e+01  2.458e+03  -0.008
## factor(Country)Togo                              5.265e-01  3.974e-01   1.325
## factor(Country)Trinidad and Tobago              -2.100e+00  4.188e-01  -5.014
## factor(Country)Tunisia                          -1.836e+01  1.315e+03  -0.014
## factor(Country)Turkey                           -1.271e+00  5.208e-01  -2.441
## factor(Country)Turkmenistan                     -1.809e+01  1.952e+03  -0.009
## factor(Country)Uganda                           -2.709e+00  4.604e-01  -5.884
## factor(Country)Ukraine                          -1.844e+01  1.951e+03  -0.009
## factor(Country)United Arab Emirates              1.908e+01  1.512e+03   0.013
## factor(Country)United Kingdom                   -5.490e-01  4.375e-01  -1.255
## factor(Country)United States of America         -2.535e+00  4.002e-01  -6.333
## factor(Country)Uruguay                          -4.542e-01  4.226e-01  -1.075
## factor(Country)Uzbekistan                       -1.816e+01  1.953e+03  -0.009
## factor(Country)Venezuela                        -6.438e-02  4.031e-01  -0.160
## factor(Country)Vietnam                          -1.812e+01  1.596e+03  -0.011
## factor(Country)Yemen                                    NA         NA      NA
## factor(Country)Zambia                           -2.059e+01  1.412e+03  -0.015
##                                                 Pr(>|z|)    
## (Intercept)                                     0.004552 ** 
## Dem_Type0                                       0.289534    
## Dem_Type2                                       0.947738    
## Dem_Type3                                       0.867389    
## v2x_polyarchy                                   4.79e-08 ***
## former_british_colony                           1.59e-08 ***
## factor(Year)1947                                0.797950    
## factor(Year)1948                                0.736589    
## factor(Year)1949                                0.875893    
## factor(Year)1950                                0.686399    
## factor(Year)1951                                0.750539    
## factor(Year)1952                                0.495679    
## factor(Year)1953                                0.472538    
## factor(Year)1954                                0.613234    
## factor(Year)1955                                0.499509    
## factor(Year)1956                                0.962900    
## factor(Year)1957                                0.968432    
## factor(Year)1958                                0.657696    
## factor(Year)1959                                0.398962    
## factor(Year)1960                                0.192955    
## factor(Year)1961                                0.176651    
## factor(Year)1962                                0.239492    
## factor(Year)1963                                0.291425    
## factor(Year)1964                                0.345508    
## factor(Year)1965                                0.571469    
## factor(Year)1966                                0.984138    
## factor(Year)1967                                0.752938    
## factor(Year)1968                                0.213939    
## factor(Year)1969                                0.213923    
## factor(Year)1970                                0.102043    
## factor(Year)1971                                0.335761    
## factor(Year)1972                                0.212717    
## factor(Year)1973                                0.163225    
## factor(Year)1974                                0.340283    
## factor(Year)1975                                0.723429    
## factor(Year)1976                                0.506086    
## factor(Year)1977                                0.289583    
## factor(Year)1978                                0.345130    
## factor(Year)1979                                0.205524    
## factor(Year)1980                                0.470529    
## factor(Year)1981                                0.108776    
## factor(Year)1982                                0.106351    
## factor(Year)1983                                0.239429    
## factor(Year)1984                                0.223072    
## factor(Year)1985                                0.091480 .  
## factor(Year)1986                                0.064707 .  
## factor(Year)1987                                0.061899 .  
## factor(Year)1988                                0.041851 *  
## factor(Year)1989                                0.042219 *  
## factor(Year)1990                                0.066932 .  
## factor(Year)1991                                0.058699 .  
## factor(Year)1992                                0.025704 *  
## factor(Year)1993                                0.033289 *  
## factor(Year)1994                                0.034379 *  
## factor(Year)1995                                0.021977 *  
## factor(Year)1996                                0.043096 *  
## factor(Year)1997                                0.073032 .  
## factor(Year)1998                                0.026041 *  
## factor(Year)1999                                0.070110 .  
## factor(Year)2000                                0.050520 .  
## factor(Year)2001                                0.159611    
## factor(Year)2002                                0.085845 .  
## factor(Year)2003                                0.106369    
## factor(Year)2004                                0.141651    
## factor(Year)2005                                0.105057    
## factor(Year)2006                                0.269652    
## factor(Year)2007                                0.478468    
## factor(Year)2008                                0.544564    
## factor(Year)2009                                0.263190    
## factor(Year)2010                                0.545620    
## factor(Year)2011                                0.461690    
## factor(Year)2012                                0.324493    
## factor(Year)2013                                0.647591    
## factor(Year)2014                                0.748901    
## factor(Year)2015                                0.841503    
## factor(Year)2016                                0.225525    
## factor(Year)2017                                0.418079    
## factor(Year)2018                                0.144344    
## factor(Year)2019                                0.243215    
## factor(Year)2020                                0.251410    
## factor(Country)Albania                          0.117161    
## factor(Country)Algeria                          0.990346    
## factor(Country)Angola                           0.991309    
## factor(Country)Argentina                        0.750461    
## factor(Country)Armenia                          0.992489    
## factor(Country)Australia                        0.217206    
## factor(Country)Austria                          0.987599    
## factor(Country)Azerbaijan                       0.000206 ***
## factor(Country)Bahrain                          0.989969    
## factor(Country)Bangladesh                       6.21e-05 ***
## factor(Country)Barbados                         2.40e-09 ***
## factor(Country)Belarus                          0.992515    
## factor(Country)Belgium                          0.000590 ***
## factor(Country)Benin                            2.17e-07 ***
## factor(Country)Bhutan                           2.15e-12 ***
## factor(Country)Bosnia and Herzegovina           0.502558    
## factor(Country)Botswana                         3.90e-08 ***
## factor(Country)Brazil                           0.001831 ** 
## factor(Country)Bulgaria                         0.055443 .  
## factor(Country)Burkina Faso                     0.011000 *  
## factor(Country)Burundi                          0.092497 .  
## factor(Country)Cambodia                         4.21e-08 ***
## factor(Country)Cameroon                         0.989427    
## factor(Country)Canada                           0.769674    
## factor(Country)Cape Verde                       0.990462    
## factor(Country)Central African Republic         0.921888    
## factor(Country)Chad                             0.989357    
## factor(Country)Chile                            0.202996    
## factor(Country)China                            0.972106    
## factor(Country)Colombia                         0.034457 *  
## factor(Country)Costa Rica                       0.006330 ** 
## factor(Country)Croatia                          0.992187    
## factor(Country)Cuba                             0.370966    
## factor(Country)Cyprus                           5.94e-10 ***
## factor(Country)Czech Republic                   0.992477    
## factor(Country)Democratic Republic of the Congo 0.342597    
## factor(Country)Denmark                          0.987523    
## factor(Country)Djibouti                         0.001095 ** 
## factor(Country)Dominican Republic               0.105746    
## factor(Country)Ecuador                          0.337746    
## factor(Country)Egypt                            1.53e-11 ***
## factor(Country)El Salvador                      0.987976    
## factor(Country)Equatorial Guinea                1.98e-10 ***
## factor(Country)Eritrea                          0.992891    
## factor(Country)Estonia                          0.076722 .  
## factor(Country)Eswatini                         0.989733    
## factor(Country)Ethiopia                         0.026181 *  
## factor(Country)Fiji                             0.000368 ***
## factor(Country)Finland                          3.85e-07 ***
## factor(Country)France                           0.000598 ***
## factor(Country)Gabon                            0.500497    
## factor(Country)Georgia                          0.992385    
## factor(Country)Germany                          0.992083    
## factor(Country)Ghana                            2.41e-08 ***
## factor(Country)Greece                           0.045393 *  
## factor(Country)Guatemala                        0.063358 .  
## factor(Country)Guinea                           0.989216    
## factor(Country)Guinea-Bissau                    0.990586    
## factor(Country)Guyana                           6.63e-09 ***
## factor(Country)Haiti                            0.029151 *  
## factor(Country)Honduras                         0.043296 *  
## factor(Country)Hungary                          0.987907    
## factor(Country)Iceland                          0.434284    
## factor(Country)India                            9.04e-09 ***
## factor(Country)Indonesia                        0.001916 ** 
## factor(Country)Iran                             3.67e-05 ***
## factor(Country)Iraq                             2.46e-06 ***
## factor(Country)Ireland                          0.443548    
## factor(Country)Israel                            < 2e-16 ***
## factor(Country)Italy                            0.000260 ***
## factor(Country)Ivory Coast                      0.989308    
## factor(Country)Jamaica                          2.82e-06 ***
## factor(Country)Japan                            0.022732 *  
## factor(Country)Jordan                           0.987866    
## factor(Country)Kazakhstan                       0.992534    
## factor(Country)Kenya                            2.46e-09 ***
## factor(Country)Kuwait                           0.001160 ** 
## factor(Country)Kyrgyzstan                       0.992498    
## factor(Country)Laos                             1.19e-10 ***
## factor(Country)Latvia                           0.992260    
## factor(Country)Lebanon                          4.54e-07 ***
## factor(Country)Lesotho                          0.988497    
## factor(Country)Liberia                          0.001985 ** 
## factor(Country)Libya                            4.84e-05 ***
## factor(Country)Lithuania                        0.992232    
## factor(Country)Luxembourg                       0.987580    
## factor(Country)Madagascar                       0.989261    
## factor(Country)Malawi                           8.44e-10 ***
## factor(Country)Malaysia                         0.016570 *  
## factor(Country)Maldives                         0.693043    
## factor(Country)Mali                             0.777966    
## factor(Country)Malta                            4.90e-11 ***
## factor(Country)Mauritius                        1.90e-06 ***
## factor(Country)Mexico                           3.67e-05 ***
## factor(Country)Moldova                          0.992409    
## factor(Country)Mongolia                         0.987964    
## factor(Country)Montenegro                       0.994567    
## factor(Country)Morocco                          0.987405    
## factor(Country)Mozambique                       0.990622    
## factor(Country)Myanmar                          4.07e-11 ***
## factor(Country)Namibia                          0.992119    
## factor(Country)Nepal                            1.02e-10 ***
## factor(Country)Netherlands                      0.987631    
## factor(Country)New Zealand                      0.016021 *  
## factor(Country)Nicaragua                        0.050545 .  
## factor(Country)Niger                            0.989259    
## factor(Country)Nigeria                          6.57e-09 ***
## factor(Country)North Korea                      0.943118    
## factor(Country)North Macedonia                  0.420665    
## factor(Country)Norway                           0.536991    
## factor(Country)Oman                             0.989838    
## factor(Country)Pakistan                         1.47e-06 ***
## factor(Country)Panama                           0.000297 ***
## factor(Country)Papua New Guinea                 0.990687    
## factor(Country)Paraguay                         0.002496 ** 
## factor(Country)Peru                             0.555592    
## factor(Country)Philippines                      2.53e-08 ***
## factor(Country)Poland                           0.001295 ** 
## factor(Country)Portugal                         0.000719 ***
## factor(Country)Qatar                            0.988986    
## factor(Country)Republic of the Congo            0.989386    
## factor(Country)Republic of the Gambia           0.008417 ** 
## factor(Country)Romania                          0.038975 *  
## factor(Country)Russia                           0.988128    
## factor(Country)Rwanda                           0.989546    
## factor(Country)Saudi Arabia                     0.986297    
## factor(Country)Senegal                          0.989112    
## factor(Country)Serbia                           0.992424    
## factor(Country)Sierra Leone                     2.18e-07 ***
## factor(Country)Singapore                        0.579112    
## factor(Country)Slovakia                         0.992477    
## factor(Country)Slovenia                         0.018248 *  
## factor(Country)Solomon Islands                  0.989911    
## factor(Country)Somalia                          0.989419    
## factor(Country)South Africa                     0.072578 .  
## factor(Country)South Korea                      0.000585 ***
## factor(Country)South Sudan                      0.995174    
## factor(Country)Spain                            0.011404 *  
## factor(Country)Sri Lanka                        0.022961 *  
## factor(Country)Sudan                            0.079875 .  
## factor(Country)Suriname                         0.990436    
## factor(Country)Sweden                           0.020671 *  
## factor(Country)Switzerland                      6.08e-05 ***
## factor(Country)Syria                            0.985358    
## factor(Country)Taiwan                           0.113747    
## factor(Country)Tajikistan                       0.992553    
## factor(Country)Tanzania                         0.989564    
## factor(Country)Thailand                         0.227749    
## factor(Country)Timor-Leste                      0.993891    
## factor(Country)Togo                             0.185165    
## factor(Country)Trinidad and Tobago              5.34e-07 ***
## factor(Country)Tunisia                          0.988862    
## factor(Country)Turkey                           0.014649 *  
## factor(Country)Turkmenistan                     0.992608    
## factor(Country)Uganda                           4.02e-09 ***
## factor(Country)Ukraine                          0.992458    
## factor(Country)United Arab Emirates             0.989937    
## factor(Country)United Kingdom                   0.209529    
## factor(Country)United States of America         2.40e-10 ***
## factor(Country)Uruguay                          0.282526    
## factor(Country)Uzbekistan                       0.992581    
## factor(Country)Venezuela                        0.873107    
## factor(Country)Vietnam                          0.990940    
## factor(Country)Yemen                                  NA    
## factor(Country)Zambia                           0.988368    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 11720.8  on 10184  degrees of freedom
## Residual deviance:  7016.1  on  9941  degrees of freedom
##   (56 observations deleted due to missingness)
## AIC: 7504.1
## 
## Number of Fisher Scoring iterations: 18

4 Dynastic Rule and Democracy (based on Predicted probabilites)

4.1 Predicted Probability of Dynastic Leadership and Other IVs (Some Plots)

## `geom_smooth()` using formula = 'y ~ x'

## `geom_smooth()` using formula = 'y ~ x'

## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 80 rows containing non-finite outside the scale range
## (`stat_smooth()`).

## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 80 rows containing non-finite outside the scale range
## (`stat_smooth()`).

## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 1709 rows containing non-finite outside the scale range
## (`stat_smooth()`).

5 Boix’s Democracy Classification and Some Results

The results in this section are based on Boix’s definition of democracy and a defined cut-off. This will only include analysis for countries that are classified democracies according to the e_boix variable where Charles Boix classifies democracies/non democracies as 0 and 1. The Cut off Point we choose here for our analysis is to include all countries that have been democracies for at least 25% of their lifetime since 1945.

5.1 How do the Different Dynasts differ in Democracies?

Before we proceed, it is crucial to note that now we are also adding a variable based on the different types of dynasts we have already explained before in order to make the analysis a bit more nuanced. We are adding a variable called “dynast_type” to account for the categorical variation in the types of dynasts that we have. In this classification we have a pure non-dynast (0, no family before or after the said leader is in politics), dynasty-ender (1, definitely has a predecessor in politics but does not have a successor in politics), the DYNAST (2,definitely has a predecessor in politics may or may not have a successor in politics), Dynasty-former (3, does not have any family in politics preceding him/her but definitely leaves a successor in politics), and finally dynasty-sustainer (4, necessarily has both a predecessor and successor in politics). First we will look at some basic characteristic differences in thse kind of dynasts using a basic difference in mean test (education, Spell [the number of time a leader has been in office], tenure length, is also in business)

5.1.1 Comparisons Across All Categories

5.1.2 Comparisons Across Dynasts with predecessors/sucessors at the national level

5.2 The Relationship Between Polyarchy Scores (Level of Minimal Democracy) and Dynasticism (As a Continuous Variable)

Dynastic Variable (0/1) is recoded here as a continuous variable in terms of a dynastic score that varies between 0 and 1 to indicate that up until point t in time for a country i how long Dynastic rule has prevailed (Eg. 1970 in India would mean) TWO BASIC GRAPHS

## 
## ===============================================
##                         Dependent variable:    
##                     ---------------------------
##                         Dynastic_Proportion    
## -----------------------------------------------
## v2x_polyarchy                -0.040***         
##                               (0.012)          
##                                                
## Constant                     0.224***          
##                               (0.008)          
##                                                
## -----------------------------------------------
## Observations                   6,298           
## R2                             0.002           
## Adjusted R2                    0.002           
## Residual Std. Error      0.267 (df = 6296)     
## F Statistic          10.567*** (df = 1; 6296)  
## ===============================================
## Note:               *p<0.1; **p<0.05; ***p<0.01
## 
## ===============================================
##                         Dependent variable:    
##                     ---------------------------
##                         Dynastic_Proportion    
## -----------------------------------------------
## v2x_polyarchy                0.121***          
##                               (0.024)          
##                                                
## log_gdp_percap               -0.021***         
##                               (0.003)          
##                                                
## v2xnp_regcorr                 0.035*           
##                               (0.018)          
##                                                
## v2caviol                     0.030***          
##                               (0.003)          
##                                                
## v2cademmob                   -0.026***         
##                               (0.004)          
##                                                
## Constant                     0.291***          
##                               (0.027)          
##                                                
## -----------------------------------------------
## Observations                   5,169           
## R2                             0.034           
## Adjusted R2                    0.033           
## Residual Std. Error      0.258 (df = 5163)     
## F Statistic          36.299*** (df = 5; 5163)  
## ===============================================
## Note:               *p<0.1; **p<0.05; ***p<0.01
## 
## =============================================
##                       Dependent variable:    
##                   ---------------------------
##                       Dynastic_Proportion    
## ---------------------------------------------
## v2x_polyarchy              -0.249**          
##                             (0.115)          
##                                              
## Constant                   -1.237***         
##                             (0.071)          
##                                              
## ---------------------------------------------
## Observations                 6,298           
## Log Likelihood            -2,675.470         
## Akaike Inf. Crit.          5,354.939         
## =============================================
## Note:             *p<0.1; **p<0.05; ***p<0.01

## 
## =============================================
##                       Dependent variable:    
##                   ---------------------------
##                       Dynastic_Proportion    
## ---------------------------------------------
## v2x_polyarchy              0.753***          
##                             (0.236)          
##                                              
## log_gdp_percap             -0.130***         
##                             (0.032)          
##                                              
## v2xnp_regcorr                0.218           
##                             (0.172)          
##                                              
## v2caviol                   0.180***          
##                             (0.031)          
##                                              
## v2cademmob                 -0.160***         
##                             (0.034)          
##                                              
## Constant                   -0.835***         
##                             (0.256)          
##                                              
## ---------------------------------------------
## Observations                 5,169           
## Log Likelihood            -2,173.792         
## Akaike Inf. Crit.          4,359.584         
## =============================================
## Note:             *p<0.1; **p<0.05; ***p<0.01

5.3 Corruption and Dynasticism

Corruption here is Regime Corruption borrowed from VDem and the specific variable details are:

5.4 Mean Polyarchy Scores in Democracies

6 Some Regressions (For democracies ONLY as classified before based on Boix classification and 25% cut-off)

This section covers some basic regressions treating Dynasticism as a DV against other other variables like democracy scores, regime corruption level, media censorship (v2mecenefm), clean elections (v2xel_frefair), former british colony. These are all fixed effects linear models with country and year fixed effects in place and the standard error is clustered at the country level.

6.1 Electoral Democracy and Dynasticism

Are democracies and dynastic leadership compatible (and are former British Colonies likely to be more dynastic?)?

## 
## Call:
##    felm(formula = dynastic ~ v2x_polyarchy + log_gdp_percap + v2xnp_regcorr +      former_british_colony | Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.61674 -0.23353 -0.15014 -0.03866  1.10276 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)  
## v2x_polyarchy          0.28052      0.13100   2.141   0.0646 .
## log_gdp_percap         0.01842      0.01044   1.765   0.1156  
## v2xnp_regcorr          0.13401      0.06399   2.094   0.0695 .
## former_british_colony -0.02224      0.04322  -0.515   0.6207  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.395 on 5155 degrees of freedom
##   (1070 observations deleted due to missingness)
## Multiple R-squared(full model): 0.08255   Adjusted R-squared: 0.06974 
## Multiple R-squared(proj model): 0.01446   Adjusted R-squared: 0.0006929 
## F-statistic(full model, *iid*):6.442 on 72 and 5155 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 4.787 on 4 and 8 DF, p-value: 0.02882

This regression results seems to suggest that Dynasties and democracies have been historically compatible. Specifically, A one-unit increase in the electoral democracy score (v2x_polyarchy) is associated with a 33.1 percentage point increase in the probability of that polity being dynastic, according to a linear model probability design.

The significant positive relationship between electoral democracy and dynastic regimes suggests that higher levels of electoral democracy might coexist with dynastic regimes. However, the economic and corruption-related predictors, as well as the colonial history, do not show a significant impact on dynastic regimes in this model.

6.2 Dynasticism and Free and Fair Elections

Is dynastic leadership more likely to produce less free and fair elections?

## 
## Call:
##    felm(formula = v2xel_frefair ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.67384 -0.12799  0.01546  0.14417  0.54483 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)    
## dynastic               0.03782      0.01691   2.236   0.0558 .  
## log_gdp_percap         0.15606      0.01179  13.235 1.01e-06 ***
## former_british_colony  0.03822      0.02775   1.378   0.2057    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.207 on 5156 degrees of freedom
##   (1070 observations deleted due to missingness)
## Multiple R-squared(full model): 0.5883   Adjusted R-squared: 0.5826 
## Multiple R-squared(proj model): 0.3188   Adjusted R-squared: 0.3094 
## F-statistic(full model, *iid*):103.8 on 71 and 5156 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 93.54 on 3 and 8 DF, p-value: 1.437e-06

Consistent with our claim on compatibility with democracies, dynastic leadership is in fact not bad for free and fair elections.

6.3 Is Dynastic Leadership more likely to produce Corrupt regimes?

## 
## Call:
##    felm(formula = v2xnp_regcorr ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.57432 -0.10974  0.00626  0.11851  0.64977 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)    
## dynastic               0.00410      0.01152   0.356    0.731    
## log_gdp_percap        -0.17402      0.01795  -9.696 1.07e-05 ***
## former_british_colony -0.07153      0.08087  -0.884    0.402    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1885 on 5156 degrees of freedom
##   (1070 observations deleted due to missingness)
## Multiple R-squared(full model): 0.6252   Adjusted R-squared:  0.62 
## Multiple R-squared(proj model): 0.4126   Adjusted R-squared: 0.4045 
## F-statistic(full model, *iid*):121.1 on 71 and 5156 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 171.2 on 3 and 8 DF, p-value: 1.352e-07

No significant relationship between dynastic leadership and more regime corruption (leaders using offices for private gain).

6.4 Dynastic Leadership and Barriers to other parties?

v2psbars

## 
## Call:
##    felm(formula = v2psbars ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.3321 -0.5152  0.1301  0.7048  2.1829 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)    
## dynastic               0.19612      0.10108   1.940   0.0883 .  
## log_gdp_percap         0.36636      0.03923   9.339 1.41e-05 ***
## former_british_colony  0.35621      0.19274   1.848   0.1018    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9967 on 5156 degrees of freedom
##   (1070 observations deleted due to missingness)
## Multiple R-squared(full model): 0.3604   Adjusted R-squared: 0.3516 
## Multiple R-squared(proj model): 0.1212   Adjusted R-squared: 0.1091 
## F-statistic(full model, *iid*):40.92 on 71 and 5156 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 40.21 on 3 and 8 DF, p-value: 3.589e-05

6.5 Dynastic Leadership and Candidate Selection

v2pscnslnl

## 
## Call:
##    felm(formula = v2pscnslnl ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.8105 -0.5681 -0.0269  0.5566  3.2184 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)   
## dynastic               0.06496      0.08201   0.792  0.45115   
## log_gdp_percap         0.55793      0.11580   4.818  0.00132 **
## former_british_colony  0.46326      0.35810   1.294  0.23189   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9798 on 5156 degrees of freedom
##   (1070 observations deleted due to missingness)
## Multiple R-squared(full model): 0.4342   Adjusted R-squared: 0.4264 
## Multiple R-squared(proj model): 0.2299   Adjusted R-squared: 0.2192 
## F-statistic(full model, *iid*):55.73 on 71 and 5156 DF, p-value: < 2.2e-16 
## F-statistic(proj model):  21.1 on 3 and 8 DF, p-value: 0.000372

6.6 Dynastic Leadership and Regime’s opposition Groups Size

v2regoppgroupssize

## 
## Call:
##    felm(formula = v2regoppgroupssize ~ dynastic + log_gdp_percap +      former_british_colony | Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.2050 -0.7602 -0.1631  0.5785  4.1010 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)  
## dynastic              -0.18365      0.09496  -1.934   0.0892 .
## log_gdp_percap        -0.46545      0.16255  -2.863   0.0210 *
## former_british_colony  0.35694      0.35641   1.002   0.3459  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.133 on 5150 degrees of freedom
##   (1076 observations deleted due to missingness)
## Multiple R-squared(full model): 0.4896   Adjusted R-squared: 0.4826 
## Multiple R-squared(proj model): 0.1296   Adjusted R-squared: 0.1176 
## F-statistic(full model, *iid*):69.58 on 71 and 5150 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 8.019 on 3 and 8 DF, p-value: 0.008535

6.7 Dynastic Leadership and Regiorous and Impartial Public Administration

v2clrspct

## 
## Call:
##    felm(formula = v2clrspct ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -3.08448 -0.56879  0.04993  0.57955  2.73352 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)    
## dynastic               0.10061      0.12933   0.778    0.459    
## log_gdp_percap         0.81523      0.09200   8.861 2.08e-05 ***
## former_british_colony  0.03894      0.17536   0.222    0.830    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9318 on 5156 degrees of freedom
##   (1070 observations deleted due to missingness)
## Multiple R-squared(full model): 0.6293   Adjusted R-squared: 0.6242 
## Multiple R-squared(proj model): 0.3786   Adjusted R-squared: 0.3701 
## F-statistic(full model, *iid*):123.3 on 71 and 5156 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 31.17 on 3 and 8 DF, p-value: 9.187e-05

6.8 Dynastic Leadership and State Ownership of Enterprise

v2clstown

## 
## Call:
##    felm(formula = v2clstown ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.0989 -0.3966  0.0391  0.4527  2.3472 
## 
## Coefficients:
##                        Estimate Cluster s.e. t value Pr(>|t|)    
## dynastic              -0.001786     0.103878  -0.017 0.986705    
## log_gdp_percap         0.246720     0.048832   5.052 0.000986 ***
## former_british_colony -0.233124     0.132801  -1.755 0.117257    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7346 on 5156 degrees of freedom
##   (1070 observations deleted due to missingness)
## Multiple R-squared(full model): 0.3814   Adjusted R-squared: 0.3729 
## Multiple R-squared(proj model): 0.08967   Adjusted R-squared: 0.07713 
## F-statistic(full model, *iid*):44.78 on 71 and 5156 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 15.27 on 3 and 8 DF, p-value: 0.001129

6.9 Dynastic Leadership and Criteria for Appointments in Public Administration

v2stcritrecadm (0-5 ordinal scale)

## 
## Call:
##    felm(formula = v2stcritrecadm ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.81146 -0.43161  0.05032  0.45785  2.33653 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)    
## dynastic              -0.02401      0.08217  -0.292    0.778    
## log_gdp_percap         0.54410      0.06723   8.093 4.02e-05 ***
## former_british_colony  0.03808      0.14129   0.270    0.794    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7018 on 4932 degrees of freedom
##   (1294 observations deleted due to missingness)
## Multiple R-squared(full model): 0.504   Adjusted R-squared: 0.4968 
## Multiple R-squared(proj model): 0.3107   Adjusted R-squared: 0.3008 
## F-statistic(full model, *iid*):70.57 on 71 and 4932 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 25.39 on 3 and 8 DF, p-value: 0.000193

6.10 Dynastic Leadership and Media Censorship Effort

v2mecenefm

## 
## Call:
##    felm(formula = v2mecenefm ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.6924 -0.5247  0.0998  0.7345  2.5041 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)   
## dynastic               0.27578      0.15150   1.820  0.10620   
## log_gdp_percap         0.55111      0.15807   3.486  0.00824 **
## former_british_colony -0.06636      0.19675  -0.337  0.74459   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.1 on 5156 degrees of freedom
##   (1070 observations deleted due to missingness)
## Multiple R-squared(full model): 0.4828   Adjusted R-squared: 0.4757 
## Multiple R-squared(proj model): 0.175   Adjusted R-squared: 0.1636 
## F-statistic(full model, *iid*):67.78 on 71 and 5156 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 33.84 on 3 and 8 DF, p-value: 6.802e-05

6.11 Dynastic Leadership and level of Media Corruption

v2mecorrpt

## 
## Call:
##    felm(formula = v2mecorrpt ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.2865 -0.4471  0.1229  0.6098  2.9626 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)    
## dynastic               0.09019      0.09158   0.985  0.35356    
## log_gdp_percap         0.78086      0.04160  18.771  6.7e-08 ***
## former_british_colony  0.57129      0.14759   3.871  0.00474 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9621 on 5156 degrees of freedom
##   (1070 observations deleted due to missingness)
## Multiple R-squared(full model): 0.5773   Adjusted R-squared: 0.5715 
## Multiple R-squared(proj model): 0.371   Adjusted R-squared: 0.3623 
## F-statistic(full model, *iid*):99.19 on 71 and 5156 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 326.2 on 3 and 8 DF, p-value: 1.06e-08

6.12 Dyanstic Leadership and Power Distribution by Socio Economic Position

v2pepwrses (0-4)

## 
## Call:
##    felm(formula = v2pepwrses ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.4192 -0.4287  0.0367  0.4749  2.5528 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)  
## dynastic              -0.08597      0.07570  -1.136   0.2890  
## log_gdp_percap         0.29374      0.12256   2.397   0.0434 *
## former_british_colony  0.27308      0.17732   1.540   0.1621  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8235 on 5156 degrees of freedom
##   (1070 observations deleted due to missingness)
## Multiple R-squared(full model): 0.3895   Adjusted R-squared: 0.3811 
## Multiple R-squared(proj model): 0.1072   Adjusted R-squared: 0.0949 
## F-statistic(full model, *iid*):46.33 on 71 and 5156 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 2.235 on 3 and 8 DF, p-value: 0.1616

6.13 Dynastic Leadership and Power Distribution by Social grouup

v2pepwrsoc

## 
## Call:
##    felm(formula = v2pepwrsoc ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.2058 -0.4868  0.0373  0.5670  2.1842 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)
## dynastic              -0.10489      0.09621  -1.090    0.307
## log_gdp_percap         0.21151      0.12234   1.729    0.122
## former_british_colony  0.02174      0.16071   0.135    0.896
## 
## Residual standard error: 0.8395 on 5156 degrees of freedom
##   (1070 observations deleted due to missingness)
## Multiple R-squared(full model): 0.3828   Adjusted R-squared: 0.3743 
## Multiple R-squared(proj model): 0.04884   Adjusted R-squared: 0.03574 
## F-statistic(full model, *iid*):45.04 on 71 and 5156 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 1.484 on 3 and 8 DF, p-value: 0.2906

6.14 Dynastic Leadership and Legitimate Ideology (Promotion)

v2exl_legitideol

## 
## Call:
##    felm(formula = v2exl_legitideol ~ dynastic + log_gdp_percap +      former_british_colony | Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.2801 -0.7967 -0.1496  0.7556  3.9378 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)
## dynastic               0.08502      0.15461   0.550    0.597
## log_gdp_percap        -0.10373      0.16277  -0.637    0.542
## former_british_colony  0.04574      0.36836   0.124    0.904
## 
## Residual standard error: 1.093 on 5141 degrees of freedom
##   (1085 observations deleted due to missingness)
## Multiple R-squared(full model): 0.3147   Adjusted R-squared: 0.3052 
## Multiple R-squared(proj model): 0.007732   Adjusted R-squared: -0.005972 
## F-statistic(full model, *iid*):33.25 on 71 and 5141 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 0.2154 on 3 and 8 DF, p-value: 0.883

6.15 Dynastic Leadership and Person of Leader (Leader Cult, extraordinary charismatic etc.)

v2exl_legitlead

## 
## Call:
##    felm(formula = v2exl_legitlead ~ dynastic + log_gdp_percap +      former_british_colony | Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.5747 -0.7904 -0.1260  0.7437  4.9243 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)   
## dynastic              -0.06470      0.08817  -0.734  0.48401   
## log_gdp_percap        -0.38147      0.10369  -3.679  0.00623 **
## former_british_colony  0.13879      0.43630   0.318  0.75855   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.12 on 5154 degrees of freedom
##   (1072 observations deleted due to missingness)
## Multiple R-squared(full model): 0.4004   Adjusted R-squared: 0.3922 
## Multiple R-squared(proj model): 0.08519   Adjusted R-squared: 0.07259 
## F-statistic(full model, *iid*):48.48 on 71 and 5154 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 6.469 on 3 and 8 DF, p-value: 0.01563

6.16 Dynastic Leadership and Political Violence by Non-State Actors

v2caviol

## 
## Call:
##    felm(formula = v2caviol ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.9823 -0.8524 -0.1211  0.7355  4.0344 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)   
## dynastic               0.08826      0.13575   0.650  0.53384   
## log_gdp_percap        -0.40461      0.09298  -4.352  0.00244 **
## former_british_colony -0.36684      0.11282  -3.252  0.01167 * 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.205 on 5136 degrees of freedom
##   (1090 observations deleted due to missingness)
## Multiple R-squared(full model): 0.3206   Adjusted R-squared: 0.3112 
## Multiple R-squared(proj model): 0.09551   Adjusted R-squared: 0.08301 
## F-statistic(full model, *iid*):34.14 on 71 and 5136 DF, p-value: < 2.2e-16 
## F-statistic(proj model): 38.95 on 3 and 8 DF, p-value: 4.042e-05

6.17 Dynastic Leadership and Mobilisation for Democracy

v2cademmob

## 
## Call:
##    felm(formula = v2cademmob ~ dynastic + log_gdp_percap + former_british_colony |      Region + Year | 0 | Region, data = gdd_vdem_dem) 
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.2584 -0.7762 -0.1526  0.6529  4.5797 
## 
## Coefficients:
##                       Estimate Cluster s.e. t value Pr(>|t|)   
## dynastic               0.19138      0.08992   2.128  0.06595 . 
## log_gdp_percap        -0.13713      0.16112  -0.851  0.41945   
## former_british_colony -0.41391      0.08660  -4.780  0.00139 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.13 on 5097 degrees of freedom
##   (1129 observations deleted due to missingness)
## Multiple R-squared(full model): 0.2111   Adjusted R-squared: 0.2002 
## Multiple R-squared(proj model): 0.03491   Adjusted R-squared: 0.02147 
## F-statistic(full model, *iid*):19.21 on 71 and 5097 DF, p-value: < 2.2e-16 
## F-statistic(proj model):  9.33 on 3 and 8 DF, p-value: 0.005446

LS0tCnRpdGxlOiAiR2xvYmFsIER5bmFzdGllcyBEYXRhc2V0IE1haW4gUlB1YiIKYXV0aG9yOiAiTmFjaGlrZXQgTWlkaGEiCm91dHB1dDogCiAgaHRtbF9kb2N1bWVudDoKICAgIHRoZW1lOiBjb3NtbwogICAgaGlnaGxpZ2h0OiB0YW5nbwogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKICAgIGNvZGVfZm9sZGluZzogaGlkZQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQogICAgbnVtYmVyX3NlY3Rpb25zOiB0cnVlICAjIE51bWJlciBzZWN0aW9ucyBmb3IgdGhlIHRhYmxlIG9mIGNvbnRlbnRzCiAgICBmaWdfY2FwdGlvbjogdHJ1ZSAgICAgICMgRW5hYmxlIGZpZ3VyZSBjYXB0aW9ucwogICAgY3NzOiBzdHlsZXMuY3NzICAgICAgICAjIExpbmsgdG8gYSBjdXN0b20gQ1NTIGZpbGUgZm9yIHN0eWxpbmcKLS0tCgpgYGB7ciBldmFsID0gVFJVRSxlY2hvID1GQUxTRSxtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQojTG9hZGluZyBMaWJyYXJpZXMKbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkodGlkeXIpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShzbmFrZWNhc2UpCmxpYnJhcnkoZ2d0aGVtZXMpCmxpYnJhcnkoV0RJKQpsaWJyYXJ5KGJldGFyZWcpCmxpYnJhcnkoZm9yY2F0cykKbGlicmFyeShzdHJpbmdkaXN0KQpsaWJyYXJ5KGV4cHNzKQpsaWJyYXJ5KGxmZSkKbGlicmFyeShkZXZ0b29scykKbGlicmFyeSh6b28pCmxpYnJhcnkoc2FuZHdpY2gpCmxpYnJhcnkocGxtKQpsaWJyYXJ5KHN0YXJnYXplcikKbGlicmFyeShqYW5pdG9yKQpsaWJyYXJ5KG1vZGVsc3VtbWFyeSkKbGlicmFyeSh0cmFuc2Zvcm1yKQpsaWJyYXJ5KGdnYW5pbWF0ZSkKbGlicmFyeShnaWZza2kpCmxpYnJhcnkoYXYpCmxpYnJhcnkocnZlc3QpCmxpYnJhcnkoZmxleHRhYmxlKQpsaWJyYXJ5KElSZGlzcGxheSkKbGlicmFyeShjb2VmcGxvdCkKbGlicmFyeShwbG90bHkpCmxpYnJhcnkoa25pdHIpCmxpYnJhcnkoa2FibGVFeHRyYSkKbGlicmFyeShzbmFrZWNhc2UpCmxpYnJhcnkoZ2d0aGVtZXMpCmxpYnJhcnkoYnJvb20pCmxpYnJhcnkoa25pdHIpCmxpYnJhcnkocm1hcmtkb3duKQpsaWJyYXJ5KGh0bWx3aWRnZXRzKQpsaWJyYXJ5KERUKQpsaWJyYXJ5KHNjYWxlcykKbGlicmFyeShmaXhlc3QpCmxpYnJhcnkoZ2dlZmZlY3RzKQoKYGBgCgoKCmBgYHtyIGV2YWw9VFJVRSxlY2hvID0gRkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CiNMb2FkaW5nIERhdGFzZXRzCmdkZCA8LSByZWFkLmNzdigiL1VzZXJzL05hY2hpa2V0L0ZpbGVzIEZyb20gZS5sb2NhbGl6ZWQvVmVybWEgUkEgd29yay9HbG9iYWwgRHluYXN0aWVzIERhdGFzZXQvZ2RkLmNzdiIpCmdkZCA8LWdkZCAlPiUgcmVuYW1lKFllYXI9eWVhcikgJT4lIG11dGF0ZShkeW5hc3RpYyA9IGlmZWxzZShwcmVkX2JpbiAhPTAsMSwwKSkjcHJlZF9iaW4gPT0gMQoKIyBBZGRpbmcgeWVhcl9iaW4gYW5kIGhhbmRsaW5nIE5Bcy4gQWRkaW5nIGEgY29udGludW91cyB2YXJpYWJsZSBmb3IgRHlhbnN0aWMgdmFyaWFibGUgKHByZWRfYmluKQpnZGQgPC0gZ2RkICU+JQogIG11dGF0ZShhY3Jvc3MoYygKICAgIHByZWRfbnVtLCByZWxhdGlvbl9jb2RlX3ByZWQsIHBvc19jb2RlX3ByZWQsIHN1Y19udW0sIHJlbGF0aW9uX2NvZGVfc3VjLCBwb3NfY29kZV9zdWMsZmxuX2dlbmRlciwKICAgIHByZWRfYmluLCBzdWNfYmluLCBwcmVkX25hdGlvbmFsLCBzdWNfbmF0aW9uYWwsIHByZWRfc3RhdGUsIHN1Y19zdGF0ZSwgcHJlZF9sb2NhbCwgc3VjX2xvY2FsLCBkeW5hc3RpYwogICksIH5pZmVsc2UoaXMubmEoLiksIDAsIC4pKSkKZ2RkIDwtIGdkZCAlPiUKICBtdXRhdGUoeWVhcl9iaW4gPSBjYXNlX3doZW4oCiAgICBZZWFyID49IDE5NDUgJiBZZWFyIDwgMTk3MCB+ICIxOTQ1LTE5NzAiLAogICAgWWVhciA+PSAxOTcwICYgWWVhciA8IDE5OTUgfiAiMTk3MC0xOTk1IiwKICAgIFllYXIgPj0gMTk5NSAmIFllYXIgPD0gMjAyMCB+ICIxOTk1LTIwMjAiCiAgKSwKICB5ZWFyX2JpbiA9IGZhY3Rvcih5ZWFyX2JpbiwKICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCIxOTQ1LTE5NzAiLCAiMTk3MC0xOTk1IiwgIjE5OTUtMjAyMCIpLAogICAgICAgICAgICAgICAgICAgIG9yZGVyZWQgPSBUUlVFKQogICklPiUgCiAgYXJyYW5nZShDb3VudHJ5LCBZZWFyKSAlPiUgICMgRW5zdXJlIGRhdGEgaXMgc29ydGVkIGJ5IENvdW50cnkgYW5kIFllYXIKICBncm91cF9ieShDb3VudHJ5KSAlPiUKICBtdXRhdGUoCiAgICBDdW1fUHJlZF9CaW4gPSBjdW1zdW0ocHJlZF9iaW4pLCAgIyBDdW11bGF0aXZlIHN1bSBvZiBwcmVkX2JpbgogICAgWWVhcl9Db3VudCA9IHJvd19udW1iZXIoKSwgICMgQ3VtdWxhdGl2ZSBjb3VudCBvZiB5ZWFycwogICAgRHluYXN0aWNfUHJvcG9ydGlvbiA9IEN1bV9QcmVkX0JpbiAvIFllYXJfQ291bnQgICMgQ2FsY3VsYXRlIHRoZSBwcm9wb3J0aW9uCiAgKSAlPiUKICB1bmdyb3VwKCkKCiNtYWtpbmcgeWVhciBjb2x1bW4gYXMgYSBudW1lcmljIHZhcmlhYmxlIGluIHRoZSB3aG9sZSBkYXRhc2V0CmdkZCRZZWFyIDwtIGFzLm51bWVyaWMoZ2RkJFllYXIpCgoKI21ha2luZyBhbGwgdGhlc2UgZmxuX2dlbmRlcglwcmVkX251bQlyZWxhdGlvbl9jb2RlX3ByZWQJcG9zX2NvZGVfcHJlZAlzdWNfbnVtCXJlbGF0aW9uX2NvZGVfc3VjCXBvc19jb2RlX3N1YwlwcmVkX2JpbglzdWNfYmluCXByZWRfbmF0aW9uYWwJc3VjX25hdGlvbmFsCXByZWRfc3RhdGUJc3VjX3N0YXRlCXByZWRfbG9jYWwJc3VjX2xvY2FsIGFzIG51bWVyaWMKCmdkZCRmbG5fZ2VuZGVyIDwtIGFzLm51bWVyaWMoZ2RkJGZsbl9nZW5kZXIpCmdkZCRwcmVkX251bSA8LSBhcy5udW1lcmljKGdkZCRwcmVkX251bSkKZ2RkJHJlbGF0aW9uX2NvZGVfcHJlZCA8LSBhcy5udW1lcmljKGdkZCRyZWxhdGlvbl9jb2RlX3ByZWQpCmdkZCRwb3NfY29kZV9wcmVkIDwtIGFzLm51bWVyaWMoZ2RkJHBvc19jb2RlX3ByZWQpCmdkZCRzdWNfbnVtIDwtIGFzLm51bWVyaWMoZ2RkJHN1Y19udW0pCmdkZCRyZWxhdGlvbl9jb2RlX3N1YyA8LSBhcy5udW1lcmljKGdkZCRyZWxhdGlvbl9jb2RlX3N1YykKZ2RkJHBvc19jb2RlX3N1YyA8LSBhcy5udW1lcmljKGdkZCRwb3NfY29kZV9zdWMpCmdkZCRwcmVkX2JpbiA8LSBhcy5udW1lcmljKGdkZCRwcmVkX2JpbikKZ2RkJHN1Y19iaW4gPC0gYXMubnVtZXJpYyhnZGQkc3VjX2JpbikKZ2RkJHByZWRfbmF0aW9uYWwgPC0gYXMubnVtZXJpYyhnZGQkcHJlZF9uYXRpb25hbCkKZ2RkJHN1Y19uYXRpb25hbCA8LSBhcy5udW1lcmljKGdkZCRzdWNfbmF0aW9uYWwpCmdkZCRwcmVkX3N0YXRlIDwtIGFzLm51bWVyaWMoZ2RkJHByZWRfc3RhdGUpCmdkZCRzdWNfc3RhdGUgPC0gYXMubnVtZXJpYyhnZGQkc3VjX3N0YXRlKQpnZGQkcHJlZF9sb2NhbCA8LSBhcy5udW1lcmljKGdkZCRwcmVkX2xvY2FsKQpnZGQkc3VjX2xvY2FsIDwtIGFzLm51bWVyaWMoZ2RkJHN1Y19sb2NhbCkKCgoKCgojQWRkaW5nIEZvbWVyX0JyaXRpc2hfQ29sb255X1N0YXR1cwpjb3VudHJ5X2xpc3QgPC0gYygKICAiQWZnaGFuaXN0YW4iLCAiQW50aWd1YSBhbmQgQmFyYnVkYSIsICJCYWhyYWluIiwgIkJhcmJhZG9zIiwgIkJlbGl6ZSIsICJCb3Rzd2FuYSIsICJCcnVuZWkiLAogICJDeXBydXMiLCAiRG9taW5pY2EiLCAiRWd5cHQiLCAiRXN3YXRpbmkiLCAiRmlqaSIsICJHaGFuYSIsICJHcmVuYWRhIiwgIkd1eWFuYSIsICJJbmRpYSIsIAogICJJcmFxIiwgIklzcmFlbCIsICJKYW1haWNhIiwgIkpvcmRhbiIsICJLZW55YSIsICJLaXJpYmF0aSIsICJLdXdhaXQiLCAiTGVzb3RobyIsICJMaWJ5YSIsIAogICJNYWxhd2kiLCAiTWFsYXlhIiwgIk1hbGRpdmVzIiwgIk1hbHRhIiwgIk1hdXJpdGl1cyIsICJNeWFubWFyIiwgIk5hdXJ1IiwgIk5pZ2VyaWEiLCAiT21hbiIsIAogICJQYWtpc3RhbiIsICJRYXRhciIsICJTYWludCBMdWNpYSIsICJTYWludCBLaXR0cyBhbmQgTmV2aXMiLCAiU2FpbnQgVmluY2VudCBhbmQgdGhlIEdyZW5hZGluZXMiLAogICJTZXljaGVsbGVzIiwgIlNpZXJyYSBMZW9uZSIsICJTb2xvbW9uIElzbGFuZHMiLCAiU29tYWxpbGFuZCIsICJTb3V0aCBZZW1lbiIsICJTcmkgTGFua2EiLCAKICAiU3VkYW4iLCAiU291dGggU3VkYW4iLCAiQmFoYW1hcyIsICJSZXB1YmxpYyBvZiB0aGUgR2FtYmlhIiwgIlRvbmdhIiwgIlRyaW5pZGFkIGFuZCBUb2JhZ28iLCAiVHV2YWx1IiwKICAiVWdhbmRhIiwgIlVuaXRlZCBBcmFiIEVtaXJhdGVzIiwgIlVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYSIsICJWYW51YXR1IiwgIlphbWJpYSIsICJaYW56aWJhciIsICJaaW1iYWJ3ZSIKKQoKZ2RkIDwtIGdkZCAlPiUgCiAgbXV0YXRlKGZvcm1lcl9icml0aXNoX2NvbG9ueSA9IGlmZWxzZShDb3VudHJ5ICVpbiUgY291bnRyeV9saXN0LCAxLCAwKSkKCiMjIEFkZGluZyBEaWN0YXRvcnNoaXAgYW5kIGRlbW9jcmFjeSBiaW5hcmllcwoKZ2RkIDwtIGdkZCAlPiUgCiAgbXV0YXRlKGRpY3RhdG9yc2hpcCA9ICBpZmVsc2Uoc3lzdGVtX2NhdGVnb3J5ICVpbiUgYygiUm95YWwgRGljdGF0b3JzaGlwIiwgIkNpdmlsaWFuIERpY3RhdG9yc2hpcCIsIk1pbGl0YXJ5IERpY3RhdG9yc2hpcCIpLDEsMCkpICU+JSAKICBtdXRhdGUoRGVtX1R5cGUgPSBjYXNlX3doZW4oCiAgc3lzdGVtX2NhdGVnb3J5ICVpbiUgYygiQ2l2aWxpYW4gRGljdGF0b3JzaGlwIiwgIk1pbGl0YXJ5IERpY3RhdG9yc2hpcCIsIlJveWFsIERpY3RhdG9yc2hpcCIpIH4gMCwKICBzeXN0ZW1fY2F0ZWdvcnkgPT0gIk1peGVkIERlbW9jcmF0aWMiIH4gMSwKICBzeXN0ZW1fY2F0ZWdvcnkgPT0gIlByZXNpZGVudGlhbCBEZW1vY3JhY3kiIH4gMiwKICBzeXN0ZW1fY2F0ZWdvcnkgPT0gIlBhcmxpYW1lbnRhcnkgRGVtb2NyYWN5IiB+IDMsCiAgVFJVRSB+IE5BX3JlYWxfCiAgKSkKCiNBZGRpbmcgTmV3IFJlZ2ltZSBDaGFuZ2UgQmluYXJ5ICgwLzEpIGF0IHRoZSBjb3VudHJ5IGxldmVsCmdkZCA8LSBnZGQgJT4lCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lCiAgbXV0YXRlKFJlZ2ltZV9DaGFuZ2UgPSBpZl9lbHNlKG5fZGlzdGluY3QoZGljdGF0b3JzaGlwKSA+IDEsIDEsIDApKSAlPiUKICB1bmdyb3VwKCkKCiNBZGRpbmcgbmV3IFBvc3QtV1cyIEluZGVwZW5kZW5jZSBCaW5hcnkKZ2RkIDwtIGdkZCAlPiUKICBncm91cF9ieShDb3VudHJ5KSAlPiUKICBtdXRhdGUocG9zdHd3Ml9pbmQgPSBpZl9lbHNlKAogICAgKENvdW50cnkgJWluJSBjKCJTeXJpYSIsIkpvcmRhbiIpKSB8IGFsbChZZWFyID49IDE5NDcpLAoKICAgICAgMSwwKSkKCiMjIEFkZGluZyBSZWdpbWUgVHJhbnNpdGlvbiBiaW5hcnkgYXQgdGhlIG9ic2VydmF0aW9uIGxldmVsCmdkZCA8LSBnZGQgJT4lCiAgYXJyYW5nZShDb3VudHJ5LCBZZWFyKSAlPiUKICBncm91cF9ieShDb3VudHJ5KSAlPiUKICBtdXRhdGUoUHJldmlvdXNfRGljdGF0b3JzaGlwID0gYyhOQSwgaGVhZChkaWN0YXRvcnNoaXAsIC0xKSksCiAgICAgICAgIFJlZ2ltZV9UcmFuc2l0aW9uX0JpbmFyeSA9IGlmZWxzZSgKICAgICAgaXMubmEoUHJldmlvdXNfRGljdGF0b3JzaGlwKSwgMCwgICAgICAgIyBJZiBQcmV2aW91c19EaWN0YXRvcnNoaXAgaXMgTkEsIHNldCB0cmFuc2l0aW9uIHRvIDAKICAgICAgaWZlbHNlKGRpY3RhdG9yc2hpcCAhPSBQcmV2aW91c19EaWN0YXRvcnNoaXAsIDEsIDApICAjIElmIHRoZXJlIGlzIGEgY2hhbmdlLCBzZXQgdHJhbnNpdGlvbiB0byAxCiAgICApCiAgKSAlPiUKICB1bmdyb3VwKCkKCiMjIEFkZGluZyBudW1iZXIgb2YgVHJhbnNpdGlvbnMgY2x1c3RlcmVkIGF0IHRoZSBjb3VudHJ5IGxldmVsIHRvIHNlZSAKZ2RkIDwtIGdkZCAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lIAogIG11dGF0ZShOdW1fVHJhbnNpdGlvbnMgPSBzdW0oUmVnaW1lX1RyYW5zaXRpb25fQmluYXJ5KSkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgc2VsZWN0KGNvdW50cnlfaXNvY29kZSwgQ09XLCBSZWdpb24sQ291bnRyeSwgWWVhciwgbm9taW5hbF9sZWFkZXIsIGR5bmFzdHlfZGVzYywgZmxuX2dlbmRlcixzeXN0ZW1fY2F0ZWdvcnksIGRpY3RhdG9yc2hpcCwgUmVnaW1lX0NoYW5nZSwgUmVnaW1lX1RyYW5zaXRpb25fQmluYXJ5LE51bV9UcmFuc2l0aW9ucywgZXZlcnl0aGluZygpKQoKI0xvYWRpbmcgV0RJIEluZGljYXRvcnMgdXNpbmcgV29ybGQgQmFuayBBUEkKI1dESXNlYXJjaCgnaW5lcXVhbGl0eScpICMgYSBjb21tYW5kIHVzZWQgdG8gc2VhcmNoIGZvciBhbGwgdmFyaWFibGVzCndiX2RhdGFfbWFpbiA9IFdESShpbmRpY2F0b3IgPSBjKCJOWS5HRFAuUENBUC5DRCIpLHN0YXJ0ID0gMTk2MCwgZW5kID0gMjAyMSkKd2JfZGF0YSA8LSB3Yl9kYXRhX21haW4gJT4lIAogIHJlbmFtZShnZHBfcGVyY2FwID0gTlkuR0RQLlBDQVAuQ0QpICU+JSAKICByZW5hbWUoY291bnRyeV9pc29jb2RlID0gaXNvM2MpICU+JSAKICByZW5hbWUoWWVhciA9IHllYXIpICU+JSAKICBzZWxlY3QoIlllYXIiLCJjb3VudHJ5X2lzb2NvZGUiLCJnZHBfcGVyY2FwIikKZ2RkIDwtIGxlZnRfam9pbihnZGQsIHdiX2RhdGEsIGJ5ID0gYygiWWVhciIsImNvdW50cnlfaXNvY29kZSIpKQpnZGQkbG9nX2dkcF9wZXJjYXAgPC0gbG9nKGdkZCRnZHBfcGVyY2FwKQoKI0xhb2RpbmcgVkRlbSBEYXRhCmxvYWQoIi9Vc2Vycy9OYWNoaWtldC9GaWxlcyBGcm9tIGUubG9jYWxpemVkL1Zlcm1hIFJBIHdvcmsvR2xvYmFsIER5bmFzdGllcyBEYXRhc2V0L3ZkZW0uUkRhdGEiKQoKdmRlbWZpbHRlcmVkIDwtIHZkZW0gJT4lIAogIHNlbGVjdChjb3VudHJ5X3RleHRfaWQseWVhcixlX2JvaXhfcmVnaW1lLHYyeF9wb2x5YXJjaHksdjJ4X2xpYmRlbSwgdjJlbGFjY2VwdCwgdjJlbGludGltLCB2MnhfdmVyYWNjLHYyeF9kaWFnYWNjLCB2MnhfaG9yYWNjLCB2MnhfZ2VuY3MsIHYyeG5wX3JlZ2NvcnIsIHYyeF9jb3JyLCB2MnhfcHViY29yciwgdjJ4ZWRfZWRfaW5wdCx2MnhlZF9lZF9jZW50LCB2MmxwbmFtZSwgdjNwYXJ0eWlkLCB2MnhlbF9mcmVmYWlyLCB2MnBzYmFycywgdjJwc2Nuc2xubCx2MnJlZ29wcGdyb3Vwc3NpemUsIHYyY2xyc3BjdCwgdjJjbHN0b3duLCB2MnN0Y3JpdHJlY2FkbSwgdjJtZWNlbmVmbSwgdjJtZWNvcnJwdCwgdjJwZXB3cnNlcywgdjJwZXB3cnNvYywgdjJleGxfbGVnaXRpZGVvbCwgdjJleGxfbGVnaXRsZWFkLCB2MmNhdmlvbCx2MmNhZGVtbW9iKSAlPiUgCiAgcmVuYW1lKFllYXIgPSB5ZWFyKSAlPiUgCiAgcmVuYW1lKGNvdW50cnlfaXNvY29kZSA9IGNvdW50cnlfdGV4dF9pZCkKZ2RkIDwtIGxlZnRfam9pbihnZGQsIHZkZW1maWx0ZXJlZCwgYnkgPSBjKCJjb3VudHJ5X2lzb2NvZGUiLCAiWWVhciIpKQpgYGAKCiMgQmFzaWMgRGVzY3JpcHRpdmUgSW5kaWNhdG9ycyB7LnRhYnNldH0KCiMjIEdyYXBoIFNob3dpbmcgQ291bnRyaWVzIEFkZGVkIFllYXJ3aXNlCgpUaGUgZm9sbG93aW5nIGdyYXBoIHNob3dzIGhvdyBjb3VudHJpZXMgYXJlIGJlaW5nIGFkZGVkIGV2ZXJ5IHllYXIgd2l0aCB0aGUgcHJvZ3Jlc3Npb24gaW4gdGhlIGRhdGFzZXQgc2luY2UgdGhlIGVuZCBvZiBXV0lJCgpgYGB7ciBldmFsPVRSVUUsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CmdkZF9jb3VudHJ5X2FkZGl0aW9uIDwtIGdkZCAlPiUgCiAgZ3JvdXBfYnkoWWVhcikgJT4lIAogIGRpc3RpbmN0KENvdW50cnksIC5rZWVwX2FsbCA9IFRSVUUpJT4lIAogIHN1bW1hcmlzZShUb3RhbF9Db3VudHJpZXMgPW4oKSkKCgojc29sdmluZyBmb3IgRXJyb3I6IGZyb20gbXVzdCBiZSBhIGZpbml0ZSBudW1iZXIKCmNvdW50cnlfYWRkaXRpb24gPC0gZ2dwbG90KGdkZF9jb3VudHJ5X2FkZGl0aW9uLCBhZXMoeCA9IFllYXIsIHkgPSBUb3RhbF9Db3VudHJpZXMpKSArCiAgZ2VvbV9saW5lKGNvbG9yID0gImxpZ2h0Ymx1ZSIsIHNpemUgPSAxKSArCiAgZ2VvbV9wb2ludChjb2xvciA9ICJibGFjayIsIHNpemUgPSAwLjUpICsKICBsYWJzKAogICAgdGl0bGUgPSAiTnVtYmVyIG9mIENvdW50cmllcyBBZGRlZCB0byB0aGUgRGF0YXNldCBBY3Jvc3MgWWVhcnMiLAogICAgeCA9ICJZZWFyIiwKICAgIHkgPSAiTnVtYmVyIG9mIENvdW50cmllcyIKICApICsKICB0aGVtZV9zdGF0YSgpICsKICB0aGVtZSgKICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpLAogICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKQogICkKCmdncGxvdGx5KGNvdW50cnlfYWRkaXRpb24pCmBgYAoKIyMgUHJvcG9ydGlvbiBvZiBEeW5hc3RpYyBDb3VudHJpZXMgQWNyb3NzIFRpbWUgKEFsbCBSZWdpbWUgVHlwZXMpCgpUaGUgbmVjZXNzYXJ5IHByZS1jb25kaXRpb24gZm9yIHRoZSBkeW5hc3QgaW4gb3VyIGRhdGFzZXQgaXMgdGhhdCBhIGxlYWRlciB3aWxsIG9ubHkgYmUgY2xhc3NpZmllZCBhcyBhIGR5bmFzdCBpZiBhbmQgb25seSBpZiBhIHRoYXQgbGVhZGVyIGluIG91ciBkYXRhc2V0IGhhcyBhIHBhcmVudCwgaW4tbGF3LCBvciBhbnkga2luZCBvZiBkaXJlY3QgcmVsYXRpdmUgd2hvIGhhcyBjb250ZXN0ZWQgYW5kIHdvbiBhbiBlbGVjdGlvbiBhdCBhbnkgbGV2ZWwgb2YgcG9saXRpY3MgaW4gdGhlaXIgcmVzcGVjdGl2ZSBwb2xpdGllcywgdGhlbiB0aGF0IHBvbGl0aWNpYW4gaXMgYSBkeW5hc3QuIFRoZXJlZm9yZSBhIGR5bmFzdGljIGNvdW50cnkgaSBhdCBwb2ludCB0IHdpbGwgYmUgYSBjb3VudHJ5IHdob3NlIGxlYWRlciBpcyBhIGR5bmFzdC4KClRoZSBmaXJzdCBncmFwaCBzaG93cyB0aGUgcHJvcG9ydGlvbiBvZiBkeW5hc3RpYyBjb3VudHJpZXMgYXQgYSBnaXZlbiB0aW1lIG92ZXIgdGhlIHllYXJzLgoKYGBge3IgZXZhbD1UUlVFLCBtZXNzYWdlPUZBTFNFLGVjaG89RkFMU0Usd2FybmluZz1GQUxTRX0KZ2RkX2R5bmFzdGljX2NvdW50cmllcyA8LSBnZGQgJT4lCiAgZ3JvdXBfYnkoWWVhciwgeWVhcl9iaW4pJT4lCiAgc3VtbWFyaXNlKFRvdGFsX0NvdW50cmllcyA9IG4oKSwgRHluYXN0aWMgPSBzdW0ocHJlZF9iaW4pKSAlPiUgCiAgbXV0YXRlKFByb3BvcnRpb25fRHluID0gRHluYXN0aWMvVG90YWxfQ291bnRyaWVzKjEwMCkKICAKZHluYXN0aWNfcHJvcG9ydGlvbl95ZWFyIDwtIGdncGxvdChnZGRfZHluYXN0aWNfY291bnRyaWVzLCBhZXMoeCA9IFllYXIsIHkgPSBQcm9wb3J0aW9uX0R5bikpICsKICBnZW9tX2xpbmUoY29sb3IgPSAiYmxhY2siLCBzaXplID0gMikgKwogIGdlb21fcG9pbnQoY29sb3IgPSAid2hpdGUiLCBzaXplID0gMSkgKwogIGxhYnMoCiAgICB0aXRsZSA9ICJQZXJjZW50YWdlIG9mIENvdW50cmllcyBXaXRoIER5bmFzdGljIExlYWRlcnNoaXAgQWNyb3NzIFllYXJzIiwKICAgIHggPSAiWWVhciIsCiAgICB5ID0gIlBlcmNlbnRhZ2UiCiAgKSArCiAgdGhlbWVfc3RhdGEoKSArCiAgeWxpbSgwLDUwKSsKICB0aGVtZSgKICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpLAogICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKQogICkKCmdncGxvdGx5KGR5bmFzdGljX3Byb3BvcnRpb25feWVhcikKYGBgCgpUaGUgc2Vjb25kIGdyYXBoIHNob3dzIHRoZSBwcm9wb3J0aW9uIG9mIGR5bmFzdGljIGNvdW50cmllcyBhdCBhIGdpdmVuIHRpbWUgb3ZlciBhIHBlcmlvZCBvZiAyNS0yNS0yNSB5ZWFycy4KCmBgYHtyIG1lc3NhZ2U9RkFMU0UsZWNobz1GQUxTRSx3YXJuaW5nPUZBTFNFfQoKZ2RkX2R5bmFzdGljX2NvdW50cmllc18yNSA8LSBnZGRfZHluYXN0aWNfY291bnRyaWVzICU+JSAKICBncm91cF9ieSh5ZWFyX2JpbikgJT4lIAogIHN1bW1hcmlzZShQcm9wb3J0aW9uX0R5bjI1ID0gbWVhbihQcm9wb3J0aW9uX0R5bikpCgpkeW5hc3RpY19wcm9wb3J0aW9uX3llYXJiaW4gPC0gZ2dwbG90KGdkZF9keW5hc3RpY19jb3VudHJpZXNfMjUsIGFlcyh4ID0geWVhcl9iaW4sIHkgPSBQcm9wb3J0aW9uX0R5bjI1KSkgKwogIGdlb21fbGluZShjb2xvciA9ICJyZWQiLCBzaXplID0gMikgKwogIGdlb21fcG9pbnQoY29sb3IgPSAiYmxhY2siLCBzaXplID0gMSkgKwogIGxhYnMoCiAgICB0aXRsZSA9ICJQZXJjZW50YWdlIG9mIENvdW50cmllcyBXaXRoIER5bmFzdGljIExlYWRlcnNoaXAgQWNyb3NzIFllYXIgQmlucyIsCiAgICB4ID0gIlllYXIgQmluIiwKICAgIHkgPSAiUGVyY2VudGFnZSIKICApICsKICB0aGVtZV9zdGF0YSgpICsKICB5bGltKDAsNTApKwogIHRoZW1lKAogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSksCiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpCiAgKQoKZ2dwbG90bHkoZHluYXN0aWNfcHJvcG9ydGlvbl95ZWFyYmluKQoKYGBgCgojIyBQcm9wb3J0aW9uIG9mIER5bmFzdGljIENvdW50cmllcyAoUnVsZWQgYnkgRHluYXN0aWMgTGVhZGVycykgYWNyb3NzIHJlZ2ltZS90aW1lIGJ5IGRpZmZlcmVudCBSZWdpb25zIG9mIHRoZSB3b3JsZAoKYGBge3IgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KZ2RkX2R5bmFzdGljX3JlZ2lvbnMgPC0gZ2RkICU+JQogIGdyb3VwX2J5KFllYXIsIFJlZ2lvbiwgeWVhcl9iaW4pICU+JQogIHN1bW1hcmlzZSgKICAgIFRvdGFsX0NvdW50cmllcyA9IG4oKSwKICAgIER5bmFzdGljID0gc3VtKHByZWRfYmluKSwKICAgIC5ncm91cHMgPSAiZHJvcCIKICApICU+JQogIG11dGF0ZShQcm9wX0R5biA9IER5bmFzdGljIC8gVG90YWxfQ291bnRyaWVzICogMTAwKSAlPiUKICBncm91cF9ieSh5ZWFyX2JpbiwgUmVnaW9uKSAlPiUKICBzdW1tYXJpc2UoCiAgICBQcm9wb3J0aW9uX0R5biA9IG1lYW4oUHJvcF9EeW4pLAogICAgLmdyb3VwcyA9ICJkcm9wIgogICkKCgpkeW5hc3RpY19wcm9wb3J0aW9uX3JlZ2lvbiA8LSBnZ3Bsb3QoZ2RkX2R5bmFzdGljX3JlZ2lvbnMsIGFlcyh4ID0geWVhcl9iaW4sIHkgPSBQcm9wb3J0aW9uX0R5bikpICsKICBmYWNldF93cmFwKH5SZWdpb24pICsKICBnZW9tX2xpbmUoYWVzKGdyb3VwID0gMSksIGNvbG9yID0gImJsdWUiKSsKICBnZW9tX3BvaW50KGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDEpICsKICBsYWJzKAogICAgdGl0bGUgPSAiUGVyY2VudGFnZSBvZiBDb3VudHJpZXMgdGhhdCBhcmUgRHluYXN0aWMgQWNyb3NzIFJlZ2lvbnMiLAogICAgeCA9ICJZZWFyIiwKICAgIHkgPSAiUGVyY2VudGFnZSIKICApICsKICB0aGVtZV9zdGF0YSgpICsKICB5bGltKDAsIDEwMCkgKwogIHRoZW1lKAogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSksCiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpCiAgKQpnZ3Bsb3RseShkeW5hc3RpY19wcm9wb3J0aW9uX3JlZ2lvbikKYGBgCgojIyBUYWJsZSBvbiB0aGUgUHJvcG9ydGlvbiBvZiBEeW5hc3RpYyBMZWFkZXJzIE92ZXIgVGltZSBpbiBhIFJlZ2lvbiAoQ2xhc3NpZmllZCBieSBSZWdpbWUgVHlwZSkKYGBge3IgZWNobz1GQUxTRSxtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpnZGRfbW9zdF9keW5hc3RpYyA8LSBnZGQgJT4lIAogIGdyb3VwX2J5KHllYXJfYmluLENvdW50cnksIFJlZ2lvbikgJT4lCiAgZGlzdGluY3Qobm9taW5hbF9sZWFkZXIsIC5rZWVwX2FsbCA9IFRSVUUpICU+JSAKICBzdW1tYXJpc2UoVG90YWxfTGVhZGVycyA9IG4oKSwgZHluYXN0aWNfbGVhZGVycyA9IHN1bShwcmVkX2JpbikpICU+JSAKICBtdXRhdGUocHJvcG9ydGlvbl9keW5fbGVhZGVyPSBkeW5hc3RpY19sZWFkZXJzL1RvdGFsX0xlYWRlcnMqMTAwKQoKZ2RkX21vc3RfZHluYXN0aWNfcmVnaW9uIDwtIGdkZF9tb3N0X2R5bmFzdGljICU+JSBncm91cF9ieShSZWdpb24seWVhcl9iaW4pICU+JSBzdW1tYXJpc2UoUHJvcG9ydGlvbl9PZl9EeW5hc3RpY19MZWFkZXJzID0gbWVhbihwcm9wb3J0aW9uX2R5bl9sZWFkZXIpKSAKCmdkZF9tb3N0X2R5bmFzdGljX3JlZ2lvbiU+JSAgZGF0YXRhYmxlKG9wdGlvbnMgPSBsaXN0KHBhZ2VMZW5ndGggPSA1MCksCiAgICAgICAgICAgcm93bmFtZXMgPSBGQUxTRSwKICAgICAgICAgICAgY29sbmFtZXMgPSBjKCJSZWdpb24iLCAiWWVhciBDYXRlZ29yeSIsICJQcm9wb3J0aW9uIG9mIER5bmFzdGljIExlYWRlcnMiKSkKCmBgYAoKCiMjIFByb3BvcnRpb24gb2YgWWVhcnMgVW5kZXIgRHluYXN0aWMgUnVsZSBieSBEZW1vY3JhdGljIFJlZ2ltZSBUeXBlIChQcmVzaWRlbnRpYWwsIFBhcmxpYW1lbnRhcnksIGFuZCBNaXhlZCBEZW1vY3JhdGljKQoKVGhlIG5lY2Vzc2FyeSBwcmUtY29uZGl0aW9uIGZvciB0aGUgZHluYXN0IGluIG91ciBkYXRhc2V0IGlzIHRoYXQgYSBsZWFkZXIgd2lsbCBvbmx5IGJlIGNsYXNzaWZpZWQgYXMgYSBkeW5hc3QgaWYgYW5kIG9ubHkgaWYgYSB0aGF0IGxlYWRlciBpbiBvdXIgZGF0YXNldCBoYXMgYSBwYXJlbnQsIGluLWxhdywgb3IgYW55IGtpbmQgb2YgZGlyZWN0IHJlbGF0aXZlIHdobyBoYXMgY29udGVzdGVkIGFuZCB3b24gYW4gZWxlY3Rpb24gYXQgYW55IGxldmVsIG9mIHBvbGl0aWNzIGluIHRoZWlyIHJlc3BlY3RpdmUgcG9saXRpZXMsIHRoZW4gdGhhdCBwb2xpdGljaWFuIGlzIGEgZHluYXN0LiBUaGVyZWZvcmUsIGR5bmFzdGljIHJ1bGUgd2lsbCBiZSB5ZWFycyB1bmRlciBhIGR5bmFzdC4KClRoZXNlIGNsYXNzaWZpY2F0aW9ucyBhcmUgZXh0ZW5kZWQgYW5kIHJlcGxpY2F0ZWQgYmFzZWQgb24gdGhlIHJlZ2ltZSB0eXBlcyBnaXZlbiBpbiBXaG9Hb3YgRGF0YXNldCAoTnVmZmllbGQgUmVzZWFyY2ggQ2VudGVyIHdoaWNoIGlzIGJhc2VkIGluIHR1cm4gb24gQ2hlaWJ1YiBldC4gYWwgKDIwMTApKQoKYGBge3IgZXZhbD1UUlVFLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpnZGRfZHluYXN0aWNfY291bnRyaWVzX2RlbW8gPC0gZ2RkICU+JQogIGZpbHRlcihzeXN0ZW1fY2F0ZWdvcnkgJWluJSBjKCJNaXhlZCBEZW1vY3JhdGljIiwgIlBhcmxpYW1lbnRhcnkgRGVtb2NyYWN5IiwgIlByZXNpZGVudGlhbCBEZW1vY3JhY3kiKSkgJT4lIAogIGdyb3VwX2J5KENvdW50cnksIHllYXJfYmluKSAlPiUgCiAgbXV0YXRlKAogICAgdG90YWxfeWVhcnMgPSAobWF4KFllYXIpIC0gbWluKFllYXIpKSsxLAogICAgZHluX3llYXJzID0gc3VtKHByZWRfYmluKSwKICAgIHByb3BfZHluX3llYXJzID0gKGR5bl95ZWFycy90b3RhbF95ZWFycykqMTAwLAogICAgKSAlPiUgCiAgZGlzdGluY3QoQ291bnRyeSwgLmtlZXBfYWxsID0gVFJVRSkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoc3lzdGVtX2NhdGVnb3J5LCB5ZWFyX2JpbikgJT4lIAogIHN1bW1hcmlzZShQcm9wX0R5bl9ZZWFycyA9IG1lYW4ocHJvcF9keW5feWVhcnMpKQoKa25pdHI6OmthYmxlKGdkZF9keW5hc3RpY19jb3VudHJpZXNfZGVtbywgZm9ybWF0ID0gImh0bWwiLCBjYXB0aW9uID0gIiBQcm9wb3J0aW9uIG9mIFllYXJzIFVuZGVyIER5bmFzdGljIFJ1bGUgaW4gRGVtb2NyYXRpYyBSZWdpbWVzIikgJT4lCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiLCAiY29uZGVuc2VkIiwgInJlc3BvbnNpdmUiKSwKICAgICAgICAgICAgICAgIGZ1bGxfd2lkdGggPSBGQUxTRSkKCgpnZGRfZHluYXN0aWNfY291bnRyaWVzX2RlbW8kUHJvcF9EeW5fWWVhcnMgPC0gcm91bmQoKGdkZF9keW5hc3RpY19jb3VudHJpZXNfZGVtbyRQcm9wX0R5bl9ZZWFycyksIDIpCgpnZ3Bsb3QoZ2RkX2R5bmFzdGljX2NvdW50cmllc19kZW1vLGFlcyh4ID0geWVhcl9iaW4seT1Qcm9wX0R5bl9ZZWFycykpKwogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSsKICBsYWJzKHRpdGxlID0gIlByb3BvcnRpb24gb2YgWWVhcnMgVW5kZXIgRHluYXN0aWMgUnVsZSBCeSBEZW1vY3JhdGljIFJlZ2ltZSBUeXBlIiwKICAgICAgIHg9ICJUeXBlIG9mIERlbW9jcmFjeSIsCiAgICAgICB5PSAiUHJvcG9ydGlvbiBvZiBZZWFycyIpKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBQcm9wX0R5bl9ZZWFycyksIHZqdXN0ID0gLTAuMywgc2l6ZSA9IDMuNSkgKwogIGZhY2V0X3dyYXAofnN5c3RlbV9jYXRlZ29yeSkrCiAgeWxpbSgwLDM1KSsKICB0aGVtZV9zdGF0YSgpKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSksCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKCmBgYAoKIyMgUHJvcG9ydGlvbiBvZiBZZWFycyBVbmRlciBEeW5hc3RpYyBSdWxlLCBZZWFyLWJ5LXllYXIgRHluYXN0aWMgUnVsZSwgUHJvcG9ydGlvbiBvZiBkeW5hc3RpYyBsZWFkZXJzIGJ5IERpY3RhdG9yc2hpcC9EZW1vY3JhY3kgU3RhdHVzIGFuZCBTeXN0ZW0gQ2F0ZWdvcnkKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CmdkZF9keW5hc3RpY19jb3VudHJpZXNfZGVtX2R5biA8LSBnZGQgJT4lIAogIGdyb3VwX2J5KENvdW50cnksWWVhcikgJT4lIAogIG11dGF0ZSgKICAgIHRvdGFsX3llYXJzID0gKG1heChZZWFyKSAtIG1pbihZZWFyKSkrMSwKICAgIGR5bl95ZWFycyA9IHN1bShwcmVkX2JpbiksCiAgICBwcm9wX2R5bl95ZWFycyA9IChkeW5feWVhcnMvdG90YWxfeWVhcnMpKjEwMCwKICAgICkgJT4lCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieShkaWN0YXRvcnNoaXApICU+JSAKICBzdW1tYXJpc2UoUHJvcF9EeW5fWWVhcnMgPSBtZWFuKHByb3BfZHluX3llYXJzKSwKICAgICAgICAgICAgQ3VtbXVsYXRpdmVfRHluX1llYXJzID0gc3VtKGR5bl95ZWFycykpCgpnZGRfZHluX2RlbV9kaWMgPC0gZ2RkICU+JSAKICBncm91cF9ieShkaWN0YXRvcnNoaXApICU+JSAKICBzdW1tYXJpc2UoVG90YWwgPSBuKCksCiAgICAgICAgICAgIER5bmFzdGljID0gc3VtKHByZWRfYmluKSwKICAgICAgICAgICAgQXZlcmFnZSA9IER5bmFzdGljL1RvdGFsKQogIApnZGRfZHluYXN0aWNfZHluX2RlbV9sZWFkZXIgPC0gZ2RkICU+JSAKICBkaXN0aW5jdChub21pbmFsX2xlYWRlciwgLmtlZXBfYWxsID0gVFJVRSkgJT4lIAogIGdyb3VwX2J5KENvdW50cnkpICU+JSAKICBtdXRhdGUoRHluX1J1bGVycyA9IHN1bShwcmVkX2JpbiksCiAgICAgICAgIHRvdGFsX3J1bGVycyA9IG4oKSwKICAgICAgICAgUGVyY2VudGFnZV9EeW5hc3RpY19SdWxlcnMgPSBEeW5fUnVsZXJzL3RvdGFsX3J1bGVycyoxMDApICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIGdyb3VwX2J5KGRpY3RhdG9yc2hpcCkgJT4lIAogIHN1bW1hcmlzZShEeW5hc3RpY19SdWxlcnNfcGVyY2VudGFnZSA9IG1lYW4oUGVyY2VudGFnZV9EeW5hc3RpY19SdWxlcnMpKQoKbGVmdF9qb2luKGdkZF9keW5hc3RpY19jb3VudHJpZXNfZGVtX2R5bixnZGRfZHluYXN0aWNfZHluX2RlbV9sZWFkZXIsIGJ5ID0gImRpY3RhdG9yc2hpcCIpCgpgYGAKCgojIyBQcm9wb3J0aW9uIG9mIFllYXJzIFVuZGVyIER5bmFzdGljIFJ1bGUsIFllYXItYnkteWVhciBEeW5hc3RpYyBSdWxlLCBQcm9wb3J0aW9uIG9mIGR5bmFzdGljIGxlYWRlcnMgYnkgUmVnaW1lIFR5cGUgKFN5c3RlbSBDYXRlZ29yeSkKYGBge3IgZWNobyA9RkFMU0Usd2FybmluZz1GQUxTRSxtZXNzYWdlPVRSVUV9CmdkZF9keW5hc3RpY19jb3VudHJpZXNfZGVtX2R5bl9zeXN0ZW1fY2F0IDwtIGdkZCAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSxZZWFyKSAlPiUgCiAgbXV0YXRlKAogICAgdG90YWxfeWVhcnMgPSAobWF4KFllYXIpIC0gbWluKFllYXIpKSsxLAogICAgZHluX3llYXJzID0gc3VtKHByZWRfYmluKSwKICAgIHByb3BfZHluX3llYXJzID0gKGR5bl95ZWFycy90b3RhbF95ZWFycykqMTAwLAogICAgKSAlPiUKICB1bmdyb3VwKCkgJT4lIAogIGdyb3VwX2J5KHN5c3RlbV9jYXRlZ29yeSkgJT4lIAogIHN1bW1hcmlzZShQcm9wX0R5bl9ZZWFycyA9IG1lYW4ocHJvcF9keW5feWVhcnMpLAogICAgICAgICAgICBDdW1tdWxhdGl2ZV9EeW5fWWVhcnMgPSBzdW0oZHluX3llYXJzKSkKCmdkZF9keW5hc3RpY19keW5fZGVtX2xlYWRlcl9zeXN0ZW1fY2F0IDwtIGdkZCAlPiUgCiAgZGlzdGluY3Qobm9taW5hbF9sZWFkZXIsIC5rZWVwX2FsbCA9IFRSVUUpICU+JSAKICBncm91cF9ieShDb3VudHJ5KSAlPiUgCiAgbXV0YXRlKER5bl9SdWxlcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgICAgICB0b3RhbF9ydWxlcnMgPSBuKCksCiAgICAgICAgIFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzID0gRHluX1J1bGVycy90b3RhbF9ydWxlcnMqMTAwKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieShzeXN0ZW1fY2F0ZWdvcnkpICU+JSAKICBzdW1tYXJpc2UoRHluYXN0aWNfUnVsZXJzX3BlcmNlbnRhZ2UgPSBtZWFuKFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzKSkKCmxlZnRfam9pbihnZGRfZHluYXN0aWNfY291bnRyaWVzX2RlbV9keW5fc3lzdGVtX2NhdCxnZGRfZHluYXN0aWNfZHluX2RlbV9sZWFkZXJfc3lzdGVtX2NhdCwgYnkgPSAic3lzdGVtX2NhdGVnb3J5IikKCgpgYGAKCiMjUHJvcG9ydGlvbiBvZiBZZWFycyBVbmRlciBEeW5hc3RpYyBSdWxlLCBZZWFyLWJ5LXllYXIgRHluYXN0aWMgUnVsZSwgUHJvcG9ydGlvbiBvZiBkeW5hc3RpYyBsZWFkZXJzIGJ5IFJlZ2ltZSBDaGFuZ2UgQmluYXJ5CgpgYGB7ciBtZXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpnZGRfZHluYXN0aWNfY291bnRyaWVzX3JlZ2ltZV9jaGFuZ2UgPC0gZ2RkICU+JSAKICBncm91cF9ieShDb3VudHJ5LFllYXIpICU+JSAKICBtdXRhdGUoCiAgICB0b3RhbF95ZWFycyA9IChtYXgoWWVhcikgLSBtaW4oWWVhcikpKzEsCiAgICBkeW5feWVhcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgcHJvcF9keW5feWVhcnMgPSAoZHluX3llYXJzL3RvdGFsX3llYXJzKSoxMDAsCiAgICApICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoUmVnaW1lX0NoYW5nZSkgJT4lIAogIHN1bW1hcmlzZShQcm9wX0R5bl9ZZWFycyA9IG1lYW4ocHJvcF9keW5feWVhcnMpLAogICAgICAgICAgICBDdW1tdWxhdGl2ZV9EeW5fWWVhcnMgPSBzdW0oZHluX3llYXJzKSkKCmdkZF9keW5hc3RpY19yZWdpbWVfY2hhbmdlX2xlYWRlciA8LSBnZGQgJT4lIAogIGRpc3RpbmN0KG5vbWluYWxfbGVhZGVyLCAua2VlcF9hbGwgPSBUUlVFKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lIAogIG11dGF0ZShEeW5fUnVsZXJzID0gc3VtKHByZWRfYmluKSwKICAgICAgICAgdG90YWxfcnVsZXJzID0gbigpLAogICAgICAgICBQZXJjZW50YWdlX0R5bmFzdGljX1J1bGVycyA9IER5bl9SdWxlcnMvdG90YWxfcnVsZXJzKjEwMCkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoUmVnaW1lX0NoYW5nZSkgJT4lIAogIHN1bW1hcmlzZShEeW5hc3RpY19SdWxlcnNfcGVyY2VudGFnZSA9IG1lYW4oUGVyY2VudGFnZV9EeW5hc3RpY19SdWxlcnMpKQoKbGVmdF9qb2luKGdkZF9keW5hc3RpY19jb3VudHJpZXNfcmVnaW1lX2NoYW5nZSxnZGRfZHluYXN0aWNfcmVnaW1lX2NoYW5nZV9sZWFkZXIsIGJ5ID0gIlJlZ2ltZV9DaGFuZ2UiKQoKYGBgCgojI0NvdW50cnkgQ291bnQgYW5kIGR5bmFzdGljIGluZm9ybWF0aW9uIGZvciBDb3VudHJpZXMgYnkgUmVnaW1lIENoYW5nZSBTdGF0dXMKYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KCmdkZF9jb3VudHJ5Y291bnRfcmVnaW1lX2NoYW5nZSA8LSBnZGQgJT4lIAogIGRpc3RpbmN0KENvdW50cnksIC5rZWVwX2FsbCA9IFRSVUUpICU+JSAKICBncm91cF9ieShSZWdpbWVfQ2hhbmdlKSU+JSAKICBzdW1tYXJpc2UoTnVtYmVyX09mX0NvdW50cmllcyA9IG4oKSkKCmtuaXRyOjprYWJsZShnZGRfY291bnRyeWNvdW50X3JlZ2ltZV9jaGFuZ2UsIGZvcm1hdCA9ICJodG1sIiwgY2FwdGlvbiA9ICJDb3VudHJ5IENvdW50IGZvciBDb3VudHJpZXMgdGhhdCBoYXZlL2hhdmVuJ3QgdW5kZXJnb25lIFJlZ2ltZSBjaGFuZ2UiKSAlPiUKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsICJjb25kZW5zZWQiLCAicmVzcG9uc2l2ZSIpLAogICAgICAgICAgICAgICAgZnVsbF93aWR0aCA9IEZBTFNFKQoKZ2RkX2R5bnByb3BfcmVnaW1lX2NoYW5nZSA8LSBnZGQgJT4lIAogIGdyb3VwX2J5KENvdW50cnksIFJlZ2ltZV9DaGFuZ2UpICU+JQogIG11dGF0ZSgKICAgIHRvdGFsX3llYXJzID0gKG1heChZZWFyKSAtIG1pbihZZWFyKSkrMSwKICAgIGR5bl95ZWFycyA9IHN1bShwcmVkX2JpbiksCiAgICBwcm9wX2R5bl95ZWFycyA9IChkeW5feWVhcnMvdG90YWxfeWVhcnMpKjEwMCwKICAgICkgJT4lCiAgdW5ncm91cCgpCgpnZGRfZHlucHJvcF9yZWdpbWVfY2hhbmdlX3N1bW1hcnkgPC0gZ2RkICU+JSAKICBncm91cF9ieShDb3VudHJ5LCBSZWdpbWVfQ2hhbmdlKSAlPiUKICBtdXRhdGUoCiAgICB0b3RhbF95ZWFycyA9IChtYXgoWWVhcikgLSBtaW4oWWVhcikpKzEsCiAgICBkeW5feWVhcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgcHJvcF9keW5feWVhcnMgPSAoZHluX3llYXJzL3RvdGFsX3llYXJzKSoxMDAsCiAgICApICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoUmVnaW1lX0NoYW5nZSkgJT4lIAogIHN1bW1hcmlzZShQcm9wX0R5bl9ZZWFycyA9IG1lYW4ocHJvcF9keW5feWVhcnMpKQoKZ2dwbG90KGdkZF9keW5wcm9wX3JlZ2ltZV9jaGFuZ2UsIGFlcyh4ID0gZmFjdG9yKFJlZ2ltZV9DaGFuZ2UpLCB5ID0gcHJvcF9keW5feWVhcnMpKSArCiAgZ2VvbV9ib3hwbG90KCkgKwogIGxhYnMoCiAgICB0aXRsZSA9ICJQZXJjZW50YWdlIG9mIFllYXJzIFVuZGVyIER5bmFzdGljIExlYWRlcnNoaXAgYnkgUmVnaW1lIENoYW5nZSIsCiAgICB4ID0gIlJlZ2ltZSBDaGFuZ2UiLAogICAgeSA9ICJQZXJjZW50YWdlIG9mIER5bmFzdGljIFllYXJzICglKSIKICApICsKICB0aGVtZV9zdGF0YSgpCgojUGVyY2VudGFnZSBvZiBEeW5hc3RpYyBsZWFkZXJzIGJ5IHJlZ2ltZSBjaGFuZ2Ugc3RhdHVzCmdkZF9keW5wZXJjZW50X3JlZ2ltZWNoYW5nZV9sZWFkZXIgPC0gZ2RkICU+JQogIGRpc3RpbmN0KG5vbWluYWxfbGVhZGVyLCAua2VlcF9hbGwgPSBUUlVFKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lIAogIG11dGF0ZShEeW5fUnVsZXJzID0gc3VtKHByZWRfYmluKSwKICAgICAgICAgdG90YWxfcnVsZXJzID0gbigpLAogICAgICAgICBQZXJjZW50YWdlX0R5bmFzdGljX1J1bGVycyA9IER5bl9SdWxlcnMvdG90YWxfcnVsZXJzKjEwMCkgJT4lIAogIHVuZ3JvdXAoKQoKZ2RkX2R5bnBlcmNlbnRfcmVnaW1lY2hhbmdlX2xlYWRlcl9zdW1tYXJ5IDwtIGdkZCAlPiUKICBkaXN0aW5jdChub21pbmFsX2xlYWRlciwgLmtlZXBfYWxsID0gVFJVRSkgJT4lIAogIGdyb3VwX2J5KENvdW50cnkpICU+JSAKICBtdXRhdGUoRHluX1J1bGVycyA9IHN1bShwcmVkX2JpbiksCiAgICAgICAgIHRvdGFsX3J1bGVycyA9IG4oKSwKICAgICAgICAgUGVyY2VudGFnZV9EeW5hc3RpY19SdWxlcnMgPSBEeW5fUnVsZXJzL3RvdGFsX3J1bGVycyoxMDApICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIGdyb3VwX2J5KFJlZ2ltZV9DaGFuZ2UpICU+JSAKICBzdW1tYXJpc2UoRHluYXN0aWNfUnVsZXJzX3BlcmNlbnRhZ2UgPSBtZWFuKFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzKSkKICAKZ2dwbG90KGdkZF9keW5wZXJjZW50X3JlZ2ltZWNoYW5nZV9sZWFkZXIsIGFlcyh4ID0gZmFjdG9yKFJlZ2ltZV9DaGFuZ2UpLCB5ID1QZXJjZW50YWdlX0R5bmFzdGljX1J1bGVycykpKwogIGdlb21fYm94cGxvdCgpKwogIGxhYnMoCiAgICB0aXRsZSA9ICJQZXJjZW50YWdlIG9mIER5bmFzdGljIExlYWRlcnMgYnkgUmVnaW1lIENoYW5nZSIsCiAgICB4ID0gIlJlZ2ltZSBDaGFuZ2UiLAogICAgeSA9ICJQZXJjZW50YWdlIG9mIExlYWRlcnMgKCUpIgogICkgKwogIHRoZW1lX3N0YXRhKCkKICAKICAKYGBgCgojIyBDb3VudHJ5IENvdW50IGZvciBDb3VudHJpZXMgdGhhdCBoYXZlIGZhY2VkIG5vIHJlZ2ltZSBjaGFuZ2UgYW5kIGhhdmUgZWl0aGVyIHJlbWFpbmVkIERlbW9jcmFjaWVzIG9yIERpY3RhdG9yc2hpcHMgdGhyb3VnaG91dCBhbmQgRHluYXN0aWMgSW5mb3JtYXRpb24KYGBge3IgZWNobz1GQUxTRSxtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpnZGRfbm9fcmVnaW1lX2NoYW5nZV9kaWNfZGVtIDwtIGdkZCAlPiUgCiAgICBkaXN0aW5jdChDb3VudHJ5LCAua2VlcF9hbGwgPSBUUlVFKSAlPiUgCiAgICBmaWx0ZXIoUmVnaW1lX0NoYW5nZSA9PSAwKSAlPiUKICAgIGdyb3VwX2J5KGRpY3RhdG9yc2hpcCkgJT4lIAogICAgc3VtbWFyaXNlKE51bWJlcl9PZl9Db3VudHJpZXNfV2l0aF9Ob19SZWdDaGFuZ2UgPSBuKCkpCgprbml0cjo6a2FibGUoZ2RkX25vX3JlZ2ltZV9jaGFuZ2VfZGljX2RlbSwgZm9ybWF0ID0gImh0bWwiLCBjYXB0aW9uID0gIkNvdW50cnkgQ291bnQgZm9yIENvdW50cmllcyB0aGF0IGhhdmUgZmFjZWQgbm8gcmVnaW1lIGNoYW5nZSBhbmQgaGF2ZSBlaXRoZXIgcmVtYWluZWQgRGVtb2NyYWNpZXMgb3IgRGljdGF0b3JzaGlwcyB0aHJvdWdob3V0IikgJT4lCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiLCAiY29uZGVuc2VkIiwgInJlc3BvbnNpdmUiKSwKICAgICAgICAgICAgICAgIGZ1bGxfd2lkdGggPSBGQUxTRSkKCgpnZGRfZHluYXN0aWNfbm9fcmVnaW1lX2NoYW5nZV9kaWNfZGVtIDwtIGdkZCAlPiUKICBmaWx0ZXIoUmVnaW1lX0NoYW5nZSA9PSAwKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSwgZGljdGF0b3JzaGlwKSAlPiUKICBtdXRhdGUoCiAgICB0b3RhbF95ZWFycyA9IChtYXgoWWVhcikgLSBtaW4oWWVhcikpKzEsCiAgICBkeW5feWVhcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgcHJvcF9keW5feWVhcnMgPSAoZHluX3llYXJzL3RvdGFsX3llYXJzKSoxMDAsCiAgICApICU+JQogIHVuZ3JvdXAoKSAKCgojUHJvcG9ydGlvbiBvZiBZZWVhcnMgVW5kZXIgRHluIFJ1bGUgIAoKZ2RkX2R5bmFzdGljX25vX3JlZ2ltZV9jaGFuZ2VfZGljX2RlbV9zdW1tYXJ5IDwtIGdkZCAlPiUKICBmaWx0ZXIoUmVnaW1lX0NoYW5nZSA9PSAwKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSwgZGljdGF0b3JzaGlwKSAlPiUKICBtdXRhdGUoCiAgICB0b3RhbF95ZWFycyA9IChtYXgoWWVhcikgLSBtaW4oWWVhcikpKzEsCiAgICBkeW5feWVhcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgcHJvcF9keW5feWVhcnMgPSAoZHluX3llYXJzL3RvdGFsX3llYXJzKSoxMDAsCiAgICApICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoZGljdGF0b3JzaGlwKSAlPiUgCiAgc3VtbWFyaXNlKFBlcmNlbnRhZ2VfRHluYXN0aWNfWWVhcnMgPSBtZWFuKHByb3BfZHluX3llYXJzKSkKCmdncGxvdChnZGRfZHluYXN0aWNfbm9fcmVnaW1lX2NoYW5nZV9kaWNfZGVtLCBhZXMoeD0gZmFjdG9yKGRpY3RhdG9yc2hpcCksIHk9cHJvcF9keW5feWVhcnMpKSsKICBnZW9tX2JveHBsb3QoKSsKICBsYWJzKAogICAgdGl0bGUgPSAiUHJvcG9ydGlvbiBvZiB5ZWFycyB1bmRlciBEeW5hc3RpYyBSdWxlIGJ5IERpY3RhdG9yc2hpcCBTdGF0dXMgaW4gUG9saXRpZXMgd2l0aCBObyBSZWdpbWUgQ2hhbmdlIiwKICAgIHggPSAiRGljdGF0b3JzaGlwICgxKSBvciBEZW1vY3JhY3kgKDApIiwKICAgIHkgPSAiUHJvcG9ydGlvbiBvZiBZZWFycyAoJSkiCiAgKSArCiAgdGhlbWVfc3RhdGEoKQoKZ2RkX2R5bmFzdGljX25vX3JlZ2ltZV9jaGFuZ2VfZGljX2RlbV9zdW1tYXJ5X3llYXJzIDwtIGdkZCAlPiUKICBmaWx0ZXIoUmVnaW1lX0NoYW5nZSA9PSAwKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSwgZGljdGF0b3JzaGlwKSAlPiUKICBtdXRhdGUoCiAgICB0b3RhbF95ZWFycyA9IChtYXgoWWVhcikgLSBtaW4oWWVhcikpKzEsCiAgICBkeW5feWVhcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgcHJvcF9keW5feWVhcnMgPSAoZHluX3llYXJzL3RvdGFsX3llYXJzKSoxMDAsCiAgICApICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoWWVhciwgZGljdGF0b3JzaGlwKSAlPiUgCiAgc3VtbWFyaXNlKFBlcmNlbnRhZ2VfRHluYXN0aWNfWWVhcnMgPSBtZWFuKHByb3BfZHluX3llYXJzKSkKCmdncGxvdChnZGRfZHluYXN0aWNfbm9fcmVnaW1lX2NoYW5nZV9kaWNfZGVtX3N1bW1hcnlfeWVhcnMsIGFlcyh4PVllYXIsIHk9UGVyY2VudGFnZV9EeW5hc3RpY19ZZWFycykpKwogIGdlb21fbGluZSgpKwogIHlsaW0oMCw1MCkrCiAgZmFjZXRfd3JhcCh+ZGljdGF0b3JzaGlwKSsKICBsYWJzKAogICAgdGl0bGUgPSAiUHJvcG9ydGlvbiBvZiB5ZWFycyB1bmRlciBEeW5hc3RpYyBSdWxlIGJ5IERpY3RhdG9yc2hpcCBTdGF0dXMgaW4gUG9saXRpZXMgd2l0aCBObyBSZWdpbWUgQ2hhbmdlIiwKICAgIHggPSAiRGljdGF0b3JzaGlwICgxKSBvciBEZW1vY3JhY3kgKDApIiwKICAgIHkgPSAiUHJvcG9ydGlvbiBvZiBZZWFycyAoJSkiCiAgKSArCiAgdGhlbWVfc3RhdGEoKQoKCgojUGVyY2VudGFnZSBvZiBMZWFkZXJzIGluIGNvdW50cmllcyB3aXRoIG5vIHRyYW5zaXRpb25zIGFuZCBoYXZlIHJlbWFpbmVkIGRpY3RhdG9yc2hpcCBvciBkZW1vY3JhY2llcwpnZGRfZHlucGVyY2VudF9kaWNkZW1fbGVhZGVyIDwtIGdkZCAlPiUKICBmaWx0ZXIoUmVnaW1lX0NoYW5nZSA9PSAwKSAlPiUgCiAgZGlzdGluY3Qobm9taW5hbF9sZWFkZXIsIC5rZWVwX2FsbCA9IFRSVUUpICU+JSAKICBncm91cF9ieShDb3VudHJ5KSAlPiUgCiAgbXV0YXRlKER5bl9SdWxlcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgICAgICB0b3RhbF9ydWxlcnMgPSBuKCksCiAgICAgICAgIFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzID0gRHluX1J1bGVycy90b3RhbF9ydWxlcnMqMTAwKSAlPiUgCiAgdW5ncm91cCgpCgpnZGRfZHlucGVyY2VudF9kaWNkZW1fbGVhZGVyX3N1bW1hcnkgPC0gZ2RkICU+JQogIGZpbHRlcihSZWdpbWVfQ2hhbmdlID09MCkgJT4lIAogIGRpc3RpbmN0KG5vbWluYWxfbGVhZGVyLCAua2VlcF9hbGwgPSBUUlVFKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lIAogIG11dGF0ZShEeW5fUnVsZXJzID0gc3VtKHByZWRfYmluKSwKICAgICAgICAgdG90YWxfcnVsZXJzID0gbigpLAogICAgICAgICBQZXJjZW50YWdlX0R5bmFzdGljX1J1bGVycyA9IER5bl9SdWxlcnMvdG90YWxfcnVsZXJzKjEwMCkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoZGljdGF0b3JzaGlwKSAlPiUgCiAgc3VtbWFyaXNlKER5bmFzdGljX1J1bGVyc19wZXJjZW50YWdlID0gbWVhbihQZXJjZW50YWdlX0R5bmFzdGljX1J1bGVycykpCiAgCmdncGxvdChnZGRfZHlucGVyY2VudF9kaWNkZW1fbGVhZGVyLCBhZXMoeCA9IGZhY3RvcihkaWN0YXRvcnNoaXApLCB5ID1QZXJjZW50YWdlX0R5bmFzdGljX1J1bGVycykpKwogIGdlb21fYm94cGxvdCgpKwogIGxhYnMoCiAgICB0aXRsZSA9ICJQZXJjZW50YWdlIG9mIER5bmFzdGljIExlYWRlcnMgd2l0aCBObyBSZWdpbWUgQ2hhbmdlIiwKICAgIHggPSAiRGljdGF0b3JzaGlwICgxKSBhbmQgRGVtb2NyYWN5ICgwKSIsCiAgICB5ID0gIlBlcmNlbnRhZ2Ugb2YgTGVhZGVycyAoJSkiCiAgKSArCiAgdGhlbWVfc3RhdGEoKQpgYGAKCiMjIENvdW50cmllcyB0aGF0IGhhdmUgaGFkIG5vIHJlZ2ltZSBjaGFuZ2UgYW5kIGhhdmUgcmVtYWluZWQgRGVtb2NyYXRpYyBieSBkZW1vY3JhY3kgdHlwZQoKYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0Kb25seV9kZW1fbm9fcmVnaW1lY2hhbmdlIDwtIGdkZCAlPiUgCiAgZmlsdGVyKFJlZ2ltZV9DaGFuZ2UgPT0gMCkgJT4lIAogIGZpbHRlcihkaWN0YXRvcnNoaXAgPT0gMCkgJT4lIAogIGFycmFuZ2UoQ291bnRyeSwgWWVhcikKCm9ubHlfZGVtX25vX3JlZ2ltZWNoYW5nZSA8LSBvbmx5X2RlbV9ub19yZWdpbWVjaGFuZ2UgJT4lCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lCiAgbXV0YXRlKAogICAgUHJldmlvdXNfU3lzdGVtX0NhdGVnb3J5ID0gYyhOQSwgaGVhZChzeXN0ZW1fY2F0ZWdvcnksIC0xKSksCiAgICBJbnRlcm5hbF9UcmFuc2l0aW9uX0JpbmFyeSA9IGlmZWxzZSgKICAgICAgaXMubmEoUHJldmlvdXNfU3lzdGVtX0NhdGVnb3J5KSwgMCwgIyBObyB0cmFuc2l0aW9uIGlmIHByZXZpb3VzIHZhbHVlIGlzIE5BCiAgICAgIGlmZWxzZShzeXN0ZW1fY2F0ZWdvcnkgIT0gUHJldmlvdXNfU3lzdGVtX0NhdGVnb3J5LCAxLCAwKSAjIFRyYW5zaXRpb24gaWYgdGhlcmUgaXMgYSBjaGFuZ2UKICAgICkKICApICU+JQogIHVuZ3JvdXAoKQoKb25seV9kZW1fbm9fcmVnaW1lY2hhbmdlIDwtIG9ubHlfZGVtX25vX3JlZ2ltZWNoYW5nZSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lCiAgbXV0YXRlKGludGVybmFsX2RlbV9zeXN0ZW1fY2hhbmdlID0gaWZfZWxzZShuX2Rpc3RpbmN0KEludGVybmFsX1RyYW5zaXRpb25fQmluYXJ5KSA+IDEsIDEsIDApKSAlPiUKICB1bmdyb3VwKCkgJT4lIAogIHNlbGVjdChjb3VudHJ5X2lzb2NvZGUsIENPVywgUmVnaW9uLCBDb3VudHJ5LCBZZWFyLCBub21pbmFsX2xlYWRlciwgZmxuX2dlbmRlciwgc3lzdGVtX2NhdGVnb3J5LCBQcmV2aW91c19TeXN0ZW1fQ2F0ZWdvcnksIGludGVybmFsX2RlbV9zeXN0ZW1fY2hhbmdlLCBJbnRlcm5hbF9UcmFuc2l0aW9uX0JpbmFyeSwgZXZlcnl0aGluZygpKQoKb25seV9kZW1faW50ZXJuYWxfY2hhbmdlX3N1bW1hcnkgPC1vbmx5X2RlbV9ub19yZWdpbWVjaGFuZ2UgJT4lIAogIGRpc3RpbmN0KENvdW50cnksLmtlZXBfYWxsID0gVFJVRSkgJT4lIAogIGdyb3VwX2J5KGludGVybmFsX2RlbV9zeXN0ZW1fY2hhbmdlKSAlPiUgCiAgc3VtbWFyaXNlKAogICAgTnVtYmVyX09mX0NvdW50cmllcyA9IG4oKSkKICAgIApvbmx5X2RlbV9ub19pbnRlcm5hbGNoYW5nZV9zdW1tYXJ5IDwtIG9ubHlfZGVtX25vX3JlZ2ltZWNoYW5nZSAlPiUgCiAgZmlsdGVyKGludGVybmFsX2RlbV9zeXN0ZW1fY2hhbmdlID09IDApICU+JSAKICBkaXN0aW5jdChDb3VudHJ5LCAua2VlcF9hbGwgPSBUUlVFKSAlPiUgCiAgZ3JvdXBfYnkoc3lzdGVtX2NhdGVnb3J5KSAlPiUgCiAgc3VtbWFyaXNlKE51bV9Db3VudHJpZXMgPW4oKSkKCm9ubHlfZGVtX3Byb3BfZHluIDwtICBvbmx5X2RlbV9ub19yZWdpbWVjaGFuZ2UgJT4lIAogIGdyb3VwX2J5KENvdW50cnksIGludGVybmFsX2RlbV9zeXN0ZW1fY2hhbmdlKSAlPiUKICBtdXRhdGUoCiAgICB0b3RhbF95ZWFycyA9IChtYXgoWWVhcikgLSBtaW4oWWVhcikpKzEsCiAgICBkeW5feWVhcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgcHJvcF9keW5feWVhcnMgPSAoZHluX3llYXJzL3RvdGFsX3llYXJzKSoxMDAsCiAgICApICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoaW50ZXJuYWxfZGVtX3N5c3RlbV9jaGFuZ2UpICU+JSAKICBzdW1tYXJpc2UoUHJvcF9EeW5fWWVhcnMgPSBtZWFuKHByb3BfZHluX3llYXJzKSkKICAKCiMjIFByb3BfRHluWWVhcnMgQnkgU3lzdGVtIENhdGVnb3J5IHR5cGUgd2hlcmUgbm8gaW50ZXJuYWwgY2hhbmdlIGhhcyBoYXBwZW5lZApvbmx5X2RlbV9wcm9wX2R5bl9zeXN0ZW1fY2F0ZWdvcnkgPC0gb25seV9kZW1fbm9fcmVnaW1lY2hhbmdlICU+JSAKICBmaWx0ZXIoaW50ZXJuYWxfZGVtX3N5c3RlbV9jaGFuZ2UgPT0gMCkgJT4lIAogIGdyb3VwX2J5KENvdW50cnksIHN5c3RlbV9jYXRlZ29yeSkgJT4lCiAgbXV0YXRlKAogICAgdG90YWxfeWVhcnMgPSAobWF4KFllYXIpIC0gbWluKFllYXIpKSsxLAogICAgZHluX3llYXJzID0gc3VtKHByZWRfYmluKSwKICAgIHByb3BfZHluX3llYXJzID0gKGR5bl95ZWFycy90b3RhbF95ZWFycykqMTAwLAogICAgKSAlPiUKICB1bmdyb3VwKCkKCm9ubHlfZGVtX3Byb3BfZHluX3N5c3RlbV9jYXRlZ29yeV9zdW1tYXJ5IDwtIG9ubHlfZGVtX25vX3JlZ2ltZWNoYW5nZSAlPiUgCiAgZmlsdGVyKGludGVybmFsX2RlbV9zeXN0ZW1fY2hhbmdlID09IDApICU+JSAKICBncm91cF9ieShDb3VudHJ5LCBzeXN0ZW1fY2F0ZWdvcnkpICU+JQogIG11dGF0ZSgKICAgIHRvdGFsX3llYXJzID0gKG1heChZZWFyKSAtIG1pbihZZWFyKSkrMSwKICAgIGR5bl95ZWFycyA9IHN1bShwcmVkX2JpbiksCiAgICBwcm9wX2R5bl95ZWFycyA9IChkeW5feWVhcnMvdG90YWxfeWVhcnMpKjEwMCwKICAgICkgJT4lCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieShzeXN0ZW1fY2F0ZWdvcnkpICU+JSAKICBzdW1tYXJpc2UoUHJvcF9EeW5fWWVhcnMgPSBtZWFuKHByb3BfZHluX3llYXJzKSkKCmtuaXRyOjprYWJsZShvbmx5X2RlbV9wcm9wX2R5bl9zeXN0ZW1fY2F0ZWdvcnlfc3VtbWFyeSwgZm9ybWF0ID0gImh0bWwiLCBjYXB0aW9uID0gIlBlcmNlbnRhZ2Ugb2YgeWVhcnMgdW5kZXIgRHluYXN0aWMgUnVsZSBpbiBQVVJFIERlbW9jcmFjaWVzIGJ5IFN5c3RlbSBDYXRlZ29yeSIpICU+JQogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwgImNvbmRlbnNlZCIsICJyZXNwb25zaXZlIiksCiAgICAgICAgICAgICAgICBmdWxsX3dpZHRoID0gRkFMU0UpCgpnZ3Bsb3Qob25seV9kZW1fcHJvcF9keW5fc3lzdGVtX2NhdGVnb3J5LCBhZXMoeCA9IGZhY3RvcihzeXN0ZW1fY2F0ZWdvcnkpLCB5ID1wcm9wX2R5bl95ZWFycykpKwogIGdlb21fYm94cGxvdCgpKwogIGxhYnMoCiAgICB0aXRsZSA9ICJQcm9wb3J0aW9uIG9mIFllYXJzIFVuZGVyIER5bmFzdGljIFJ1bGUiLAogICAgeCA9ICJEZW1vY3JhY3kgVHlwZSIsCiAgICB5ID0gIlBlcmNlbnRhZ2Ugb2YgWWVhcnMgKCUpIgogICkgKwogIHRoZW1lX3N0YXRhKCkKCiMjIEZvciBQZXJjZW50YWdlIG9mIER5bmFzdGljIExlYWRlcnMgaW4gY291bnRyaWVzIHRoYXQgaGF2ZSByZW1haW5lZCBvbmx5IG9uZSBraW5kIG9mIGRlbW9jcmFjeSB0aHJvdWdob3V0Cgpvbmx5X2RlbV9sZWFkZXJfc3lzdGVtX2NhdGVnb3J5IDwtIG9ubHlfZGVtX25vX3JlZ2ltZWNoYW5nZSAlPiUKICBmaWx0ZXIoaW50ZXJuYWxfZGVtX3N5c3RlbV9jaGFuZ2UgPT0gMCkgJT4lIAogIGRpc3RpbmN0KG5vbWluYWxfbGVhZGVyLCAua2VlcF9hbGwgPSBUUlVFKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lIAogIG11dGF0ZShEeW5fUnVsZXJzID0gc3VtKHByZWRfYmluKSwKICAgICAgICAgdG90YWxfcnVsZXJzID0gbigpLAogICAgICAgICBQZXJjZW50YWdlX0R5bmFzdGljX1J1bGVycyA9IER5bl9SdWxlcnMvdG90YWxfcnVsZXJzKjEwMCkgJT4lIAogIHVuZ3JvdXAoKQoKb25seV9kZW1fbGVhZGVyX3N5c3RlbV9jYXRlZ29yeV9zdW1tYXJ5IDwtIG9ubHlfZGVtX25vX3JlZ2ltZWNoYW5nZSAlPiUKICBmaWx0ZXIoaW50ZXJuYWxfZGVtX3N5c3RlbV9jaGFuZ2UgPT0wKSAlPiUgCiAgZGlzdGluY3Qobm9taW5hbF9sZWFkZXIsIC5rZWVwX2FsbCA9IFRSVUUpICU+JSAKICBncm91cF9ieShDb3VudHJ5KSAlPiUgCiAgbXV0YXRlKER5bl9SdWxlcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgICAgICB0b3RhbF9ydWxlcnMgPSBuKCksCiAgICAgICAgIFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzID0gRHluX1J1bGVycy90b3RhbF9ydWxlcnMqMTAwKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieShzeXN0ZW1fY2F0ZWdvcnkpICU+JSAKICBzdW1tYXJpc2UoRHluYXN0aWNfUnVsZXJzX3BlcmNlbnRhZ2UgPSBtZWFuKFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzKSkKICAKZ2dwbG90KG9ubHlfZGVtX2xlYWRlcl9zeXN0ZW1fY2F0ZWdvcnksIGFlcyh4ID0gZmFjdG9yKHN5c3RlbV9jYXRlZ29yeSksIHkgPVBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzKSkrCiAgZ2VvbV9ib3hwbG90KCkrCiAgbGFicygKICAgIHRpdGxlID0gIlBlcmNlbnRhZ2Ugb2YgRHluYXN0aWMgTGVhZGVycyIsCiAgICBjYXB0aW9uID0gIkluIHBvbGl0aWVzIHRoYXQgaGF2ZSByZW1haW5lZCBvbmUga2luZCBvZiBkZW1vY3JhY3kgdGhyb3VnaG91dCIsCiAgICB4ID0gIlN5c3RlbSBDYXRlZ29yeSIsCiAgICB5ID0gIlBlcmNlbnRhZ2Ugb2YgTGVhZGVycyAoJSkiCiAgKSArCiAgdGhlbWVfc3RhdGEoKQoKYGBgCgojIyBDb3VudHJpZXMgdGhhdCBoYXZlIGhhZCBubyByZWdpbWUgY2hhbmdlIGFuZCBoYXZlIHJlbWFpbmVkIGRpY3RhdG9yc2hpcCBieSBkaWN0YXRvcnNoaXAgdHlwZQoKYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0Kb25seV9kaWNfbm9fcmVnaW1lY2hhbmdlIDwtIGdkZCAlPiUgCiAgZmlsdGVyKFJlZ2ltZV9DaGFuZ2UgPT0gMCkgJT4lIAogIGZpbHRlcihkaWN0YXRvcnNoaXAgPT0gMSkgJT4lIAogIGFycmFuZ2UoQ291bnRyeSwgWWVhcikKCm9ubHlfZGljX25vX3JlZ2ltZWNoYW5nZSA8LSBvbmx5X2RpY19ub19yZWdpbWVjaGFuZ2UgJT4lCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lCiAgbXV0YXRlKAogICAgUHJldmlvdXNfU3lzdGVtX0NhdGVnb3J5ID0gYyhOQSwgaGVhZChzeXN0ZW1fY2F0ZWdvcnksIC0xKSksCiAgICBJbnRlcm5hbF9UcmFuc2l0aW9uX0JpbmFyeSA9IGlmZWxzZSgKICAgICAgaXMubmEoUHJldmlvdXNfU3lzdGVtX0NhdGVnb3J5KSwgMCwgIyBObyB0cmFuc2l0aW9uIGlmIHByZXZpb3VzIHZhbHVlIGlzIE5BCiAgICAgIGlmZWxzZShzeXN0ZW1fY2F0ZWdvcnkgIT0gUHJldmlvdXNfU3lzdGVtX0NhdGVnb3J5LCAxLCAwKSAjIFRyYW5zaXRpb24gaWYgdGhlcmUgaXMgYSBjaGFuZ2UKICAgICkKICApICU+JQogIHVuZ3JvdXAoKQoKb25seV9kaWNfbm9fcmVnaW1lY2hhbmdlIDwtIG9ubHlfZGljX25vX3JlZ2ltZWNoYW5nZSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lCiAgbXV0YXRlKGludGVybmFsX2RpY19zeXN0ZW1fY2hhbmdlID0gaWZfZWxzZShuX2Rpc3RpbmN0KEludGVybmFsX1RyYW5zaXRpb25fQmluYXJ5KSA+IDEsIDEsIDApKSAlPiUKICB1bmdyb3VwKCkgJT4lIAogIHNlbGVjdChjb3VudHJ5X2lzb2NvZGUsIENPVywgUmVnaW9uLCBDb3VudHJ5LCBZZWFyLCBub21pbmFsX2xlYWRlciwgZmxuX2dlbmRlciwgc3lzdGVtX2NhdGVnb3J5LCBQcmV2aW91c19TeXN0ZW1fQ2F0ZWdvcnksIGludGVybmFsX2RpY19zeXN0ZW1fY2hhbmdlLCBJbnRlcm5hbF9UcmFuc2l0aW9uX0JpbmFyeSwgZXZlcnl0aGluZygpKQoKI2NvdW50cnkgY291bnQgb24gbnVtYmVyIG9mIGNvdW50cmllcyB0aGF0IGhhdmUgcmVtYWluZWQgZGljIGJ1dCBieSBpbnRlcm5hbCBkaWMgY2hhbmdlIHllcyBvciBubwpvbmx5X2RpY19pbnRlcm5hbF9jaGFuZ2Vfc3VtbWFyeSA8LW9ubHlfZGljX25vX3JlZ2ltZWNoYW5nZSAlPiUgCiAgZGlzdGluY3QoQ291bnRyeSwua2VlcF9hbGwgPSBUUlVFKSAlPiUgCiAgZ3JvdXBfYnkoaW50ZXJuYWxfZGljX3N5c3RlbV9jaGFuZ2UpICU+JSAKICBzdW1tYXJpc2UoCiAgICBOdW1iZXJfT2ZfQ291bnRyaWVzID0gbigpKQogICAgCiMjIE5vIGludGVybmFsIGNoYW5nZSBjb3VudCBieSBkaWN0YXRvcnNoaXAgdHlwZSByZW1haW5lZCBzYW1lIGRpYyB0aHJvdWdob3V0Cm9ubHlfZGljX25vX2ludGVybmFsY2hhbmdlX3N1bW1hcnkgPC0gb25seV9kaWNfbm9fcmVnaW1lY2hhbmdlICU+JSAKICBmaWx0ZXIoaW50ZXJuYWxfZGljX3N5c3RlbV9jaGFuZ2UgPT0gMCkgJT4lIAogIGRpc3RpbmN0KENvdW50cnksIC5rZWVwX2FsbCA9IFRSVUUpICU+JSAKICBncm91cF9ieShzeXN0ZW1fY2F0ZWdvcnkpICU+JSAKICBzdW1tYXJpc2UoTnVtX0NvdW50cmllcyA9bigpKQoKI0R5bmFzdGljIFByb3BvcnRpb25zIGJ5IGRpY3RhdG9yc2hpcHMgd2hldGhlciB0aGV5IGludGVybmFsbHkgY2hhbmdlZCBmcm9tIG9uZSBkaWMgdG8gYW5vdGhlciBkaWMKb25seV9kaWNfcHJvcF9keW4gPC0gb25seV9kaWNfbm9fcmVnaW1lY2hhbmdlICU+JSAKICBncm91cF9ieShDb3VudHJ5LCBpbnRlcm5hbF9kaWNfc3lzdGVtX2NoYW5nZSkgJT4lCiAgbXV0YXRlKAogICAgdG90YWxfeWVhcnMgPSAobWF4KFllYXIpIC0gbWluKFllYXIpKSsxLAogICAgZHluX3llYXJzID0gc3VtKHByZWRfYmluKSwKICAgIHByb3BfZHluX3llYXJzID0gKGR5bl95ZWFycy90b3RhbF95ZWFycykqMTAwLAogICAgKSAlPiUKICB1bmdyb3VwKCkgJT4lIAogIGdyb3VwX2J5KGludGVybmFsX2RpY19zeXN0ZW1fY2hhbmdlKSAlPiUgCiAgc3VtbWFyaXNlKFByb3BfRHluX1llYXJzID0gbWVhbihwcm9wX2R5bl95ZWFycykpCgojIyBQcm9wX0R5blllYXJzIEJ5IFN5c3RlbSBDYXRlZ29yeSB0eXBlIHdoZXJlIG5vIGludGVybmFsIGNoYW5nZSBoYXMgaGFwcGVuZWQKb25seV9kaWNfcHJvcF9keW5fc3lzdGVtX2NhdGVnb3J5IDwtIG9ubHlfZGljX25vX3JlZ2ltZWNoYW5nZSAlPiUgCiAgZmlsdGVyKGludGVybmFsX2RpY19zeXN0ZW1fY2hhbmdlID09IDApICU+JSAKICBncm91cF9ieShDb3VudHJ5LCBzeXN0ZW1fY2F0ZWdvcnkpICU+JQogIG11dGF0ZSgKICAgIHRvdGFsX3llYXJzID0gKG1heChZZWFyKSAtIG1pbihZZWFyKSkrMSwKICAgIGR5bl95ZWFycyA9IHN1bShwcmVkX2JpbiksCiAgICBwcm9wX2R5bl95ZWFycyA9IChkeW5feWVhcnMvdG90YWxfeWVhcnMpKjEwMCwKICAgICkgJT4lCiAgdW5ncm91cCgpCgpvbmx5X2RpY19wcm9wX2R5bl9zeXN0ZW1fY2F0ZWdvcnlfc3VtbWFyeSA8LSBvbmx5X2RpY19ub19yZWdpbWVjaGFuZ2UgJT4lIAogIGZpbHRlcihpbnRlcm5hbF9kaWNfc3lzdGVtX2NoYW5nZSA9PSAwKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSwgc3lzdGVtX2NhdGVnb3J5KSAlPiUKICBtdXRhdGUoCiAgICB0b3RhbF95ZWFycyA9IChtYXgoWWVhcikgLSBtaW4oWWVhcikpKzEsCiAgICBkeW5feWVhcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgcHJvcF9keW5feWVhcnMgPSAoZHluX3llYXJzL3RvdGFsX3llYXJzKSoxMDAsCiAgICApICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoc3lzdGVtX2NhdGVnb3J5KSAlPiUgCiAgc3VtbWFyaXNlKFByb3BfRHluX1llYXJzID0gbWVhbihwcm9wX2R5bl95ZWFycykpCgprbml0cjo6a2FibGUob25seV9kaWNfcHJvcF9keW5fc3lzdGVtX2NhdGVnb3J5X3N1bW1hcnksIGZvcm1hdCA9ICJodG1sIiwgY2FwdGlvbiA9ICJQZXJjZW50YWdlIG9mIHllYXJzIHVuZGVyIER5bmFzdGljIFJ1bGUgaW4gUFVSRSBEaWN0YXRvcnNoaXBzIGJ5IFN5c3RlbSBDYXRlZ29yeSIpICU+JQogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwgImNvbmRlbnNlZCIsICJyZXNwb25zaXZlIiksCiAgICAgICAgICAgICAgICBmdWxsX3dpZHRoID0gRkFMU0UpCgpnZ3Bsb3Qob25seV9kaWNfcHJvcF9keW5fc3lzdGVtX2NhdGVnb3J5LCBhZXMoeCA9IGZhY3RvcihzeXN0ZW1fY2F0ZWdvcnkpLCB5ID1wcm9wX2R5bl95ZWFycykpKwogIGdlb21fYm94cGxvdCgpKwogIGxhYnMoCiAgICB0aXRsZSA9ICJQcm9wb3J0aW9uIG9mIFllYXJzIFVuZGVyIER5bmFzdGljIFJ1bGUiLAogICAgeCA9ICJEaWN0YXRvcnNoaXAgVHlwZSIsCiAgICB5ID0gIlBlcmNlbnRhZ2Ugb2YgWWVhcnMgKCUpIgogICkgKwogIHRoZW1lX3N0YXRhKCkKCiMjIEZvciBQZXJjZW50YWdlIG9mIER5bmFzdGljIExlYWRlcnMgaW4gY291bnRyaWVzIHRoYXQgaGF2ZSByZW1haW5lZCBvbmx5IG9uZSBraW5kIG9mIGRlbW9jcmFjeSB0aHJvdWdob3V0Cgpvbmx5X2RpY19sZWFkZXJfc3lzdGVtX2NhdGVnb3J5IDwtIG9ubHlfZGljX25vX3JlZ2ltZWNoYW5nZSAlPiUKICBmaWx0ZXIoaW50ZXJuYWxfZGljX3N5c3RlbV9jaGFuZ2UgPT0gMCkgJT4lIAogIGRpc3RpbmN0KG5vbWluYWxfbGVhZGVyLCAua2VlcF9hbGwgPSBUUlVFKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lIAogIG11dGF0ZShEeW5fUnVsZXJzID0gc3VtKHByZWRfYmluKSwKICAgICAgICAgdG90YWxfcnVsZXJzID0gbigpLAogICAgICAgICBQZXJjZW50YWdlX0R5bmFzdGljX1J1bGVycyA9IER5bl9SdWxlcnMvdG90YWxfcnVsZXJzKjEwMCkgJT4lIAogIHVuZ3JvdXAoKQoKb25seV9kaWNfbGVhZGVyX3N5c3RlbV9jYXRlZ29yeV9zdW1tYXJ5IDwtIG9ubHlfZGljX25vX3JlZ2ltZWNoYW5nZSAlPiUKICBmaWx0ZXIoaW50ZXJuYWxfZGljX3N5c3RlbV9jaGFuZ2UgPT0wKSAlPiUgCiAgZGlzdGluY3Qobm9taW5hbF9sZWFkZXIsIC5rZWVwX2FsbCA9IFRSVUUpICU+JSAKICBncm91cF9ieShDb3VudHJ5KSAlPiUgCiAgbXV0YXRlKER5bl9SdWxlcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgICAgICB0b3RhbF9ydWxlcnMgPSBuKCksCiAgICAgICAgIFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzID0gRHluX1J1bGVycy90b3RhbF9ydWxlcnMqMTAwKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieShzeXN0ZW1fY2F0ZWdvcnkpICU+JSAKICBzdW1tYXJpc2UoRHluYXN0aWNfUnVsZXJzX3BlcmNlbnRhZ2UgPSBtZWFuKFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzKSkKICAKZ2dwbG90KG9ubHlfZGljX2xlYWRlcl9zeXN0ZW1fY2F0ZWdvcnksIGFlcyh4ID0gZmFjdG9yKHN5c3RlbV9jYXRlZ29yeSksIHkgPVBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzKSkrCiAgZ2VvbV9ib3hwbG90KCkrCiAgbGFicygKICAgIHRpdGxlID0gIlBlcmNlbnRhZ2Ugb2YgRHluYXN0aWMgTGVhZGVycyIsCiAgICBjYXB0aW9uID0gIkluIHBvbGl0aWVzIHRoYXQgaGF2ZSByZW1haW5lZCBvbmUga2luZCBvZiBkZW1vY3JhY3kgdGhyb3VnaG91dCIsCiAgICB4ID0gIlN5c3RlbSBDYXRlZ29yeSIsCiAgICB5ID0gIlBlcmNlbnRhZ2Ugb2YgTGVhZGVycyAoJSkiCiAgKSArCiAgdGhlbWVfc3RhdGEoKQpgYGAKCiMjIENvdW50cnkgQ291bnQgZm9yIG51bWJlciBvZiBSZWdpbWUgVHJhbnNpdGlvbnMgYW5kIER5bmFzdGljIEluZm9ybWF0aW9uCgpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQojYmFzZWQgb24gZGljIGRlbQpnZGRfdHJhbnNpdGlvbl9jb3VudCA8LSBnZGQgJT4lIAogIGRpc3RpbmN0KENvdW50cnksIC5rZWVwX2FsbCA9IFRSVUUpICU+JSAKICBncm91cF9ieShOdW1fVHJhbnNpdGlvbnMpICU+JSAKICBzdW1tYXJpc2UoTnVtYmVyX0NvdW50cmllcyA9IG4oKSkKCmtuaXRyOjprYWJsZShnZGRfdHJhbnNpdGlvbl9jb3VudCwgZm9ybWF0ID0gImh0bWwiLCBjYXB0aW9uID0gIkNvdW50cnkgQ291bnQgZm9yIG51bWJlciBvZiBSZWdpbWUgVHJhbnNpdGlvbnMiKSAlPiUKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsICJjb25kZW5zZWQiLCAicmVzcG9uc2l2ZSIpLAogICAgICAgICAgICAgICAgZnVsbF93aWR0aCA9IEZBTFNFKQoKCiMjIEdERCBEeW5hc3RpYyBQZXJjZW50YWdlIGZvciBOdW1fVHJhbnNpdGlvbnMgMS04CmdkZF9keW5fbnVtdHJhbnMgPC0gZ2RkICU+JSAKICBmaWx0ZXIoUmVnaW1lX0NoYW5nZSA9PSAxKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSwgTnVtX1RyYW5zaXRpb25zKSAlPiUKICBtdXRhdGUoCiAgICB0b3RhbF95ZWFycyA9IChtYXgoWWVhcikgLSBtaW4oWWVhcikpKzEsCiAgICBkeW5feWVhcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgcHJvcF9keW5feWVhcnMgPSAoZHluX3llYXJzL3RvdGFsX3llYXJzKSoxMDAsCiAgICApICU+JQogIHVuZ3JvdXAoKSAKCmdkZF9keW5fbnVtdHJhbnNfc3VtbWFyeSA8LSBnZGQgJT4lIAogIGZpbHRlcihSZWdpbWVfQ2hhbmdlID09IDEpICU+JSAKICBncm91cF9ieShDb3VudHJ5LCBOdW1fVHJhbnNpdGlvbnMpICU+JQogIG11dGF0ZSgKICAgIHRvdGFsX3llYXJzID0gKG1heChZZWFyKSAtIG1pbihZZWFyKSkrMSwKICAgIGR5bl95ZWFycyA9IHN1bShwcmVkX2JpbiksCiAgICBwcm9wX2R5bl95ZWFycyA9IChkeW5feWVhcnMvdG90YWxfeWVhcnMpKjEwMCwKICAgICkgJT4lCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieShOdW1fVHJhbnNpdGlvbnMpICU+JSAKICBzdW1tYXJpc2UoUGVyY2VudGFnZV9EeW5hc3RpY19ZZWFycyA9IG1lYW4ocHJvcF9keW5feWVhcnMpKQoKa25pdHI6OmthYmxlKGdkZF9keW5fbnVtdHJhbnNfc3VtbWFyeSwgZm9ybWF0ID0gImh0bWwiLCBjYXB0aW9uID0gIlBlcmNlbnRhZ2Ugb2YgeWVhcnMgdW5kZXIgRHluYXN0aWMgUnVsZSBieSBudW1iZXIgb2YgUmVnaW1lIFRyYW5zaXRpb25zIikgJT4lCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiLCAiY29uZGVuc2VkIiwgInJlc3BvbnNpdmUiKSwKICAgICAgICAgICAgICAgIGZ1bGxfd2lkdGggPSBGQUxTRSkKICAKCmdkZF9keW5fbnVtdHJhbnNfbGVhZGVyX3N1bW1hcnkgPC0gZ2RkICU+JSAKICBmaWx0ZXIoUmVnaW1lX0NoYW5nZSA9PSAxKSAlPiUgCiAgZGlzdGluY3Qobm9taW5hbF9sZWFkZXIsIC5rZWVwX2FsbCA9IFRSVUUpICU+JSAKICBncm91cF9ieShDb3VudHJ5KSAlPiUgCiAgbXV0YXRlKER5bl9SdWxlcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgICAgICB0b3RhbF9ydWxlcnMgPSBuKCksCiAgICAgICAgIFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzID0gRHluX1J1bGVycy90b3RhbF9ydWxlcnMqMTAwKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieShOdW1fVHJhbnNpdGlvbnMpICU+JSAKICBzdW1tYXJpc2UoRHluYXN0aWNfUnVsZXJzX3BlcmNlbnRhZ2UgPSBtZWFuKFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzKSkKCiMjIE5ldyBDYXRlZ29yeSBmb3Igb25lL3R3byBvciBtb3JlIHRyYW5zaXRpb25zCgoKZ2RkX3RyYW5zaXRpb25fY2F0ZWdvcnlfb25lX3R3b21vcmUgPC0gZ2RkICU+JSAKICBmaWx0ZXIoUmVnaW1lX0NoYW5nZSAhPSAwKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lIAogIG11dGF0ZShOdW1iZXJfb2ZfVHJhbnNpdGlvbnMgPSBjYXNlX3doZW4oCiAgICAgICAgICAgICAgICAgIE51bV9UcmFuc2l0aW9ucyA9PSAxIH4gIk9uZSBUcmFuc2l0aW9uIiwKICAgICAgICAgICAgICAgICAgTnVtX1RyYW5zaXRpb25zID49IDIgfiAiVHdvIG9yIE1vcmUgVHJhbnNpdGlvbnMiLAogICAgICAgICAgICAgVFJVRSB+IE5BX2NoYXJhY3Rlcl8pKQoKCgoKI1Byb3BvcnRpb24gb2YgWWVhcnMgVW5kZXIgRHluIFJ1bGUgYnkgT25lIG9yIFR3byBNb3JlCmdkZF9keW5hc3RpY3llYXJzX3RyYW5zaXRpb24gPC0gZ2RkX3RyYW5zaXRpb25fY2F0ZWdvcnlfb25lX3R3b21vcmUgJT4lCiAgZ3JvdXBfYnkoQ291bnRyeSwgTnVtYmVyX29mX1RyYW5zaXRpb25zKSAlPiUKICBtdXRhdGUoCiAgICB0b3RhbF95ZWFycyA9IChtYXgoWWVhcikgLSBtaW4oWWVhcikpKzEsCiAgICBkeW5feWVhcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgcHJvcF9keW5feWVhcnMgPSAoZHluX3llYXJzL3RvdGFsX3llYXJzKSoxMDAsCiAgICApICU+JQogIHVuZ3JvdXAoKSAKICAKZ2RkX2R5bmFzdGljX3RyYW5zaXRpb25zX3N1bW1hcnkgPC0gZ2RkX3RyYW5zaXRpb25fY2F0ZWdvcnlfb25lX3R3b21vcmUgJT4lCiAgZ3JvdXBfYnkoQ291bnRyeSwgTnVtYmVyX29mX1RyYW5zaXRpb25zKSAlPiUKICBtdXRhdGUoCiAgICB0b3RhbF95ZWFycyA9IChtYXgoWWVhcikgLSBtaW4oWWVhcikpKzEsCiAgICBkeW5feWVhcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgcHJvcF9keW5feWVhcnMgPSAoZHluX3llYXJzL3RvdGFsX3llYXJzKSoxMDAsCiAgICApICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoTnVtYmVyX29mX1RyYW5zaXRpb25zKSAlPiUgCiAgc3VtbWFyaXNlKFBlcmNlbnRhZ2VfRHluYXN0aWNfWWVhcnMgPSBtZWFuKHByb3BfZHluX3llYXJzKSkKCmtuaXRyOjprYWJsZShnZGRfZHluYXN0aWNfdHJhbnNpdGlvbnNfc3VtbWFyeSwgZm9ybWF0ID0gImh0bWwiLCBjYXB0aW9uID0gIlBlcmNlbnRhZ2Ugb2YgeWVhcnMgdW5kZXIgRHluYXN0aWMgUnVsZSBieSBPbmUgYW5kIFR3byBvciBNb3JlIHRyYW5zaXRpb25zIikgJT4lCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiLCAiY29uZGVuc2VkIiwgInJlc3BvbnNpdmUiKSwKICAgICAgICAgICAgICAgIGZ1bGxfd2lkdGggPSBGQUxTRSkKCmdncGxvdChnZGRfZHluYXN0aWN5ZWFyc190cmFuc2l0aW9uLCBhZXMoeD0gZmFjdG9yKE51bWJlcl9vZl9UcmFuc2l0aW9ucyksIHk9cHJvcF9keW5feWVhcnMpKSsKICBnZW9tX2JveHBsb3QoKSsKICBsYWJzKAogICAgdGl0bGUgPSAiUHJvcG9ydGlvbiBvZiB5ZWFycyB1bmRlciBEeW5hc3RpYyBSdWxlIGJ5IE51bWJlciBvZiBUcmFuc2l0aW9ucyIsCiAgICB4ID0gIk51bWJlciBvZiBUcmFuc2l0aW9ucyIsCiAgICB5ID0gIlByb3BvcnRpb24gb2YgWWVhcnMgKCUpIgogICkgKwogIHRoZW1lX3N0YXRhKCkKCiNQZXJjZW50YWdlIG9mIExlYWRlcnMKZ2RkX3RyYW5zaXRpb25fbGVhZGVyIDwtIGdkZF90cmFuc2l0aW9uX2NhdGVnb3J5X29uZV90d29tb3JlICU+JQogIGRpc3RpbmN0KG5vbWluYWxfbGVhZGVyLCAua2VlcF9hbGwgPSBUUlVFKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lIAogIG11dGF0ZShEeW5fUnVsZXJzID0gc3VtKHByZWRfYmluKSwKICAgICAgICAgdG90YWxfcnVsZXJzID0gbigpLAogICAgICAgICBQZXJjZW50YWdlX0R5bmFzdGljX1J1bGVycyA9IER5bl9SdWxlcnMvdG90YWxfcnVsZXJzKjEwMCkgJT4lIAogIHVuZ3JvdXAoKQoKZ2RkX3RyYW5zaXRpb25fbGVhZGVyX3N1bW1hcnkgPC0gZ2RkX3RyYW5zaXRpb25fY2F0ZWdvcnlfb25lX3R3b21vcmUgJT4lCiAgZGlzdGluY3Qobm9taW5hbF9sZWFkZXIsIC5rZWVwX2FsbCA9IFRSVUUpICU+JSAKICBncm91cF9ieShDb3VudHJ5KSAlPiUgCiAgbXV0YXRlKER5bl9SdWxlcnMgPSBzdW0ocHJlZF9iaW4pLAogICAgICAgICB0b3RhbF9ydWxlcnMgPSBuKCksCiAgICAgICAgIFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzID0gRHluX1J1bGVycy90b3RhbF9ydWxlcnMqMTAwKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieShOdW1iZXJfb2ZfVHJhbnNpdGlvbnMpICU+JSAKICBzdW1tYXJpc2UoRHluYXN0aWNfUnVsZXJzX3BlcmNlbnRhZ2UgPSBtZWFuKFBlcmNlbnRhZ2VfRHluYXN0aWNfUnVsZXJzKSkKCmtuaXRyOjprYWJsZShnZGRfdHJhbnNpdGlvbl9sZWFkZXJfc3VtbWFyeSwgZm9ybWF0ID0gImh0bWwiLCBjYXB0aW9uID0gIlBlcmNlbnRhZ2Ugb2YgRHluYXN0aWMgTGVhZGVycyBieSBPbmUgYW5kIFR3byBvciBNb3JlIHRyYW5zaXRpb25zIikgJT4lCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiLCAiY29uZGVuc2VkIiwgInJlc3BvbnNpdmUiKSwKICAgICAgICAgICAgICAgIGZ1bGxfd2lkdGggPSBGQUxTRSkKICAKZ2dwbG90KGdkZF90cmFuc2l0aW9uX2xlYWRlciwgYWVzKHggPSBmYWN0b3IoTnVtYmVyX29mX1RyYW5zaXRpb25zKSwgeSA9UGVyY2VudGFnZV9EeW5hc3RpY19SdWxlcnMpKSsKICBnZW9tX2JveHBsb3QoKSsKICBsYWJzKAogICAgdGl0bGUgPSAiUGVyY2VudGFnZSBvZiBEeW5hc3RpYyBMZWFkZXJzIGJ5IE51bWJlciBvZiBUcmFuc2l0aW9ucyIsCiAgICB4ID0gIk51bWJlciBvZiBUcmFuc2l0aW9ucyIsCiAgICB5ID0gIlBlcmNlbnRhZ2Ugb2YgTGVhZGVycyAoJSkiCiAgKSArCiAgdGhlbWVfc3RhdGEoKQoKYGBgCgojIyBQcm9wb3J0aW9uIG9mIFllYXJzIFVuZGVyIER5bmFzdGljIFJ1bGUsIFllYXItYnkteWVhciBEeW5hc3RpYyBSdWxlLCBQcm9wb3J0aW9uIG9mIGR5bmFzdGljIGxlYWRlcnMgYnkgUG9zdC1XVzIgSW5kZXBlbmRlbmNlIHN0YXR1cwoKYGBge3IgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KCmdkZF9keW5hc3RpY19jb3VudHJpZXNfaW5kZXBlbmRlbmNlX3N0YXR1cyA8LSBnZGQgJT4lIAogIGdyb3VwX2J5KENvdW50cnksWWVhcikgJT4lIAogIG11dGF0ZSgKICAgIHRvdGFsX3llYXJzID0gKG1heChZZWFyKSAtIG1pbihZZWFyKSkrMSwKICAgIGR5bl95ZWFycyA9IHN1bShwcmVkX2JpbiksCiAgICBwcm9wX2R5bl95ZWFycyA9IChkeW5feWVhcnMvdG90YWxfeWVhcnMpKjEwMCwKICAgICkgJT4lCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieSh5ZWFyX2Jpbixwb3N0d3cyX2luZCkgJT4lIAogIHN1bW1hcmlzZShQcm9wX0R5bl9ZZWFycyA9IG1lYW4ocHJvcF9keW5feWVhcnMpLAogICAgICAgICAgICBDdW1tdWxhdGl2ZV9EeW5fWWVhcnMgPSBzdW0oZHluX3llYXJzKSkKCmdkZF9keW5hc3RpY19wb3N0d3cyX2luZF9sZWFkZXIgPC0gZ2RkICU+JSAKICBkaXN0aW5jdChub21pbmFsX2xlYWRlciwgLmtlZXBfYWxsID0gVFJVRSkgJT4lIAogIGdyb3VwX2J5KENvdW50cnkpICU+JSAKICBtdXRhdGUoRHluX1J1bGVycyA9IHN1bShwcmVkX2JpbiksCiAgICAgICAgIHRvdGFsX3J1bGVycyA9IG4oKSwKICAgICAgICAgUGVyY2VudGFnZV9EeW5hc3RpY19SdWxlcnMgPSBEeW5fUnVsZXJzL3RvdGFsX3J1bGVycyoxMDApICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIGdyb3VwX2J5KHllYXJfYmluLHBvc3R3dzJfaW5kKSAlPiUgCiAgc3VtbWFyaXNlKER5bmFzdGljX1J1bGVyc19wZXJjZW50YWdlID0gbWVhbihQZXJjZW50YWdlX0R5bmFzdGljX1J1bGVycykpCgpsZWZ0X2pvaW4oZ2RkX2R5bmFzdGljX2NvdW50cmllc19pbmRlcGVuZGVuY2Vfc3RhdHVzLGdkZF9keW5hc3RpY19wb3N0d3cyX2luZF9sZWFkZXIsIGJ5ID0gInBvc3R3dzJfaW5kIiwieWVhcl9iaW4iKQpgYGAKCiMjIFByb3BvcnRpb24gb2YgWWVhcnMgVW5kZXIgRHluYXN0aWMgUnVsZSBieSBGb3JtZXIgQnJpdGlzaCBDb2xvbnkgU3RhdHVzIChJbmZvcm1hdGlvbiBTY3JhcGVkIGZyb20gV2lraXBlZGlhKQoKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZWNobz1GQUxTRX0KZ2RkX2R5bmFzdGljX2NvdW50cmllc19icml0Y29sb255IDwtIGdkZCAlPiUKICBncm91cF9ieShDb3VudHJ5LCB5ZWFyX2JpbiwgZm9ybWVyX2JyaXRpc2hfY29sb255KSAlPiUgCiAgbXV0YXRlKAogICAgdG90YWxfeWVhcnMgPSAobWF4KFllYXIpIC0gbWluKFllYXIpKSsxLAogICAgZHluX3llYXJzID0gc3VtKHByZWRfYmluKSwKICAgIHByb3BfZHluX3llYXJzID0gKGR5bl95ZWFycy90b3RhbF95ZWFycykqMTAwLAogICAgKSAlPiUgCiAgZGlzdGluY3QoQ291bnRyeSwgLmtlZXBfYWxsID0gVFJVRSkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoZm9ybWVyX2JyaXRpc2hfY29sb255LCB5ZWFyX2JpbikgJT4lIAogIHN1bW1hcmlzZShQcm9wX0R5bl9ZZWFycyA9IG1lYW4ocHJvcF9keW5feWVhcnMpKQoKa25pdHI6OmthYmxlKGdkZF9keW5hc3RpY19jb3VudHJpZXNfYnJpdGNvbG9ueSwgZm9ybWF0ID0gImh0bWwiLCBjYXB0aW9uID0gIlByb3BvcnRpb24gb2YgWWVhcnMgVW5kZXIgRHluYXN0aWMgUnVsZSBpbiBEZW1vY3JhdGljIFJlZ2ltZXMiKSAlPiUKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsICJjb25kZW5zZWQiLCAicmVzcG9uc2l2ZSIpLAogICAgICAgICAgICAgICAgZnVsbF93aWR0aCA9IEZBTFNFKQoKCmdkZF9keW5hc3RpY19jb3VudHJpZXNfYnJpdGNvbG9ueSRQcm9wX0R5bl9ZZWFycyA8LSByb3VuZCgoZ2RkX2R5bmFzdGljX2NvdW50cmllc19icml0Y29sb255JFByb3BfRHluX1llYXJzKSwgMikKCmdncGxvdChnZGRfZHluYXN0aWNfY291bnRyaWVzX2JyaXRjb2xvbnksIGFlcyh4ID0gYXMuZmFjdG9yKHllYXJfYmluKSwgeSA9IFByb3BfRHluX1llYXJzLCBjb2xvciA9IGFzLmZhY3Rvcihmb3JtZXJfYnJpdGlzaF9jb2xvbnkpKSkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDMsIGFscGhhID0gMC43LCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC41KSkgKwogIGdlb21fbGluZShhZXMoZ3JvdXAgPSBmb3JtZXJfYnJpdGlzaF9jb2xvbnkpLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC41KSwgc2l6ZSA9IDEpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiMCIgPSAiYmx1ZSIsICIxIiA9ICJyZWQiKSwgbGFiZWxzID0gYygiMCIgPSAiTm90IEEgRm9ybWVyIEJyaXRpc2ggQ29sb255IiwgIjEiID0gIkZvcm1lciBCcml0aXNoIENvbG9ueSIpKSArCiAgeWxpbSgwLDUwKSsKICB0aGVtZV9zdGF0YSgpICsKICBsYWJzKHRpdGxlID0gIlBlcmNlbnRhZ2Ugb2YgWWVhcnMgVW5kZXIgRHluYXN0aWMgUnVsZSAoYnkgZm9ybWVyIEJyaXRpc2ggQ29sb255IFN0YXR1cykiLAogICAgICAgeCA9ICJZZWFyIEJpbiIsCiAgICAgICB5ID0gIlBlcmNlbnRhZ2Ugb2YgWWVhcnMiLAogICAgICAgY29sb3IgPSAiRm9ybWVyIEJyaXRpc2ggQ29sb255IikgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSkpCgoKYGBgCgoKCiMjIFByb3BvcnRpb24gb2YgWWVhcnMgVW5kZXIgRHluYXN0aWMgUnVsZSBieSBSZWdpb25zIChBY3Jvc3MgYWxsIHJlZ2ltZSB0eXBlcykKCmBgYHtyIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsbWVzc2FnZT1GQUxTRX0KCgpgYGAKCgojIyBNYXBwaW5nIG9mIER5bmFzdGljIFJlbGF0aW9uIFR5cGUgQWNyb3NzIGFsbCByZWdpbWUgVHlwZXMKClRoZSBuZWNlc3NhcnkgcHJlLWNvbmRpdGlvbiBmb3IgdGhlIGR5bmFzdCBpbiBvdXIgZGF0YXNldCBpcyB0aGF0IGEgbGVhZGVyIHdpbGwgb25seSBiZSBjbGFzc2lmaWVkIGFzIGEgZHluYXN0IGlmIGFuZCBvbmx5IGlmIGEgdGhhdCBsZWFkZXIgaW4gb3VyIGRhdGFzZXQgaGFzIGEgcGFyZW50LCBpbi1sYXcsIG9yIGFueSBraW5kIG9mIGRpcmVjdCByZWxhdGl2ZSB3aG8gaGFzIGNvbnRlc3RlZCBhbmQgd29uIGFuIGVsZWN0aW9uIGF0IGFueSBsZXZlbCBvZiBwb2xpdGljcyBpbiB0aGVpciByZXNwZWN0aXZlIHBvbGl0aWVzLCB0aGVuIHRoYXQgcG9saXRpY2lhbiBpcyBhIGR5bmFzdC4KClRoaXMgZ3JhcGggc2hvd3Mgd2hhdCBraW5kIG9mIGR5bmFzdGljIHJlbGF0aW9uc2hpcHMgYXJlIG1vc3QgcmVsZXZhbnQgYWNyb3NzIHJlZ2ltZSB0eXBlcyAoQ2l2aWxpYW4gRGljdGF0b3JzaGlwLCBNaWxpdGFyeSBEaWN0YXRvcnNoaXAsIE1peGVkIERlbW9jcmF0aWMsIFBhcmxpYW1lbnRhcnkgRGVtb2NyYWN5LCBQcmVzaWRlbnRpYWwgRGVtb2NyYWN5LCBSb3lhbCBEaWN0YXRvcnNoaXApCgpgYGB7ciBldmFsPVRSVUUsIG1lc3NhZ2U9IEZBTFNFLCBlY2hvPVRSVUUsIHdhcm5pbmc9RkFMU0V9CiAKZ2RkX3JlbGF0aW9uX2FsbCA8LSBnZGQgJT4lIAogICAgZGlzdGluY3Qobm9taW5hbF9sZWFkZXIsIC5rZWVwX2FsbCA9IFRSVUUpICU+JSAKICAgIGZpbHRlcihwcmVkX2JpbiA9PSAxLCByZWxhdGlvbl9jb2RlX3ByZWQgIT0gMCkKCmdkZF9yZWxhdGlvbl9hbGwgPC1nZGRfcmVsYXRpb25fYWxsICU+JSAKICBncm91cF9ieShmbG5fZ2VuZGVyKSAlPiUKICBjb3VudChyZWxhdGlvbl9jb2RlX3ByZWQpICU+JQogIG11dGF0ZShSZWxhdGlvbl9UeXBlID0gY2FzZV93aGVuKAogIGZsbl9nZW5kZXIgPT0gMCAmIHJlbGF0aW9uX2NvZGVfcHJlZCA9PSAyICB+ICJGYXRoZXItU29uIiwKICBmbG5fZ2VuZGVyID09IDAgJiByZWxhdGlvbl9jb2RlX3ByZWQgPT0gMyAgfiAiTW90aGVyLVNvbiIsCiAgZmxuX2dlbmRlciA9PSAwICYgcmVsYXRpb25fY29kZV9wcmVkID09IDggIH4gIkJyb3RoZXItQnJvdGhlciIsCiAgZmxuX2dlbmRlciA9PSAwICYgcmVsYXRpb25fY29kZV9wcmVkID09IDEwIH4gIkdyYW5kZmF0aGVyLUdyYW5kc29uIiwKICBmbG5fZ2VuZGVyID09IDAgJiByZWxhdGlvbl9jb2RlX3ByZWQgPT0gMTEgfiAiR3JhbmRtb3RoZXItR3JhbmRzb24iLAogIGZsbl9nZW5kZXIgPT0gMCAmIHJlbGF0aW9uX2NvZGVfcHJlZCA9PSAxNCB+ICJVbmNsZS1OZXBoZXciLAogIHJlbGF0aW9uX2NvZGVfcHJlZCA9PSAxOCB+ICJDb3VzaW4tQ291c2luIiwKICByZWxhdGlvbl9jb2RlX3ByZWQgPT0gMTkgfiAiT3RoZXIiLAogIGZsbl9nZW5kZXIgPT0gMSAmIHJlbGF0aW9uX2NvZGVfcHJlZCA9PSAyICB+ICJGYXRoZXItRGF1Z2h0ZXIiLAogIGZsbl9nZW5kZXIgPT0gMSAmIHJlbGF0aW9uX2NvZGVfcHJlZCA9PSA2ICB+ICJIdXNiYW5kLVdpZmUiLAogIGZsbl9nZW5kZXIgPT0gMSAmIHJlbGF0aW9uX2NvZGVfcHJlZCA9PSA4ICB+ICJCcm90aGVyLVNpc3RlciIsCiAgZmxuX2dlbmRlciA9PSAxICYgcmVsYXRpb25fY29kZV9wcmVkID09IDEwICB+ICJHcmFuZGZhdGhlci1HcmFuZGRhdWdodGVyIiwKICAgIFRSVUUgfiBOQV9jaGFyYWN0ZXJfKQogICkgJT4lIAogIHJlbmFtZShUb3RhbCA9IG4pICU+JSAKICBtdXRhdGUocGVyY2VudGFnZV90b3RfZHluID0gVG90YWwvc3VtKFRvdGFsKSoxMDApCgpyZWxhdGlvbiA8LSBnZ3Bsb3QoZ2RkX3JlbGF0aW9uX2FsbCwgYWVzKHggPSBSZWxhdGlvbl9UeXBlLCB5ID0gVG90YWwsIGZpbGwgPSBSZWxhdGlvbl9UeXBlKSkgKwogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSArCiAgbGFicyh0aXRsZSA9ICJEeW5hc3RpYyBSZWxhdGlvbnNoaXAgQWNyb3NzIEFsbCBSZWdpbWUgVHlwZXMiLAogICAgICAgeCA9ICJEeW5hc3RpYyBSZWxhdGlvbnNoaXAgVHlwZSIsCiAgICAgICB5ID0gIlRvdGFsIikgKwogIHRoZW1lX3N0YXRhKCkrCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpnZ3Bsb3RseShyZWxhdGlvbikKCmBgYAoKIyMgTWFwcGluZyBvZiBEeW5hc3RpYyBSZWxhdGlvbiBUeXBlIGluIERlbW9jcmF0aWMgcmVnaW1lIFR5cGVzCgpUaGUgbmVjZXNzYXJ5IHByZS1jb25kaXRpb24gZm9yIHRoZSBkeW5hc3QgaW4gb3VyIGRhdGFzZXQgaXMgdGhhdCBhIGxlYWRlciB3aWxsIG9ubHkgYmUgY2xhc3NpZmllZCBhcyBhIGR5bmFzdCBpZiBhbmQgb25seSBpZiBhIHRoYXQgbGVhZGVyIGluIG91ciBkYXRhc2V0IGhhcyBhIHBhcmVudCwgaW4tbGF3LCBvciBhbnkga2luZCBvZiBkaXJlY3QgcmVsYXRpdmUgd2hvIGhhcyBjb250ZXN0ZWQgYW5kIHdvbiBhbiBlbGVjdGlvbiBhdCBhbnkgbGV2ZWwgb2YgcG9saXRpY3MgaW4gdGhlaXIgcmVzcGVjdGl2ZSBwb2xpdGllcywgdGhlbiB0aGF0IHBvbGl0aWNpYW4gaXMgYSBkeW5hc3QuCgpUaGlzIGdyYXBoIHNob3dzIHdoYXQga2luZCBvZiBkeW5hc3RpYyByZWxhdGlvbnNoaXBzIGFyZSBtb3N0IHJlbGV2YW50IGluIGRlbW9jcmF0aWMgcmVnaW1lIHR5cGVzIChNaXhlZCBEZW1vY3JhdGljLCBQYXJsaWFtZW50YXJ5IERlbW9jcmFjeSwgUHJlc2lkZW50aWFsIERlbW9jcmFjeSkKCmBgYHtyIGV2YWw9VFJVRSwgbWVzc2FnZT1GQUxTRSxlY2hvPUZBTFNFLHdhcm5pbmc9RkFMU0V9CmdkZF9yZWxhdGlvbl9kZW0gPC0gZ2RkICU+JSAKICAgIGRpc3RpbmN0KG5vbWluYWxfbGVhZGVyLCAua2VlcF9hbGwgPSBUUlVFKSAlPiUgCiAgICBmaWx0ZXIocHJlZF9iaW4gPT0gMSwgcmVsYXRpb25fY29kZV9wcmVkICE9IDApICU+JSAKICBmaWx0ZXIoc3lzdGVtX2NhdGVnb3J5ICVpbiUgYygiTWl4ZWQgRGVtb2NyYXRpYyIsICJQYXJsaWFtZW50YXJ5IERlbW9jcmFjeSIsICJQcmVzaWRlbnRpYWwgRGVtb2NyYWN5IikpCgpnZGRfcmVsYXRpb25fZGVtIDwtZ2RkX3JlbGF0aW9uX2RlbSAlPiUgCiAgZ3JvdXBfYnkoZmxuX2dlbmRlcikgJT4lCiAgY291bnQocmVsYXRpb25fY29kZV9wcmVkKSAlPiUKICBtdXRhdGUoUmVsYXRpb25fVHlwZSA9IGNhc2Vfd2hlbigKICBmbG5fZ2VuZGVyID09IDAgJiByZWxhdGlvbl9jb2RlX3ByZWQgPT0gMiAgfiAiRmF0aGVyLVNvbiIsCiAgZmxuX2dlbmRlciA9PSAwICYgcmVsYXRpb25fY29kZV9wcmVkID09IDMgIH4gIk1vdGhlci1Tb24iLAogIGZsbl9nZW5kZXIgPT0gMCAmIHJlbGF0aW9uX2NvZGVfcHJlZCA9PSA4ICB+ICJCcm90aGVyLUJyb3RoZXIiLAogIGZsbl9nZW5kZXIgPT0gMCAmIHJlbGF0aW9uX2NvZGVfcHJlZCA9PSAxMCB+ICJHcmFuZGZhdGhlci1HcmFuZHNvbiIsCiAgZmxuX2dlbmRlciA9PSAwICYgcmVsYXRpb25fY29kZV9wcmVkID09IDExIH4gIkdyYW5kbW90aGVyLUdyYW5kc29uIiwKICBmbG5fZ2VuZGVyID09IDAgJiByZWxhdGlvbl9jb2RlX3ByZWQgPT0gMTQgfiAiVW5jbGUtTmVwaGV3IiwKICByZWxhdGlvbl9jb2RlX3ByZWQgPT0gMTggfiAiQ291c2luLUNvdXNpbiIsCiAgcmVsYXRpb25fY29kZV9wcmVkID09IDE5IH4gIk90aGVyIiwKICBmbG5fZ2VuZGVyID09IDEgJiByZWxhdGlvbl9jb2RlX3ByZWQgPT0gMiAgfiAiRmF0aGVyLURhdWdodGVyIiwKICBmbG5fZ2VuZGVyID09IDEgJiByZWxhdGlvbl9jb2RlX3ByZWQgPT0gNiAgfiAiSHVzYmFuZC1XaWZlIiwKICBmbG5fZ2VuZGVyID09IDEgJiByZWxhdGlvbl9jb2RlX3ByZWQgPT0gOCAgfiAiQnJvdGhlci1TaXN0ZXIiLAogIGZsbl9nZW5kZXIgPT0gMSAmIHJlbGF0aW9uX2NvZGVfcHJlZCA9PSAxMCAgfiAiR3JhbmRmYXRoZXItR3JhbmRkYXVnaHRlciIsCiAgICBUUlVFIH4gTkFfY2hhcmFjdGVyXykKICApICU+JSAKICByZW5hbWUoVG90YWwgPSBuKSAlPiUgCiAgbXV0YXRlKHBlcmNlbnRhZ2VfdG90X2R5biA9IFRvdGFsL3N1bShUb3RhbCkqMTAwKQoKcmVsYXRpb25fZGVtX2NvdW50IDwtIGdncGxvdChnZGRfcmVsYXRpb25fZGVtLCBhZXMoeCA9IFJlbGF0aW9uX1R5cGUsIHkgPSBUb3RhbCwgZmlsbCA9IFJlbGF0aW9uX1R5cGUpKSArCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIpICsKICBsYWJzKHRpdGxlID0gIkR5bmFzdGljIFJlbGF0aW9uc2hpcCBpbiBEZW1vY3JhdGljIFJlZ2ltZXMiLAogICAgICAgeCA9ICJEeW5hc3RpYyBSZWxhdGlvbnNoaXAgVHlwZSIsCiAgICAgICB5ID0gIlRvdGFsIikgKwogIHRoZW1lX3N0YXRhKCkrCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpnZ3Bsb3RseShyZWxhdGlvbl9kZW1fY291bnQpCgpgYGAKCiMgVGhlIERpZmZlcmVudCBEeW5hc3RzIChhY3Jvc3MgcmVnaW1lIHR5cGVzKSB7LnRhYnNldH0KCldoaWxlIG91ciBkZWZpbml0aW9uIG9mIGEgZHluYXN0IGlzIGNsZWFyIGFzIHN0YXRlZCBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbi4gVGhpcyBzZWN0aW9uIGV4cGFuZHMgb24gdGhhdCBkZWZpbml0aW9uIGF0IHRhbGtzIGFib3V0IHRocmVlIGRpZmZlcmVudCBraW5kcyBvZiBkeW5hc3QuCgojIyAqVEhFIEZJUlNUIERZTkFTVCoKClRoZSBGaXJzdCBkZWZpbml0aW9uIG9mIER5bmFzdCBpcyB0aGUgb25lIG1lbnRpb25lZCBiZWZvcmUuIFRoaXMgc2hvd3MgdGhlIHByb3BvcnRpb24gb2YgbGVhZGVycyB0aGF0IG5lY2Vzc2FyaWx5IGhhdmUgYW4gYW5jZXN0b3IgaW4gcG9saXRpY3MgYW5kIG1heSBvciBtYXkgbm90IGhhdmUgYSBzdWNjZXNzb3IuIFRoZSBuZWNlc3NhcnkgcHJlY29uZGl0aW9uIGlzIGEgZmFtaWx5IG1lbWJlciBwcmVjZWRpbmcgaGltL2hlciBpbiBwb2xpdGljcyBiZWZvcmUgaGlzIHRpbWUuICgocHJlZF9iaW4gPT0gMSAmIHN1Y19iaW4gZG9lc24ndCBtYXR0ZXIpKQoKYGBge3IgZXZhbD1UUlVFLCBtZXNzYWdlPUZBTFNFLGVjaG89RkFMU0Usd2FybmluZz1GQUxTRX0KZ2RkX2R5bmFzdF8xIDwtIGdkZCAlPiUKICBncm91cF9ieSh5ZWFyX2JpbiwgWWVhcikgJT4lCiAgc3VtbWFyaXNlKER5bmFzdHMgPSBzdW0ocHJlZF9iaW4pLCBUb3RhbF9MZWFkZXJzID0gbigpKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieSh5ZWFyX2JpbikgJT4lIAogIHN1bW1hcmlzZShQcm9wb3J0aW9uX29mX0R5bmFzdHMgPSBtZWFuKER5bmFzdHMvVG90YWxfTGVhZGVycyoxMDApKQoKZmlyc3RfZHluYXN0IDwtIGdncGxvdChnZGRfZHluYXN0XzEsIGFlcyh4ID0geWVhcl9iaW4sIHkgPSBQcm9wb3J0aW9uX29mX0R5bmFzdHMpKSArCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIGNvbG9yPSAiYmxhY2siLCBmaWxsID0gIndoaXRlIikrCiAgbGFicygKICAgIHRpdGxlID0gIlBlcmNlbnRhZ2Ugb2YgTGVhZGVycyB0aGF0IGFyZSBGSVJTVCBDQVRFR09SWSBEeW5hc3RzIiwKICAgIHggPSAiMjUtWWVhci1DYXRlZ29yeSIsCiAgICB5ID0gIlBlcmNlbnRhZ2UiCiAgKSArCiAgdGhlbWVfc3RhdGEoKSArCiAgeWxpbSgwLDUwKSsKICB0aGVtZSgKICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpLAogICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKQogICkgCmdncGxvdGx5KGZpcnN0X2R5bmFzdCkKYGBgCgojIyAqVEhFIFNFQ09ORCBEWU5BU1QgKERZTkFTVFktU1VTVEFJTkVSKSoKClRoZSBTZWNvbmQgZGVmaW5pdGlvbiBvZiBEeW5hc3QgaXMgdGhlIG9uZSBvZiBkeW5hc3R5IHN1c3RhaW5lcnMuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIGdyYXBoIHNob3dzIHRoZSBwcm9wb3J0aW9uIG9mIGxlYWRlcnMgdGhhdCBuZWNlc3NhcmlseSBjb21lIGZyb20gYXBvbGl0aWNhbCBmYW1pbHkgYW5kIGFsc28gbGVhdmVzIGEgc3VjY2Vzc29yIGluIHBvbGl0aWNzLiBUaGVyZWZvcmUsIGEgZHluYXN0eSBzdXN0YWluZXIgVGhlIG5lY2Vzc2FyeSBwcmVjb25kaXRpb25zIGFyZSBhIGZhbWlseSBtZW1iZXIgcHJlY2VkaW5nIGhpbS9oZXIgaW4gcG9saXRpY3MgYmVmb3JlIGhpcy9oZXIgdGltZSBhbmQgYSBmYW1pbHkgbWVtYmVyIHN1Y2VlZGluZyBoaW0vaGVyIGluIHBvbGl0aWNzIGFmdGVyIGhpcy9oZXIgdGltZS4gKHByZWRfYmluID09IDEgJiBzdWNfYmluID09IDEpCgpgYGB7ciBldmFsPVRSVUUsIG1lc3NhZ2U9RkFMU0UsZWNobz1GQUxTRSx3YXJuaW5nPUZBTFNFfQpnZGRfZHluYXN0eV9zdXN0YWluZXIgPC0gZ2RkICU+JQogIGdyb3VwX2J5KFllYXIsIHllYXJfYmluKSAlPiUKICBzdW1tYXJpc2UoCiAgICBEeW5hc3R5X1N1c3RhaW5lcnMgPSBzdW0ocHJlZF9iaW4gPT0gMSAmIHN1Y19iaW4gPT0gMSksCiAgICBUb3RhbF9MZWFkZXJzID0gbigpCiAgKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieSh5ZWFyX2JpbikgJT4lIAogIHN1bW1hcmlzZShQcm9wb3J0aW9uX29mX0R5bmFzdHlfU3VzdGFpbmVycyA9IG1lYW4oRHluYXN0eV9TdXN0YWluZXJzL1RvdGFsX0xlYWRlcnMqMTAwKSkKCkR5bmFzdHlfU3VzdGFpbmVycyA8LSBnZ3Bsb3QoZ2RkX2R5bmFzdHlfc3VzdGFpbmVyLCBhZXMoeCA9IHllYXJfYmluLCB5ID0gUHJvcG9ydGlvbl9vZl9EeW5hc3R5X1N1c3RhaW5lcnMpKSArCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIGNvbG9yPSAiYmxhY2siLCBmaWxsID0gIndoaXRlIikrCiAgbGFicygKICAgIHRpdGxlID0gIlBlcmNlbnRhZ2Ugb2YgTGVhZGVycyB0aGF0IGFyZSBEeW5hc3R5LVN1c3RhaW5lcnMiLAogICAgeCA9ICIyNS1ZZWFyLUNhdGVnb3J5IiwKICAgIHkgPSAiUGVyY2VudGFnZSIKICApICsKICB0aGVtZV9zdGF0YSgpICsKICB5bGltKDAsNTApKwogIHRoZW1lKAogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSksCiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpCiAgKSAKZ2dwbG90bHkoRHluYXN0eV9TdXN0YWluZXJzKQoKYGBgCgojIyAqVEhFIFRISVJEIERZTkFTVCAoRFlOQVNUWS1FTkRFUikqCgpUaGUgVEhJUkQgZGVmaW5pdGlvbiBvZiBEeW5hc3QgaXMgdGhlIG9uZSBvZiBkeW5hc3R5LWVuZGVyc3MuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIGdyYXBoIHNob3dzIHRoZSBwcm9wb3J0aW9uIG9mIGxlYWRlcnMgdGhhdCBuZWNlc3NhcmlseSBjb21lIGZyb20gYSBwb2xpdGljYWwgZmFtaWx5IEJVVCBETyBOT1QgTEVBVkUgYSBzdWNjZXNzb3IgaW4gcG9saXRpY3MuIFRoZXJlZm9yZSwgZm9yIGEgZHluYXN0eSBFTkRFUiBUaGUgbmVjZXNzYXJ5IHByZWNvbmRpdGlvbnMgYXJlIGEgZmFtaWx5IG1lbWJlciBwcmVjZWRpbmcgaGltL2hlciBpbiBwb2xpdGljcyBiZWZvcmUgaGlzL2hlciB0aW1lIGFuZCBhIGZhbWlseSBtZW1iZXIgTk9UIHN1Y2VlZGluZyBoaW0vaGVyIGluIHBvbGl0aWNzIGFmdGVyIGhpcy9oZXIgdGltZS4gKHByZWRfYmluID09IDEgJiBzdWNfYmluID09IDApCgpgYGB7ciBldmFsPVRSVUUsIG1lc3NhZ2U9RkFMU0UsZWNobz1GQUxTRSx3YXJuaW5nPUZBTFNFfQpnZGRfZHluYXN0eV9FTkRFUiA8LSBnZGQgJT4lCiAgZ3JvdXBfYnkoWWVhciwgeWVhcl9iaW4pICU+JQogIHN1bW1hcmlzZSgKICAgIER5bmFzdHlfRU5ERVIgPSBzdW0ocHJlZF9iaW4gPT0gMSAmIHN1Y19iaW4gPT0gMCksCiAgICBUb3RhbF9MZWFkZXJzID0gbigpCiAgKSAlPiUgCiAgdW5ncm91cCgpICU+JSAKICBncm91cF9ieSh5ZWFyX2JpbikgJT4lIAogIHN1bW1hcmlzZShQcm9wb3J0aW9uX29mX0R5bmFzdHlfRU5ERVIgPSBtZWFuKER5bmFzdHlfRU5ERVIvVG90YWxfTGVhZGVycyoxMDApKQoKRHluYXN0eV9FTkRFUiA8LSBnZ3Bsb3QoZ2RkX2R5bmFzdHlfRU5ERVIsIGFlcyh4ID0geWVhcl9iaW4sIHkgPSBQcm9wb3J0aW9uX29mX0R5bmFzdHlfRU5ERVIpKSArCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIGNvbG9yPSAiYmxhY2siLCBmaWxsID0gIndoaXRlIikrCiAgbGFicygKICAgIHRpdGxlID0gIlBlcmNlbnRhZ2Ugb2YgTGVhZGVycyB0aGF0IGFyZSBEeW5hc3R5LUVOREVSUyIsCiAgICB4ID0gIjI1LVllYXItQ2F0ZWdvcnkiLAogICAgeSA9ICJQZXJjZW50YWdlIgogICkgKwogIHRoZW1lX3N0YXRhKCkgKwogIHlsaW0oMCw1MCkrCiAgdGhlbWUoCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41KSwKICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSkKICApIApnZ3Bsb3RseShEeW5hc3R5X0VOREVSKQoKYGBgCgojIyBUSEUgRk9VUlRIIERZTkFTVCAoRFlOQVNUWS1GT1JNRVJTKQoKVGhlIGZvdXJ0aCBkZWZpbml0aW9uIG9mIER5bmFzdCBpcyB0aGUgb25lIG9mIGR5bmFzdHktZm9ybWVycy4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgZ3JhcGggc2hvd3MgdGhlIHByb3BvcnRpb24gb2YgbGVhZGVycyB0aGF0IERPIE5PVCBjb21lIGZyb20gYSBwb2xpdGljYWwgZmFtaWx5IEhBVkUgYSBzdWNjZXNzb3IgaW4gcG9saXRpY3MuIFRoZXJlZm9yZSwgZm9yIGEgZHluYXN0eSBmb3JtZXIgdGhlIG5lY2Vzc2FyeSBwcmVjb25kaXRpb25zIGFyZSB0aGUgQUJTRU5DRSBPRiBBIGZhbWlseSBtZW1iZXIgcHJlY2VkaW5nIGhpbS9oZXIgaW4gcG9saXRpY3MgYmVmb3JlIGhpcy9oZXIgdGltZSBhbmQgYSBmYW1pbHkgbWVtYmVyIFNVQ0NFRURJTkcgaGltL2hlciBpbiBwb2xpdGljcyBhZnRlciBoaXMvaGVyIHRpbWUuIChwcmVkX2JpbiA9PSAwICYgc3VjX2JpbiA9PSAxKQoKYGBge3IgZXZhbD1UUlVFLCBtZXNzYWdlPUZBTFNFLGVjaG89RkFMU0Usd2FybmluZz1GQUxTRX0KZ2RkX2R5bmFzdHlfZm9ybWVyIDwtIGdkZCAlPiUKICBncm91cF9ieShZZWFyLCB5ZWFyX2JpbikgJT4lCiAgc3VtbWFyaXNlKAogICAgRHluYXN0eV9mb3JtZXJzID0gc3VtKHByZWRfYmluID09IDAgJiBzdWNfYmluID09IDEpLAogICAgVG90YWxfTGVhZGVycyA9IG4oKQogICkgJT4lIAogIHVuZ3JvdXAoKSAlPiUgCiAgZ3JvdXBfYnkoeWVhcl9iaW4pICU+JSAKICBzdW1tYXJpc2UoUHJvcG9ydGlvbl9vZl9EeW5hc3R5X2Zvcm1lcnMgPSBtZWFuKER5bmFzdHlfZm9ybWVycy9Ub3RhbF9MZWFkZXJzKjEwMCkpCgpEeW5hc3R5X2Zvcm1lcnMgPC0gZ2dwbG90KGdkZF9keW5hc3R5X2Zvcm1lciwgYWVzKHggPSB5ZWFyX2JpbiwgeSA9IFByb3BvcnRpb25fb2ZfRHluYXN0eV9mb3JtZXJzKSkgKwogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCBjb2xvcj0gImJsYWNrIiwgZmlsbCA9ICJ3aGl0ZSIpKwogIGxhYnMoCiAgICB0aXRsZSA9ICJQZXJjZW50YWdlIG9mIExlYWRlcnMgdGhhdCBhcmUgRHluYXN0eS1Gb3JtZXJzIiwKICAgIHggPSAiMjUtWWVhci1DYXRlZ29yeSIsCiAgICB5ID0gIlBlcmNlbnRhZ2UiCiAgKSArCiAgdGhlbWVfc3RhdGEoKSArCiAgeWxpbSgwLDUwKSsKICB0aGVtZSgKICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpLAogICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKQogICkgCmdncGxvdGx5KER5bmFzdHlfZm9ybWVycykKYGBgCgojIyBUSEUgUFVSRSBOT04tRFlOQVNUCgpUaGUgbGFzdCBjYXRlZ29yeSBpcyBhIGNhdGVnb3J5IG9mIGxlYWRlcnMgdGhhdCBoYXZlIG5vIGZhbWlseSBiZWZvcmUgb3IgYWZ0ZXIgdGhlbSBpbiBwb2xpdGljcy4gVGhlc2UgYXJlIG5vdC1keW5hc3RzIGFuZCBhcmUgaW5jbHVkZWQgdG8gc2hvdyBkZWNsaW5pbmcgcHJldmFsZW5jZSBvZiBmYW1pbHkgdGllcyBpbiBwb2xpdGljcy4KCmBgYHtyIGV2YWw9VFJVRSwgbWVzc2FnZT1GQUxTRSxlY2hvPUZBTFNFLHdhcm5pbmc9RkFMU0V9CmdkZF9ub25fZHluYXN0IDwtIGdkZCAlPiUKICBncm91cF9ieShZZWFyLCB5ZWFyX2JpbikgJT4lCiAgc3VtbWFyaXNlKAogICAgbm9uX2R5bmFzdCA9IHN1bShwcmVkX2JpbiA9PSAwICYgc3VjX2JpbiA9PSAwKSwKICAgIFRvdGFsX0xlYWRlcnMgPSBuKCkKICApICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIGdyb3VwX2J5KHllYXJfYmluKSAlPiUgCiAgc3VtbWFyaXNlKFByb3BvcnRpb25fb2Zfbm9uX2R5bmFzdCA9IG1lYW4obm9uX2R5bmFzdC9Ub3RhbF9MZWFkZXJzKjEwMCkpCgpub25fZHluYXN0IDwtIGdncGxvdChnZGRfbm9uX2R5bmFzdCwgYWVzKHggPSB5ZWFyX2JpbiwgeSA9IFByb3BvcnRpb25fb2Zfbm9uX2R5bmFzdCkpICsKICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IiwgY29sb3I9ICJibGFjayIsIGZpbGwgPSAid2hpdGUiKSsKICBsYWJzKAogICAgdGl0bGUgPSAiUGVyY2VudGFnZSBvZiBMZWFkZXJzIHRoYXQgYXJlIG5vbl9keW5hc3QiLAogICAgeCA9ICIyNS1ZZWFyLUNhdGVnb3J5IiwKICAgIHkgPSAiUGVyY2VudGFnZSIKICApICsKICB0aGVtZV9zdGF0YSgpICsKICB5bGltKDAsNjApKwogIHRoZW1lKAogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSksCiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpCiAgKSAKZ2dwbG90bHkobm9uX2R5bmFzdCkKYGBgCgojIFByZWRpY3RlZCBQcm9iYWJpbGl0aWVzIGFuZCBSZWdpbWUgVHlwZXM6IFR3byBEaWZmZXJlbnQgTW9kZWxzIHsudGFic2V0fQoKIyMgTW9kZWwgMSwyLDM6IFVzaW5nIGRpY3RhdG9yc2hpcCBhcyB0aGUgaW5kZXBlbmRlbnQgdmFyaWFibGUKCmBgYHtyIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsbWVzc2FnZT1GQUxTRX0KIyBNb2RlbCAxOiBVc2luZyBkaWN0YXRvcnNoaXAgYXMgdGhlIGluZGVwZW5kZW50IHZhcmlhYmxlCm1vZGVsMSA8LSBnbG0oZHluYXN0aWMgfiBkaWN0YXRvcnNoaXAsIAogICAgICAgICAgICAgICAgZGF0YSA9IGdkZCwgCiAgICAgICAgICAgICAgICBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gImxvZ2l0IikpCgpwcmludChzdW1tYXJ5KG1vZGVsMSkpCgoKCiMgRml0IHRoZSBsb2dpc3RpYyByZWdyZXNzaW9uIG1vZGVsIHdpdGggY291bnRyeSBhbmQgeWVhciBmaXhlZCBlZmZlY3RzCm1vZGVsMiA8LSBnbG0oZHluYXN0aWMgfiBkaWN0YXRvcnNoaXAgKyBmYWN0b3IoQ291bnRyeSkgKyBmYWN0b3IoWWVhciksIAogICAgICAgICAgICAgIGRhdGEgPSBnZGQsIAogICAgICAgICAgICAgIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAibG9naXQiKSkKCgojIFByaW50IHRoZSBzdW1tYXJ5IHRvIGNoZWNrIHRoZSBtb2RlbCByZXN1bHRzCnN1bW1hcnkobW9kZWwyKQoKIyBDb21wYXJlIHRoZSBudW1iZXIgb2Ygb2JzZXJ2YXRpb25zIHVzZWQgaW4gYm90aCBtb2RlbHMKbl9vYnNfbW9kZWwxIDwtIGxlbmd0aChtb2RlbDEkZml0dGVkLnZhbHVlcykKbl9vYnNfbW9kZWwyIDwtIGxlbmd0aChtb2RlbDIkZml0dGVkLnZhbHVlcykKCgojIFByZXBhcmUgTkVXIGRhdGEgZm9yIHByZWRpY3Rpb24sIGVuc3VyaW5nIG5vIG5ldyBmYWN0b3IgbGV2ZWxzCmdkZF9jbGVhbiA8LSBnZGRbY29tcGxldGUuY2FzZXMoZ2RkWywgYygiZHluYXN0aWMiLCAiZGljdGF0b3JzaGlwIiwgInYyeF9wb2x5YXJjaHkiLCAiZm9ybWVyX2JyaXRpc2hfY29sb255IiwgIlllYXIiLCAiQ291bnRyeSIpXSksIF0KCiMgRml0IHRoZSBtb2RlbCB3aXRoIGNsZWFuZWQgZGF0YQptb2RlbDMgPC0gZ2xtKGR5bmFzdGljIH4gZGljdGF0b3JzaGlwICsgdjJ4X3BvbHlhcmNoeSArIGZvcm1lcl9icml0aXNoX2NvbG9ueSArIGZhY3RvcihZZWFyKSArIGZhY3RvcihDb3VudHJ5KSwKICAgICAgICAgICAgICBkYXRhID0gZ2RkX2NsZWFuLAogICAgICAgICAgICAgIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAibG9naXQiKSwKICAgICAgICAgICAgICBuYS5hY3Rpb24gPSBuYS5leGNsdWRlKQoKcHJpbnQoc3VtbWFyeShtb2RlbDMpKQojIFByZWRpY3QgcHJvYmFiaWxpdGllcyB3aXRoIGNsZWFuZWQgZGF0YQpnZGRfY2xlYW4kcHJlZF9wcm9iIDwtIHByZWRpY3QobW9kZWwzLCBuZXdkYXRhID0gZ2RkX2NsZWFuLCB0eXBlID0gInJlc3BvbnNlIikKCgojcHJlZGljdGlvbnMgZm9yIGFsbCByb3dzIGkKZ2RkJHByZWRfcHJvYiA8LSBwcmVkaWN0KG1vZGVsMSwgbmV3ZGF0YSA9IGdkZCwgdHlwZSA9ICJyZXNwb25zZSIpCgpgYGAKCgojIyAgTW9kZWwgNDogVXNpbmcgRGVtX1R5cGUgYXMgdGhlIGluZGVwZW5kZW50IHZhcmlhYmxlLCB3aXRoIG1peGVkICgxKSBhcyB0aGUgcmVmZXJlbmNlIGNhdGVnb3J5CmBgYHtyfQojIE1vZGVsIDQ6IFVzaW5nIERlbV9UeXBlIGFzIHRoZSBpbmRlcGVuZGVudCB2YXJpYWJsZSwgd2l0aCBtaXhlZCAoMSkgYXMgdGhlIHJlZmVyZW5jZSBjYXRlZ29yeQpnZGRfY2xlYW4kRGVtX1R5cGUgPC0gZmFjdG9yKGdkZF9jbGVhbiREZW1fVHlwZSwgbGV2ZWxzID0gYygxLCAwLCAyLCAzKSkKCm1vZGVsNCA8LSBnbG0oZHluYXN0aWMgfiBEZW1fVHlwZSArIHYyeF9wb2x5YXJjaHkgKyBmb3JtZXJfYnJpdGlzaF9jb2xvbnkgKyBmYWN0b3IoWWVhcikgKyBmYWN0b3IoQ291bnRyeSksIGRhdGEgPSBnZGRfY2xlYW4sIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAibG9naXQiKSkKc3VtbWFyeShtb2RlbDQpCmBgYAojIER5bmFzdGljIFJ1bGUgYW5kIERlbW9jcmFjeSAoYmFzZWQgb24gUHJlZGljdGVkIHByb2JhYmlsaXRlcykgey50YWJzZXR9CgoKYGBge3IgZXZhbD1UUlVFLCBtZXNzYWdlPUZBTFNFLGVjaG89RkFMU0Usd2FybmluZz1GQUxTRX0KCmdkZF92ZGVtX2ZpbmFsIDwtIGdkZCAlPiUgCiAgZmlsdGVyKCFpcy5uYShlX2JvaXhfcmVnaW1lKSkgJT4lIAogIGFycmFuZ2UoQ291bnRyeSxZZWFyKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSkgJT4lIAogIG11dGF0ZShkeW5hc3RpY19sYWcgPSBsYWcoZHluYXN0aWMsIG9yZGVyX2J5ID0gWWVhciksCiAgICAgICAgIGRlbW9jcmFjeV95ZWFycyA9IHN1bShlX2JvaXhfcmVnaW1lID09IDEpLCAjLyBuKCksCiAgICAgICAgIGNvdW50cnlfbGlmZXRpbWUgPSAobWF4KFllYXIpIC0gbWluKFllYXIpICsgMSksCiAgICAgICAgIGRlbW9jcmFjeV9wZXJjZW50YWdlID0gKGRlbW9jcmFjeV95ZWFycyAvIGNvdW50cnlfbGlmZXRpbWUpICogMTAwKSAlPiUgCiAgc2VsZWN0KFllYXIsIHllYXJfYmluLCBDT1csIFJlZ2lvbiwgQ291bnRyeSwgY291bnRyeV9pc29jb2RlLCBEeW5hc3RpY19Qcm9wb3J0aW9uLCBub21pbmFsX2xlYWRlciwgZHluYXN0eV9kZXNjLCBmbG5fZ2VuZGVyLGZsbl9zcGVsbCwgZmxuX2hpZ2hlc3RkZWdyZWUsIGZsbl9idXNpbmVzc21hbiwgcHJlZF9udW0sIHJlbGF0aW9uX2NvZGVfcHJlZCwgcG9zX2NvZGVfcHJlZCwgc3VjX251bSwgcmVsYXRpb25fY29kZV9zdWMsIHBvc19jb2RlX3N1YyxwcmVkX2Jpbiwgc3VjX2JpbiwgcHJlZF9uYXRpb25hbCwgc3VjX25hdGlvbmFsLCBwcmVkX3N0YXRlLCBzdWNfc3RhdGUsIHByZWRfbG9jYWwsIHN1Y19sb2NhbCxlX2JvaXhfcmVnaW1lLCBmb3JtZXJfYnJpdGlzaF9jb2xvbnksIHN5c3RlbV9jYXRlZ29yeSxsb2dfZ2RwX3BlcmNhcCxnZHBfcGVyY2FwLCB2MnhfcG9seWFyY2h5LHYyeF9saWJkZW0sZHluYXN0aWNfbGFnLCBkeW5hc3RpYywgZGljdGF0b3JzaGlwLCBEZW1fVHlwZSwgIGRlbW9jcmFjeV95ZWFycyxjb3VudHJ5X2xpZmV0aW1lLGRlbW9jcmFjeV9wZXJjZW50YWdlLHYyZWxhY2NlcHQsdjJ4X2dlbmNzLCB2MmVsaW50aW0sIHYyeF92ZXJhY2MsdjJ4X2RpYWdhY2MsIHYyeG5wX3JlZ2NvcnIsdjJ4ZWxfZnJlZmFpciwgdjJ4X2NvcnIsIHYyeF9wdWJjb3JyLCB2MnhlZF9lZF9pbnB0LHYyeGVkX2VkX2NlbnQsIHYybHBuYW1lLCB2M3BhcnR5aWQsIHYycHNiYXJzLCB2MnBzY25zbG5sLHYycmVnb3BwZ3JvdXBzc2l6ZSwgdjJjbHJzcGN0LCB2MmNsc3Rvd24sIHYyc3Rjcml0cmVjYWRtLCB2Mm1lY2VuZWZtLCB2Mm1lY29ycnB0LCB2MnBlcHdyc2VzLCB2MnBlcHdyc29jLCB2MmV4bF9sZWdpdGlkZW9sLCB2MmV4bF9sZWdpdGxlYWQsIHYyY2F2aW9sLHYyY2FkZW1tb2IpI3ByZWRfcHJvYiwKCgoKCmBgYAoKIyMgUHJlZGljdGVkIFByb2JhYmlsaXR5IG9mIER5bmFzdGljIExlYWRlcnNoaXAgYW5kIE90aGVyIElWcyAoU29tZSBQbG90cykKCmBgYHtyIGVjaG89RkFMU0UsIH0KZ2dwbG90KGdkZF9jbGVhbiwgYWVzKHg9IHYyeF9wb2x5YXJjaHksIHkgPSBwcmVkX3Byb2IpKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG9lc3MiLCBzcGFuID0gMC43NSwgY29sb3IgPSAiYmx1ZSIsIHNlID0gVFJVRSkgKyAgIyBMT0VTUyBsaW5lCiAgbGFicyh0aXRsZSA9ICJQb2x5YXJjaHkgU2NvcmVzIHZzLiBQcm9iYWJpbGl0eSBvZiBEeW5hc3RpYyBMZWFkZXJzaGlwIiwKICAgICAgIHggPSAiUG9seWFyY2h5IFNjb3JlcyIsCiAgICAgICB5ID0gIlByZWRpY3RlZCBQcm9iYWJpbGl0eSBvZiBEeW5hc3RpYyBMZWFkZXJzaGlwIikgKwogIHRoZW1lX3N0YXRhKCkKCmdncGxvdChnZGRfY2xlYW4sIGFlcyh4PSB2MnhucF9yZWdjb3JyLCB5ID0gcHJlZF9wcm9iKSkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxvZXNzIiwgc3BhbiA9IDAuNzUsIGNvbG9yID0gImJsdWUiLCBzZSA9IFRSVUUpICsgICMgTE9FU1MgbGluZQogIGxhYnModGl0bGUgPSAiTGV2ZWwgb2YgUmVnaW1lIENvcnJ1cHRpb24gdnMuIFByb2JhYmlsaXR5IG9mIER5bmFzdGljIExlYWRlcnNoaXAiLAogICAgICAgeCA9ICJMZXZlbCBvZiBSZWdpbWUgQ29ycnVwdGlvbiIsCiAgICAgICB5ID0gIlByZWRpY3RlZCBQcm9iYWJpbGl0eSBvZiBEeW5hc3RpYyBMZWFkZXJzaGlwIikgKwogIHRoZW1lX3N0YXRhKCkKCmdncGxvdChnZGRfY2xlYW4sIGFlcyh4PSB2MmNhdmlvbCwgeSA9IHByZWRfcHJvYikpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsb2VzcyIsIHNwYW4gPSAwLjc1LCBjb2xvciA9ICJibHVlIiwgc2UgPSBUUlVFKSArICAjIExPRVNTIGxpbmUKICBsYWJzKHRpdGxlID0gIkxldmVsIG9mIFBvbGl0aWNhbCBWaW9sZW5jZSBieSBOb24tU3RhdGUgQWN0b3JzIHZzIFByb2JhYmlsaXR5IG9mIER5bmFzdGljIExlYWRlciIsCiAgICAgICB4ID0gIkxldmVsIG9mIFBvbGl0aWNhbCBWaW9sZW5jZSIsCiAgICAgICB5ID0gIlByZWRpY3RlZCBQcm9iYWJpbGl0eSBvZiBEeW5hc3RpYyBMZWFkZXJzaGlwIikgKwogIHRoZW1lX3N0YXRhKCkKCiMgZm9yIGRlbSBtb2JpbGlzYXRpb246IHYyY2FkZW1tb2IKCmdncGxvdChnZGRfY2xlYW4sIGFlcyh4PSB2MmNhdmlvbCwgeSA9IHByZWRfcHJvYikpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsb2VzcyIsIHNwYW4gPSAwLjc1LCBjb2xvciA9ICJibHVlIiwgc2UgPSBUUlVFKSArICAjIExPRVNTIGxpbmUKICBsYWJzKHRpdGxlID0gIkxldmVsIG9mIE1vYmlsaXNhdGlvbiBmb3IgRGVtb2NyYWN5IHZzIFByb2JhYmlsaXR5IG9mIER5bmFzdGljIExlYWRlciIsCiAgICAgICB4ID0gIkxldmVsIG9mIFBvbGl0aWNhbCBWaW9sZW5jZSIsCiAgICAgICB5ID0gIlByZWRpY3RlZCBQcm9iYWJpbGl0eSBvZiBEeW5hc3RpYyBMZWFkZXJzaGlwIikgKwogIHRoZW1lX3N0YXRhKCkKCmdncGxvdChnZGRfY2xlYW4sIGFlcyh4PSBsb2dfZ2RwX3BlcmNhcCwgeSA9IHByZWRfcHJvYikpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsb2VzcyIsIHNwYW4gPSAwLjc1LCBjb2xvciA9ICJibHVlIiwgc2UgPSBUUlVFKSArICAjIExPRVNTIGxpbmUKICBsYWJzKHRpdGxlID0gIkxvZyBHRFAgUGVyIGNhcGl0YSB2cyBQcm9iYWJpbGl0eSBvZiBEeW5hc3RpYyBMZWFkZXIiLAogICAgICAgeCA9ICJMT0cgR0RQIHBlciBjYXBpdGEiLAogICAgICAgeSA9ICJQcmVkaWN0ZWQgUHJvYmFiaWxpdHkgb2YgRHluYXN0aWMgTGVhZGVyc2hpcCIpICsKICB0aGVtZV9zdGF0YSgpCgpgYGAKCgoKCgojIEJvaXgncyBEZW1vY3JhY3kgQ2xhc3NpZmljYXRpb24gYW5kIFNvbWUgUmVzdWx0cyB7LnRhYnNldH0KVGhlIHJlc3VsdHMgaW4gdGhpcyBzZWN0aW9uIGFyZSBiYXNlZCBvbiBCb2l4J3MgZGVmaW5pdGlvbiBvZiBkZW1vY3JhY3kgYW5kIGEgZGVmaW5lZCBjdXQtb2ZmLgpUaGlzIHdpbGwgb25seSBpbmNsdWRlIGFuYWx5c2lzIGZvciBjb3VudHJpZXMgdGhhdCBhcmUgY2xhc3NpZmllZCBkZW1vY3JhY2llcyBhY2NvcmRpbmcgdG8gdGhlIGVfYm9peCB2YXJpYWJsZSB3aGVyZSBDaGFybGVzIEJvaXggY2xhc3NpZmllcyBkZW1vY3JhY2llcy9ub24gZGVtb2NyYWNpZXMgYXMgMCBhbmQgMS4gVGhlIEN1dCBvZmYgUG9pbnQgd2UgY2hvb3NlIGhlcmUgZm9yIG91ciBhbmFseXNpcyBpcyB0byBpbmNsdWRlIGFsbCBjb3VudHJpZXMgdGhhdCBoYXZlIGJlZW4gZGVtb2NyYWNpZXMgZm9yIGF0IGxlYXN0IDI1JSBvZiB0aGVpciBsaWZldGltZSBzaW5jZSAxOTQ1LgoKYGBge3IgZWNobz1GQUxTRSx3YXJuaW5nPUZBTFNFLG1lc3NhZ2U9RkFMU0V9CiMjIEZpbHRlcmluZyBmb3IgbWluaW11bSAyNSUgb2YgdGhlaXIgbGlmZSBhcyBlbGVjdG9yYWwgZGVtb2NyYWN5CmdkZF92ZGVtX2RlbSA8LSBnZGRfdmRlbV9maW5hbCAlPiUgCiAgZmlsdGVyKGRlbW9jcmFjeV9wZXJjZW50YWdlID49IDI1KQoKZ2RkX3ZkZW1fZGVtbm9uZGVtIDwtIGdkZF92ZGVtX2ZpbmFsICU+JSAKICBtdXRhdGUoZGVtX25vbmRlbSA9IGNhc2Vfd2hlbihkZW1vY3JhY3lfcGVyY2VudGFnZSA+PSAyNSB+ICIxIixkZW1vY3JhY3lfcGVyY2VudGFnZSA8IDI1IH4gIjAiLCBUUlVFIH4gTkFfY2hhcmFjdGVyXykpCgojbWFrZSBhIGxpc3Qgb2YgdW5pcXVlIGNvdW50cmllcyBpbiB0aGUgZGF0YXNldCBnZGRfdmRlbV9kZW0KdW5pcXVlX2NvdW50cmllcyA8LSB1bmlxdWUoZ2RkX3ZkZW1fZGVtJENvdW50cnkpCgoKCgoKYGBgCgojIyBIb3cgZG8gdGhlIERpZmZlcmVudCBEeW5hc3RzIGRpZmZlciBpbiBEZW1vY3JhY2llcz8KCkJlZm9yZSB3ZSBwcm9jZWVkLCBpdCBpcyBjcnVjaWFsIHRvIG5vdGUgdGhhdCBub3cgd2UgYXJlIGFsc28gYWRkaW5nIGEgdmFyaWFibGUgYmFzZWQgb24gdGhlIGRpZmZlcmVudCB0eXBlcyBvZiBkeW5hc3RzIHdlIGhhdmUgYWxyZWFkeSBleHBsYWluZWQgYmVmb3JlIGluIG9yZGVyIHRvIG1ha2UgdGhlIGFuYWx5c2lzIGEgYml0IG1vcmUgbnVhbmNlZC4gV2UgYXJlIGFkZGluZyBhIHZhcmlhYmxlIGNhbGxlZCAiZHluYXN0X3R5cGUiIHRvIGFjY291bnQgZm9yIHRoZSBjYXRlZ29yaWNhbCB2YXJpYXRpb24gaW4gdGhlIHR5cGVzIG9mIGR5bmFzdHMgdGhhdCB3ZSBoYXZlLiBJbiB0aGlzIGNsYXNzaWZpY2F0aW9uIHdlIGhhdmUgYSBwdXJlIG5vbi1keW5hc3QgKDAsIG5vIGZhbWlseSBiZWZvcmUgb3IgYWZ0ZXIgdGhlIHNhaWQgbGVhZGVyIGlzIGluIHBvbGl0aWNzKSwgZHluYXN0eS1lbmRlciAoMSwgZGVmaW5pdGVseSBoYXMgYSBwcmVkZWNlc3NvciBpbiBwb2xpdGljcyBidXQgZG9lcyBub3QgaGF2ZSBhIHN1Y2Nlc3NvciBpbiBwb2xpdGljcyksIHRoZSBEWU5BU1QgKDIsZGVmaW5pdGVseSBoYXMgYSBwcmVkZWNlc3NvciBpbiBwb2xpdGljcyBtYXkgb3IgbWF5IG5vdCBoYXZlIGEgc3VjY2Vzc29yIGluIHBvbGl0aWNzKSwgRHluYXN0eS1mb3JtZXIgKDMsIGRvZXMgbm90IGhhdmUgYW55IGZhbWlseSBpbiBwb2xpdGljcyBwcmVjZWRpbmcgaGltL2hlciBidXQgZGVmaW5pdGVseSBsZWF2ZXMgYSBzdWNjZXNzb3IgaW4gcG9saXRpY3MpLCBhbmQgZmluYWxseSBkeW5hc3R5LXN1c3RhaW5lciAoNCwgbmVjZXNzYXJpbHkgaGFzIGJvdGggYSBwcmVkZWNlc3NvciBhbmQgc3VjY2Vzc29yIGluIHBvbGl0aWNzKS4gRmlyc3Qgd2Ugd2lsbCBsb29rIGF0IHNvbWUgYmFzaWMgY2hhcmFjdGVyaXN0aWMgZGlmZmVyZW5jZXMgaW4gdGhzZSBraW5kIG9mIGR5bmFzdHMgdXNpbmcgYSBiYXNpYyBkaWZmZXJlbmNlIGluIG1lYW4gdGVzdCAoZWR1Y2F0aW9uLCBTcGVsbCBbdGhlIG51bWJlciBvZiB0aW1lIGEgbGVhZGVyIGhhcyBiZWVuIGluIG9mZmljZV0sIHRlbnVyZSBsZW5ndGgsIGlzIGFsc28gaW4gYnVzaW5lc3MpCgojIyMgQ29tcGFyaXNvbnMgQWNyb3NzIEFsbCBDYXRlZ29yaWVzCgpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpnZGRfdmRlbV9kZW0gPC0gZ2RkX3ZkZW1fZGVtICU+JSAKICBtdXRhdGUoRHluYXN0X1R5cGUgPSBjYXNlX3doZW4oCiAgICBwcmVkX2JpbiA9PSAxICYgc3VjX2JpbiA9PSAwIH4gIkR5bmFzdHkgRW5kZXJzIiwKICAgIHByZWRfYmluID09IDEgJiBzdWNfYmluID09IDEgfiAiRHluYXN0eSBTdXN0YWluZXJzIiwKICAgIHByZWRfYmluID09IDAgJiBzdWNfYmluID09IDEgfiAiRHluYXN0eSBGb3JtZXJzIiwKICAgIHByZWRfYmluID09IDAgJiBzdWNfYmluID09IDAgfiAiVGhlIFB1cmUgTm9uLUR5bmFzdCIsCiAgICBUUlVFIH4gTkFfY2hhcmFjdGVyXwogICkpCgpnZGRfZGVtX2R5biA8LSBnZGRfdmRlbV9kZW0gJT4lIAogIGdyb3VwX2J5KG5vbWluYWxfbGVhZGVyKSAlPiUgCiAgbXV0YXRlKHllYXJzX3J1bGVkID0gbigpKSAlPiUgCiAgZGlzdGluY3Qobm9taW5hbF9sZWFkZXIsIC5rZWVwX2FsbCA9IFRSVUUpCgpyZXN1bHRfZHluX2luZGVtIDwtIGdkZF9kZW1fZHluICU+JQogIGdyb3VwX2J5KER5bmFzdF9UeXBlKSAlPiUKICBzdW1tYXJpc2UoVG90YWwgPW4oKSwKICAgIG1lYW5fZmxuX3NwZWxsID0gbWVhbihmbG5fc3BlbGwsIG5hLnJtID0gVFJVRSksCiAgICBtZWFuX3llYXJzX3J1bGVkID0gbWVhbih5ZWFyc19ydWxlZCwgbmEucm0gPSBUUlVFKSwKICAgIG1lYW5fZmxuX2J1c2luZXNzbWFuID0gbWVhbihhcy5udW1lcmljKGZsbl9idXNpbmVzc21hbikqMTAwLCBuYS5ybSA9IFRSVUUpLAogICAgbW9kZV9mbG5faGlnaGVzdGRlZ3JlZSA9IG5hbWVzKHdoaWNoLm1heCh0YWJsZShmbG5faGlnaGVzdGRlZ3JlZSkpKSwKICAgIG51bV9wcmVkX25hdGlvbmFsID0gc3VtKHByZWRfbmF0aW9uYWwpLAogICAgbnVtX3ByZWRfc3RhdGUgPSBzdW0ocHJlZF9zdGF0ZSksCiAgICBudW1fcHJlZF9sb2NhbCA9IHN1bShwcmVkX2xvY2FsKSwKICAgIG51bV9zdWNfbmF0aW9uYWwgPSBzdW0oc3VjX25hdGlvbmFsKSwKICAgIG51bV9zdWNfc3RhdGUgPSBzdW0oc3VjX3N0YXRlKSwKICAgIG51bV9zdWNfbG9jYWwgPSBzdW0oc3VjX2xvY2FsKSwKICApCgpyZXN1bHRfZHluX2luZGVtICU+JQogIG11dGF0ZSgKICAgIG1lYW5fZmxuX3NwZWxsID0gcm91bmQobWVhbl9mbG5fc3BlbGwsIDIpLAogICAgbWVhbl95ZWFyc19ydWxlZCA9IHJvdW5kKG1lYW5feWVhcnNfcnVsZWQsIDIpLAogICAgbWVhbl9mbG5fYnVzaW5lc3NtYW4gPSByb3VuZChtZWFuX2Zsbl9idXNpbmVzc21hbiwgMikKICApICU+JQogIGRhdGF0YWJsZShvcHRpb25zID0gbGlzdChwYWdlTGVuZ3RoID0gMTApLCAKICAgICAgICAgICAgcm93bmFtZXMgPSBGQUxTRSwKICAgICAgICAgICAgY29sbmFtZXMgPSBjKCJEeW5hc3R5IFR5cGUiLCAiTnVtYmVyIG9mIExlYWRlcnMiLCAiQXZnLiBOdW1iZXIgb2YgVGVudXJlcyIsICJBdmcuIFllYXJzIFJ1bGVkIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAiUHJvcG9ydGlvbiBvZiBCdXNpbmVzc21lbiIsICJNb3N0IENvbW1vbiBIaWdoZXN0IERlZ3JlZSIsICJOdW1iZXIgb2YgUHJlZGVjZXNzb3JzIGluIE5hdGlvbmFsIFBvbGl0aWNzIiwiTnVtYmVyIG9mIFByZWRlY2Vzc29ycyBpbiBTdGF0ZSBQb2xpdGljcyIsICJOdW1iZXIgb2YgUHJlZGVjZXNzb3JzIGluIExvY2FsIFBvbGl0aWNzIiwiTnVtYmVyIG9mIFN1Y2Nlc3NvcnMgaW4gTmF0aW9uYWwgUG9saXRpY3MiLCJOdW1iZXIgb2YgU3VjY2Vzc29ycyBpbiBTdGF0ZSBQb2xpdGljcyIsIk51bWJlciBvZiBTdWNjZXNzb3JzIGluIExvY2FsIFBvbGl0aWNzIikpCgpnZ3Bsb3QoZ2RkX2RlbV9keW4sIGFlcyh4ID0gRHluYXN0X1R5cGUsIHkgPSB5ZWFyc19ydWxlZCkpICsKICBzdGF0X2JveHBsb3QoZ2VvbSA9ICJlcnJvcmJhciIsIHdpZHRoID0gMC41KSArCiAgZ2VvbV9ib3hwbG90KG91dGxpZXIuc2hhcGUgPSAyMSwgb3V0bGllci5maWxsID0gIndoaXRlIiwgY29lZiA9IDEuNSkgKwogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBjb21tYV9mb3JtYXQoKSkgKwogIGxhYnMoCiAgICB0aXRsZSA9ICJEaXN0cmlidXRpb24gb2YgWWVhcnMgUnVsZWQgYnkgRHluYXN0IFR5cGUgKFdpbnNvcml6ZWQpIiwKICAgIHggPSAiRHluYXN0IFR5cGUiLAogICAgeSA9ICJZZWFycyBSdWxlZCIKICApICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKAogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChmYWNlID0gImJvbGQiLCBzaXplID0gMTYsIGhqdXN0ID0gMC41KSwKICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJib2xkIiwgc2l6ZSA9IDEyKSwKICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApLAogICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfbGluZShjb2xvciA9ICJncmF5OTAiKSwKICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkKICApCgoKZ2RkX2RlbV9keW5fZWR1Y2F0aW9ucGxvdCA8LSBnZGRfZGVtX2R5biAlPiUgCiAgZmlsdGVyKGZsbl9oaWdoZXN0ZGVncmVlICE9ICIuIikgJT4lIAogIGZpbHRlcihmbG5faGlnaGVzdGRlZ3JlZSAhPSAiIikKCmdncGxvdChnZGRfZGVtX2R5bl9lZHVjYXRpb25wbG90LCBhZXMoeCA9IER5bmFzdF9UeXBlLCBmaWxsID0gZmxuX2hpZ2hlc3RkZWdyZWUpKSArCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpwZXJjZW50KSArCiAgeWxhYigiUHJvcG9ydGlvbiBvZiBMZWFkZXJzIikgKwogIHhsYWIoIlR5cGUgb2YgRHluYXN0IikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkKIyBtYWtlIGEgZ3JhcGggb2YgdGhlIHByb3BvcnRpb24gb2YgZGlmZmVyZW50IHR5cGVzIG9mIGR5bmFzdHMgb3ZlciB0aW1lIHdpdGggZWxlZ2FudCBjb2xvcnMKCmdncGxvdChnZGRfZGVtX2R5biwgYWVzKHggPSB5ZWFyX2JpbiwgZmlsbCA9IER5bmFzdF9UeXBlLCkpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJkb2RnZSIpICsKICB5bGFiKCJQcm9wb3J0aW9uIG9mIExlYWRlcnMiKSArCiAgeGxhYigiWWVhciIpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDEiKSArCiAgdGhlbWVfaWdyYXkoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkKCiN0aGUgY29kZSBhYm92ZSBidXQgd2l0aCBlbGVnYW50IGdyYWRpZW50IGNvbG9ycyBhZGQgYm9yZGVycyB0byB0aGUgY29sdW1ucwoKZ2dwbG90KGdkZF9kZW1fZHluLCBhZXMoeCA9IHllYXJfYmluLCBmaWxsID0gRHluYXN0X1R5cGUsKSkgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImRvZGdlIiwgY29sb3IgPSAiYmxhY2siKSArCiAgeWxhYigiUHJvcG9ydGlvbiBvZiBMZWFkZXJzIikgKwogIHhsYWIoIlllYXIiKSArCiAgbGFicyh0aXRsZT0gIkR5bmFzdCBUeXBlcyBpbiBEZW1vY3JhY2llcyIpKwogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MSIpICsKICB0aGVtZV9pZ3JheSgpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpKQogIAogIAogIApgYGAKCiMjIyBDb21wYXJpc29ucyBBY3Jvc3MgRHluYXN0cyB3aXRoIHByZWRlY2Vzc29ycy9zdWNlc3NvcnMgYXQgdGhlIG5hdGlvbmFsIGxldmVsCmBgYHtyIGVjaG89RkFMU0UsbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFfQpnZGRfZGVtX2R5bl9uYXRpb25hbCA8LSBnZGRfZGVtX2R5biAlPiUgCiAgZmlsdGVyKHByZWRfbmF0aW9uYWwgPT0gMSB8IHN1Y19uYXRpb25hbCA9PSAxKQoKcmVzdWx0X2R5bl9pbmRlbV9uYXRpb25hbCA8LSBnZGRfZGVtX2R5bl9uYXRpb25hbCAlPiUKICBncm91cF9ieShEeW5hc3RfVHlwZSkgJT4lCiAgc3VtbWFyaXNlKFRvdGFsID1uKCksCiAgICBtZWFuX2Zsbl9zcGVsbCA9IG1lYW4oZmxuX3NwZWxsLCBuYS5ybSA9IFRSVUUpLAogICAgbWVhbl95ZWFyc19ydWxlZCA9IG1lYW4oeWVhcnNfcnVsZWQsIG5hLnJtID0gVFJVRSksCiAgICBtZWFuX2Zsbl9idXNpbmVzc21hbiA9IG1lYW4oYXMubnVtZXJpYyhmbG5fYnVzaW5lc3NtYW4pKjEwMCwgbmEucm0gPSBUUlVFKSwKICAgIG1vZGVfZmxuX2hpZ2hlc3RkZWdyZWUgPSBuYW1lcyh3aGljaC5tYXgodGFibGUoZmxuX2hpZ2hlc3RkZWdyZWUpKSksCiAgICBudW1fcHJlZF9uYXRpb25hbCA9IHN1bShwcmVkX25hdGlvbmFsKSwKICAgIG51bV9zdWNfbmF0aW9uYWwgPSBzdW0oc3VjX25hdGlvbmFsKQogICkKCnJlc3VsdF9keW5faW5kZW1fbmF0aW9uYWwgJT4lCiAgbXV0YXRlKAogICAgbWVhbl9mbG5fc3BlbGwgPSByb3VuZChtZWFuX2Zsbl9zcGVsbCwgMiksCiAgICBtZWFuX3llYXJzX3J1bGVkID0gcm91bmQobWVhbl95ZWFyc19ydWxlZCwgMiksCiAgICBtZWFuX2Zsbl9idXNpbmVzc21hbiA9IHJvdW5kKG1lYW5fZmxuX2J1c2luZXNzbWFuLCAyKQogICkgJT4lCiAgZGF0YXRhYmxlKG9wdGlvbnMgPSBsaXN0KHBhZ2VMZW5ndGggPSAxMCksIAogICAgICAgICAgICByb3duYW1lcyA9IEZBTFNFLAogICAgICAgICAgICBjb2xuYW1lcyA9IGMoIkR5bmFzdHkgVHlwZSIsICJOdW1iZXIgb2YgTGVhZGVycyIsICJBdmcuIE51bWJlciBvZiBUZW51cmVzIiwgIkF2Zy4gWWVhcnMgUnVsZWQiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICJQcm9wb3J0aW9uIG9mIEJ1c2luZXNzbWVuIiwgIk1vc3QgQ29tbW9uIEhpZ2hlc3QgRGVncmVlIiwgIk51bWJlciBvZiBQcmVkZWNlc3NvcnMgaW4gTmF0aW9uYWwgUG9saXRpY3MiLCJOdW1iZXIgb2YgU3VjY2Vzc29ycyBpbiBOYXRpb25hbCBQb2xpdGljcyIpKQoKYGBgCgoKIyMgVGhlIFJlbGF0aW9uc2hpcCBCZXR3ZWVuIFBvbHlhcmNoeSBTY29yZXMgKExldmVsIG9mIE1pbmltYWwgRGVtb2NyYWN5KSBhbmQgRHluYXN0aWNpc20gKEFzIGEgQ29udGludW91cyBWYXJpYWJsZSkKCkR5bmFzdGljIFZhcmlhYmxlICgwLzEpIGlzIHJlY29kZWQgaGVyZSBhcyBhIGNvbnRpbnVvdXMgdmFyaWFibGUgaW4gdGVybXMgb2YgYSBkeW5hc3RpYyBzY29yZSB0aGF0IHZhcmllcyBiZXR3ZWVuIDAgYW5kIDEgdG8gaW5kaWNhdGUgdGhhdCB1cCB1bnRpbCBwb2ludCB0IGluIHRpbWUgZm9yIGEgY291bnRyeSBpIGhvdyBsb25nIER5bmFzdGljIHJ1bGUgaGFzIHByZXZhaWxlZCAoRWcuIDE5NzAgaW4gSW5kaWEgd291bGQgbWVhbikgVFdPIEJBU0lDIEdSQVBIUwoKYGBge3IgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KI01ha2luZyBhIExvZXNzIFBsb3QgZm9yIFBvbHlhcmNoeSBTY29yZXMgYW5kIER5bmFzdGljIFByb3BvcnRpb25zCmdncGxvdChnZGRfdmRlbV9kZW0sIGFlcyh4PSBEeW5hc3RpY19Qcm9wb3J0aW9uLCB5ID0gdjJ4X3BvbHlhcmNoeSkpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsb2VzcyIsIHNwYW4gPSAwLjc1LCBjb2xvciA9ICJibHVlIiwgc2UgPSBUUlVFKSArICAjIExPRVNTIGxpbmUKICBsYWJzKHRpdGxlID0gIlBvbHlhcmNoeSBTY29yZXMgdnMuIER5bmFzdGljaXNtIiwKICAgICAgIHggPSAiRHluYXN0aWNfUHJvcG9ydGlvbiIsCiAgICAgICB5ID0gIlBvbHlhcmNoeSBTY29yZXMiKSArCiAgdGhlbWVfc3RhdGEoKQoKCmdncGxvdChnZGRfdmRlbV9kZW0sIGFlcyh4PSB2MnhfcG9seWFyY2h5LCB5ID0gRHluYXN0aWNfUHJvcG9ydGlvbikpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsb2VzcyIsIHNwYW4gPSAwLjc1LCBjb2xvciA9ICJibHVlIiwgc2UgPSBUUlVFKSArICAjIExPRVNTIGxpbmUKICBsYWJzKHRpdGxlID0gIkR5bmFzdGljaXNtIHZzLiBQb2x5YXJjaHkgU2NvcmUiLAogICAgICAgeCA9ICJQb2x5YXJjaHkgU2NvcmVzIiwKICAgICAgIHkgPSAiRHluYXN0aWNfUHJvcG9ydGlvbiIpICsKICB0aGVtZV9zdGF0YSgpCgpgYGAKCmBgYHtyIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CiMgTGluZWFyIE1vZGVsIGZvciB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gUG9seWFyY2h5IFNjb3JlcyAoWCkgYW5kIER5bmFzdGljIFByb3BvcnRpb25zIChZKQptb2RlbF9wb2x5YXJjaHlfYml2YXJpYXRlIDwtIGxtKER5bmFzdGljX1Byb3BvcnRpb24gfiB2MnhfcG9seWFyY2h5LCBkYXRhID0gZ2RkX3ZkZW1fZGVtKQpzdGFyZ2F6ZXIobW9kZWxfcG9seWFyY2h5X2JpdmFyaWF0ZSwgdHlwZSA9ICJ0ZXh0IikKCgoKCm1vZGVsX3BvbHlhcmNoeSA8LSBsbShEeW5hc3RpY19Qcm9wb3J0aW9uIH4gdjJ4X3BvbHlhcmNoeSArIGxvZ19nZHBfcGVyY2FwICsgdjJ4bnBfcmVnY29yciArIHYyY2F2aW9sICsgdjJjYWRlbW1vYiwgZGF0YSA9IGdkZF92ZGVtX2RlbSkKc3RhcmdhemVyKG1vZGVsX3BvbHlhcmNoeSwgdHlwZSA9ICJ0ZXh0IikKCgoKI2xldCdzIGRvIGEgR0xNIHdpdGggbG9naXQgZnVuY3Rpb24KbW9kZWxfcG9seWFyY2h5X2JpdmFyaWF0ZV9nbG0gPC0gZ2xtKER5bmFzdGljX1Byb3BvcnRpb24gfiB2MnhfcG9seWFyY2h5LCBkYXRhID0gZ2RkX3ZkZW1fZGVtLCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gImxvZ2l0IikpCnN0YXJnYXplcihtb2RlbF9wb2x5YXJjaHlfYml2YXJpYXRlX2dsbSwgdHlwZSA9ICJ0ZXh0IikKCnByZWRfYmkgPC0gZ2dwcmVkaWN0KG1vZGVsX3BvbHlhcmNoeV9iaXZhcmlhdGVfZ2xtLCB0ZXJtcyA9ICJ2MnhfcG9seWFyY2h5IikKcGxvdChwcmVkX2JpKQoKZ2RkX3ZkZW1fZGVtX2dsbSA8LSBnZGRfdmRlbV9kZW0lPiUKICBkcGx5cjo6bXV0YXRlKAogICAgRHluYXN0aWNfUHJvcG9ydGlvbiA9IGlmZWxzZShEeW5hc3RpY19Qcm9wb3J0aW9uID09IDAsIDAuMDAwMSwgRHluYXN0aWNfUHJvcG9ydGlvbiksCiAgICBEeW5hc3RpY19Qcm9wb3J0aW9uID0gaWZlbHNlKER5bmFzdGljX1Byb3BvcnRpb24gPT0gMSwgMC45OTk5LCBEeW5hc3RpY19Qcm9wb3J0aW9uKQogICkKCm1vZGVsX3BvbHlhcmNoeV9nbG0gPC0gZ2xtKER5bmFzdGljX1Byb3BvcnRpb24gfiB2MnhfcG9seWFyY2h5ICsgbG9nX2dkcF9wZXJjYXAgKyB2MnhucF9yZWdjb3JyICsgdjJjYXZpb2wgKyB2MmNhZGVtbW9iLCBkYXRhID0gZ2RkX3ZkZW1fZGVtX2dsbSwgZmFtaWx5ID0gYmlub21pYWwobGluayA9ICJsb2dpdCIpKQpzdGFyZ2F6ZXIobW9kZWxfcG9seWFyY2h5X2dsbSwgdHlwZSA9ICJ0ZXh0IikKI0ludGVycHJldGF0aW9uCiNUaGUgbW9kZWwgc2hvd3MgdGhhdCBmb3IgZXZlcnkgb25lIHVuaXQgaW5jcmVhc2UgaW4gUG9seWFyY2h5IFNjb3JlcywgdGhlIG9kZHMgb2YgRHluYXN0aWNpc20gaW5jcmVhc2VzIGJ5IDAuMDAwMS4gVGhlIG1vZGVsIGlzIHNpZ25pZmljYW50IGF0IDAuMDUgbGV2ZWwgYW5kIHRoZSBwc2V1ZG8gUi1zcXVhcmVkIHZhbHVlIGlzIDAuMDIuCiN0aGUgbWF0aHMgYmVoaW5kIHRoZSBjYWxjdWxhdGlvbiBmb3IgbG9nIG9mIG9kZHMgcmF0aW8KI2xvZyhvZGRzKSA9IGxvZyhwLygxLXApKSA9IGJldGEwICsgYmV0YTEqWAojb2RkcyA9IGV4cChiZXRhMCArIGJldGExKlgpCiNvZGRzIHJhdGlvID0gZXhwKGJldGExKQoKCgoKYGBgCgojIyBDb3JydXB0aW9uIGFuZCBEeW5hc3RpY2lzbQoKQ29ycnVwdGlvbiBoZXJlIGlzIFJlZ2ltZSBDb3JydXB0aW9uIGJvcnJvd2VkIGZyb20gVkRlbSBhbmQgdGhlIHNwZWNpZmljIHZhcmlhYmxlIGRldGFpbHMgYXJlOgoKYGBge3IgbWVzc2FnZT1GQUxTRSwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRX0KCgojTWFraW5nIGEgTG9lc3MgUGxvdCBmb3IgUmVnaW1lIENvcnJ1cHRpb24gYW5kIER5bmFzdGljIFByb3BvcnRpb25zCmdncGxvdChnZGRfdmRlbV9kZW0sIGFlcyh4PSBEeW5hc3RpY19Qcm9wb3J0aW9uLCB5ID0gdjJ4bnBfcmVnY29ycikpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsb2VzcyIsIHNwYW4gPSAwLjc1LCBjb2xvciA9ICJibHVlIiwgc2UgPSBUUlVFKSArICAjIExPRVNTIGxpbmUKICBsYWJzKHRpdGxlID0gIlJlZ2ltZSBDb3JydXB0aW9uIHZzLiBEeW5hc3RpY2lzbSIsCiAgICAgICB4ID0gIkR5bmFzdGljX1Byb3BvcnRpb24iLAogICAgICAgeSA9ICJSZWdpbWUgQ29ycnVwdGlvbiIpICsKICB0aGVtZV9zdGF0YSgpCgoKZ2dwbG90KGdkZF92ZGVtX2RlbSwgYWVzKHg9IHYyeG5wX3JlZ2NvcnIsIHkgPSBEeW5hc3RpY19Qcm9wb3J0aW9uKSkrCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxvZXNzIiwgc3BhbiA9IDAuNzUsIGNvbG9yID0gImJsdWUiLCBzZSA9IFRSVUUpICsgICMgTE9FU1MgbGluZQogIGxhYnModGl0bGUgPSAiRHluYXN0aWNpc20gdnMuIFJlZ2ltZSBDb3JydXB0aW9uIiwKICAgICAgIHggPSAiUmVnaW1lIENvcnJ1cHRpb24iLAogICAgICAgeSA9ICJEeW5hc3RpY19Qcm9wb3J0aW9uIikgKwogIHRoZW1lX3N0YXRhKCkKCmBgYAoKIyMgTWVhbiBQb2x5YXJjaHkgU2NvcmVzIGluIERlbW9jcmFjaWVzCgpgYGB7ciBtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0UsZWNobz1GQUxTRX0KZ2RkX21lYW5fc2NvcmVzIDwtIGdkZF92ZGVtX2RlbSAlPiUgCiAgZmlsdGVyKCFpcy5uYSh2MnhfcG9seWFyY2h5KSkgJT4lIAogIGdyb3VwX2J5KHllYXJfYmluLCBwcmVkX2JpbikgJT4lIAogIHN1bW1hcmlzZShNZWFuX0RlbSA9IG1lYW4odjJ4X3BvbHlhcmNoeSkpCgptZWFuX2RlbV9ieWR5biA8LSBnZ3Bsb3QoZ2RkX21lYW5fc2NvcmVzLCBhZXMoeCA9IGFzLmZhY3Rvcih5ZWFyX2JpbiksIHkgPSBNZWFuX0RlbSwgY29sb3IgPSBhcy5mYWN0b3IocHJlZF9iaW4pKSkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDMsIGFscGhhID0gMC43LCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC41KSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCIwIiA9ICJibHVlIiwgIjEiID0gInJlZCIpLCBsYWJlbHMgPSBjKCIwIiA9ICJOb24tRHluYXN0aWMiLCAiMSIgPSAiRHluYXN0aWMiKSkgKwogIHlsaW0oMC40LDAuODApKwogIHRoZW1lX3N0YXRhKCkgKwogIGxhYnModGl0bGUgPSAiTWVhbiBEZW1vY3JhY3kgU2NvcmVzIGluIERlbW9jcmFjaWVzIChCb2l4KSBieSBEeW5hc3RpYy9Ob24tRHluYXN0aWMgU3RhdHVzIiwKICAgICAgIHggPSAiWWVhciBCaW4iLAogICAgICAgeSA9ICJNZWFuIERlbW9jcmFjeSBTY29yZSIsCiAgICAgICBjb2xvciA9ICJEeW5hc3RpYyBTdGF0dXMiKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkKCiMgQ29udmVydCB0byBwbG90bHkgb2JqZWN0Cm1lYW5fZGVtX2J5ZHluX3Bsb3RseSA8LSBnZ3Bsb3RseShtZWFuX2RlbV9ieWR5bikKCiMgTW9kaWZ5IHRoZSBsZWdlbmQgZGlyZWN0bHkgaW4gdGhlIHBsb3RseSBvYmplY3QKbWVhbl9kZW1fYnlkeW5fcGxvdGx5IDwtIG1lYW5fZGVtX2J5ZHluX3Bsb3RseSAlPiUgbGF5b3V0KGxlZ2VuZCA9IGxpc3QodGl0bGUgPSBsaXN0KHRleHQgPSAnRHluYXN0aWMgU3RhdHVzJykpKQoKIyBFbnN1cmUgdGhlIGNvcnJlY3QgbGFiZWxzIGFyZSB1c2VkCm1lYW5fZGVtX2J5ZHluX3Bsb3RseSA8LSBtZWFuX2RlbV9ieWR5bl9wbG90bHkgJT4lCiAgc3R5bGUobGVnZW5kZ3JvdXAgPSAiMCIsIG5hbWUgPSAiTm9uLUR5bmFzdGljIiwgdHJhY2VzID0gMSkgJT4lCiAgc3R5bGUobGVnZW5kZ3JvdXAgPSAiMSIsIG5hbWUgPSAiRHluYXN0aWMiLCB0cmFjZXMgPSAyKQoKIyBQcmludCB0aGUgcGxvdGx5IG9iamVjdAptZWFuX2RlbV9ieWR5bl9wbG90bHkKYGBgCgoKIyBTb21lIFJlZ3Jlc3Npb25zIChGb3IgZGVtb2NyYWNpZXMgT05MWSBhcyBjbGFzc2lmaWVkIGJlZm9yZSBiYXNlZCBvbiBCb2l4IGNsYXNzaWZpY2F0aW9uIGFuZCAyNSUgY3V0LW9mZikgey50YWJzZXR9CgoqVGhpcyBzZWN0aW9uIGNvdmVycyBzb21lIGJhc2ljIHJlZ3Jlc3Npb25zIHRyZWF0aW5nIER5bmFzdGljaXNtIGFzIGEgRFYgYWdhaW5zdCBvdGhlciBvdGhlciB2YXJpYWJsZXMgbGlrZSBkZW1vY3JhY3kgc2NvcmVzLCByZWdpbWUgY29ycnVwdGlvbiBsZXZlbCwgbWVkaWEgY2Vuc29yc2hpcCAodjJtZWNlbmVmbSksIGNsZWFuIGVsZWN0aW9ucyAodjJ4ZWxfZnJlZmFpciksIGZvcm1lciBicml0aXNoIGNvbG9ueS4gVGhlc2UgYXJlIGFsbCBmaXhlZCBlZmZlY3RzIGxpbmVhciBtb2RlbHMgd2l0aCBjb3VudHJ5IGFuZCB5ZWFyIGZpeGVkIGVmZmVjdHMgaW4gcGxhY2UgYW5kIHRoZSBzdGFuZGFyZCBlcnJvciBpcyBjbHVzdGVyZWQgYXQgdGhlIGNvdW50cnkgbGV2ZWwuKgoKCgojIyBFbGVjdG9yYWwgRGVtb2NyYWN5IGFuZCBEeW5hc3RpY2lzbQoKKl9BcmUgZGVtb2NyYWNpZXMgYW5kIGR5bmFzdGljIGxlYWRlcnNoaXAgY29tcGF0aWJsZSAoYW5kIGFyZSBmb3JtZXIgQnJpdGlzaCBDb2xvbmllcyBsaWtlbHkgdG8gYmUgbW9yZSBkeW5hc3RpYz8pP18qCgpgYGB7ciBtZXNzYWdlPUZBTFNFLGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0V9Cm1vZGVsX2RlbW9jcmFjeSA8LSBmZWxtKGR5bmFzdGljIH4gdjJ4X3BvbHlhcmNoeSArIGxvZ19nZHBfcGVyY2FwICsgdjJ4bnBfcmVnY29yciArIGZvcm1lcl9icml0aXNoX2NvbG9ueSB8IFJlZ2lvbiArIFllYXIgfCAwIHwgUmVnaW9uICwgZGF0YSA9IGdkZF92ZGVtX2RlbSkKCnN1bW1hcnkobW9kZWxfZGVtb2NyYWN5KQoKY3VzdG9tX2xhYmVscyA8LSBjKCJkeW5hc3RpYyIgPSAiRHluYXN0aWMiLAogICAgICAgICAgICAgICAgICAgInYyeF9wb2x5YXJjaHkiID0gIkVsZWN0b3JhbCBEZW1vY3JhY3kgTGV2ZWwiLAogICAgICAgICAgICAgICAgICAgImxvZ19nZHBfcGVyY2FwIiA9ICJMb2cgR0RQIFBlciBDYXBpdGEiLAogICAgICAgICAgICAgICAgICAgImZvcm1lcl9icml0aXNoX2NvbG9ueSIgPSAiRm9ybWVyIEJyaXRpc2ggQ29sb255IiwKICAgICAgICAgICAgICAgICAgICJ2MnhucF9yZWdjb3JyciIgPSAiTGV2ZWwgb2YgUmVnaW1lIENvcnJ1cHRpb24iKQoKY29lZnBsb3QobW9kZWxfZGVtb2NyYWN5KQoKYGBgCgoqVGhpcyByZWdyZXNzaW9uIHJlc3VsdHMgc2VlbXMgdG8gc3VnZ2VzdCB0aGF0IER5bmFzdGllcyBhbmQgZGVtb2NyYWNpZXMgaGF2ZSBiZWVuIGhpc3RvcmljYWxseSBjb21wYXRpYmxlLiBTcGVjaWZpY2FsbHksIEEgb25lLXVuaXQgaW5jcmVhc2UgaW4gdGhlIGVsZWN0b3JhbCBkZW1vY3JhY3kgc2NvcmUgKHYyeF9wb2x5YXJjaHkpIGlzIGFzc29jaWF0ZWQgd2l0aCBhIDMzLjEgcGVyY2VudGFnZSBwb2ludCBpbmNyZWFzZSBpbiB0aGUgcHJvYmFiaWxpdHkgb2YgdGhhdCBwb2xpdHkgYmVpbmcgZHluYXN0aWMsIGFjY29yZGluZyB0byBhIGxpbmVhciBtb2RlbCBwcm9iYWJpbGl0eSBkZXNpZ24uKgoKKlRoZSBzaWduaWZpY2FudCBwb3NpdGl2ZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBlbGVjdG9yYWwgZGVtb2NyYWN5IGFuZCBkeW5hc3RpYyByZWdpbWVzIHN1Z2dlc3RzIHRoYXQgaGlnaGVyIGxldmVscyBvZiBlbGVjdG9yYWwgZGVtb2NyYWN5IG1pZ2h0IGNvZXhpc3Qgd2l0aCBkeW5hc3RpYyByZWdpbWVzLiBIb3dldmVyLCB0aGUgZWNvbm9taWMgYW5kIGNvcnJ1cHRpb24tcmVsYXRlZCBwcmVkaWN0b3JzLCBhcyB3ZWxsIGFzIHRoZSBjb2xvbmlhbCBoaXN0b3J5LCBkbyBub3Qgc2hvdyBhIHNpZ25pZmljYW50IGltcGFjdCBvbiBkeW5hc3RpYyByZWdpbWVzIGluIHRoaXMgbW9kZWwuKgoKIyMgRHluYXN0aWNpc20gYW5kIEZyZWUgYW5kIEZhaXIgRWxlY3Rpb25zCgoqX0lzIGR5bmFzdGljIGxlYWRlcnNoaXAgbW9yZSBsaWtlbHkgdG8gcHJvZHVjZSBsZXNzIGZyZWUgYW5kIGZhaXIgZWxlY3Rpb25zP18qCgpgYGB7ciBtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0UsZWNobz1GQUxTRX0KbW9kZWxfZnJlZV9lbGVjdGlvbnMgPC0gZmVsbSh2MnhlbF9mcmVmYWlyIH4gZHluYXN0aWMgKyBsb2dfZ2RwX3BlcmNhcCArIGZvcm1lcl9icml0aXNoX2NvbG9ueSB8IFJlZ2lvbiArIFllYXIgfCAwIHwgUmVnaW9uICwgZGF0YSA9IGdkZF92ZGVtX2RlbSkKCnN1bW1hcnkobW9kZWxfZnJlZV9lbGVjdGlvbnMpCgpjb2VmcGxvdChtb2RlbF9mcmVlX2VsZWN0aW9ucykKCmBgYAoKKkNvbnNpc3RlbnQgd2l0aCBvdXIgY2xhaW0gb24gY29tcGF0aWJpbGl0eSB3aXRoIGRlbW9jcmFjaWVzLCBkeW5hc3RpYyBsZWFkZXJzaGlwIGlzIGluIGZhY3Qgbm90IGJhZCBmb3IgZnJlZSBhbmQgZmFpciBlbGVjdGlvbnMuKgoKIyMgSXMgRHluYXN0aWMgTGVhZGVyc2hpcCBtb3JlIGxpa2VseSB0byBwcm9kdWNlIENvcnJ1cHQgcmVnaW1lcz8KCmBgYHtyIG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRSxlY2hvPUZBTFNFfQptb2RlbF9yZWdpbWVfY29ycnVwdGlvbiA8LSBmZWxtKHYyeG5wX3JlZ2NvcnIgfiBkeW5hc3RpYyArIGxvZ19nZHBfcGVyY2FwICsgZm9ybWVyX2JyaXRpc2hfY29sb255IHwgUmVnaW9uICsgWWVhciB8IDAgfCBSZWdpb24gLCBkYXRhID0gZ2RkX3ZkZW1fZGVtKQoKc3VtbWFyeShtb2RlbF9yZWdpbWVfY29ycnVwdGlvbikKCmNvZWZwbG90KG1vZGVsX3JlZ2ltZV9jb3JydXB0aW9uKQoKYGBgCgoqTm8gc2lnbmlmaWNhbnQgcmVsYXRpb25zaGlwIGJldHdlZW4gZHluYXN0aWMgbGVhZGVyc2hpcCBhbmQgbW9yZSByZWdpbWUgY29ycnVwdGlvbiAobGVhZGVycyB1c2luZyBvZmZpY2VzIGZvciBwcml2YXRlIGdhaW4pLioKCgojIyBEeW5hc3RpYyBMZWFkZXJzaGlwIGFuZCBCYXJyaWVycyB0byBvdGhlciBwYXJ0aWVzPwp2MnBzYmFycwoKYGBge3IgbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFLGVjaG89RkFMU0V9Cm1vZGVsX2JhcnJpZXJzX3BhcnRpZXMgPC0gZmVsbSh2MnBzYmFycyB+IGR5bmFzdGljICsgbG9nX2dkcF9wZXJjYXAgKyBmb3JtZXJfYnJpdGlzaF9jb2xvbnkgfCBSZWdpb24gKyBZZWFyIHwgMCB8IFJlZ2lvbiAsIGRhdGEgPSBnZGRfdmRlbV9kZW0pCgpzdW1tYXJ5KG1vZGVsX2JhcnJpZXJzX3BhcnRpZXMpCgpjb2VmcGxvdChtb2RlbF9iYXJyaWVyc19wYXJ0aWVzKQpgYGAKCiMjIER5bmFzdGljIExlYWRlcnNoaXAgYW5kIENhbmRpZGF0ZSBTZWxlY3Rpb24KdjJwc2Nuc2xubApgYGB7ciBtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0UsZWNobz1GQUxTRX0KbW9kZWxfY2FuZGlkYXRlX3NlbGVjdGlvbiA8LSBmZWxtKHYycHNjbnNsbmwgfiBkeW5hc3RpYyArIGxvZ19nZHBfcGVyY2FwICsgZm9ybWVyX2JyaXRpc2hfY29sb255IHwgUmVnaW9uICsgWWVhciB8IDAgfCBSZWdpb24gLCBkYXRhID0gZ2RkX3ZkZW1fZGVtKQoKc3VtbWFyeShtb2RlbF9jYW5kaWRhdGVfc2VsZWN0aW9uKQoKY29lZnBsb3QobW9kZWxfY2FuZGlkYXRlX3NlbGVjdGlvbikKYGBgCgojIyBEeW5hc3RpYyBMZWFkZXJzaGlwIGFuZCBSZWdpbWUncyBvcHBvc2l0aW9uIEdyb3VwcyBTaXplCnYycmVnb3BwZ3JvdXBzc2l6ZQpgYGB7ciBtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0UsZWNobz1GQUxTRX0KbW9kZWxfcmVnaW1lX29wcG9zaXRpb24gPC0gZmVsbSh2MnJlZ29wcGdyb3Vwc3NpemUgfiBkeW5hc3RpYyArIGxvZ19nZHBfcGVyY2FwICsgZm9ybWVyX2JyaXRpc2hfY29sb255IHwgUmVnaW9uICsgWWVhciB8IDAgfCBSZWdpb24gLCBkYXRhID0gZ2RkX3ZkZW1fZGVtKQoKc3VtbWFyeShtb2RlbF9yZWdpbWVfb3Bwb3NpdGlvbikKCmNvZWZwbG90KG1vZGVsX3JlZ2ltZV9vcHBvc2l0aW9uKQpgYGAKCiMjIER5bmFzdGljIExlYWRlcnNoaXAgYW5kIFJlZ2lvcm91cyBhbmQgSW1wYXJ0aWFsIFB1YmxpYyBBZG1pbmlzdHJhdGlvbgp2MmNscnNwY3QKYGBge3IgbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFLGVjaG89RkFMU0V9Cm1vZGVsX2ltcGFydGlhbF9hZG1pbmlzdHJhdGlvbiA8LSBmZWxtKHYyY2xyc3BjdCB+IGR5bmFzdGljICsgbG9nX2dkcF9wZXJjYXAgKyBmb3JtZXJfYnJpdGlzaF9jb2xvbnkgfCBSZWdpb24gKyBZZWFyIHwgMCB8IFJlZ2lvbiAsIGRhdGEgPSBnZGRfdmRlbV9kZW0pCgpzdW1tYXJ5KG1vZGVsX2ltcGFydGlhbF9hZG1pbmlzdHJhdGlvbikKCmNvZWZwbG90KG1vZGVsX2ltcGFydGlhbF9hZG1pbmlzdHJhdGlvbikKYGBgCgojIyBEeW5hc3RpYyBMZWFkZXJzaGlwIGFuZCBTdGF0ZSBPd25lcnNoaXAgb2YgRW50ZXJwcmlzZSAKdjJjbHN0b3duCmBgYHtyIG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRSxlY2hvPUZBTFNFfQptb2RlbF9zdGF0ZV9vd25lcnNoaXAgPC0gZmVsbSh2MmNsc3Rvd24gfiBkeW5hc3RpYyArIGxvZ19nZHBfcGVyY2FwICsgZm9ybWVyX2JyaXRpc2hfY29sb255IHwgUmVnaW9uICsgWWVhciB8IDAgfCBSZWdpb24gLCBkYXRhID0gZ2RkX3ZkZW1fZGVtKQoKc3VtbWFyeShtb2RlbF9zdGF0ZV9vd25lcnNoaXApCgpjb2VmcGxvdChtb2RlbF9zdGF0ZV9vd25lcnNoaXApCmBgYAoKIyMgRHluYXN0aWMgTGVhZGVyc2hpcCBhbmQgQ3JpdGVyaWEgZm9yIEFwcG9pbnRtZW50cyBpbiBQdWJsaWMgQWRtaW5pc3RyYXRpb24KdjJzdGNyaXRyZWNhZG0gKDAtNSBvcmRpbmFsIHNjYWxlKQpgYGB7ciBtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0UsZWNobz1GQUxTRX0KbW9kZWxfYXBwb2ludG1lbnRfYWRtaW4gPC0gZmVsbSh2MnN0Y3JpdHJlY2FkbSB+IGR5bmFzdGljICsgbG9nX2dkcF9wZXJjYXAgKyBmb3JtZXJfYnJpdGlzaF9jb2xvbnkgfCBSZWdpb24gKyBZZWFyIHwgMCB8IFJlZ2lvbiAsIGRhdGEgPSBnZGRfdmRlbV9kZW0pCgpzdW1tYXJ5KG1vZGVsX2FwcG9pbnRtZW50X2FkbWluKQoKY29lZnBsb3QobW9kZWxfYXBwb2ludG1lbnRfYWRtaW4pCmBgYAoKCiMjIER5bmFzdGljIExlYWRlcnNoaXAgYW5kIE1lZGlhIENlbnNvcnNoaXAgRWZmb3J0Cgp2Mm1lY2VuZWZtCmBgYHtyIG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRSxlY2hvPUZBTFNFfQptb2RlbF9tZWRpYV9jZW5zb3JzaGlwIDwtIGZlbG0odjJtZWNlbmVmbSB+IGR5bmFzdGljICsgbG9nX2dkcF9wZXJjYXAgKyBmb3JtZXJfYnJpdGlzaF9jb2xvbnkgfCBSZWdpb24gKyBZZWFyIHwgMCB8IFJlZ2lvbiAsIGRhdGEgPSBnZGRfdmRlbV9kZW0pCgpzdW1tYXJ5KG1vZGVsX21lZGlhX2NlbnNvcnNoaXApCgpjb2VmcGxvdChtb2RlbF9tZWRpYV9jZW5zb3JzaGlwKQpgYGAKCgojIyBEeW5hc3RpYyBMZWFkZXJzaGlwIGFuZCBsZXZlbCBvZiBNZWRpYSBDb3JydXB0aW9uCgp2Mm1lY29ycnB0CmBgYHtyIG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRSxlY2hvPUZBTFNFfQptb2RlbF9tZWRpYV9jb3JydXB0aW9uIDwtIGZlbG0odjJtZWNvcnJwdCB+IGR5bmFzdGljICsgbG9nX2dkcF9wZXJjYXAgKyBmb3JtZXJfYnJpdGlzaF9jb2xvbnkgfCBSZWdpb24gKyBZZWFyIHwgMCB8IFJlZ2lvbiAsIGRhdGEgPSBnZGRfdmRlbV9kZW0pCgpzdW1tYXJ5KG1vZGVsX21lZGlhX2NvcnJ1cHRpb24pCgpjb2VmcGxvdChtb2RlbF9tZWRpYV9jb3JydXB0aW9uKQpgYGAKCgojIyBEeWFuc3RpYyBMZWFkZXJzaGlwIGFuZCBQb3dlciBEaXN0cmlidXRpb24gYnkgU29jaW8gRWNvbm9taWMgUG9zaXRpb24KCnYycGVwd3JzZXMgKDAtNCkKYGBge3IgbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFLGVjaG89RkFMU0V9Cm1vZGVsX3Bvd2VyX3NvY2lvX2Vjb24gPC0gZmVsbSh2MnBlcHdyc2VzIH4gZHluYXN0aWMgKyBsb2dfZ2RwX3BlcmNhcCArIGZvcm1lcl9icml0aXNoX2NvbG9ueSB8IFJlZ2lvbiArIFllYXIgfCAwIHwgUmVnaW9uICwgZGF0YSA9IGdkZF92ZGVtX2RlbSkKCnN1bW1hcnkobW9kZWxfcG93ZXJfc29jaW9fZWNvbikKCmNvZWZwbG90KG1vZGVsX3Bvd2VyX3NvY2lvX2Vjb24pCmBgYAoKCiMjIER5bmFzdGljIExlYWRlcnNoaXAgYW5kIFBvd2VyIERpc3RyaWJ1dGlvbiBieSBTb2NpYWwgZ3JvdXVwCgp2MnBlcHdyc29jCmBgYHtyIG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRSxlY2hvPUZBTFNFfQptb2RlbF9wb3dlcl9zb2NpYWxfZ3JvdXAgPC0gZmVsbSh2MnBlcHdyc29jIH4gZHluYXN0aWMgKyBsb2dfZ2RwX3BlcmNhcCArIGZvcm1lcl9icml0aXNoX2NvbG9ueSB8IFJlZ2lvbiArIFllYXIgfCAwIHwgUmVnaW9uICwgZGF0YSA9IGdkZF92ZGVtX2RlbSkKCnN1bW1hcnkobW9kZWxfcG93ZXJfc29jaWFsX2dyb3VwKQoKY29lZnBsb3QobW9kZWxfcG93ZXJfc29jaWFsX2dyb3VwKQpgYGAKCiMjIER5bmFzdGljIExlYWRlcnNoaXAgYW5kIExlZ2l0aW1hdGUgSWRlb2xvZ3kgKFByb21vdGlvbikKCnYyZXhsX2xlZ2l0aWRlb2wKYGBge3IgbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFLGVjaG89RkFMU0V9Cm1vZGVsX2lkZW9sb2d5X3Byb21vdGlvbiA8LSBmZWxtKHYyZXhsX2xlZ2l0aWRlb2wgfiBkeW5hc3RpYyArIGxvZ19nZHBfcGVyY2FwICsgZm9ybWVyX2JyaXRpc2hfY29sb255IHwgUmVnaW9uICsgWWVhciB8IDAgfCBSZWdpb24gLCBkYXRhID0gZ2RkX3ZkZW1fZGVtKQoKc3VtbWFyeShtb2RlbF9pZGVvbG9neV9wcm9tb3Rpb24pCgpjb2VmcGxvdChtb2RlbF9pZGVvbG9neV9wcm9tb3Rpb24pCmBgYAoKCiMjIER5bmFzdGljIExlYWRlcnNoaXAgYW5kIFBlcnNvbiBvZiBMZWFkZXIgKExlYWRlciBDdWx0LCBleHRyYW9yZGluYXJ5IGNoYXJpc21hdGljIGV0Yy4pCnYyZXhsX2xlZ2l0bGVhZApgYGB7ciBtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0UsZWNobz1GQUxTRX0KbW9kZWxfcGVyc29uYWxpdHlfY3VsdCA8LSBmZWxtKHYyZXhsX2xlZ2l0bGVhZCB+IGR5bmFzdGljICsgbG9nX2dkcF9wZXJjYXAgKyBmb3JtZXJfYnJpdGlzaF9jb2xvbnkgfCBSZWdpb24gKyBZZWFyIHwgMCB8IFJlZ2lvbiAsIGRhdGEgPSBnZGRfdmRlbV9kZW0pCgpzdW1tYXJ5KG1vZGVsX3BlcnNvbmFsaXR5X2N1bHQpCgpjb2VmcGxvdChtb2RlbF9wZXJzb25hbGl0eV9jdWx0KQpgYGAKCgojIyBEeW5hc3RpYyBMZWFkZXJzaGlwIGFuZCBQb2xpdGljYWwgVmlvbGVuY2UgYnkgTm9uLVN0YXRlIEFjdG9ycwogdjJjYXZpb2wKYGBge3IgbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFLGVjaG89RkFMU0V9Cm1vZGVsX3BvbGl0aWNhbF92aW9sZW5jZSA8LSBmZWxtKHYyY2F2aW9sIH4gZHluYXN0aWMgKyBsb2dfZ2RwX3BlcmNhcCArIGZvcm1lcl9icml0aXNoX2NvbG9ueSB8IFJlZ2lvbiArIFllYXIgfCAwIHwgUmVnaW9uICwgZGF0YSA9IGdkZF92ZGVtX2RlbSkKCnN1bW1hcnkobW9kZWxfcG9saXRpY2FsX3Zpb2xlbmNlKQoKY29lZnBsb3QobW9kZWxfcG9saXRpY2FsX3Zpb2xlbmNlKQpgYGAKCgojIyBEeW5hc3RpYyBMZWFkZXJzaGlwIGFuZCBNb2JpbGlzYXRpb24gZm9yIERlbW9jcmFjeQp2MmNhZGVtbW9iCmBgYHtyIG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRSxlY2hvPUZBTFNFfQptb2RlbF9kZW1vY3JhdGljX21vYmlsaXNhdGlvbiA8LSBmZWxtKHYyY2FkZW1tb2IgfiBkeW5hc3RpYyArIGxvZ19nZHBfcGVyY2FwICsgZm9ybWVyX2JyaXRpc2hfY29sb255IHwgUmVnaW9uICsgWWVhciB8IDAgfCBSZWdpb24gLCBkYXRhID0gZ2RkX3ZkZW1fZGVtKQoKc3VtbWFyeShtb2RlbF9kZW1vY3JhdGljX21vYmlsaXNhdGlvbikKCmNvZWZwbG90KG1vZGVsX2RlbW9jcmF0aWNfbW9iaWxpc2F0aW9uKQpgYGAKCgo=