Introduction

Project Background

The first Multi-Sector Needs Assesment (MSNA), conducted by REACH Initiative in close collaboration with OCHA, aims to understand the multi-sectoral and sector-specific needs, circumstances, and vulnerabilities of households across the entirety of the Occupied Palestinian Territory (oPt). The current assessment is designed to support humanitarian actors in their development of the 2022 Humanitarian Needs Overview (HNO) and Humanitarian Response Plan (HRP), in addition to supporting humanitarian, development, and peace actors in their development and implementation of a nexus approach for the oPt.

Primary data collection time period

Household data collection took place from July 4 to July 18, 2021. A total of 7,514 households were assessed, including female-headed households and refugee households living in and out of official United Nations Relief and Works Agency (UNRWA) refugee camps

Geographic Coverage

The MCNA surveyed households across all 16 governorates in the oPt. This includes all 16 governorates of the West Bank and Gaza, in addition to the 25 municipalities of the Gaza Strip, and the 8 refugee camps in the territory. All of the so-called “Oslo Areas” (A, B, and C) were covered, as were the areas of the city of Hebron classified as H2, and the parts of Jerusalem annxed by Israel, commonly known as East Jerusalem.

Methodology

The 2021 MSNA was conducted by a statistically-representative survey across the entirety of the oPt. In consultation with key humanitarian partners and actors, a joint set of indicators, questions, and answer choices were developed for the Palestinian context. All surveys were conducted through face-to-face interviews, using the tablet-based KoboCollect ODK app where possible and paper surveys in other instances (primarily in East Jerusalem and households in Area C in close proximity to Israeli settlements or army bases)

Data was collected across 48 geographic strata (described in detail on Coverage sheet). These strata included all localities in the Gaza Strip, as well as refugee camps in the territory, all governorates in the West Bank, with individual strata for the regions designated as Area C, in addition to H2, East Jerusalem, and refugee camps in the West Bank. Data is statistically representative at a 95% confidence level and a +/- 9% margin of error for all strata, with the exception of refugee camps in the West Bank, which is representative at a 95% confidence level and a +/- 5% margin of error. At the national level and regional level (e.g. West Bank and Gaza Strip), findings will be statistically representative at a higher level.

For surveys in the West Bank, a two-stage, stratified cluster sampling approach was followed, through which REACH first selected localities within the relevant strata, before randomly selecting households from an exhaustive list of households that was provided by PCBS. In Gaza, a one-stage, simple random sampling approach was used.

Load Data

Variable Analysis

Respondent Age

Visualization

Respondent Age in all surveys

`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Respondent Age based on Region

Tests of Normality (Respondent Age)

Null hypothesis: The data is normally distributed. If p> 0.05, normality can be assumed.

By Using K-s Test (Tests of Normality)

\(𝐻_0: Respondent_{Age} \sim Normal Distribution\)


    One-sample Kolmogorov-Smirnov test

data:  HH_data$age_respondent
D = 0.077388, p-value < 2.2e-16
alternative hypothesis: two-sided

then by applying K-s test \(H_0\) rejected because \(P_{value} < .05\)

By Using Chi square test (Tests of Normality)

\(𝐻_0: Respondent_{Age} \sim Normal Distribution\)



 myFunction <- function(x){
   
   dataName <- deparse(substitute(x))
   
   #remove Na values  
   x <- x[complete.cases(x)]
   
   #calculate length of data
   n <- length(x)
   
   #number of class always be 100 
   # divides data to 100 bins 
   nClasses = 100
   
   #calculate how many number occur in each class 
   num <- floor(1 + nClasses * pnorm(x, mean(x), sd(x)))
   count <- tabulate(num, nClasses)
   
   #calculate expected count in each class must be (Total Number / number of classes)
   prob <- rep(1/nClasses, nClasses)
   xpec <- n * prob
   
   h <- ((count - xpec)^2)/xpec
   P <- sum(h)
   pvalue <- pchisq(P, nClasses - 1, lower.tail = FALSE)
   
    result <- list(
      data.name = dataName,
     p.value = pvalue,
     method = "chi-square normality test"
   )
   class(result) <- "htest"
   result
 }

 myFunction(HH_data$age_respondent)

    chi-square normality test

data:  HH_data$age_respondent
p-value < 2.2e-16

then after applying Chi square test \(H_0\) rejected because \(P_{value} < .05\)

Total Income

Visualization

tot_income in all surveys

`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Total Income based on Region

