1 Question #79 Do you experience joint pain and body aches?

A Chi-square test of independence was conducted to assess the relationship between experiencing joint aches and pain and menopausal status. A statistically significant association was found, X2(df=2)=42.999, p<.00001. Cramer’s V was moderate at V=0.11, 95% CI(0.073, 0.133).


                 Yes                   No Prefer Not to Answer 
                3210                  931                    0 
                <NA> 
                   7 
     status
aches pre-menopause peri-menopause post-menopause
  Yes           328           1421           1461
  No            167            400            364
     status
aches pre-menopause peri-menopause post-menopause
  Yes     0.6626263      0.7803405      0.8005479
  No      0.3373737      0.2196595      0.1994521

    Pearson's Chi-squared test

data:  x
X-squared = 42.999, df = 2, p-value = 0.0000000004602

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.1019003 
Confidence interval:
      2.5%      97.5% 
0.07338194 0.13313993 

    Pairwise comparisons using Pairwise comparison of proportions 

data:  b$num out of b$den 

  1             2   
2 0.00000018386 -   
3 0.00000000041 0.14

P value adjustment method: holm 

2 Question #80 Please rate the extent to which the joint pain/aches negatively impact your training

A chi-square goodness-of-fit test was conducted to examine who said “Often/Always” to Q79 were equally distributed across three stages. The results indicated that the observed frequencies differed significantly from the expected frequencies, χ²(2) = 23.515, p =.0000078.

Additionally, A chi-square goodness-of-fit test was conducted to examine who said “Rarely/Never” to Q79 were equally distributed across three stages. The results indicated that the observed frequencies differed significantly from the expected frequencies, χ²(2) = 17.776, p=.000138


   Always     Often Sometimes    Rarely     Never      <NA> 
      225       627      1481       805        72       938 

 pre-menopause peri-menopause post-menopause           <NA> 
           496           1823           1829              0 
           status
aches_imp   pre-menopause peri-menopause post-menopause
  Always       0.04878049     0.07037298     0.07460643
  Often        0.10670732     0.21534131     0.19575633
  Sometimes    0.48170732     0.46586911     0.45242984
  Rarely       0.33841463     0.22378607     0.25735797
  Never        0.02439024     0.02463054     0.01984942
           status
aches_imp   pre-menopause peri-menopause post-menopause
  Always               16            100            109
  Often                35            306            286
  Sometimes           158            662            661
  Rarely              111            318            376
  Never                 8             35             29

 pre-menopause peri-menopause post-menopause 
           328           1421           1461 

Oftenalways       other 
        852        2358 
             status
achesimp      pre-menopause peri-menopause post-menopause
  Oftenalways            51            406            395
  other                 277           1015           1066

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.08559009 
Confidence interval:
      2.5%      97.5% 
0.05462145 0.12123391 

    Pairwise comparisons using Pairwise comparison of proportions 

data:  b$num out of b$den 

  1         2   
2 0.0000056 -   
3 0.0000382 0.38

P value adjustment method: holm 

      other rarelynever 
       2333         877 
             status
achesimp      pre-menopause peri-menopause post-menopause
  other                 209           1068           1056
  rarelynever           119            353            405

    Pearson's Chi-squared test

data:  x
X-squared = 17.776, df = 2, p-value = 0.000138

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.07441656 
Confidence interval:
      2.5%      97.5% 
0.04451325 0.11013040 

    Pairwise comparisons using Pairwise comparison of proportions 

data:  b$num out of b$den 

  1       2      
2 0.00011 -      
3 0.00520 0.08675

P value adjustment method: holm 

3 Question #81 . Do you have frozen shoulder?

A Chi-square test of independence was conducted to assess the relationship between frozen shoulder and menopausal status. A statistically significant association was found, X2(df=2)=22.605, p=.00015. Cramer’s V was trivial at V=0.052, 95% CI(0.0339, 0.0741).


                 Yes                   No         I don't know 
                 328                 3598                  222 
Prefer Not to Answer                 <NA> 
                   0                    0 
              status
frozen         pre-menopause peri-menopause post-menopause
  I don't know            36            109             77
  No                     441           1553           1604
  Yes                     19            161            148
              status
frozen         pre-menopause peri-menopause post-menopause
  I don't know    0.07258065     0.05979155     0.04209951
  No              0.88911290     0.85189248     0.87698196
  Yes             0.03830645     0.08831596     0.08091853

    Pearson's Chi-squared test

data:  x
X-squared = 22.605, df = 4, p-value = 0.0001518

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.05220021 
Confidence interval:
      2.5%      97.5% 
0.03388257 0.07406649 

    Pairwise comparisons using Pairwise comparison of proportions 

data:  b$num out of b$den 

  1       2      
2 0.00097 -      
3 0.00313 0.45706

P value adjustment method: holm 

4 Question #82 Please rate the extent to which frozen shoulder negatively impact your training.

A chi-square goodness-of-fit test was conducted to examine who said “Often/Always” to Q81 were equally distributed across three stages. The results indicated that the observed frequencies did not diff significantly from the expected frequencies, χ²(2) = 4.497, p =.1056.

Additionally, A chi-square goodness-of-fit test was conducted to examine who said “Rarely/Never” to Q81 were equally distributed across three stages. The results indicated that the observed frequencies did not differ significantly from the expected frequencies, χ²(2) = 1.1287, p=.5687.


   Always     Often Sometimes    Rarely     Never      <NA> 
       48        97       140        36         7      3820 
           status
fr_impact   pre-menopause peri-menopause post-menopause
  Always       0.00000000     0.14285714     0.16891892
  Often        0.21052632     0.30434783     0.29729730
  Sometimes    0.57894737     0.42857143     0.40540541
  Rarely       0.15789474     0.10559006     0.10810811
  Never        0.05263158     0.01863354     0.02027027
           status
fr_impact   pre-menopause peri-menopause post-menopause
  Always                0             23             25
  Often                 4             49             44
  Sometimes            11             69             60
  Rarely                3             17             16
  Never                 1              3              3

 pre-menopause peri-menopause post-menopause           <NA> 
            19            161            148              0 

Oftenalways       other 
        145         183 
             status
frozenimp     pre-menopause peri-menopause post-menopause
  Oftenalways             4             72             69
  other                  15             89             79

    Pearson's Chi-squared test

data:  x
X-squared = 4.497, df = 2, p-value = 0.1056

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.1170919 
Confidence interval:
     2.5%     97.5% 
0.0000000 0.2293522 

      other rarelynever 
        285          43 
             status
frozenimp     pre-menopause peri-menopause post-menopause
  other                  15            141            129
  rarelynever             4             20             19

    Pearson's Chi-squared test

data:  x
X-squared = 1.1287, df = 2, p-value = 0.5687

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.0586614 
Confidence interval:
     2.5%     97.5% 
0.0000000 0.1690329 

5 Question #83. Do you have plantar fasciitis?

A Chi-square test of independence was conducted to assess the relationship between plantar fasciitis frozen shoulder and menopausal status. A statistically significant association was found, X2(df=2)=21.506, p=.00025. Cramer’s V was trivial at V=0.051, 95% CI(0.0328, 0.0728).


        I don't know                   No Prefer not to answer 
                 124                 3489                    1 
                 Yes                 <NA> 
                 534                    0 

   1    2    4 <NA> 
 534 3489  124    0 

I don't know           No          Yes 
         124         3489          534 
              status
plantar        pre-menopause peri-menopause post-menopause
  I don't know            21             70             33
  No                     413           1496           1580
  Yes                     61            257            216
              status
plantar        pre-menopause peri-menopause post-menopause
  I don't know    0.04242424     0.03839824     0.01804265
  No              0.83434343     0.82062534     0.86386003
  Yes             0.12323232     0.14097641     0.11809732

    Pearson's Chi-squared test

data:  x
X-squared = 21.506, df = 4, p-value = 0.0002513

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.05092122 
Confidence interval:
      2.5%      97.5% 
0.03276740 0.07278492 

    Pairwise comparisons using Pairwise comparison of proportions 

data:  b$num out of b$den 

  1    2   
2 0.69 -   
3 0.81 0.13

P value adjustment method: holm 

6 Question #84. Please rate the extent to which the plantar fasciitis negatively impact your training.

A chi-square goodness-of-fit test was conducted to examine who said “Often/Always” to Q84 were equally distributed across three stages. The results indicated that the observed frequencies differed significantly from the expected frequencies, χ²(2) = 7.4466, p =.02415. Cramer’s V was trivial at V=0.037, 95% CI(0.0000, 0.0688).

Additionally, A chi-square goodness-of-fit test was conducted to examine who said “Rarely/Never” to Q84 were equally distributed across three stages. The results indicated that the observed frequencies did not differ significantly from the expected frequencies, χ²(2) = 3.4859, p=.175.


   Always     Often Sometimes    Rarely     Never      <NA> 
       29        96       222       166        21      3614 
           status
pf_impact   pre-menopause peri-menopause post-menopause
  Always       0.04918033     0.05058366     0.06018519
  Often        0.08196721     0.22957198     0.14814815
  Sometimes    0.45901639     0.40856031     0.41203704
  Rarely       0.36065574     0.29182879     0.31944444
  Never        0.04918033     0.01945525     0.06018519
           status
pf_impact   pre-menopause peri-menopause post-menopause
  Always                3             13             13
  Often                 5             59             32
  Sometimes            28            105             89
  Rarely               22             75             69
  Never                 3              5             13

 pre-menopause peri-menopause post-menopause           <NA> 
            61            257            216              0 

Oftenalways       other 
        125         409 
             status
plantarimp    pre-menopause peri-menopause post-menopause
  Oftenalways             8             72             45
  other                  53            185            171

    Pearson's Chi-squared test

data:  x
X-squared = 7.4466, df = 2, p-value = 0.02415

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.1180888 
Confidence interval:
      2.5%      97.5% 
0.06148507 0.20603650 

    Pairwise comparisons using Pairwise comparison of proportions 

data:  b$num out of b$den 

  1     2    
2 0.074 -    
3 0.242 0.180

P value adjustment method: holm 

      other rarelynever 
        347         187 
             status
plantarimp    pre-menopause peri-menopause post-menopause
  other                  36            177            134
  rarelynever            25             80             82

    Pearson's Chi-squared test

data:  x
X-squared = 3.4859, df = 2, p-value = 0.175

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.08079535 
Confidence interval:
     2.5%     97.5% 
0.0000000 0.1687117 

7 Question #85. How often do you alter your training program due to joint pain, frozen shoulder,

A chi-square goodness-of-fit test was conducted to examine who said “Often/Always” to Q85 were equally distributed across three stages. The results indicated that the observed frequencies differed significantly from the expected frequencies, χ²(2) = 7.4466, p = .02415. Cramer’s V was trivial at V=0.037, 95% CI(0.0000, 0.0688).

Additionally, A chi-square goodness-of-fit test was conducted to examine who said “Rarely/Never” to Q84 were equally distributed across three stages. The results indicated that the observed frequencies did not differ significantly from the expected frequencies, χ²(2) = 3.4859, p= .175.


   Always     Often Sometimes    Rarely     Never      <NA> 
      175       485      1321      1133       181       853 
           status
aches_alter pre-menopause peri-menopause post-menopause
  Always       0.03508772     0.05122951     0.05910007
  Often        0.10233918     0.16256831     0.14237743
  Sometimes    0.38304094     0.39412568     0.41168570
  Rarely       0.37719298     0.33948087     0.34049698
  Never        0.10233918     0.05259563     0.04633983
           status
aches_alter pre-menopause peri-menopause post-menopause
  Always               12             75             88
  Often                35            238            212
  Sometimes           131            577            613
  Rarely              129            497            507
  Never                35             77             69

 pre-menopause peri-menopause post-menopause           <NA> 
           342           1464           1489              0 

Oftenalways       other 
        660        2635 
             status
achesimp      pre-menopause peri-menopause post-menopause
  Oftenalways            47            313            300
  other                 295           1151           1189

    Pearson's Chi-squared test

data:  x
X-squared = 10.118, df = 2, p-value = 0.006352

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.05541411 
Confidence interval:
      2.5%      97.5% 
0.02950641 0.09077899 

    Pairwise comparisons using Pairwise comparison of proportions 

data:  b$num out of b$den 

  1      2     
2 0.0057 -     
3 0.0161 0.4354

P value adjustment method: holm 

      other rarelynever 
        347         187 
             status
achesimp      pre-menopause peri-menopause post-menopause
  other                  36            177            134
  rarelynever            25             80             82

    Pearson's Chi-squared test

data:  x
X-squared = 3.4859, df = 2, p-value = 0.175

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.08079535 
Confidence interval:
     2.5%     97.5% 
0.0000000 0.1687117 

8 Question #86. From one workout to the next, how often do you feel fully recovered?

A chi-square goodness-of-fit test was conducted to examine who said “Often/Always” to Q86 were equally distributed across three stages. The results indicated that the observed frequencies did not differ significantly from the expected frequencies, χ²(2) = 44.517, p<.000001.

Additionally, A chi-square goodness-of-fit test was conducted to examine who said “Rarely/Never” to Q86 were equally distributed across three stages. The results indicated that the observed frequencies did not differ significantly from the expected frequencies, χ²(2) = 17.739, p= .00014.


   Always     Often Sometimes    Rarely     Never      <NA> 
      326      2044      1365       372        41         0 
           status
recover     pre-menopause peri-menopause post-menopause
  Always      0.060483871    0.055951728    0.106068890
  Often       0.580645161    0.458584750    0.503007108
  Sometimes   0.298387097    0.366428963    0.300164024
  Rarely      0.052419355    0.105869446    0.083652269
  Never       0.008064516    0.013165112    0.007107709
           status
recover     pre-menopause peri-menopause post-menopause
  Always               30            102            194
  Often               288            836            920
  Sometimes           148            668            549
  Rarely               26            193            153
  Never                 4             24             13

 pre-menopause peri-menopause post-menopause           <NA> 
           496           1823           1829              0 

Oftenalways       other 
       2370        1778 
             status
rec           pre-menopause peri-menopause post-menopause
  Oftenalways           318            938           1114
  other                 178            885            715

    Pearson's Chi-squared test

data:  x
X-squared = 44.517, df = 2, p-value = 0.0000000002155

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.1035956 
Confidence interval:
      2.5%      97.5% 
0.07505037 0.13480054 

    Pairwise comparisons using Pairwise comparison of proportions 

data:  b$num out of b$den 

  1           2          
2 0.000001367 -          
3 0.22        0.000000028

P value adjustment method: holm 

      other rarelynever 
       3735         413 
             status
rec           pre-menopause peri-menopause post-menopause
  other                 466           1606           1663
  rarelynever            30            217            166

    Pearson's Chi-squared test

data:  x
X-squared = 17.739, df = 2, p-value = 0.0001406

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.06539596 
Confidence interval:
      2.5%      97.5% 
0.03909832 0.09681374 

    Pairwise comparisons using Pairwise comparison of proportions 

data:  b$num out of b$den 

  1     2    
2 0.074 -    
3 0.242 0.180

P value adjustment method: holm 

9 Question #87. Do you experience urinary incontinence?

A Chi-square test of independence was conducted to assess the relationship between incontinence and menopausal status. A statistically significant association was not found, X2(df=2)=21.699, p=.000019. Cramer’s V was trivial at V=0.072, 95% CI(0.0454, 0.1038).


   1    2    3 
1526 2614    8 

                 Yes                   No Prefer Not to Answer 
                1526                 2614                    0 
                <NA> 
                   8 
      status
incont pre-menopause peri-menopause post-menopause
   No            351           1094           1169
   Yes           142            727            657
      status
incont pre-menopause peri-menopause post-menopause
   No      0.7119675      0.6007688      0.6401972
   Yes     0.2880325      0.3992312      0.3598028

    Pearson's Chi-squared test

data:  x
X-squared = 21.699, df = 2, p-value = 0.00001942

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.07239642 
Confidence interval:
      2.5%      97.5% 
0.04536575 0.10380066 

    Pairwise comparisons using Pairwise comparison of proportions 

data:  b$num out of b$den 

  1        2    
2 0.000023 -    
3 0.007    0.016

P value adjustment method: holm 

10 Question #88. What do you believe was the cause of your urinary incontinence?


  1   2   3   4 
508 693 104 221 

   Menopause   Childbirth        Other I don't know         <NA> 
         508          693          104          221         2622 
              status
cause          pre-menopause peri-menopause post-menopause
  Childbirth              90            367            236
  I don't know            34            109             78
  Menopause                9            200            299
  Other                    9             51             44
              status
cause          pre-menopause peri-menopause post-menopause
  Childbirth      0.63380282     0.50481431     0.35920852
  I don't know    0.23943662     0.14993122     0.11872146
  Menopause       0.06338028     0.27510316     0.45509893
  Other           0.06338028     0.07015131     0.06697108

    Pearson's Chi-squared test

data:  x
X-squared = 107.1, df = 6, p-value < 0.00000000000000022

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.1873243 
Confidence interval:
     2.5%     97.5% 
0.1534578 0.2232019 

11 Question #89. Please rate the extent to which urinary incontinence impacts your desire to engage in exercise.

A chi-square goodness-of-fit test was conducted to examine who said “Often/Always” to Q89 were equally distributed across three stages. The results indicated that the observed frequencies differed significantly from the expected frequencies, χ²(2) = 8.3636, p = .01527. Cramer’s V was moderate at V=0.187, 95% CI(0.1535, 0.2232).

Additionally, A chi-square goodness-of-fit test was conducted to examine who said “Rarely/Never” to Q89 were equally distributed across three stages. The results indicated that the observed frequencies did not differ significantly from the expected frequencies, χ²(2) = 2.3826, p= .3038.


   Always     Often Sometimes    Rarely     Never      <NA> 
       36       124       311       563       492      2622 
           status
in_impact   pre-menopause peri-menopause post-menopause
  Always       0.02816901     0.02475928     0.02130898
  Often        0.08450704     0.10178817     0.05783866
  Sometimes    0.19014085     0.20082531     0.21004566
  Rarely       0.37323944     0.37414030     0.36225266
  Never        0.32394366     0.29848693     0.34855403
           status
in_impact   pre-menopause peri-menopause post-menopause
  Always                4             18             14
  Often                12             74             38
  Sometimes            27            146            138
  Rarely               53            272            238
  Never                46            217            229

 pre-menopause peri-menopause post-menopause           <NA> 
           142            727            657              0 

Oftenalways       other 
        160        1366 
             status
incimp        pre-menopause peri-menopause post-menopause
  Oftenalways            16             92             52
  other                 126            635            605

    Pearson's Chi-squared test

data:  x
X-squared = 8.3636, df = 2, p-value = 0.01527

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.07403208 
Confidence interval:
      2.5%      97.5% 
0.03867997 0.12603885 

      other rarelynever 
        471        1055 
             status
incimp        pre-menopause peri-menopause post-menopause
  other                  43            238            190
  rarelynever            99            489            467

    Pearson's Chi-squared test

data:  x
X-squared = 2.3825, df = 2, p-value = 0.3038

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.03951297 
Confidence interval:
      2.5%      97.5% 
0.00000000 0.09138077 
LS0tDQp0aXRsZTogIkZGTVMgTWFudXNjcmlwdCAzIFN0YXRpc3RpY2FsIEFuYWx5c2lzIg0KYXV0aG9yOiAiIg0KZGF0ZTogIiINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDogDQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZGVwdGg6IDQNCiAgICB0b2NfZmxvYXQ6IHllcw0KICAgIG51bWJlcl9zZWN0aW9uczogeWVzDQogICAgdG9jX2NvbGxhcHNlZDogeWVzDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgc21vb3RoX3Njcm9sbDogeWVzDQogICAgdGhlbWU6IGx1bWVuDQogIHBkZl9kb2N1bWVudDogDQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZGVwdGg6IDQNCiAgICBmaWdfY2FwdGlvbjogeWVzDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICBmaWdfd2lkdGg6IDMNCiAgICBmaWdfaGVpZ2h0OiAzDQogIHdvcmRfZG9jdW1lbnQ6IA0KICAgIHRvYzogeWVzDQogICAgdG9jX2RlcHRoOiA0DQogICAgZmlnX2NhcHRpb246IHllcw0KICAgIGtlZXBfbWQ6IHllcw0KZWRpdG9yX29wdGlvbnM6IA0KICBjaHVua19vdXRwdXRfdHlwZTogaW5saW5lDQotLS0NCg0KYGBge2NzcywgZWNobyA9IEZBTFNFfQ0KI1RPQzo6YmVmb3JlIHsNCiAgY29udGVudDogIlRhYmxlIG9mIENvbnRlbnRzIjsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogIGZvbnQtc2l6ZTogMS4yZW07DQogIGRpc3BsYXk6IGJsb2NrOw0KICBjb2xvcjogbmF2eTsNCiAgbWFyZ2luLWJvdHRvbTogMTBweDsNCn0NCg0KDQpkaXYjVE9DIGxpIHsgICAgIC8qIHRhYmxlIG9mIGNvbnRlbnQgICovDQogICAgbGlzdC1zdHlsZTp1cHBlci1yb21hbjsNCiAgICBiYWNrZ3JvdW5kLWltYWdlOm5vbmU7DQogICAgYmFja2dyb3VuZC1yZXBlYXQ6bm9uZTsNCiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOjA7DQp9DQoNCmgxLnRpdGxlIHsgICAgLyogbGV2ZWwgMSBoZWFkZXIgb2YgdGl0bGUgICovDQogIGZvbnQtc2l6ZTogMjJweDsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogIGNvbG9yOiBEYXJrUmVkOw0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogIGZvbnQtZmFtaWx5OiAiR2lsbCBTYW5zIiwgc2Fucy1zZXJpZjsNCn0NCg0KaDQuYXV0aG9yIHsgLyogSGVhZGVyIDQgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgZm9udC1zaXplOiAxNXB4Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgZm9udC1mYW1pbHk6IHN5c3RlbS11aTsNCiAgY29sb3I6IG5hdnk7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCn0NCg0KaDQuZGF0ZSB7IC8qIEhlYWRlciA0IC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovDQogIGZvbnQtc2l6ZTogMThweDsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogIGZvbnQtZmFtaWx5OiAiR2lsbCBTYW5zIiwgc2Fucy1zZXJpZjsNCiAgY29sb3I6IERhcmtCbHVlOw0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQoNCmgxIHsgLyogSGVhZGVyIDEgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgICBmb250LXNpemU6IDIwcHg7DQogICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogICAgY29sb3I6IGRhcmtyZWQ7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KaDIgeyAvKiBIZWFkZXIgMiAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLw0KICAgIGZvbnQtc2l6ZTogMThweDsNCiAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgICBjb2xvcjogbmF2eTsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQpoMyB7IC8qIEhlYWRlciAzIC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovDQogICAgZm9udC1zaXplOiAxNnB4Ow0KICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBuYXZ5Ow0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCmg0IHsgLyogSGVhZGVyIDQgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgICBmb250LXNpemU6IDE0cHg7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBkYXJrcmVkOw0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCi8qIEFkZCBkb3RzIGFmdGVyIG51bWJlcmVkIGhlYWRlcnMgKi8NCi5oZWFkZXItc2VjdGlvbi1udW1iZXI6OmFmdGVyIHsNCiAgY29udGVudDogIi4iOw0KDQpib2R5IHsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgfQ0KDQouaGlnaGxpZ2h0bWUgeyBiYWNrZ3JvdW5kLWNvbG9yOnllbGxvdzsgfQ0KDQpwIHsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgfQ0KDQp9DQpgYGANCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9Rn0NCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGLCBjb21tZW50PU5BLCB3YXJuaW5nPUYsIHJlc3VsdHM9VCwgbWVzc2FnZT1GKQ0KDQpzZXR3ZCgiQzovVXNlcnMvNzVMUFlPVFQvT25lRHJpdmUgLSBXZXN0IENoZXN0ZXIgVW5pdmVyc2l0eSBvZiBQQS9GRk1TIikNCg0KbGlicmFyeShGU0EpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShrYWJsZUV4dHJhKQ0KbGlicmFyeShzcGxpdHN0YWNrc2hhcGUpDQpsaWJyYXJ5KHN1bW1hcnl0b29scykNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeSh0aWR5cikNCmxpYnJhcnkoVklNKQ0KbGlicmFyeSh6b28pDQpsaWJyYXJ5KGp0b29scykNCmxpYnJhcnkoYnJvb20pDQpsaWJyYXJ5KHZjZCkNCmxpYnJhcnkodmlzZGF0KQ0KbGlicmFyeShza2ltcikNCmxpYnJhcnkoamFuaXRvcikNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoZ21vZGVscykNCmxpYnJhcnkoZHVubi50ZXN0KQ0KbGlicmFyeShyc3RhdGl4KQ0KbGlicmFyeShEZXNjVG9vbHMpDQpsaWJyYXJ5KGVmZmVjdHNpemUpDQpsaWJyYXJ5KGNvbmZpbnRyKQ0KbGlicmFyeShjaGlzcXVhcmUpDQpsaWJyYXJ5KGZvcmNhdHMpDQpvcHRpb25zKHNjaXBlbj05OTkpDQoNCiN3cmFuZ2xpbmcNCg0KZmlyc3QuZGF0YT1yZWFkLmNzdigiRkZNUyBkZW1vZyB2YXJzLmNzdiIsIGhlYWRlcj1UKQ0KDQpmaXJzdC5kYXRhID0gZmlyc3QuZGF0YSAlPiUNCiAgZmlsdGVyKFdUS0c8MTgwKQ0KDQpmaXJzdC5kYXRhID0gZmlyc3QuZGF0YSAlPiUNCiAgbXV0YXRlKHN0YXR1cz1jYXNlX3doZW4oTUVOT1NUQVRVUz09MX4icHJlLW1lbm9wYXVzZSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBNRU5PU1RBVFVTPT0yfiJwZXJpLW1lbm9wYXVzZSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBNRU5PU1RBVFVTPT0zfiJwb3N0LW1lbm9wYXVzZSIsIFRSVUV+TkEpKQ0KDQpmaXJzdC5kYXRhJHN0YXR1cz1mY3RfaW5vcmRlcihmaXJzdC5kYXRhJHN0YXR1cykNCmBgYA0KDQojIFF1ZXN0aW9uICM3OSBEbyB5b3UgZXhwZXJpZW5jZSBqb2ludCBwYWluIGFuZCBib2R5IGFjaGVzPw0KDQoqQSBDaGktc3F1YXJlIHRlc3Qgb2YgaW5kZXBlbmRlbmNlIHdhcyBjb25kdWN0ZWQgdG8gYXNzZXNzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBleHBlcmllbmNpbmcgam9pbnQgYWNoZXMgYW5kIHBhaW4gYW5kIG1lbm9wYXVzYWwgc3RhdHVzLiBBIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgYXNzb2NpYXRpb24gd2FzIGZvdW5kLCBYMihkZj0yKT00Mi45OTksIHA8LjAwMDAxLiBDcmFtZXIncyBWIHdhcyBtb2RlcmF0ZSBhdCBWPTAuMTEsIDk1JSBDSSgwLjA3MywgMC4xMzMpLioNCg0KYGBge3IgUTc5LCBpbmNsdWRlPVR9DQoNCmZpcnN0LmRhdGEgPSBmaXJzdC5kYXRhICU+JQ0KICBtdXRhdGUoYWNoZXM9Y2FzZV93aGVuKEFDSEVTPT0xfiJZZXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBBQ0hFUz09Mn4iTm8iLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgQUNIRVM9PTN+IlByZWZlciBub3QgdG8gYW5zd2VyIiwgVFJVRX5OQSkpDQpmaXJzdC5kYXRhJGFjaGVzIDwtIGZhY3RvcihmaXJzdC5kYXRhJGFjaGVzLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiWWVzIiwgIk5vIiwgIlByZWZlciBOb3QgdG8gQW5zd2VyIikpDQp0YWJsZShmaXJzdC5kYXRhJGFjaGVzLCB1c2VOQSA9ICJhbHdheXMiKQ0KI1JlbW92ZSBwcmVmZXIgbm90IHRvIGFuc3dlcj0wIGFuZCBtaXNzaW5nPTcNCmRhdGEgPSBmaXJzdC5kYXRhICU+JQ0KICBmaWx0ZXIoQUNIRVM8MykNCg0KZGF0YSRhY2hlcyA8LSBmYWN0b3IoZGF0YSRhY2hlcywgbGV2ZWxzID0gYygiWWVzIiwgIk5vIikpDQoNCng9eHRhYnMofmFjaGVzK3N0YXR1cywgZGF0YT1kYXRhKQ0KeA0KcHJvcC50YWJsZSh4LDIpDQpyZXN1bHQ9Y2hpc3EudGVzdCh4KQ0KcmVzdWx0DQpjaV9jcmFtZXJzdihyZXN1bHQpDQoNCmI9ZGF0YS5mcmFtZSgNCm51bT1jKDMyOCwgMTQyMSwgMTQ2MSksDQpkZW49YygzMjgrMTY3LCAxNDIxKzQwMCAsMTQ2MSszNjQpLA0Kc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpDQopDQoNCnBhaXJ3aXNlLnByb3AudGVzdCh4PWIkbnVtLCBuPWIkZGVuLCBwLmFkanVzdC5tZXRob2QgPSAiaG9sbSIpDQoNCmBgYA0KDQojIFF1ZXN0aW9uICM4MCBQbGVhc2UgcmF0ZSB0aGUgZXh0ZW50IHRvIHdoaWNoIHRoZSBqb2ludCBwYWluL2FjaGVzIG5lZ2F0aXZlbHkgaW1wYWN0IHlvdXIgdHJhaW5pbmcNCg0KKkEgY2hpLXNxdWFyZSBnb29kbmVzcy1vZi1maXQgdGVzdCB3YXMgY29uZHVjdGVkIHRvIGV4YW1pbmUgd2hvIHNhaWQgIk9mdGVuL0Fsd2F5cyIgdG8gUTc5IHdlcmUgZXF1YWxseSBkaXN0cmlidXRlZCBhY3Jvc3MgdGhyZWUgc3RhZ2VzLiBUaGUgcmVzdWx0cyBpbmRpY2F0ZWQgdGhhdCB0aGUgb2JzZXJ2ZWQgZnJlcXVlbmNpZXMgZGlmZmVyZWQgc2lnbmlmaWNhbnRseSBmcm9tIHRoZSBleHBlY3RlZCBmcmVxdWVuY2llcywgz4fCsigyKSA9IDIzLjUxNSwgcCA9LjAwMDAwNzguICoNCg0KKkFkZGl0aW9uYWxseSwgQSBjaGktc3F1YXJlIGdvb2RuZXNzLW9mLWZpdCB0ZXN0IHdhcyBjb25kdWN0ZWQgdG8gZXhhbWluZSB3aG8gc2FpZCAiUmFyZWx5L05ldmVyIiB0byBRNzkgd2VyZSBlcXVhbGx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aHJlZSBzdGFnZXMuIFRoZSByZXN1bHRzIGluZGljYXRlZCB0aGF0IHRoZSBvYnNlcnZlZCBmcmVxdWVuY2llcyBkaWZmZXJlZCBzaWduaWZpY2FudGx5IGZyb20gdGhlIGV4cGVjdGVkIGZyZXF1ZW5jaWVzLCDPh8KyKDIpID0gMTcuNzc2LCBwPS4wMDAxMzgqDQoNCmBgYHtyIFE4MCwgaW5jbHVkZT1UfQ0KDQpmaXJzdC5kYXRhID0gZmlyc3QuZGF0YSAlPiUNCiAgICBtdXRhdGUoYWNoZXNfaW1wPWNhc2Vfd2hlbihBQ0hFU19JTVBBQ1Q9PTF+IkFsd2F5cyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIEFDSEVTX0lNUEFDVD09Mn4iT2Z0ZW4iLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgQUNIRVNfSU1QQUNUPT0zfiJTb21ldGltZXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBBQ0hFU19JTVBBQ1Q9PTR+IlJhcmVseSIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBBQ0hFU19JTVBBQ1Q9PTV+Ik5ldmVyIiwgVFJVRX5OQSkpDQpmaXJzdC5kYXRhJGFjaGVzX2ltcCA8LSBmYWN0b3IoZmlyc3QuZGF0YSRhY2hlc19pbXAsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJBbHdheXMiLCAiT2Z0ZW4iLCAiU29tZXRpbWVzIiwgIlJhcmVseSIsICJOZXZlciIpKQ0KdGFibGUoZmlyc3QuZGF0YSRhY2hlc19pbXAsIHVzZU5BID0gImFsd2F5cyIpDQp0YWJsZShmaXJzdC5kYXRhJHN0YXR1cywgdXNlTkEgPSAiYWx3YXlzIikNCiNSZW1vdmUgbWlzc2luZyBOPTkzOCwgc2tpcCBsb2dpYw0KZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIGZpbHRlcihBQ0hFU19JTVBBQ1Q8NikNCng9eHRhYnMofmFjaGVzX2ltcCtzdGF0dXMsIGRhdGE9ZGF0YSkNCnByb3AudGFibGUoeCwyKQ0KeA0KdGFibGUoZGF0YSRzdGF0dXMpDQoNCiNvZnRlbiBhbmQgYWx3YXlzLWNvbWJpbmUgcmVzcG9uc2VzIGZvciB4MiB0ZXN0DQpvZnRlbiA9IGRhdGEgJT4lDQogIG11dGF0ZShhY2hlc2ltcD1jYXNlX3doZW4oQUNIRVNfSU1QQUNUPD0yfiJPZnRlbmFsd2F5cyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUNIRVNfSU1QQUNUPjJ+Im90aGVyIikpDQoNCnRhYmxlKG9mdGVuJGFjaGVzaW1wKQ0KeD14dGFicyh+YWNoZXNpbXArc3RhdHVzLCBkYXRhPW9mdGVuKQ0KeA0KcmVzdWx0PWNoaXNxLnRlc3QoeCkNCmNpX2NyYW1lcnN2KHJlc3VsdCkNCg0KYj1kYXRhLmZyYW1lKA0KbnVtPWMoNTEsIDQwNiwgMzk1KSwNCmRlbj1jKDUxKzI3NywgNDA2KzEwMTUsIDM5NSsxMDY2KSwNCnN0YWdlPWMoInByZSIsICJwZXJpIiwgInBvc3QiKQ0KKQ0KDQpwYWlyd2lzZS5wcm9wLnRlc3QoeD1iJG51bSwgbj1iJGRlbiwgcC5hZGp1c3QubWV0aG9kID0gImhvbG0iKQ0KDQojbmV2ZXIgYW5kIHJhcmVseS1jb21iaW5lIHJlc3BvbnNlcyBmb3IgeDIgdGVzdA0KbmV2ZXIgPSBkYXRhICU+JQ0KICBtdXRhdGUoYWNoZXNpbXA9Y2FzZV93aGVuKEFDSEVTX0lNUEFDVD49NH4icmFyZWx5bmV2ZXIiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFDSEVTX0lNUEFDVDw0fiJvdGhlciIpKQ0KDQp0YWJsZShuZXZlciRhY2hlc2ltcCkNCng9eHRhYnMofmFjaGVzaW1wK3N0YXR1cywgZGF0YT1uZXZlcikNCngNCnJlc3VsdD1jaGlzcS50ZXN0KHgpDQpyZXN1bHQNCmNpX2NyYW1lcnN2KHJlc3VsdCkNCg0KYj1kYXRhLmZyYW1lKA0KbnVtPWMoMTE5LCAzNTMsIDQwNSksDQpkZW49YygxMTkrMjA5LCAzNTMrMTA2OCwgNDA1KzEwNTYpLA0Kc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpDQopDQoNCnBhaXJ3aXNlLnByb3AudGVzdCh4PWIkbnVtLCBuPWIkZGVuLCBwLmFkanVzdC5tZXRob2QgPSAiaG9sbSIpDQoNCmBgYA0KDQojIFF1ZXN0aW9uICM4MSAuIERvIHlvdSBoYXZlIGZyb3plbiBzaG91bGRlcj8NCg0KKkEgQ2hpLXNxdWFyZSB0ZXN0IG9mIGluZGVwZW5kZW5jZSB3YXMgY29uZHVjdGVkIHRvIGFzc2VzcyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gZnJvemVuIHNob3VsZGVyIGFuZCBtZW5vcGF1c2FsIHN0YXR1cy4gQSBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IGFzc29jaWF0aW9uIHdhcyBmb3VuZCwgWDIoZGY9Mik9MjIuNjA1LCBwPS4wMDAxNS4gQ3JhbWVyJ3MgViB3YXMgdHJpdmlhbCBhdCBWPTAuMDUyLCA5NSUgQ0koMC4wMzM5LCAwLjA3NDEpLioNCg0KYGBge3IgUTgxLCBpbmNsdWRlPVR9DQoNCmZpcnN0LmRhdGEgPSBmaXJzdC5kYXRhICU+JQ0KICBtdXRhdGUoZnJvemVuPWNhc2Vfd2hlbihGUk9aRU49PTF+IlllcyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIEZST1pFTj09Mn4iTm8iLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPWkVOPT00fiJJIGRvbid0IGtub3ciLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPWkVOPT0zfiJQcmVmZXIgbm90IHRvIGFuc3dlciIsIFRSVUV+TkEpKQ0KZmlyc3QuZGF0YSRmcm96ZW4gPC0gZmFjdG9yKGZpcnN0LmRhdGEkZnJvemVuLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiWWVzIiwgIk5vIiwgIkkgZG9uJ3Qga25vdyIsICJQcmVmZXIgTm90IHRvIEFuc3dlciIpKQ0KdGFibGUoZmlyc3QuZGF0YSRmcm96ZW4sIHVzZU5BID0gImFsd2F5cyIpDQojUmVtb3ZlIG1pc3NpbmcgTj0wLCBQTlRBPTANCmRhdGEgPSBmaXJzdC5kYXRhICU+JQ0KICBmaWx0ZXIoRlJPWkVOPT0xIHwgRlJPWkVOPT0yIHwgRlJPWkVOPT00KQ0KDQpkYXRhJGZyb3plbiA8LSBhcy5jaGFyYWN0ZXIoZGF0YSRmcm96ZW4pDQoNCng9eHRhYnMofmZyb3plbitzdGF0dXMsIGRhdGE9ZGF0YSkNCngNCnByb3AudGFibGUoeCwyKQ0KcmVzdWx0PWNoaXNxLnRlc3QoeCkNCnJlc3VsdA0KY2lfY3JhbWVyc3YocmVzdWx0KQ0KDQpiPWRhdGEuZnJhbWUoDQpudW09YygxOSwgMTYxLCAxNDgpLA0KZGVuPWMoMTkrNDQxKzM2LCAxNjErMTU1MysxMDksIDE0OCsxNjA0Kzc3KSwNCnN0YWdlPWMoInByZSIsICJwZXJpIiwgInBvc3QiKQ0KKQ0KDQpwYWlyd2lzZS5wcm9wLnRlc3QoeD1iJG51bSwgbj1iJGRlbiwgcC5hZGp1c3QubWV0aG9kID0gImhvbG0iKQ0KDQpgYGANCg0KIyBRdWVzdGlvbiAjODIgUGxlYXNlIHJhdGUgdGhlIGV4dGVudCB0byB3aGljaCBmcm96ZW4gc2hvdWxkZXIgbmVnYXRpdmVseSBpbXBhY3QgeW91ciB0cmFpbmluZy4gDQoNCipBIGNoaS1zcXVhcmUgZ29vZG5lc3Mtb2YtZml0IHRlc3Qgd2FzIGNvbmR1Y3RlZCB0byBleGFtaW5lIHdobyBzYWlkICJPZnRlbi9BbHdheXMiIHRvIFE4MSB3ZXJlIGVxdWFsbHkgZGlzdHJpYnV0ZWQgYWNyb3NzIHRocmVlIHN0YWdlcy4gVGhlIHJlc3VsdHMgaW5kaWNhdGVkIHRoYXQgdGhlIG9ic2VydmVkIGZyZXF1ZW5jaWVzIGRpZCBub3QgZGlmZiBzaWduaWZpY2FudGx5IGZyb20gdGhlIGV4cGVjdGVkIGZyZXF1ZW5jaWVzLCDPh8KyKDIpID0gNC40OTcsIHAgPS4xMDU2LiAqDQoNCipBZGRpdGlvbmFsbHksIEEgY2hpLXNxdWFyZSBnb29kbmVzcy1vZi1maXQgdGVzdCB3YXMgY29uZHVjdGVkIHRvIGV4YW1pbmUgd2hvIHNhaWQgIlJhcmVseS9OZXZlciIgdG8gUTgxIHdlcmUgZXF1YWxseSBkaXN0cmlidXRlZCBhY3Jvc3MgdGhyZWUgc3RhZ2VzLiBUaGUgcmVzdWx0cyBpbmRpY2F0ZWQgdGhhdCB0aGUgb2JzZXJ2ZWQgZnJlcXVlbmNpZXMgZGlkIG5vdCBkaWZmZXIgc2lnbmlmaWNhbnRseSBmcm9tIHRoZSBleHBlY3RlZCBmcmVxdWVuY2llcywgz4fCsigyKSA9IDEuMTI4NywgcD0uNTY4Ny4gKg0KDQoNCmBgYHtyIFE4MiwgaW5jbHVkZT1UfQ0KDQpmaXJzdC5kYXRhID0gZmlyc3QuZGF0YSAlPiUNCiAgbXV0YXRlKGZyX2ltcGFjdD1jYXNlX3doZW4oRlJPWkVOX0lNUEFDVD09MX4iQWx3YXlzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPWkVOX0lNUEFDVD09Mn4iT2Z0ZW4iLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPWkVOX0lNUEFDVD09M34iU29tZXRpbWVzIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIEZST1pFTl9JTVBBQ1Q9PTR+IlJhcmVseSIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9aRU5fSU1QQUNUPT01fiJOZXZlciIsIFRSVUV+TkEpKQ0KZmlyc3QuZGF0YSRmcl9pbXBhY3QgPC0gZmFjdG9yKGZpcnN0LmRhdGEkZnJfaW1wYWN0LCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiQWx3YXlzIiwgIk9mdGVuIiwgIlNvbWV0aW1lcyIsICJSYXJlbHkiLCAiTmV2ZXIiKSkNCnRhYmxlKGZpcnN0LmRhdGEkZnJfaW1wYWN0LCB1c2VOQSA9ICJhbHdheXMiKQ0KDQoNCiNSZW1vdmUgbWlzc2luZyBOPTM4MjAsIHNraXAgbG9naWMNCmRhdGEgPSBmaXJzdC5kYXRhICU+JQ0KICBmaWx0ZXIoRlJPWkVOX0lNUEFDVDw2KQ0KeD14dGFicyh+ZnJfaW1wYWN0K3N0YXR1cywgZGF0YT1kYXRhKQ0KcHJvcC50YWJsZSh4LDIpDQp4DQp0YWJsZShkYXRhJHN0YXR1cywgdXNlTkE9ImFsd2F5cyIpDQoNCiNvZnRlbiBhbmQgYWx3YXlzLWNvbWJpbmUgcmVzcG9uc2VzIGZvciB4MiB0ZXN0DQoNCm9mdGVuID0gZGF0YSAlPiUNCiAgbXV0YXRlKGZyb3plbmltcD1jYXNlX3doZW4oRlJPWkVOX0lNUEFDVDw9Mn4iT2Z0ZW5hbHdheXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZST1pFTl9JTVBBQ1Q+Mn4ib3RoZXIiKSkNCg0KdGFibGUob2Z0ZW4kZnJvemVuaW1wKQ0KeD14dGFicyh+ZnJvemVuaW1wK3N0YXR1cywgZGF0YT1vZnRlbikNCngNCnJlc3VsdD1jaGlzcS50ZXN0KHgpDQpyZXN1bHQNCmNpX2NyYW1lcnN2KHJlc3VsdCkNCg0KI25ldmVyIGFuZCByYXJlbHktY29tYmluZSByZXNwb25zZXMgZm9yIHgyIHRlc3QNCg0KbmV2ZXIgPSBkYXRhICU+JQ0KICBtdXRhdGUoZnJvemVuaW1wPWNhc2Vfd2hlbihGUk9aRU5fSU1QQUNUPj00fiJyYXJlbHluZXZlciIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPWkVOX0lNUEFDVDw0fiJvdGhlciIpKQ0KDQp0YWJsZShuZXZlciRmcm96ZW5pbXApDQp4PXh0YWJzKH5mcm96ZW5pbXArc3RhdHVzLCBkYXRhPW5ldmVyKQ0KeA0KcmVzdWx0PWNoaXNxLnRlc3QoeCkNCnJlc3VsdA0KY2lfY3JhbWVyc3YocmVzdWx0KQ0KYGBgDQoNCiMgUXVlc3Rpb24gIzgzLiBEbyB5b3UgaGF2ZSBwbGFudGFyIGZhc2NpaXRpcz8NCg0KKkEgQ2hpLXNxdWFyZSB0ZXN0IG9mIGluZGVwZW5kZW5jZSB3YXMgY29uZHVjdGVkIHRvIGFzc2VzcyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gcGxhbnRhciBmYXNjaWl0aXMgZnJvemVuIHNob3VsZGVyIGFuZCBtZW5vcGF1c2FsIHN0YXR1cy4gQSBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IGFzc29jaWF0aW9uIHdhcyBmb3VuZCwgWDIoZGY9Mik9MjEuNTA2LCBwPS4wMDAyNS4gQ3JhbWVyJ3MgViB3YXMgdHJpdmlhbCBhdCBWPTAuMDUxLCA5NSUgQ0koMC4wMzI4LCAwLjA3MjgpLiAqDQoNCg0KYGBge3IgUTgzfQ0KDQpmaXJzdC5kYXRhID0gZmlyc3QuZGF0YSAlPiUNCiAgbXV0YXRlKHBsYW50YXI9Y2FzZV93aGVuKFBMQU5UQVI9PTF+IlllcyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIFBMQU5UQVI9PTJ+Ik5vIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIFBMQU5UQVI9PTR+IkkgZG9uJ3Qga25vdyIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBQTEFOVEFSPT0zfiJQcmVmZXIgbm90IHRvIGFuc3dlciIsIFRSVUV+TkEpKQ0KI2ZpcnN0LmRhdGEkcGxhbnRhciA8LSBmYWN0b3IoZmlyc3QuZGF0YSRwbGFudGFyLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxldmVscyA9IGMoIlllcyIsICJObyIsICJJIGRvbid0IGtub3ciLCAiUHJlZmVyIE5vdCB0byBBbnN3ZXIiKSkNCnRhYmxlKGZpcnN0LmRhdGEkcGxhbnRhciwgdXNlTkEgPSAiYWx3YXlzIikNCiNSZW1vdmUgbWlzc2luZyBOPTEsIFBOVEE9MA0KZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIGZpbHRlcihQTEFOVEFSPT0xIHwgUExBTlRBUj09MiB8IFBMQU5UQVI9PTQpDQoNCnRhYmxlKGRhdGEkUExBTlRBUiwgdXNlTkE9ImFsd2F5cyIpDQp0YWJsZShkYXRhJHBsYW50YXIpDQpkYXRhJHBsYW50YXIgPC0gYXMuY2hhcmFjdGVyKGRhdGEkcGxhbnRhcikNCg0KeD14dGFicyh+cGxhbnRhcitzdGF0dXMsIGRhdGE9ZGF0YSkNCngNCnByb3AudGFibGUoeCwyKQ0KcmVzdWx0PWNoaXNxLnRlc3QoeCkNCnJlc3VsdA0KY2lfY3JhbWVyc3YocmVzdWx0KQ0KDQpiPWRhdGEuZnJhbWUoDQpudW09Yyg2MSwgMjU3LCAyMTYpLA0KZGVuPWMoNjErMjErNDEzLCAyNTcrMTQ5Nis3MCwgMjE2KzMzKzE1ODApLA0Kc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpDQopDQoNCnBhaXJ3aXNlLnByb3AudGVzdCh4PWIkbnVtLCBuPWIkZGVuLCBwLmFkanVzdC5tZXRob2QgPSAiaG9sbSIpDQoNCg0KYGBgDQoNCiMgUXVlc3Rpb24gIzg0LiBQbGVhc2UgcmF0ZSB0aGUgZXh0ZW50IHRvIHdoaWNoIHRoZSBwbGFudGFyIGZhc2NpaXRpcyBuZWdhdGl2ZWx5IGltcGFjdCB5b3VyIHRyYWluaW5nLg0KDQoqQSBjaGktc3F1YXJlIGdvb2RuZXNzLW9mLWZpdCB0ZXN0IHdhcyBjb25kdWN0ZWQgdG8gZXhhbWluZSB3aG8gc2FpZCAiT2Z0ZW4vQWx3YXlzIiB0byBRODQgd2VyZSBlcXVhbGx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aHJlZSBzdGFnZXMuIFRoZSByZXN1bHRzIGluZGljYXRlZCB0aGF0IHRoZSBvYnNlcnZlZCBmcmVxdWVuY2llcyBkaWZmZXJlZCBzaWduaWZpY2FudGx5IGZyb20gdGhlIGV4cGVjdGVkIGZyZXF1ZW5jaWVzLCDPh8KyKDIpID0gNy40NDY2LCBwID0uMDI0MTUuIENyYW1lcidzIFYgd2FzIHRyaXZpYWwgYXQgVj0wLjAzNywgOTUlIENJKDAuMDAwMCwgMC4wNjg4KS4gKg0KDQoqQWRkaXRpb25hbGx5LCBBIGNoaS1zcXVhcmUgZ29vZG5lc3Mtb2YtZml0IHRlc3Qgd2FzIGNvbmR1Y3RlZCB0byBleGFtaW5lIHdobyBzYWlkICJSYXJlbHkvTmV2ZXIiIHRvIFE4NCB3ZXJlIGVxdWFsbHkgZGlzdHJpYnV0ZWQgYWNyb3NzIHRocmVlIHN0YWdlcy4gVGhlIHJlc3VsdHMgaW5kaWNhdGVkIHRoYXQgdGhlIG9ic2VydmVkIGZyZXF1ZW5jaWVzIGRpZCBub3QgZGlmZmVyIHNpZ25pZmljYW50bHkgZnJvbSB0aGUgZXhwZWN0ZWQgZnJlcXVlbmNpZXMsIM+HwrIoMikgPSAzLjQ4NTksIHA9LjE3NS4gKg0KDQpgYGB7ciBRODQsIGluY2x1ZGU9VH0NCg0KZmlyc3QuZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIG11dGF0ZShwZl9pbXBhY3Q9Y2FzZV93aGVuKFBMQU5UQVJfSU1QQUNUPT0xfiJBbHdheXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBQTEFOVEFSX0lNUEFDVD09Mn4iT2Z0ZW4iLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgUExBTlRBUl9JTVBBQ1Q9PTN+IlNvbWV0aW1lcyIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBQTEFOVEFSX0lNUEFDVD09NH4iUmFyZWx5IiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIFBMQU5UQVJfSU1QQUNUPT01fiJOZXZlciIsIFRSVUV+TkEpKQ0KZmlyc3QuZGF0YSRwZl9pbXBhY3QgPC0gZmFjdG9yKGZpcnN0LmRhdGEkcGZfaW1wYWN0LCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiQWx3YXlzIiwgIk9mdGVuIiwgIlNvbWV0aW1lcyIsICJSYXJlbHkiLCAiTmV2ZXIiKSkNCnRhYmxlKGZpcnN0LmRhdGEkcGZfaW1wYWN0LCB1c2VOQSA9ICJhbHdheXMiKQ0KDQoNCiNSZW1vdmUgbWlzc2luZyBOPTM2MTQsIHNraXAgbG9naWMNCmRhdGEgPSBmaXJzdC5kYXRhICU+JQ0KICBmaWx0ZXIoUExBTlRBUl9JTVBBQ1Q8NikNCng9eHRhYnMofnBmX2ltcGFjdCtzdGF0dXMsIGRhdGE9ZGF0YSkNCnByb3AudGFibGUoeCwyKQ0KeA0KdGFibGUoZGF0YSRzdGF0dXMsIHVzZU5BPSJhbHdheXMiKQ0KDQojb2Z0ZW4gYW5kIGFsd2F5cy1jb21iaW5lIHJlc3BvbnNlcyBmb3IgeDIgdGVzdA0Kb2Z0ZW4gPSBkYXRhICU+JQ0KICBtdXRhdGUocGxhbnRhcmltcD1jYXNlX3doZW4oUExBTlRBUl9JTVBBQ1Q8PTJ+Ik9mdGVuYWx3YXlzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTEFOVEFSX0lNUEFDVD4yfiJvdGhlciIpKQ0KDQp0YWJsZShvZnRlbiRwbGFudGFyaW1wKQ0KeD14dGFicyh+cGxhbnRhcmltcCtzdGF0dXMsIGRhdGE9b2Z0ZW4pDQp4DQpyZXN1bHQ9Y2hpc3EudGVzdCh4KQ0KcmVzdWx0DQpjaV9jcmFtZXJzdihyZXN1bHQpDQoNCmI9ZGF0YS5mcmFtZSgNCm51bT1jKDgsIDcyLCA0NSksDQpkZW49Yyg4KzUzLCA3MisxODUsIDQ1KzE3MSksDQpzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IikNCikNCg0KcGFpcndpc2UucHJvcC50ZXN0KHg9YiRudW0sIG49YiRkZW4sIHAuYWRqdXN0Lm1ldGhvZCA9ICJob2xtIikNCg0KI25ldmVyIGFuZCByYXJlbHktY29tYmluZSByZXNwb25zZXMgZm9yIHgyIHRlc3QNCg0KbmV2ZXIgPSBkYXRhICU+JQ0KICBtdXRhdGUocGxhbnRhcmltcD1jYXNlX3doZW4oUExBTlRBUl9JTVBBQ1Q+PTR+InJhcmVseW5ldmVyIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTEFOVEFSX0lNUEFDVDw0fiJvdGhlciIpKQ0KDQp0YWJsZShuZXZlciRwbGFudGFyaW1wKQ0KeD14dGFicyh+cGxhbnRhcmltcCtzdGF0dXMsIGRhdGE9bmV2ZXIpDQp4DQpyZXN1bHQ9Y2hpc3EudGVzdCh4KQ0KcmVzdWx0DQpjaV9jcmFtZXJzdihyZXN1bHQpDQoNCmBgYA0KDQojIFF1ZXN0aW9uICM4NS4gSG93IG9mdGVuIGRvIHlvdSBhbHRlciB5b3VyIHRyYWluaW5nIHByb2dyYW0gZHVlIHRvIGpvaW50IHBhaW4sIGZyb3plbiBzaG91bGRlciwgIA0KKkEgY2hpLXNxdWFyZSBnb29kbmVzcy1vZi1maXQgdGVzdCB3YXMgY29uZHVjdGVkIHRvIGV4YW1pbmUgd2hvIHNhaWQgIk9mdGVuL0Fsd2F5cyIgdG8gUTg1IHdlcmUgZXF1YWxseSBkaXN0cmlidXRlZCBhY3Jvc3MgdGhyZWUgc3RhZ2VzLiBUaGUgcmVzdWx0cyBpbmRpY2F0ZWQgdGhhdCB0aGUgb2JzZXJ2ZWQgZnJlcXVlbmNpZXMgZGlmZmVyZWQgc2lnbmlmaWNhbnRseSBmcm9tIHRoZSBleHBlY3RlZCBmcmVxdWVuY2llcywgz4fCsigyKSA9IDcuNDQ2NiwgcCA9IC4wMjQxNS4gQ3JhbWVyJ3MgViB3YXMgdHJpdmlhbCBhdCBWPTAuMDM3LCA5NSUgQ0koMC4wMDAwLCAwLjA2ODgpLiAqDQoNCipBZGRpdGlvbmFsbHksIEEgY2hpLXNxdWFyZSBnb29kbmVzcy1vZi1maXQgdGVzdCB3YXMgY29uZHVjdGVkIHRvIGV4YW1pbmUgd2hvIHNhaWQgIlJhcmVseS9OZXZlciIgdG8gUTg0IHdlcmUgZXF1YWxseSBkaXN0cmlidXRlZCBhY3Jvc3MgdGhyZWUgc3RhZ2VzLiBUaGUgcmVzdWx0cyBpbmRpY2F0ZWQgdGhhdCB0aGUgb2JzZXJ2ZWQgZnJlcXVlbmNpZXMgZGlkIG5vdCBkaWZmZXIgc2lnbmlmaWNhbnRseSBmcm9tIHRoZSBleHBlY3RlZCBmcmVxdWVuY2llcywgz4fCsigyKSA9IDMuNDg1OSwgcD0gLjE3NS4gKg0KDQoNCmBgYHtyIFE4NSwgaW5jbHVkZT1UfQ0KZmlyc3QuZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIG11dGF0ZShhY2hlc19hbHRlcj1jYXNlX3doZW4oQUNIRVNfQUxURVI9PTF+IkFsd2F5cyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIEFDSEVTX0FMVEVSPT0yfiJPZnRlbiIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBBQ0hFU19BTFRFUj09M34iU29tZXRpbWVzIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIEFDSEVTX0FMVEVSPT00fiJSYXJlbHkiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgQUNIRVNfQUxURVI9PTV+Ik5ldmVyIiwgVFJVRX5OQSkpDQpmaXJzdC5kYXRhJGFjaGVzX2FsdGVyIDwtIGZhY3RvcihmaXJzdC5kYXRhJGFjaGVzX2FsdGVyLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiQWx3YXlzIiwgIk9mdGVuIiwgIlNvbWV0aW1lcyIsICJSYXJlbHkiLCAiTmV2ZXIiKSkNCnRhYmxlKGZpcnN0LmRhdGEkYWNoZXNfYWx0ZXIsIHVzZU5BID0gImFsd2F5cyIpDQoNCg0KI1JlbW92ZSBtaXNzaW5nIE49ODUzLCBza2lwIGxvZ2ljDQpkYXRhID0gZmlyc3QuZGF0YSAlPiUNCiAgZmlsdGVyKEFDSEVTX0FMVEVSPDYpDQp4PXh0YWJzKH5hY2hlc19hbHRlcitzdGF0dXMsIGRhdGE9ZGF0YSkNCnByb3AudGFibGUoeCwyKQ0KeA0KdGFibGUoZGF0YSRzdGF0dXMsIHVzZU5BPSJhbHdheXMiKQ0KDQojb2Z0ZW4gYW5kIGFsd2F5cy1jb21iaW5lIHJlc3BvbnNlcyBmb3IgeDIgdGVzdA0Kb2Z0ZW4gPSBkYXRhICU+JQ0KICBtdXRhdGUoYWNoZXNpbXA9Y2FzZV93aGVuKEFDSEVTX0FMVEVSPD0yfiJPZnRlbmFsd2F5cyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUNIRVNfQUxURVI+Mn4ib3RoZXIiKSkNCg0KdGFibGUob2Z0ZW4kYWNoZXNpbXApDQp4PXh0YWJzKH5hY2hlc2ltcCtzdGF0dXMsIGRhdGE9b2Z0ZW4pDQp4DQpyZXN1bHQ9Y2hpc3EudGVzdCh4KQ0KcmVzdWx0DQpjaV9jcmFtZXJzdihyZXN1bHQpDQoNCmI9ZGF0YS5mcmFtZSgNCm51bT1jKDQ3LCAzMTMsIDMwMCksDQpkZW49Yyg0NysyOTUsIDMxMysxMTUxLCAzMDArMTE4OSksDQpzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IikNCikNCg0KcGFpcndpc2UucHJvcC50ZXN0KHg9YiRudW0sIG49YiRkZW4sIHAuYWRqdXN0Lm1ldGhvZCA9ICJob2xtIikNCg0KI25ldmVyIGFuZCByYXJlbHktY29tYmluZSByZXNwb25zZXMgZm9yIHgyIHRlc3QNCg0KbmV2ZXIgPSBkYXRhICU+JQ0KICBtdXRhdGUoYWNoZXNpbXA9Y2FzZV93aGVuKFBMQU5UQVJfSU1QQUNUPj00fiJyYXJlbHluZXZlciIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUExBTlRBUl9JTVBBQ1Q8NH4ib3RoZXIiKSkNCg0KdGFibGUobmV2ZXIkYWNoZXNpbXApDQp4PXh0YWJzKH5hY2hlc2ltcCtzdGF0dXMsIGRhdGE9bmV2ZXIpDQp4DQpyZXN1bHQ9Y2hpc3EudGVzdCh4KQ0KcmVzdWx0DQpjaV9jcmFtZXJzdihyZXN1bHQpDQpgYGANCg0KDQojIFF1ZXN0aW9uICM4Ni4gRnJvbSBvbmUgd29ya291dCB0byB0aGUgbmV4dCwgaG93IG9mdGVuIGRvIHlvdSBmZWVsIGZ1bGx5IHJlY292ZXJlZD8NCg0KKkEgY2hpLXNxdWFyZSBnb29kbmVzcy1vZi1maXQgdGVzdCB3YXMgY29uZHVjdGVkIHRvIGV4YW1pbmUgd2hvIHNhaWQgIk9mdGVuL0Fsd2F5cyIgdG8gUTg2IHdlcmUgZXF1YWxseSBkaXN0cmlidXRlZCBhY3Jvc3MgdGhyZWUgc3RhZ2VzLiBUaGUgcmVzdWx0cyBpbmRpY2F0ZWQgdGhhdCB0aGUgb2JzZXJ2ZWQgZnJlcXVlbmNpZXMgZGlkIG5vdCBkaWZmZXIgc2lnbmlmaWNhbnRseSBmcm9tIHRoZSBleHBlY3RlZCBmcmVxdWVuY2llcywgz4fCsigyKSA9IDQ0LjUxNywgcDwuMDAwMDAxLioNCg0KKkFkZGl0aW9uYWxseSwgQSBjaGktc3F1YXJlIGdvb2RuZXNzLW9mLWZpdCB0ZXN0IHdhcyBjb25kdWN0ZWQgdG8gZXhhbWluZSB3aG8gc2FpZCAiUmFyZWx5L05ldmVyIiB0byBRODYgd2VyZSBlcXVhbGx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aHJlZSBzdGFnZXMuIFRoZSByZXN1bHRzIGluZGljYXRlZCB0aGF0IHRoZSBvYnNlcnZlZCBmcmVxdWVuY2llcyBkaWQgbm90IGRpZmZlciBzaWduaWZpY2FudGx5IGZyb20gdGhlIGV4cGVjdGVkIGZyZXF1ZW5jaWVzLCDPh8KyKDIpID0gMTcuNzM5LCBwPSAuMDAwMTQuICoNCg0KYGBge3IgUTg2fQ0KDQpmaXJzdC5kYXRhID0gZmlyc3QuZGF0YSAlPiUNCiAgbXV0YXRlKHJlY292ZXI9Y2FzZV93aGVuKFJFQ09WRVJZPT0xfiJBbHdheXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBSRUNPVkVSWT09Mn4iT2Z0ZW4iLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgUkVDT1ZFUlk9PTN+IlNvbWV0aW1lcyIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBSRUNPVkVSWT09NH4iUmFyZWx5IiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIFJFQ09WRVJZPT01fiJOZXZlciIsIFRSVUV+TkEpKQ0KZmlyc3QuZGF0YSRyZWNvdmVyIDwtIGZhY3RvcihmaXJzdC5kYXRhJHJlY292ZXIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJBbHdheXMiLCAiT2Z0ZW4iLCAiU29tZXRpbWVzIiwgIlJhcmVseSIsICJOZXZlciIpKQ0KdGFibGUoZmlyc3QuZGF0YSRyZWNvdmVyLCB1c2VOQSA9ICJhbHdheXMiKQ0KDQojTm8gbWlzc2luZyB2YWx1ZXMgZm9yIHRoaXMgcXVlc3Rpb24NCiNkYXRhID0gZmlyc3QuZGF0YSAlPiUgZmlsdGVyKEZST1pFTl9JTVBBQ1Q8NikNCng9eHRhYnMofnJlY292ZXIrc3RhdHVzLCBkYXRhPWZpcnN0LmRhdGEpDQpwcm9wLnRhYmxlKHgsMikNCngNCnRhYmxlKGZpcnN0LmRhdGEkc3RhdHVzLCB1c2VOQT0iYWx3YXlzIikNCg0KDQojb2Z0ZW4gYW5kIGFsd2F5cy1jb21iaW5lIHJlc3BvbnNlcyBmb3IgeDIgdGVzdA0KDQpvZnRlbiA9IGZpcnN0LmRhdGEgJT4lDQogIG11dGF0ZShyZWM9Y2FzZV93aGVuKFJFQ09WRVJZPD0yfiJPZnRlbmFsd2F5cyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVDT1ZFUlk+Mn4ib3RoZXIiKSkNCg0KdGFibGUob2Z0ZW4kcmVjKQ0KeD14dGFicyh+cmVjK3N0YXR1cywgZGF0YT1vZnRlbikNCngNCnJlc3VsdD1jaGlzcS50ZXN0KHgpDQpyZXN1bHQNCmNpX2NyYW1lcnN2KHJlc3VsdCkNCg0KYj1kYXRhLmZyYW1lKA0KbnVtPWMoMzE4LCA5MzgsIDExMTQpLA0KZGVuPWMoMzE4KzE3OCwgOTM4Kzg4NSwgMTExNCs3MTQpLA0Kc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpDQopDQoNCnBhaXJ3aXNlLnByb3AudGVzdCh4PWIkbnVtLCBuPWIkZGVuLCBwLmFkanVzdC5tZXRob2QgPSAiaG9sbSIpDQoNCiNuZXZlciBhbmQgcmFyZWx5DQoNCm5ldmVyID0gZmlyc3QuZGF0YSAlPiUNCiAgbXV0YXRlKHJlYz1jYXNlX3doZW4oUkVDT1ZFUlk+PTR+InJhcmVseW5ldmVyIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUNPVkVSWTw0fiJvdGhlciIpKQ0KDQp0YWJsZShuZXZlciRyZWMpDQp4PXh0YWJzKH5yZWMrc3RhdHVzLCBkYXRhPW5ldmVyKQ0KeA0KcmVzdWx0PWNoaXNxLnRlc3QoeCkNCnJlc3VsdA0KY2lfY3JhbWVyc3YocmVzdWx0KQ0KDQpiPWRhdGEuZnJhbWUoDQpudW09Yyg4LCA3MiwgNDUpLA0KZGVuPWMoOCs1MywgNzIrMTg1LCA0NSsxNzEpLA0Kc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpDQopDQoNCnBhaXJ3aXNlLnByb3AudGVzdCh4PWIkbnVtLCBuPWIkZGVuLCBwLmFkanVzdC5tZXRob2QgPSAiaG9sbSIpDQoNCmBgYA0KDQojIFF1ZXN0aW9uICM4Ny4gRG8geW91IGV4cGVyaWVuY2UgdXJpbmFyeSBpbmNvbnRpbmVuY2U/DQoNCipBIENoaS1zcXVhcmUgdGVzdCBvZiBpbmRlcGVuZGVuY2Ugd2FzIGNvbmR1Y3RlZCB0byBhc3Nlc3MgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGluY29udGluZW5jZSBhbmQgbWVub3BhdXNhbCBzdGF0dXMuIEEgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBhc3NvY2lhdGlvbiB3YXMgbm90IGZvdW5kLCBYMihkZj0yKT0yMS42OTksIHA9LjAwMDAxOS4gQ3JhbWVyJ3MgViB3YXMgdHJpdmlhbCBhdCBWPTAuMDcyLCA5NSUgQ0koMC4wNDU0LCAwLjEwMzgpLiAqDQoNCmBgYHtyIFE4N30NCnRhYmxlKGZpcnN0LmRhdGEkSU5DT05USU5FTkNFKQ0KZmlyc3QuZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIG11dGF0ZShpbmNvbnQ9Y2FzZV93aGVuKElOQ09OVElORU5DRT09MX4iWWVzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgSU5DT05USU5FTkNFPT0yfiJObyIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBJTkNPTlRJTkVOQ0U9PTN+IlByZWZlciBub3QgdG8gYW5zd2VyIiwgVFJVRX5OQSkpDQpmaXJzdC5kYXRhJGluY29udCA8LSBmYWN0b3IoZmlyc3QuZGF0YSRpbmNvbnQsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJZZXMiLCAiTm8iLCAiUHJlZmVyIE5vdCB0byBBbnN3ZXIiKSkNCnRhYmxlKGZpcnN0LmRhdGEkaW5jb250LCB1c2VOQSA9ICJhbHdheXMiKQ0KI1JlbW92ZSBtaXNzaW5nIE49OCwgSURLPTAsIFBOVEE9MA0KZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIGZpbHRlcihpbmNvbnQ8MykNCg0KZmlyc3QuZGF0YSRpbmNvbnQgPC0gYXMuY2hhcmFjdGVyKGZpcnN0LmRhdGEkaW5jb250KQ0KDQp4PXh0YWJzKH5pbmNvbnQrc3RhdHVzLCBkYXRhPWZpcnN0LmRhdGEpDQp4DQpwcm9wLnRhYmxlKHgsMikNCnJlc3VsdD1jaGlzcS50ZXN0KHgpDQpyZXN1bHQNCmNpX2NyYW1lcnN2KHJlc3VsdCkNCg0KYj1kYXRhLmZyYW1lKA0KbnVtPWMoMTQyLCA3MjcsIDY1NyksDQpkZW49YygxNDIrMzUxLCA3MjcrMTA5NCwgNjU3KzExNjkpLA0Kc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpDQopDQoNCnBhaXJ3aXNlLnByb3AudGVzdCh4PWIkbnVtLCBuPWIkZGVuLCBwLmFkanVzdC5tZXRob2QgPSAiaG9sbSIpDQoNCg0KYGBgDQoNCg0KIyBRdWVzdGlvbiAjODguIFdoYXQgZG8geW91IGJlbGlldmUgd2FzIHRoZSBjYXVzZSBvZiB5b3VyIHVyaW5hcnkgaW5jb250aW5lbmNlPw0KDQoNCmBgYHtyIFE4OH0NCnRhYmxlKGZpcnN0LmRhdGEkSU5DT05UX0NBVVNFKQ0KZmlyc3QuZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIG11dGF0ZShjYXVzZT1jYXNlX3doZW4oSU5DT05UX0NBVVNFPT0xfiJNZW5vcGF1c2UiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBJTkNPTlRfQ0FVU0U9PTJ+IkNoaWxkYmlydGgiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgSU5DT05UX0NBVVNFPT0zfiJPdGhlciIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBJTkNPTlRfQ0FVU0U9PTR+IkkgZG9uJ3Qga25vdyIsIFRSVUV+TkEpKQ0KZmlyc3QuZGF0YSRjYXVzZSA8LSBmYWN0b3IoZmlyc3QuZGF0YSRjYXVzZSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIk1lbm9wYXVzZSIsICJDaGlsZGJpcnRoIiwgIk90aGVyIiwiSSBkb24ndCBrbm93IikpDQp0YWJsZShmaXJzdC5kYXRhJGNhdXNlLCB1c2VOQSA9ICJhbHdheXMiKQ0KI1JlbW92ZSBtaXNzaW5nIE49MjYyMiwgSURLPTAsIFBOVEE9MA0KZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIGZpbHRlcihJTkNPTlRfQ0FVU0U8NSkNCg0KZGF0YSRjYXVzZSA8LSBhcy5jaGFyYWN0ZXIoZGF0YSRjYXVzZSkNCg0KeD14dGFicyh+Y2F1c2Urc3RhdHVzLCBkYXRhPWRhdGEpDQp4DQpwcm9wLnRhYmxlKHgsMikNCnJlc3VsdD1jaGlzcS50ZXN0KHgpDQpyZXN1bHQNCmNpX2NyYW1lcnN2KHJlc3VsdCkNCg0KYGBgDQoNCg0KIyBRdWVzdGlvbiAjODkuIFBsZWFzZSByYXRlIHRoZSBleHRlbnQgdG8gd2hpY2ggdXJpbmFyeSBpbmNvbnRpbmVuY2UgaW1wYWN0cyB5b3VyIGRlc2lyZSB0byBlbmdhZ2UgaW4gZXhlcmNpc2UuIA0KDQoqQSBjaGktc3F1YXJlIGdvb2RuZXNzLW9mLWZpdCB0ZXN0IHdhcyBjb25kdWN0ZWQgdG8gZXhhbWluZSB3aG8gc2FpZCAiT2Z0ZW4vQWx3YXlzIiB0byBRODkgd2VyZSBlcXVhbGx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aHJlZSBzdGFnZXMuIFRoZSByZXN1bHRzIGluZGljYXRlZCB0aGF0IHRoZSBvYnNlcnZlZCBmcmVxdWVuY2llcyBkaWZmZXJlZCBzaWduaWZpY2FudGx5IGZyb20gdGhlIGV4cGVjdGVkIGZyZXF1ZW5jaWVzLCDPh8KyKDIpID0gOC4zNjM2LCBwID0gLjAxNTI3LiBDcmFtZXIncyBWIHdhcyBtb2RlcmF0ZSBhdCBWPTAuMTg3LCA5NSUgQ0koMC4xNTM1LCAwLjIyMzIpLioNCg0KKkFkZGl0aW9uYWxseSwgQSBjaGktc3F1YXJlIGdvb2RuZXNzLW9mLWZpdCB0ZXN0IHdhcyBjb25kdWN0ZWQgdG8gZXhhbWluZSB3aG8gc2FpZCAiUmFyZWx5L05ldmVyIiB0byBRODkgd2VyZSBlcXVhbGx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aHJlZSBzdGFnZXMuIFRoZSByZXN1bHRzIGluZGljYXRlZCB0aGF0IHRoZSBvYnNlcnZlZCBmcmVxdWVuY2llcyBkaWQgbm90IGRpZmZlciBzaWduaWZpY2FudGx5IGZyb20gdGhlIGV4cGVjdGVkIGZyZXF1ZW5jaWVzLCDPh8KyKDIpID0gMi4zODI2LCBwPSAuMzAzOC4gKg0KDQpgYGB7ciBRODl9DQoNCmZpcnN0LmRhdGEgPSBmaXJzdC5kYXRhICU+JQ0KICBtdXRhdGUoaW5faW1wYWN0PWNhc2Vfd2hlbihJTkNPTlRfSU1QQUNUPT0xfiJBbHdheXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBJTkNPTlRfSU1QQUNUPT0yfiJPZnRlbiIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBJTkNPTlRfSU1QQUNUPT0zfiJTb21ldGltZXMiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgSU5DT05UX0lNUEFDVD09NH4iUmFyZWx5IiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIElOQ09OVF9JTVBBQ1Q9PTV+Ik5ldmVyIiwgVFJVRX5OQSkpDQpmaXJzdC5kYXRhJGluX2ltcGFjdCA8LSBmYWN0b3IoZmlyc3QuZGF0YSRpbl9pbXBhY3QsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJBbHdheXMiLCAiT2Z0ZW4iLCAiU29tZXRpbWVzIiwgIlJhcmVseSIsICJOZXZlciIpKQ0KdGFibGUoZmlyc3QuZGF0YSRpbl9pbXBhY3QsIHVzZU5BID0gImFsd2F5cyIpDQoNCg0KI1JlbW92ZSBtaXNzaW5nIE49MjYyMiwgc2tpcCBsb2dpYw0KZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIGZpbHRlcihJTkNPTlRfSU1QQUNUPDYpDQp4PXh0YWJzKH5pbl9pbXBhY3Qrc3RhdHVzLCBkYXRhPWRhdGEpDQpwcm9wLnRhYmxlKHgsMikNCngNCnRhYmxlKGRhdGEkc3RhdHVzLCB1c2VOQT0iYWx3YXlzIikNCg0KDQojb2Z0ZW4gYW5kIGFsd2F5cy1jb21iaW5lIHJlc3BvbnNlcyBmb3IgeDIgdGVzdA0KDQpvZnRlbiA9IGRhdGEgJT4lDQogIG11dGF0ZShpbmNpbXA9Y2FzZV93aGVuKElOQ09OVF9JTVBBQ1Q8PTJ+Ik9mdGVuYWx3YXlzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTkNPTlRfSU1QQUNUPjJ+Im90aGVyIikpDQoNCnRhYmxlKG9mdGVuJGluY2ltcCkNCng9eHRhYnMofmluY2ltcCtzdGF0dXMsIGRhdGE9b2Z0ZW4pDQp4DQpyZXN1bHQ9Y2hpc3EudGVzdCh4KQ0KcmVzdWx0DQpjaV9jcmFtZXJzdihyZXN1bHQpDQoNCg0KI25ldmVyIGFuZCByYXJlbHktY29tYmluZSByZXNwb25zZXMgZm9yIHgyIHRlc3QNCg0KbmV2ZXIgPSBkYXRhICU+JQ0KICBtdXRhdGUoaW5jaW1wPWNhc2Vfd2hlbihJTkNPTlRfSU1QQUNUPj00fiJyYXJlbHluZXZlciIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5DT05UX0lNUEFDVDw0fiJvdGhlciIpKQ0KDQp0YWJsZShuZXZlciRpbmNpbXApDQp4PXh0YWJzKH5pbmNpbXArc3RhdHVzLCBkYXRhPW5ldmVyKQ0KeA0KcmVzdWx0PWNoaXNxLnRlc3QoeCkNCnJlc3VsdA0KY2lfY3JhbWVyc3YocmVzdWx0KQ0KYGBgDQoNCg==