Tests of Normality (Total Income)

Null hypothesis: The data is normally distributed. If p> 0.05, normality can be assumed.

By Using K-s Test (Tests of Normality)

\(𝐻_0: TotalIncome \sim Normal Distribution\)


    One-sample Kolmogorov-Smirnov test

data:  HH_data$tot_income
D = 0.16016, p-value < 2.2e-16
alternative hypothesis: two-sided

then affter applying K-s test \(H_0\) rejected because \(P_{value} < .05\)

By Using Chi square test (Tests of Normality)

\(𝐻_0: TotalIncome \sim Normal Distribution\)



 
 myFunction(HH_data$tot_income)

    chi-square normality test

data:  HH_data$tot_income
p-value < 2.2e-16

then after applying Chi square test \(H_0\) rejected because \(P_{value} < .05\)

Total Expenses

Visualization

Total Expenses in all surveys

`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Total Expenses based on Region

Tests of Normality (Total Expenses)

Null hypothesis: The data is normally distributed. If p> 0.05, normality can be assumed.

By Using K-s Test (Tests of Normality)

\(𝐻_0: TotalExpenses \sim Normal Distribution\)


    One-sample Kolmogorov-Smirnov test

data:  HH_data$tot_income
D = 0.20796, p-value < 2.2e-16
alternative hypothesis: two-sided

then affter applying K-s test \(H_0\) rejected because \(P_{value} < .05\)

By Using Chi square test (Tests of Normality)

\(𝐻_0: TotalExpenses \sim Normal Distribution\)



 
 myFunction(HH_data$tot_expenses)

    chi-square normality test

data:  HH_data$tot_expenses
p-value < 2.2e-16

then after applying Chi square test \(H_0\) rejected because \(P_{value} < .05\)

LS0tDQp0aXRsZTogIlJFQUNIIE9jY3VwaWVkIFBhbGVzdGluaWFuIFRlcnJpdG9yeSINCmF1dGhvcjogJ0l5YWQgQWxrcm9ueiA6IDIwMjEzMzc5Jw0Kb3V0cHV0Og0KICBodG1sX25vdGVib29rOiBkZWZhdWx0DQogIHdvcmRfZG9jdW1lbnQ6IGRlZmF1bHQNCi0tLQ0KDQojIEludHJvZHVjdGlvbg0KDQojIyBQcm9qZWN0IEJhY2tncm91bmQNCg0KVGhlIGZpcnN0IE11bHRpLVNlY3RvciBOZWVkcyBBc3Nlc21lbnQgKE1TTkEpLCBjb25kdWN0ZWQgYnkgUkVBQ0ggSW5pdGlhdGl2ZSBpbiBjbG9zZSBjb2xsYWJvcmF0aW9uIHdpdGggT0NIQSwgYWltcyB0byB1bmRlcnN0YW5kIHRoZSBtdWx0aS1zZWN0b3JhbCBhbmQgc2VjdG9yLXNwZWNpZmljIG5lZWRzLCBjaXJjdW1zdGFuY2VzLCBhbmQgdnVsbmVyYWJpbGl0aWVzIG9mIGhvdXNlaG9sZHMgYWNyb3NzIHRoZSBlbnRpcmV0eSBvZiB0aGUgT2NjdXBpZWQgUGFsZXN0aW5pYW4gVGVycml0b3J5IChvUHQpLiBUaGUgY3VycmVudCBhc3Nlc3NtZW50IGlzIGRlc2lnbmVkIHRvIHN1cHBvcnQgaHVtYW5pdGFyaWFuIGFjdG9ycyBpbiB0aGVpciBkZXZlbG9wbWVudCBvZiB0aGUgMjAyMiBIdW1hbml0YXJpYW4gTmVlZHMgT3ZlcnZpZXcgKEhOTykgYW5kIEh1bWFuaXRhcmlhbiBSZXNwb25zZSBQbGFuIChIUlApLCBpbiBhZGRpdGlvbiB0byBzdXBwb3J0aW5nIGh1bWFuaXRhcmlhbiwgZGV2ZWxvcG1lbnQsIGFuZCBwZWFjZSBhY3RvcnMgaW4gdGhlaXIgZGV2ZWxvcG1lbnQgYW5kIGltcGxlbWVudGF0aW9uIG9mIGEgbmV4dXMgYXBwcm9hY2ggZm9yIHRoZSBvUHQuDQoNCg0KIyMgUHJpbWFyeSBkYXRhIGNvbGxlY3Rpb24gdGltZSBwZXJpb2QNCg0KSG91c2Vob2xkIGRhdGEgY29sbGVjdGlvbiB0b29rIHBsYWNlIGZyb20gSnVseSA0IHRvIEp1bHkgMTgsIDIwMjEuIEEgdG90YWwgb2YgNyw1MTQgaG91c2Vob2xkcyB3ZXJlIGFzc2Vzc2VkLCBpbmNsdWRpbmcgZmVtYWxlLWhlYWRlZCBob3VzZWhvbGRzIGFuZCByZWZ1Z2VlIGhvdXNlaG9sZHMgbGl2aW5nIGluIGFuZCBvdXQgb2Ygb2ZmaWNpYWwgVW5pdGVkIE5hdGlvbnMgUmVsaWVmIGFuZCBXb3JrcyBBZ2VuY3kgKFVOUldBKSByZWZ1Z2VlIGNhbXBzDQoNCiMjIEdlb2dyYXBoaWMgQ292ZXJhZ2UNCg0KVGhlIE1DTkEgc3VydmV5ZWQgaG91c2Vob2xkcyBhY3Jvc3MgYWxsIDE2IGdvdmVybm9yYXRlcyBpbiB0aGUgb1B0LiBUaGlzIGluY2x1ZGVzIGFsbCAxNiBnb3Zlcm5vcmF0ZXMgb2YgdGhlIFdlc3QgQmFuayBhbmQgR2F6YSwgaW4gYWRkaXRpb24gdG8gdGhlIDI1IG11bmljaXBhbGl0aWVzIG9mIHRoZSBHYXphIFN0cmlwLCBhbmQgdGhlIDggcmVmdWdlZSBjYW1wcyBpbiB0aGUgdGVycml0b3J5LiBBbGwgb2YgdGhlIHNvLWNhbGxlZCAiT3NsbyBBcmVhcyIgKEEsIEIsIGFuZCBDKSB3ZXJlIGNvdmVyZWQsIGFzIHdlcmUgdGhlIGFyZWFzIG9mIHRoZSBjaXR5IG9mIEhlYnJvbiBjbGFzc2lmaWVkIGFzIEgyLCBhbmQgdGhlIHBhcnRzIG9mIEplcnVzYWxlbSBhbm54ZWQgYnkgSXNyYWVsLCBjb21tb25seSBrbm93biBhcyBFYXN0IEplcnVzYWxlbS4NCg0KIyMgTWV0aG9kb2xvZ3kNCg0KVGhlIDIwMjEgTVNOQSB3YXMgY29uZHVjdGVkIGJ5IGEgc3RhdGlzdGljYWxseS1yZXByZXNlbnRhdGl2ZSBzdXJ2ZXkgYWNyb3NzIHRoZSBlbnRpcmV0eSBvZiB0aGUgb1B0LiBJbiBjb25zdWx0YXRpb24gd2l0aCBrZXkgaHVtYW5pdGFyaWFuIHBhcnRuZXJzIGFuZCBhY3RvcnMsIGEgam9pbnQgc2V0IG9mIGluZGljYXRvcnMsIHF1ZXN0aW9ucywgYW5kIGFuc3dlciBjaG9pY2VzIHdlcmUgZGV2ZWxvcGVkIGZvciB0aGUgUGFsZXN0aW5pYW4gY29udGV4dC4gQWxsIHN1cnZleXMgd2VyZSBjb25kdWN0ZWQgdGhyb3VnaCBmYWNlLXRvLWZhY2UgaW50ZXJ2aWV3cywgdXNpbmcgdGhlIHRhYmxldC1iYXNlZCBLb2JvQ29sbGVjdCBPREsgYXBwIHdoZXJlIHBvc3NpYmxlIGFuZCBwYXBlciBzdXJ2ZXlzIGluIG90aGVyIGluc3RhbmNlcyAocHJpbWFyaWx5IGluIEVhc3QgSmVydXNhbGVtIGFuZCBob3VzZWhvbGRzIGluIEFyZWEgQyBpbiBjbG9zZSBwcm94aW1pdHkgdG8gSXNyYWVsaSBzZXR0bGVtZW50cyBvciBhcm15IGJhc2VzKQ0KDQpEYXRhIHdhcyBjb2xsZWN0ZWQgYWNyb3NzIDQ4IGdlb2dyYXBoaWMgc3RyYXRhIChkZXNjcmliZWQgaW4gZGV0YWlsIG9uIENvdmVyYWdlIHNoZWV0KS4gVGhlc2Ugc3RyYXRhIGluY2x1ZGVkIGFsbCBsb2NhbGl0aWVzIGluIHRoZSBHYXphIFN0cmlwLCBhcyB3ZWxsIGFzIHJlZnVnZWUgY2FtcHMgaW4gdGhlIHRlcnJpdG9yeSwgYWxsIGdvdmVybm9yYXRlcyBpbiB0aGUgV2VzdCBCYW5rLCB3aXRoIGluZGl2aWR1YWwgc3RyYXRhIGZvciB0aGUgcmVnaW9ucyBkZXNpZ25hdGVkIGFzIEFyZWEgQywgaW4gYWRkaXRpb24gdG8gSDIsIEVhc3QgSmVydXNhbGVtLCBhbmQgcmVmdWdlZSBjYW1wcyBpbiB0aGUgV2VzdCBCYW5rLiBEYXRhIGlzIHN0YXRpc3RpY2FsbHkgcmVwcmVzZW50YXRpdmUgYXQgYSA5NSUgY29uZmlkZW5jZSBsZXZlbCBhbmQgYSArLy0gOSUgbWFyZ2luIG9mIGVycm9yIGZvciBhbGwgc3RyYXRhLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgcmVmdWdlZSBjYW1wcyBpbiB0aGUgV2VzdCBCYW5rLCB3aGljaCBpcyByZXByZXNlbnRhdGl2ZSBhdCBhIDk1JSBjb25maWRlbmNlIGxldmVsIGFuZCBhICsvLSA1JSBtYXJnaW4gb2YgZXJyb3IuIEF0IHRoZSBuYXRpb25hbCBsZXZlbCBhbmQgcmVnaW9uYWwgbGV2ZWwgKGUuZy4gV2VzdCBCYW5rIGFuZCBHYXphIFN0cmlwKSwgZmluZGluZ3Mgd2lsbCBiZSBzdGF0aXN0aWNhbGx5IHJlcHJlc2VudGF0aXZlIGF0IGEgaGlnaGVyIGxldmVsLiANCg0KRm9yIHN1cnZleXMgaW4gdGhlIFdlc3QgQmFuaywgYSB0d28tc3RhZ2UsIHN0cmF0aWZpZWQgY2x1c3RlciBzYW1wbGluZyBhcHByb2FjaCB3YXMgZm9sbG93ZWQsIHRocm91Z2ggd2hpY2ggUkVBQ0ggZmlyc3Qgc2VsZWN0ZWQgbG9jYWxpdGllcyB3aXRoaW4gdGhlIHJlbGV2YW50IHN0cmF0YSwgYmVmb3JlIHJhbmRvbWx5IHNlbGVjdGluZyBob3VzZWhvbGRzIGZyb20gYW4gZXhoYXVzdGl2ZSBsaXN0IG9mIGhvdXNlaG9sZHMgdGhhdCB3YXMgcHJvdmlkZWQgYnkgUENCUy4gSW4gR2F6YSwgYSBvbmUtc3RhZ2UsIHNpbXBsZSByYW5kb20gc2FtcGxpbmcgYXBwcm9hY2ggd2FzIHVzZWQuDQoNCg0KIyBMb2FkIERhdGEgDQoNCmBgYHtyIHdhcm5pbmc9RkFMU0UgLCBlY2hvPUZBTFNFfQ0KbGlicmFyeSgicmVhZHhsIikNCmxpYnJhcnkodGlkeXZlcnNlKQ0KDQpISF9kYXRhIDwtIHJlYWRfZXhjZWwoIlJlYWNoLnhsc3giICwgc2hlZXQgPSA0ICkNCkhIX2RhdGEkYWdlX3Jlc3BvbmRlbnQgPC0gYXMubnVtZXJpYyhISF9kYXRhJGFnZV9yZXNwb25kZW50KQ0KSEhfZGF0YSR0b3RfaW5jb21lIDwtIGFzLm51bWVyaWMoSEhfZGF0YSR0b3RfaW5jb21lKQ0KSEhfZGF0YSR0b3RfZXhwZW5zZXMgPC0gYXMubnVtZXJpYyhISF9kYXRhJHRvdF9leHBlbnNlcykNCkhIX2RhdGEgJT4lIHNlbGVjdChhZ2VfcmVzcG9uZGVudCAsIHRvdF9pbmNvbWUsdG90X2V4cGVuc2VzKSU+JWhlYWQoKQ0KDQoNCmBgYA0KDQoNCg0KDQojIFZhcmlhYmxlIEFuYWx5c2lzDQoNCg0KIyMgUmVzcG9uZGVudCBBZ2UgIA0KDQojIyMgVmlzdWFsaXphdGlvbiANClJlc3BvbmRlbnQgQWdlIGluIGFsbCBzdXJ2ZXlzICANCmBgYHtyIHdhcm5pbmc9RkFMU0UgLCBlY2hvPUZBTFNFfQ0KSEhfZGF0YSAlPiUgZ2dwbG90KGFlcyh4PWFnZV9yZXNwb25kZW50KSkgKw0KICAgIGdlb21faGlzdG9ncmFtKGFlcyh5PS4uZGVuc2l0eS4uKSAsICAgZmlsbD0ibGlnaHRibHVlIikrDQogICBnZW9tX2RlbnNpdHkoKSArDQogICBsYWJzKHRpdGxlID0gIiBSZXNwb25kZW50IEFnZSAiKQ0KYGBgDQoNClJlc3BvbmRlbnQgQWdlIGJhc2VkIG9uIFJlZ2lvbg0KDQoNCmBgYHtyIHdhcm5pbmc9RkFMU0UsZWNobz1GQUxTRX0NCg0KI3JlZ2lvbiBhbmQgYWdlX3Jlc3BvbmRlbnQgICANCkhIX2RhdGEgJT4lIGdncGxvdChhZXMoeD1hZ2VfcmVzcG9uZGVudCkpICsNCiAgZ2VvbV9oaXN0b2dyYW0oZmlsbD0gImxpZ2h0Ymx1ZSIgLCBiaW5zID0gMzApKyANCiAgc2NhbGVfeV9sb2cxMCgpKw0KICBmYWNldF93cmFwKH5yZWdpb24pDQoNCmBgYA0KDQoNCiMjIyBUZXN0cyBvZiBOb3JtYWxpdHkgKFJlc3BvbmRlbnQgQWdlKQ0KIA0KIE51bGwgaHlwb3RoZXNpczogVGhlIGRhdGEgaXMgbm9ybWFsbHkgZGlzdHJpYnV0ZWQuDQpJZiBwPiAwLjA1LCBub3JtYWxpdHkgY2FuIGJlIGFzc3VtZWQuDQoNCmBgYHtyIHdhcm5pbmc9RkFMU0UgLCBlY2hvPUZBTFNFfQ0KbGlicmFyeSgiZ2dwdWJyIikNCg0KIyBEZW5zaXR5IHBsb3QNCmdnZGVuc2l0eShISF9kYXRhJGFnZV9yZXNwb25kZW50LCBmaWxsID0gInN0ZWVsYmx1ZSIpDQojIFFRIHBsb3QNCmdncXFwbG90KEhIX2RhdGEkYWdlX3Jlc3BvbmRlbnQgLCBjb2xvciA9ICAic3RlZWxibHVlIikNCg0KIA0KDQoNCmBgYA0KIA0KIyMjIyBCeSBVc2luZyBLLXMgVGVzdCAoVGVzdHMgb2YgTm9ybWFsaXR5KQ0KDQoNCg0KICTwnZC7XzA6IFJlc3BvbmRlbnRfe0FnZX0gXHNpbSBOb3JtYWwgRGlzdHJpYnV0aW9uJA0KIA0KDQoNCmBgYHtyICB3YXJuaW5nPUZBTFNFICwgZWNobz1GQUxTRX0NCmtzLnRlc3QoSEhfZGF0YSRhZ2VfcmVzcG9uZGVudCwgInBub3JtIiwgbWVhbj1tZWFuKEhIX2RhdGEkYWdlX3Jlc3BvbmRlbnQpLCBzZD1zZChISF9kYXRhJGFnZV9yZXNwb25kZW50KSkNCmBgYA0KdGhlbiBieSBhcHBseWluZyBLLXMgdGVzdCAkSF8wJCByZWplY3RlZCBiZWNhdXNlICRQX3t2YWx1ZX0gPCAuMDUkDQoNCg0KIyMjIyBCeSBVc2luZyBDaGkgc3F1YXJlIHRlc3QgIChUZXN0cyBvZiBOb3JtYWxpdHkpDQoNCiAk8J2Qu18wOiBSZXNwb25kZW50X3tBZ2V9IFxzaW0gTm9ybWFsIERpc3RyaWJ1dGlvbiQNCg0KYGBge3J9DQoNCg0KIG15RnVuY3Rpb24gPC0gZnVuY3Rpb24oeCl7DQogICANCiAgIGRhdGFOYW1lIDwtIGRlcGFyc2Uoc3Vic3RpdHV0ZSh4KSkNCiAgIA0KICAgI3JlbW92ZSBOYSB2YWx1ZXMgIA0KICAgeCA8LSB4W2NvbXBsZXRlLmNhc2VzKHgpXQ0KICAgDQogICAjY2FsY3VsYXRlIGxlbmd0aCBvZiBkYXRhDQogICBuIDwtIGxlbmd0aCh4KQ0KICAgDQogICAjbnVtYmVyIG9mIGNsYXNzIGFsd2F5cyBiZSAxMDAgDQogICAjIGRpdmlkZXMgZGF0YSB0byAxMDAgYmlucyANCiAgIG5DbGFzc2VzID0gMTAwDQogICANCiAgICNjYWxjdWxhdGUgaG93IG1hbnkgbnVtYmVyIG9jY3VyIGluIGVhY2ggY2xhc3MgDQogICBudW0gPC0gZmxvb3IoMSArIG5DbGFzc2VzICogcG5vcm0oeCwgbWVhbih4KSwgc2QoeCkpKQ0KICAgY291bnQgPC0gdGFidWxhdGUobnVtLCBuQ2xhc3NlcykNCiAgIA0KICAgI2NhbGN1bGF0ZSBleHBlY3RlZCBjb3VudCBpbiBlYWNoIGNsYXNzIG11c3QgYmUgKFRvdGFsIE51bWJlciAvIG51bWJlciBvZiBjbGFzc2VzKQ0KICAgcHJvYiA8LSByZXAoMS9uQ2xhc3NlcywgbkNsYXNzZXMpDQogICB4cGVjIDwtIG4gKiBwcm9iDQogICANCiAgIGggPC0gKChjb3VudCAtIHhwZWMpXjIpL3hwZWMNCiAgIFAgPC0gc3VtKGgpDQogICBwdmFsdWUgPC0gcGNoaXNxKFAsIG5DbGFzc2VzIC0gMSwgbG93ZXIudGFpbCA9IEZBTFNFKQ0KICAgDQogICAgcmVzdWx0IDwtIGxpc3QoDQogICAgICBkYXRhLm5hbWUgPSBkYXRhTmFtZSwNCiAgICAgcC52YWx1ZSA9IHB2YWx1ZSwNCiAgICAgbWV0aG9kID0gImNoaS1zcXVhcmUgbm9ybWFsaXR5IHRlc3QiDQogICApDQogICBjbGFzcyhyZXN1bHQpIDwtICJodGVzdCINCiAgIHJlc3VsdA0KIH0NCg0KIG15RnVuY3Rpb24oSEhfZGF0YSRhZ2VfcmVzcG9uZGVudCkNCg0KDQpgYGANCg0KdGhlbiBhZnRlciBhcHBseWluZyBDaGkgc3F1YXJlIHRlc3QgICRIXzAkIHJlamVjdGVkIGJlY2F1c2UgJFBfe3ZhbHVlfSA8IC4wNSQNCg0KIA0KDQoNCg0KIyMgVG90YWwgSW5jb21lICANCg0KIyMjIFZpc3VhbGl6YXRpb24gDQp0b3RfaW5jb21lIGluIGFsbCBzdXJ2ZXlzICANCmBgYHtyIHdhcm5pbmc9RkFMU0UgLCBlY2hvPUZBTFNFfQ0KSEhfZGF0YSAlPiUgZ2dwbG90KGFlcyh4PXRvdF9pbmNvbWUpKSArDQogICAgZ2VvbV9oaXN0b2dyYW0oYWVzKHk9Li5kZW5zaXR5Li4pICwgICBmaWxsPSJsaWdodGJsdWUiKSsNCiAgIGdlb21fZGVuc2l0eSgpICsNCiAgIGxhYnModGl0bGUgPSAiVG90YWwgSW5jb21lIikNCmBgYA0KDQpUb3RhbCBJbmNvbWUgYmFzZWQgb24gUmVnaW9uDQoNCg0KYGBge3Igd2FybmluZz1GQUxTRSxlY2hvPUZBTFNFfQ0KDQojdG90YWwgaW5jb21lIGFuZCByZWdpb24gICANCkhIX2RhdGEgJT4lIGdncGxvdChhZXMoeD10b3RfaW5jb21lKSkgKw0KICBnZW9tX2hpc3RvZ3JhbShmaWxsPSAibGlnaHRibHVlIiAsIGJpbnMgPSAzMCkrIA0KICBzY2FsZV95X2xvZzEwKCkrDQogIGZhY2V0X3dyYXAofnJlZ2lvbikNCg0KYGBgDQoNCg0KIyMjIFRlc3RzIG9mIE5vcm1hbGl0eSAoVG90YWwgSW5jb21lKQ0KIA0KIE51bGwgaHlwb3RoZXNpczogVGhlIGRhdGEgaXMgbm9ybWFsbHkgZGlzdHJpYnV0ZWQuDQpJZiBwPiAwLjA1LCBub3JtYWxpdHkgY2FuIGJlIGFzc3VtZWQuDQoNCmBgYHtyIHdhcm5pbmc9RkFMU0UgLCBlY2hvPUZBTFNFfQ0KbGlicmFyeSgiZ2dwdWJyIikNCg0KIyBEZW5zaXR5IHBsb3QNCmdnZGVuc2l0eShISF9kYXRhJHRvdF9pbmNvbWUsIGZpbGwgPSAic3RlZWxibHVlIikNCiMgUVEgcGxvdA0KZ2dxcXBsb3QoSEhfZGF0YSR0b3RfaW5jb21lICwgY29sb3IgPSAgInN0ZWVsYmx1ZSIpDQoNCiANCg0KDQpgYGANCiANCiMjIyMgQnkgVXNpbmcgSy1zIFRlc3QgKFRlc3RzIG9mIE5vcm1hbGl0eSkNCg0KDQoNCiAk8J2Qu18wOiBUb3RhbEluY29tZSBcc2ltIE5vcm1hbCBEaXN0cmlidXRpb24kDQogDQoNCg0KYGBge3IgIHdhcm5pbmc9RkFMU0UgLCBlY2hvPUZBTFNFfQ0Ka3MudGVzdChISF9kYXRhJHRvdF9pbmNvbWUsICJwbm9ybSIsIG1lYW49bWVhbihuYS5vbWl0KEhIX2RhdGEkdG90X2luY29tZSkpLCBzZD1zZChuYS5vbWl0KEhIX2RhdGEkdG90X2luY29tZSkpKQ0KYGBgDQp0aGVuIGFmZnRlciBhcHBseWluZyBLLXMgdGVzdCAkSF8wJCByZWplY3RlZCBiZWNhdXNlICRQX3t2YWx1ZX0gPCAuMDUkDQoNCg0KIyMjIyBCeSBVc2luZyBDaGkgc3F1YXJlIHRlc3QgIChUZXN0cyBvZiBOb3JtYWxpdHkpDQoNCiAk8J2Qu18wOiBUb3RhbEluY29tZSBcc2ltIE5vcm1hbCBEaXN0cmlidXRpb24kDQoNCmBgYHtyfQ0KDQoNCiANCiBteUZ1bmN0aW9uKEhIX2RhdGEkdG90X2luY29tZSkNCg0KDQpgYGANCg0KIHRoZW4gYWZ0ZXIgYXBwbHlpbmcgQ2hpIHNxdWFyZSB0ZXN0ICAkSF8wJCByZWplY3RlZCBiZWNhdXNlICRQX3t2YWx1ZX0gPCAuMDUkDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyMgVG90YWwgRXhwZW5zZXMgIA0KDQojIyMgVmlzdWFsaXphdGlvbiANCg0KVG90YWwgRXhwZW5zZXMgaW4gYWxsIHN1cnZleXMgIA0KYGBge3Igd2FybmluZz1GQUxTRSAsIGVjaG89RkFMU0V9DQpISF9kYXRhICU+JSBnZ3Bsb3QoYWVzKHg9dG90X2V4cGVuc2VzKSkgKw0KICAgIGdlb21faGlzdG9ncmFtKGFlcyh5PS4uZGVuc2l0eS4uKSAsICAgZmlsbD0ibGlnaHRibHVlIikrDQogICBnZW9tX2RlbnNpdHkoKSArDQogICBsYWJzKHRpdGxlID0gIlRvdGFsIEV4cGVuc2VzIikNCmBgYA0KDQpUb3RhbCBFeHBlbnNlcyBiYXNlZCBvbiBSZWdpb24NCg0KDQpgYGB7ciB3YXJuaW5nPUZBTFNFLGVjaG89RkFMU0V9DQoNCiN0b3RhbCBFeHBlbnNlcyBhbmQgcmVnaW9uICAgDQpISF9kYXRhICU+JSBnZ3Bsb3QoYWVzKHg9dG90X2V4cGVuc2VzKSkgKw0KICBnZW9tX2hpc3RvZ3JhbShmaWxsPSAibGlnaHRibHVlIiAsIGJpbnMgPSAzMCkrIA0KICBzY2FsZV95X2xvZzEwKCkrDQogIGZhY2V0X3dyYXAofnJlZ2lvbikNCg0KYGBgDQoNCg0KIyMjIFRlc3RzIG9mIE5vcm1hbGl0eSAoVG90YWwgRXhwZW5zZXMpDQogDQogTnVsbCBoeXBvdGhlc2lzOiBUaGUgZGF0YSBpcyBub3JtYWxseSBkaXN0cmlidXRlZC4NCklmIHA+IDAuMDUsIG5vcm1hbGl0eSBjYW4gYmUgYXNzdW1lZC4NCg0KYGBge3Igd2FybmluZz1GQUxTRSAsIGVjaG89RkFMU0V9DQpsaWJyYXJ5KCJnZ3B1YnIiKQ0KDQojIERlbnNpdHkgcGxvdA0KZ2dkZW5zaXR5KEhIX2RhdGEkdG90X2V4cGVuc2VzLCBmaWxsID0gInN0ZWVsYmx1ZSIpDQojIFFRIHBsb3QNCmdncXFwbG90KEhIX2RhdGEkdG90X2V4cGVuc2VzICwgY29sb3IgPSAgInN0ZWVsYmx1ZSIpDQoNCiANCg0KDQpgYGANCiANCiMjIyMgQnkgVXNpbmcgSy1zIFRlc3QgKFRlc3RzIG9mIE5vcm1hbGl0eSkNCg0KDQoNCiAk8J2Qu18wOiBUb3RhbEV4cGVuc2VzIFxzaW0gTm9ybWFsIERpc3RyaWJ1dGlvbiQNCiANCg0KDQpgYGB7ciAgd2FybmluZz1GQUxTRSAsIGVjaG89RkFMU0V9DQprcy50ZXN0KEhIX2RhdGEkdG90X2luY29tZSwgInBub3JtIiwgbWVhbj1tZWFuKG5hLm9taXQoSEhfZGF0YSR0b3RfZXhwZW5zZXMpKSwgc2Q9c2QobmEub21pdChISF9kYXRhJHRvdF9leHBlbnNlcykpKQ0KYGBgDQp0aGVuIGFmZnRlciBhcHBseWluZyBLLXMgdGVzdCAkSF8wJCByZWplY3RlZCBiZWNhdXNlICRQX3t2YWx1ZX0gPCAuMDUkDQoNCg0KIyMjIyBCeSBVc2luZyBDaGkgc3F1YXJlIHRlc3QgIChUZXN0cyBvZiBOb3JtYWxpdHkpDQoNCiAk8J2Qu18wOiBUb3RhbEV4cGVuc2VzIFxzaW0gTm9ybWFsIERpc3RyaWJ1dGlvbiQNCg0KYGBge3J9DQoNCg0KIA0KIG15RnVuY3Rpb24oSEhfZGF0YSR0b3RfZXhwZW5zZXMpDQoNCg0KYGBgDQoNCiB0aGVuIGFmdGVyIGFwcGx5aW5nIENoaSBzcXVhcmUgdGVzdCAgJEhfMCQgcmVqZWN0ZWQgYmVjYXVzZSAkUF97dmFsdWV9IDwgLjA1JA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQo=