Back to Templates
ChirpStack logo

ChirpStack

v4

Open-source LoRaWAN Network Server for IoT applications. Complete stack with gateway bridges, REST API, and web interface for managing LoRaWAN devices and gateways.

Deploy on Dokploy

Deploy ChirpStack on Dokploy

  1. Install Dokploy on your server if you haven't already.
  2. In your Dokploy panel, open a project and click Create Service → Template.
  3. Search for ChirpStack and click Create — Dokploy configures domains, environment variables, and volumes for you.

Alternatively, create a Compose service, go to Advanced → Import from Base64, and paste this payload:

base64
ewogICJjb21wb3NlIjogInNlcnZpY2VzOlxuICBjaGlycHN0YWNrOlxuICAgIGltYWdlOiBjaGlycHN0YWNrL2NoaXJwc3RhY2s6NCBcbiAgICBjb21tYW5kOiAtYyAvZXRjL2NoaXJwc3RhY2tcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIHZvbHVtZXM6XG4gICAgICAtIC4uL2ZpbGVzL2NoaXJwc3RhY2s6L2V0Yy9jaGlycHN0YWNrXG4gICAgcG9ydHM6XG4gICAgICAtIDgwODBcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gTVFUVF9CUk9LRVJfSE9TVD1tb3NxdWl0dG9cbiAgICAgIC0gUkVESVNfSE9TVD1yZWRpc1xuICAgICAgLSBQT1NUR1JFU1FMX0hPU1Q9cG9zdGdyZXNcbiAgICBkZXBlbmRzX29uOlxuICAgICAgLSBwb3N0Z3Jlc1xuICAgICAgLSBtb3NxdWl0dG9cbiAgICAgIC0gcmVkaXNcblxuICBjaGlycHN0YWNrLWdhdGV3YXktYnJpZGdlOlxuICAgIGltYWdlOiBjaGlycHN0YWNrL2NoaXJwc3RhY2stZ2F0ZXdheS1icmlkZ2U6NFxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgdm9sdW1lczpcbiAgICAgIC0gLi4vZmlsZXMvY2hpcnBzdGFjay1nYXRld2F5LWJyaWRnZTovZXRjL2NoaXJwc3RhY2stZ2F0ZXdheS1icmlkZ2VcbiAgICBwb3J0czpcbiAgICAgIC0gMTcwMC91ZHBcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gSU5URUdSQVRJT05fX01RVFRfX0VWRU5UX1RPUElDX1RFTVBMQVRFPWV1ODY4L2dhdGV3YXkve3sgLkdhdGV3YXlJRCB9fS9ldmVudC97eyAuRXZlbnRUeXBlIH19XG4gICAgICAtIElOVEVHUkFUSU9OX19NUVRUX19TVEFURV9UT1BJQ19URU1QTEFURT1ldTg2OC9nYXRld2F5L3t7IC5HYXRld2F5SUQgfX0vc3RhdGUve3sgLlN0YXRlVHlwZSB9fVxuICAgICAgLSBJTlRFR1JBVElPTl9fTVFUVF9fQ09NTUFORF9UT1BJQ19URU1QTEFURT1ldTg2OC9nYXRld2F5L3t7IC5HYXRld2F5SUQgfX0vY29tbWFuZC8jXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIC0gbW9zcXVpdHRvXG5cbiAgY2hpcnBzdGFjay1nYXRld2F5LWJyaWRnZS1iYXNpY3N0YXRpb246XG4gICAgaW1hZ2U6IGNoaXJwc3RhY2svY2hpcnBzdGFjay1nYXRld2F5LWJyaWRnZTo0XG4gICAgY29tbWFuZDogLWMgL2V0Yy9jaGlycHN0YWNrLWdhdGV3YXktYnJpZGdlL2NoaXJwc3RhY2stZ2F0ZXdheS1icmlkZ2UtYmFzaWNzdGF0aW9uLWV1ODY4LnRvbWxcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIHZvbHVtZXM6XG4gICAgICAtIC4uL2ZpbGVzL2NoaXJwc3RhY2stZ2F0ZXdheS1icmlkZ2U6L2V0Yy9jaGlycHN0YWNrLWdhdGV3YXktYnJpZGdlXG4gICAgcG9ydHM6XG4gICAgICAtIDMwMDFcbiAgICBkZXBlbmRzX29uOlxuICAgICAgLSBtb3NxdWl0dG9cblxuICBjaGlycHN0YWNrLXJlc3QtYXBpOlxuICAgIGltYWdlOiBjaGlycHN0YWNrL2NoaXJwc3RhY2stcmVzdC1hcGk6NFxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgY29tbWFuZDogLS1zZXJ2ZXIgY2hpcnBzdGFjazo4MDgwIC0tYmluZCAwLjAuMC4wOjgwOTAgLS1pbnNlY3VyZVxuICAgIHBvcnRzOlxuICAgICAgLSA4MDkwXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIC0gY2hpcnBzdGFja1xuXG4gIHBvc3RncmVzOlxuICAgIGltYWdlOiBwb3N0Z3JlczoxNC1hbHBpbmVcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIHZvbHVtZXM6XG4gICAgICAtIHBvc3RncmVzcWxkYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YVxuICAgICAgLSAuLi9maWxlcy9wb3N0Z3Jlc3FsL2luaXRkYjovZG9ja2VyLWVudHJ5cG9pbnQtaW5pdGRiLmRcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gUE9TVEdSRVNfVVNFUj1jaGlycHN0YWNrXG4gICAgICAtIFBPU1RHUkVTX1BBU1NXT1JEPSR7UE9TVEdSRVNfUEFTU1dPUkR9XG4gICAgICAtIFBPU1RHUkVTX0RCPWNoaXJwc3RhY2tcblxuICByZWRpczpcbiAgICBpbWFnZTogcmVkaXM6Ny1hbHBpbmVcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGNvbW1hbmQ6IHJlZGlzLXNlcnZlciAtLXNhdmUgMzAwIDEgLS1zYXZlIDYwIDEwMCAtLWFwcGVuZG9ubHkgbm9cbiAgICB2b2x1bWVzOlxuICAgICAgLSByZWRpc2RhdGE6L2RhdGFcblxuICBtb3NxdWl0dG86XG4gICAgaW1hZ2U6IGVjbGlwc2UtbW9zcXVpdHRvOjJcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIHZvbHVtZXM6XG4gICAgICAtIC4uL2ZpbGVzL21vc3F1aXR0by9jb25maWcvOi9tb3NxdWl0dG8vY29uZmlnL1xuICAgIHBvcnRzOlxuICAgICAgLSAxODgzXG5cbnZvbHVtZXM6XG4gIHBvc3RncmVzcWxkYXRhOlxuICByZWRpc2RhdGE6IiwKICAiY29uZmlnIjogIlt2YXJpYWJsZXNdXG5tYWluX2RvbWFpbiA9IFwiJHtkb21haW59XCJcbmFwaV9zZWNyZXQgPSBcIiR7YmFzZTY0OjMyfVwiXG5wb3N0Z3Jlc19wYXNzd29yZCA9IFwiJHtwYXNzd29yZDozMn1cIlxuXG5bY29uZmlnXVxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwiY2hpcnBzdGFja1wiXG5wb3J0ID0gODA4MFxuaG9zdCA9IFwiJHttYWluX2RvbWFpbn1cIlxucGF0aCA9IFwiL1wiXG5cbltbY29uZmlnLmRvbWFpbnNdXVxuc2VydmljZU5hbWUgPSBcImNoaXJwc3RhY2stcmVzdC1hcGlcIlxucG9ydCA9IDgwOTBcbmhvc3QgPSBcImFwaS0ke21haW5fZG9tYWlufVwiXG5wYXRoID0gXCIvXCJcblxuW2NvbmZpZy5lbnZdXG5QT1NUR1JFU19QQVNTV09SRCA9IFwiJHtwb3N0Z3Jlc19wYXNzd29yZH1cIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuc2VydmljZU5hbWUgPSBcImNoaXJwc3RhY2tcIlxuZmlsZVBhdGggPSBcIi9jaGlycHN0YWNrL2NoaXJwc3RhY2sudG9tbFwiXG5jb250ZW50ID0gXCJcIlwiXG4jIExvZ2dpbmcuXG5bbG9nZ2luZ11cblxuICAjIExvZyBsZXZlbC5cbiAgI1xuICAjIE9wdGlvbnMgYXJlOiB0cmFjZSwgZGVidWcsIGluZm8sIHdhcm4gZXJyb3IuXG4gIGxldmVsPVwiaW5mb1wiXG5cblxuIyBQb3N0Z3JlU1FMIGNvbmZpZ3VyYXRpb24uXG5bcG9zdGdyZXNxbF1cblxuICAjIFBvc3RncmVTUUwgRFNOLlxuICAjXG4gICMgRm9ybWF0IGV4YW1wbGU6IHBvc3RncmVzOi8vPFVTRVJOQU1FPjo8UEFTU1dPUkQ+QDxIT1NUTkFNRT4vPERBVEFCQVNFPj9zc2xtb2RlPTxTU0xNT0RFPi5cbiAgI1xuICAjIFNTTCBtb2RlIG9wdGlvbnM6XG4gICMgICogZGlzYWJsZSAtIERvIG5vdCB1c2UgVExTXG4gICMgICogcHJlZmVyIC0gQXR0ZW1wdCB0byBjb25uZWN0IHdpdGggVExTIGJ1dCBhbGxvdyBzZXNzaW9ucyB3aXRob3V0XG4gICMgICogcmVxdWlyZSAtIFJlcXVpcmUgdGhlIHVzZSBvZiBUTFNcbiAgZHNuPVwicG9zdGdyZXM6Ly9jaGlycHN0YWNrOiR7cG9zdGdyZXNfcGFzc3dvcmR9QHBvc3RncmVzL2NoaXJwc3RhY2s/c3NsbW9kZT1kaXNhYmxlXCJcblxuICAjIE1heCBvcGVuIGNvbm5lY3Rpb25zLlxuICAjXG4gICMgVGhpcyBzZXRzIHRoZSBtYXguIG51bWJlciBvZiBvcGVuIGNvbm5lY3Rpb25zIHRoYXQgYXJlIGFsbG93ZWQgaW4gdGhlXG4gICMgUG9zdGdyZVNRTCBjb25uZWN0aW9uIHBvb2wuXG4gIG1heF9vcGVuX2Nvbm5lY3Rpb25zPTEwXG5cbiAgIyBNaW4gaWRsZSBjb25uZWN0aW9ucy5cbiAgI1xuICAjIFRoaXMgc2V0cyB0aGUgbWluLiBudW1iZXIgb2YgaWRsZSBjb25uZWN0aW9ucyBpbiB0aGUgUG9zdGdyZVNRTCBjb25uZWN0aW9uXG4gICMgcG9vbCAoMCA9IGVxdWFsIHRvIG1heF9vcGVuX2Nvbm5lY3Rpb25zKS5cbiAgbWluX2lkbGVfY29ubmVjdGlvbnM9MFxuXG5cbiMgUmVkaXMgY29uZmlndXJhdGlvbi5cbltyZWRpc11cblxuICAjIFNlcnZlciBhZGRyZXNzIG9yIGFkZHJlc3Nlcy5cbiAgI1xuICAjIFNldCBtdWx0aXBsZSBhZGRyZXNzZXMgd2hlbiBjb25uZWN0aW5nIHRvIGEgY2x1c3Rlci5cbiAgc2VydmVycz1bXG4gICAgXCJyZWRpczovL3JlZGlzL1wiLFxuICBdXG5cbiAgIyBUTFMgZW5hYmxlZC5cbiAgdGxzX2VuYWJsZWQ9ZmFsc2VcblxuICAjIFJlZGlzIENsdXN0ZXIuXG4gICNcbiAgIyBTZXQgdGhpcyB0byB0cnVlIHdoZW4gdGhlIHByb3ZpZGVkIFVSTHMgYXJlIHBvaW50aW5nIHRvIGEgUmVkaXMgQ2x1c3RlclxuICAjIGluc3RhbmNlLlxuICBjbHVzdGVyPWZhbHNlXG5cblxuIyBOZXR3b3JrIHJlbGF0ZWQgY29uZmlndXJhdGlvbi5cbltuZXR3b3JrXVxuXG4gICMgTmV0d29yayBpZGVudGlmaWVyIChOZXRJRCwgMyBieXRlcykgZW5jb2RlZCBhcyBIRVggKGUuZy4gMDEwMjAzKS5cbiAgbmV0X2lkPVwiMDAwMDAwXCJcblxuICAjIEVuYWJsZWQgcmVnaW9ucy5cbiAgI1xuICAjIE11bHRpcGxlIHJlZ2lvbnMgY2FuIGJlIGVuYWJsZWQgc2ltdWx0YW5lb3VzbHkuIEVhY2ggcmVnaW9uIG11c3QgbWF0Y2hcbiAgIyB0aGUgJ25hbWUnIHBhcmFtZXRlciBvZiB0aGUgcmVnaW9uIGNvbmZpZ3VyYXRpb24gaW4gJ1tbcmVnaW9uc11dJy5cbiAgZW5hYmxlZF9yZWdpb25zPVtcbiAgICBcImFzOTIzXCIsXG4gICAgXCJhczkyM18yXCIsXG4gICAgXCJhczkyM18zXCIsXG4gICAgXCJhczkyM180XCIsXG4gICAgXCJhdTkxNV8wXCIsXG4gICAgXCJjbjQ3MF8xMFwiLFxuICAgIFwiY243NzlcIixcbiAgICBcImV1NDMzXCIsXG4gICAgXCJldTg2OFwiLFxuICAgIFwiaW44NjVcIixcbiAgICBcImlzbTI0MDBcIixcbiAgICBcImtyOTIwXCIsXG4gICAgXCJydTg2NFwiLFxuICAgIFwidXM5MTVfMFwiLFxuICAgIFwidXM5MTVfMVwiLFxuICBdXG5cblxuIyBBUEkgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24uXG5bYXBpXVxuXG4gICMgaW50ZXJmYWNlOnBvcnQgdG8gYmluZCB0aGUgQVBJIGludGVyZmFjZSB0by5cbiAgYmluZD1cIjAuMC4wLjA6ODA4MFwiXG5cbiAgIyBTZWNyZXQuXG4gICNcbiAgIyBUaGlzIHNlY3JldCBpcyB1c2VkIGZvciBnZW5lcmF0aW5nIGxvZ2luIGFuZCBBUEkgdG9rZW5zLCBtYWtlIHN1cmUgdGhpc1xuICAjIGlzIG5ldmVyIGV4cG9zZWQuIENoYW5naW5nIHRoaXMgc2VjcmV0IHdpbGwgaW52YWxpZGF0ZSBhbGwgbG9naW4gYW5kIEFQSVxuICAjIHRva2Vucy4gVGhlIGZvbGxvd2luZyBjb21tYW5kIGNhbiBiZSB1c2VkIHRvIGdlbmVyYXRlIGEgcmFuZG9tIHNlY3JldDpcbiAgIyAgIG9wZW5zc2wgcmFuZCAtYmFzZTY0IDMyXG4gIHNlY3JldD1cIiR7YXBpX3NlY3JldH1cIlxuXG5cbltpbnRlZ3JhdGlvbl1cbiAgZW5hYmxlZD1bXCJtcXR0XCJdXG5cbiAgW2ludGVncmF0aW9uLm1xdHRdXG4gICAgc2VydmVyPVwidGNwOi8vbW9zcXVpdHRvOjE4ODMvXCJcbiAgICBqc29uPXRydWVcblwiXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuc2VydmljZU5hbWUgPSBcImNoaXJwc3RhY2tcIlxuZmlsZVBhdGggPSBcIi9jaGlycHN0YWNrL3JlZ2lvbl9hczkyM18yLnRvbWxcIlxuY29udGVudCA9IFwiXCJcIlxuIyBUaGlzIGZpbGUgY29udGFpbnMgYW4gZXhhbXBsZSBBUzkyM18yIGNvbmZpZ3VyYXRpb24uXG5bW3JlZ2lvbnNdXVxuXG4gICMgSUQgaXMgYW4gdXNlci1kZWZpbmVkIGlkZW50aWZpZXIgZm9yIHRoaXMgcmVnaW9uLlxuICBpZD1cImFzOTIzXzJcIlxuXG4gICMgRGVzY3JpcHRpb24gaXMgYSBzaG9ydCBkZXNjcmlwdGlvbiBmb3IgdGhpcyByZWdpb24uXG4gIGRlc2NyaXB0aW9uPVwiQVM5MjMtMlwiXG5cbiAgIyBDb21tb24tbmFtZSByZWZlcnMgdG8gdGhlIGNvbW1vbi1uYW1lIG9mIHRoaXMgcmVnaW9uIGFzIGRlZmluZWQgYnlcbiAgIyB0aGUgTG9SYSBBbGxpYW5jZS5cbiAgY29tbW9uX25hbWU9XCJBUzkyM18yXCJcblxuXG4gICMgR2F0ZXdheSBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5nYXRld2F5XVxuXG4gICAgIyBGb3JjZSBnYXRld2F5cyBhcyBwcml2YXRlLlxuICAgICNcbiAgICAjIElmIGVuYWJsZWQsIGdhdGV3YXlzIGNhbiBvbmx5IGJlIHVzZWQgYnkgZGV2aWNlcyB1bmRlciB0aGUgc2FtZSB0ZW5hbnQuXG4gICAgZm9yY2VfZ3dzX3ByaXZhdGU9ZmFsc2VcblxuXG4gICAgIyBHYXRld2F5IGJhY2tlbmQgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmRdXG5cbiAgICAgICMgVGhlIGVuYWJsZWQgYmFja2VuZCB0eXBlLlxuICAgICAgZW5hYmxlZD1cIm1xdHRcIlxuXG4gICAgICAjIE1RVFQgY29uZmlndXJhdGlvbi5cbiAgICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZC5tcXR0XVxuXG4gICAgICAgICMgVG9waWMgcHJlZml4LlxuICAgICAgICAjXG4gICAgICAgICMgVGhlIHRvcGljIHByZWZpeCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgdGhlIHJlZ2lvbiBvZiB0aGUgZ2F0ZXdheS5cbiAgICAgICAgIyBOb3RlLCB0aGVyZSBpcyBubyBuZWVkIHRvIGFkZCBhIHRyYWlsaW5nICcvJyB0byB0aGUgcHJlZml4LiBUaGUgdHJhaWxpbmdcbiAgICAgICAgIyAnLycgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgcHJlZml4IGlmIGl0IGlzIGNvbmZpZ3VyZWQuXG4gICAgICAgIHRvcGljX3ByZWZpeD1cImFzOTIzXzJcIlxuXG4gICAgICAgICMgTVFUVCBzZXJ2ZXIgKGUuZy4gc2NoZW1lOi8vaG9zdDpwb3J0IHdoZXJlIHNjaGVtZSBpcyB0Y3AsIHNzbCBvciB3cylcbiAgICAgICAgc2VydmVyPVwidGNwOi8vbW9zcXVpdHRvOjE4ODNcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiB1c2VybmFtZSAob3B0aW9uYWwpXG4gICAgICAgIHVzZXJuYW1lPVwiXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gcGFzc3dvcmQgKG9wdGlvbmFsKVxuICAgICAgICBwYXNzd29yZD1cIlwiXG5cbiAgICAgICAgIyBRdWFsaXR5IG9mIHNlcnZpY2UgbGV2ZWxcbiAgICAgICAgI1xuICAgICAgICAjIDA6IGF0IG1vc3Qgb25jZVxuICAgICAgICAjIDE6IGF0IGxlYXN0IG9uY2VcbiAgICAgICAgIyAyOiBleGFjdGx5IG9uY2VcbiAgICAgICAgI1xuICAgICAgICAjIE5vdGU6IGFuIGluY3JlYXNlIG9mIHRoaXMgdmFsdWUgd2lsbCBkZWNyZWFzZSB0aGUgcGVyZm9ybWFuY2UuXG4gICAgICAgICMgRm9yIG1vcmUgaW5mb3JtYXRpb246IGh0dHBzOi8vd3d3LmhpdmVtcS5jb20vYmxvZy9tcXR0LWVzc2VudGlhbHMtcGFydC02LW1xdHQtcXVhbGl0eS1vZi1zZXJ2aWNlLWxldmVsc1xuICAgICAgICBxb3M9MFxuXG4gICAgICAgICMgQ2xlYW4gc2Vzc2lvblxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBcImNsZWFuIHNlc3Npb25cIiBmbGFnIGluIHRoZSBjb25uZWN0IG1lc3NhZ2Ugd2hlbiB0aGlzIGNsaWVudFxuICAgICAgICAjIGNvbm5lY3RzIHRvIGFuIE1RVFQgYnJva2VyLiBCeSBzZXR0aW5nIHRoaXMgZmxhZyB5b3UgYXJlIGluZGljYXRpbmdcbiAgICAgICAgIyB0aGF0IG5vIG1lc3NhZ2VzIHNhdmVkIGJ5IHRoZSBicm9rZXIgZm9yIHRoaXMgY2xpZW50IHNob3VsZCBiZSBkZWxpdmVyZWQuXG4gICAgICAgIGNsZWFuX3Nlc3Npb249ZmFsc2VcblxuICAgICAgICAjIENsaWVudCBJRFxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBjbGllbnQgaWQgdG8gYmUgdXNlZCBieSB0aGlzIGNsaWVudCB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIE1RVFRcbiAgICAgICAgIyBicm9rZXIuIEEgY2xpZW50IGlkIG11c3QgYmUgbm8gbG9uZ2VyIHRoYW4gMjMgY2hhcmFjdGVycy4gSWYgbGVmdCBibGFuayxcbiAgICAgICAgIyBhIHJhbmRvbSBpZCB3aWxsIGJlIGdlbmVyYXRlZCBieSBDaGlycFN0YWNrLlxuICAgICAgICBjbGllbnRfaWQ9XCJcIlxuXG4gICAgICAgICMgS2VlcCBhbGl2ZSBpbnRlcnZhbC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoaXMgZGVmaW5lcyB0aGUgbWF4aW11bSB0aW1lIHRoYXQgdGhhdCBzaG91bGQgcGFzcyB3aXRob3V0IGNvbW11bmljYXRpb25cbiAgICAgICAgIyBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlci5cbiAgICAgICAga2VlcF9hbGl2ZV9pbnRlcnZhbD1cIjMwc1wiXG5cbiAgICAgICAgIyBDQSBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgI1xuICAgICAgICAjIFVzZSB0aGlzIHdoZW4gc2V0dGluZyB1cCBhIHNlY3VyZSBjb25uZWN0aW9uICh3aGVuIHNlcnZlciB1c2VzIHNzbDovLy4uLilcbiAgICAgICAgIyBidXQgdGhlIGNlcnRpZmljYXRlIHVzZWQgYnkgdGhlIHNlcnZlciBpcyBub3QgdHJ1c3RlZCBieSBhbnkgQ0EgY2VydGlmaWNhdGVcbiAgICAgICAgIyBvbiB0aGUgc2VydmVyIChlLmcuIHdoZW4gc2VsZiBnZW5lcmF0ZWQpLlxuICAgICAgICBjYV9jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGtleSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2tleT1cIlwiXG5cblxuICAgICMgR2F0ZXdheSBjaGFubmVsIGNvbmZpZ3VyYXRpb24uXG4gICAgI1xuICAgICMgTm90ZTogdGhpcyBjb25maWd1cmF0aW9uIGlzIG9ubHkgdXNlZCBpbiBjYXNlIHRoZSBnYXRld2F5IGlzIHVzaW5nIHRoZVxuICAgICMgQ2hpcnBTdGFjayBDb25jZW50cmF0b3JkIGRhZW1vbi4gSW4gYW55IG90aGVyIGNhc2UsIHRoaXMgY29uZmlndXJhdGlvbiBcbiAgICAjIGlzIGlnbm9yZWQuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkyMTQwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTIxNjAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuXG4gICMgUmVnaW9uIHNwZWNpZmljIG5ldHdvcmsgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMubmV0d29ya11cbiAgICBcbiAgICAjIEluc3RhbGxhdGlvbiBtYXJnaW4gKGRCKSB1c2VkIGJ5IHRoZSBBRFIgZW5naW5lLlxuICAgICNcbiAgICAjIEEgaGlnaGVyIG51bWJlciBtZWFucyB0aGF0IHRoZSBuZXR3b3JrLXNlcnZlciB3aWxsIGtlZXAgbW9yZSBtYXJnaW4sXG4gICAgIyByZXN1bHRpbmcgaW4gYSBsb3dlciBkYXRhLXJhdGUgYnV0IGRlY3JlYXNpbmcgdGhlIGNoYW5jZSB0aGF0IHRoZVxuICAgICMgZGV2aWNlIGdldHMgZGlzY29ubmVjdGVkIGJlY2F1c2UgaXQgaXMgdW5hYmxlIHRvIHJlYWNoIG9uZSBvZiB0aGVcbiAgICAjIHN1cnJvdW5kZWQgZ2F0ZXdheXMuXG4gICAgaW5zdGFsbGF0aW9uX21hcmdpbj0xMFxuXG4gICAgIyBSWCB3aW5kb3cgKENsYXNzLUEpLlxuICAgICNcbiAgICAjIFNldCB0aGlzIHRvOlxuICAgICMgMDogUlgxIC8gUlgyXG4gICAgIyAxOiBSWDEgb25seVxuICAgICMgMjogUlgyIG9ubHlcbiAgICByeF93aW5kb3c9MFxuXG4gICAgIyBSWDEgZGVsYXkgKDEgLSAxNSBzZWNvbmRzKS5cbiAgICByeDFfZGVsYXk9MVxuXG4gICAgIyBSWDEgZGF0YS1yYXRlIG9mZnNldFxuICAgIHJ4MV9kcl9vZmZzZXQ9MFxuXG4gICAgIyBSWDIgZGF0YS1yYXRlXG4gICAgcngyX2RyPTBcblxuICAgICMgUlgyIGZyZXF1ZW5jeSAoSHopXG4gICAgcngyX2ZyZXF1ZW5jeT05MjE0MDAwMDBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBSWDEgZGF0YS1yYXRlIGxlc3MgdGhhbi5cbiAgICAjXG4gICAgIyBQcmVmZXIgUlgyIG92ZXIgUlgxIGJhc2VkIG9uIHRoZSBSWDEgZGF0YS1yYXRlLiBXaGVuIHRoZSBSWDEgZGF0YS1yYXRlXG4gICAgIyBpcyBzbWFsbGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgdmFsdWUsIHRoZW4gdGhlIE5ldHdvcmsgU2VydmVyIHdpbGxcbiAgICAjIGZpcnN0IHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgZm9yIFJYMiwgZmFpbGluZyB0aGF0IChlLmcuIHRoZSBnYXRld2F5XG4gICAgIyBoYXMgYWxyZWFkeSBhIHBheWxvYWQgc2NoZWR1bGVkIGF0IHRoZSBSWDIgdGltaW5nKSBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9yeDFfZHJfbHQ9MFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIGxpbmsgYnVkZ2V0LlxuICAgICNcbiAgICAjIFdoZW4gdGhlIGxpbmstYnVkZ2V0IGlzIGJldHRlciBmb3IgUlgyIHRoYW4gZm9yIFJYMSwgdGhlIE5ldHdvcmsgU2VydmVyIHdpbGwgZmlyc3RcbiAgICAjIHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgaW4gUlgyLCBmYWlsaW5nIHRoYXQgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fbGlua19idWRnZXQ9ZmFsc2VcblxuICAgICMgRG93bmxpbmsgVFggUG93ZXIgKGRCbSlcbiAgICAjXG4gICAgIyBXaGVuIHNldCB0byAtMSwgdGhlIGRvd25saW5rIFRYIFBvd2VyIGZyb20gdGhlIGNvbmZpZ3VyZWQgYmFuZCB3aWxsXG4gICAgIyBiZSB1c2VkLlxuICAgICNcbiAgICAjIFBsZWFzZSBjb25zdWx0IHRoZSBMb1JhV0FOIFJlZ2lvbmFsIFBhcmFtZXRlcnMgYW5kIGxvY2FsIHJlZ3VsYXRpb25zXG4gICAgIyBmb3IgdmFsaWQgYW5kIGxlZ2FsIG9wdGlvbnMuIE5vdGUgdGhhdCB0aGUgY29uZmlndXJlZCBUWCBQb3dlciBtdXN0IGJlXG4gICAgIyBzdXBwb3J0ZWQgYnkgeW91ciBnYXRld2F5KHMpLlxuICAgIGRvd25saW5rX3R4X3Bvd2VyPS0xXG5cbiAgICAjIEFEUiBpcyBkaXNhYmxlZC5cbiAgICBhZHJfZGlzYWJsZWQ9ZmFsc2VcblxuICAgICMgTWluaW11bSBkYXRhLXJhdGUuXG4gICAgbWluX2RyPTBcblxuICAgICMgTWF4aW11bSBkYXRhLXJhdGUuXG4gICAgbWF4X2RyPTVcblxuXG4gICAgIyBSZWpvaW4tcmVxdWVzdCBjb25maWd1cmF0aW9uIChMb1JhV0FOIDEuMSlcbiAgICBbcmVnaW9ucy5uZXR3b3JrLnJlam9pbl9yZXF1ZXN0XVxuXG4gICAgICAjIFJlcXVlc3QgZGV2aWNlcyB0byBwZXJpb2RpY2FsbHkgc2VuZCByZWpvaW4tcmVxdWVzdHMuXG4gICAgICBlbmFibGVkPWZhbHNlXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X2NvdW50X24gKyA0KVxuICAgICAgIyB1cGxpbmsgbWVzc2FnZXMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgIG1heF9jb3VudF9uPTBcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfdGltZV9uICsgMTApXG4gICAgICAjIHNlY29uZHMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgICNcbiAgICAgICMgMCAgPSByb3VnaGx5IDE3IG1pbnV0ZXNcbiAgICAgICMgMTUgPSBhYm91dCAxIHllYXJcbiAgICAgIG1heF90aW1lX249MFxuICAgIFxuXG4gICAgIyBDbGFzcy1CIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMubmV0d29yay5jbGFzc19iXVxuXG4gICAgICAjIFBpbmctc2xvdCBkYXRhLXJhdGUuIFxuICAgICAgcGluZ19zbG90X2RyPTNcblxuICAgICAgIyBQaW5nLXNsb3QgZnJlcXVlbmN5IChIeilcbiAgICAgICNcbiAgICAgICMgc2V0IHRoaXMgdG8gMCB0byB1c2UgdGhlIGRlZmF1bHQgZnJlcXVlbmN5IHBsYW4gZm9yIHRoZSBjb25maWd1cmVkIHJlZ2lvblxuICAgICAgIyAod2hpY2ggY291bGQgYmUgZnJlcXVlbmN5IGhvcHBpbmcpLlxuICAgICAgcGluZ19zbG90X2ZyZXF1ZW5jeT0wXG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbnNlcnZpY2VOYW1lID0gXCJjaGlycHN0YWNrXCJcbmZpbGVQYXRoID0gXCIvY2hpcnBzdGFjay9yZWdpb25fYXM5MjNfMy50b21sXCJcbmNvbnRlbnQgPSBcIlwiXCJcbiMgVGhpcyBmaWxlIGNvbnRhaW5zIGFuIGV4YW1wbGUgQVM5MjNfMyBjb25maWd1cmF0aW9uLlxuW1tyZWdpb25zXV1cblxuICAjIElEIGlzIGFuIHVzZXItZGVmaW5lZCBpZGVudGlmaWVyIGZvciB0aGlzIHJlZ2lvbi5cbiAgaWQ9XCJhczkyM18zXCJcblxuICAjIERlc2NyaXB0aW9uIGlzIGEgc2hvcnQgZGVzY3JpcHRpb24gZm9yIHRoaXMgcmVnaW9uLlxuICBkZXNjcmlwdGlvbj1cIkFTOTIzLTNcIlxuXG4gICMgQ29tbW9uLW5hbWUgcmVmZXJzIHRvIHRoZSBjb21tb24tbmFtZSBvZiB0aGlzIHJlZ2lvbiBhcyBkZWZpbmVkIGJ5XG4gICMgdGhlIExvUmEgQWxsaWFuY2UuXG4gIGNvbW1vbl9uYW1lPVwiQVM5MjNfM1wiXG5cblxuICAjIEdhdGV3YXkgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMuZ2F0ZXdheV1cblxuICAgICMgRm9yY2UgZ2F0ZXdheXMgYXMgcHJpdmF0ZS5cbiAgICAjXG4gICAgIyBJZiBlbmFibGVkLCBnYXRld2F5cyBjYW4gb25seSBiZSB1c2VkIGJ5IGRldmljZXMgdW5kZXIgdGhlIHNhbWUgdGVuYW50LlxuICAgIGZvcmNlX2d3c19wcml2YXRlPWZhbHNlXG5cblxuICAgICMgR2F0ZXdheSBiYWNrZW5kIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kXVxuXG4gICAgICAjIFRoZSBlbmFibGVkIGJhY2tlbmQgdHlwZS5cbiAgICAgIGVuYWJsZWQ9XCJtcXR0XCJcblxuICAgICAgIyBNUVRUIGNvbmZpZ3VyYXRpb24uXG4gICAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmQubXF0dF1cblxuICAgICAgICAjIFRvcGljIHByZWZpeC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoZSB0b3BpYyBwcmVmaXggY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHRoZSByZWdpb24gb2YgdGhlIGdhdGV3YXkuXG4gICAgICAgICMgTm90ZSwgdGhlcmUgaXMgbm8gbmVlZCB0byBhZGQgYSB0cmFpbGluZyAnLycgdG8gdGhlIHByZWZpeC4gVGhlIHRyYWlsaW5nXG4gICAgICAgICMgJy8nIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIHByZWZpeCBpZiBpdCBpcyBjb25maWd1cmVkLlxuICAgICAgICB0b3BpY19wcmVmaXg9XCJhczkyM18zXCJcblxuICAgICAgICAjIE1RVFQgc2VydmVyIChlLmcuIHNjaGVtZTovL2hvc3Q6cG9ydCB3aGVyZSBzY2hlbWUgaXMgdGNwLCBzc2wgb3Igd3MpXG4gICAgICAgIHNlcnZlcj1cInRjcDovL21vc3F1aXR0bzoxODgzXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gdXNlcm5hbWUgKG9wdGlvbmFsKVxuICAgICAgICB1c2VybmFtZT1cIlwiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHBhc3N3b3JkIChvcHRpb25hbClcbiAgICAgICAgcGFzc3dvcmQ9XCJcIlxuXG4gICAgICAgICMgUXVhbGl0eSBvZiBzZXJ2aWNlIGxldmVsXG4gICAgICAgICNcbiAgICAgICAgIyAwOiBhdCBtb3N0IG9uY2VcbiAgICAgICAgIyAxOiBhdCBsZWFzdCBvbmNlXG4gICAgICAgICMgMjogZXhhY3RseSBvbmNlXG4gICAgICAgICNcbiAgICAgICAgIyBOb3RlOiBhbiBpbmNyZWFzZSBvZiB0aGlzIHZhbHVlIHdpbGwgZGVjcmVhc2UgdGhlIHBlcmZvcm1hbmNlLlxuICAgICAgICAjIEZvciBtb3JlIGluZm9ybWF0aW9uOiBodHRwczovL3d3dy5oaXZlbXEuY29tL2Jsb2cvbXF0dC1lc3NlbnRpYWxzLXBhcnQtNi1tcXR0LXF1YWxpdHktb2Ytc2VydmljZS1sZXZlbHNcbiAgICAgICAgcW9zPTBcblxuICAgICAgICAjIENsZWFuIHNlc3Npb25cbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgXCJjbGVhbiBzZXNzaW9uXCIgZmxhZyBpbiB0aGUgY29ubmVjdCBtZXNzYWdlIHdoZW4gdGhpcyBjbGllbnRcbiAgICAgICAgIyBjb25uZWN0cyB0byBhbiBNUVRUIGJyb2tlci4gQnkgc2V0dGluZyB0aGlzIGZsYWcgeW91IGFyZSBpbmRpY2F0aW5nXG4gICAgICAgICMgdGhhdCBubyBtZXNzYWdlcyBzYXZlZCBieSB0aGUgYnJva2VyIGZvciB0aGlzIGNsaWVudCBzaG91bGQgYmUgZGVsaXZlcmVkLlxuICAgICAgICBjbGVhbl9zZXNzaW9uPWZhbHNlXG5cbiAgICAgICAgIyBDbGllbnQgSURcbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgY2xpZW50IGlkIHRvIGJlIHVzZWQgYnkgdGhpcyBjbGllbnQgd2hlbiBjb25uZWN0aW5nIHRvIHRoZSBNUVRUXG4gICAgICAgICMgYnJva2VyLiBBIGNsaWVudCBpZCBtdXN0IGJlIG5vIGxvbmdlciB0aGFuIDIzIGNoYXJhY3RlcnMuIElmIGxlZnQgYmxhbmssXG4gICAgICAgICMgYSByYW5kb20gaWQgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgQ2hpcnBTdGFjay5cbiAgICAgICAgY2xpZW50X2lkPVwiXCJcblxuICAgICAgICAjIEtlZXAgYWxpdmUgaW50ZXJ2YWwuXG4gICAgICAgICNcbiAgICAgICAgIyBUaGlzIGRlZmluZXMgdGhlIG1heGltdW0gdGltZSB0aGF0IHRoYXQgc2hvdWxkIHBhc3Mgd2l0aG91dCBjb21tdW5pY2F0aW9uXG4gICAgICAgICMgYmV0d2VlbiB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIuXG4gICAgICAgIGtlZXBfYWxpdmVfaW50ZXJ2YWw9XCIzMHNcIlxuXG4gICAgICAgICMgQ0EgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgICNcbiAgICAgICAgIyBVc2UgdGhpcyB3aGVuIHNldHRpbmcgdXAgYSBzZWN1cmUgY29ubmVjdGlvbiAod2hlbiBzZXJ2ZXIgdXNlcyBzc2w6Ly8uLi4pXG4gICAgICAgICMgYnV0IHRoZSBjZXJ0aWZpY2F0ZSB1c2VkIGJ5IHRoZSBzZXJ2ZXIgaXMgbm90IHRydXN0ZWQgYnkgYW55IENBIGNlcnRpZmljYXRlXG4gICAgICAgICMgb24gdGhlIHNlcnZlciAoZS5nLiB3aGVuIHNlbGYgZ2VuZXJhdGVkKS5cbiAgICAgICAgY2FfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBrZXkgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19rZXk9XCJcIlxuXG5cbiAgICAjIEdhdGV3YXkgY2hhbm5lbCBjb25maWd1cmF0aW9uLlxuICAgICNcbiAgICAjIE5vdGU6IHRoaXMgY29uZmlndXJhdGlvbiBpcyBvbmx5IHVzZWQgaW4gY2FzZSB0aGUgZ2F0ZXdheSBpcyB1c2luZyB0aGVcbiAgICAjIENoaXJwU3RhY2sgQ29uY2VudHJhdG9yZCBkYWVtb24uIEluIGFueSBvdGhlciBjYXNlLCB0aGlzIGNvbmZpZ3VyYXRpb24gXG4gICAgIyBpcyBpZ25vcmVkLlxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MTY2MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkxNjgwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cblxuICAjIFJlZ2lvbiBzcGVjaWZpYyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLm5ldHdvcmtdXG4gICAgXG4gICAgIyBJbnN0YWxsYXRpb24gbWFyZ2luIChkQikgdXNlZCBieSB0aGUgQURSIGVuZ2luZS5cbiAgICAjXG4gICAgIyBBIGhpZ2hlciBudW1iZXIgbWVhbnMgdGhhdCB0aGUgbmV0d29yay1zZXJ2ZXIgd2lsbCBrZWVwIG1vcmUgbWFyZ2luLFxuICAgICMgcmVzdWx0aW5nIGluIGEgbG93ZXIgZGF0YS1yYXRlIGJ1dCBkZWNyZWFzaW5nIHRoZSBjaGFuY2UgdGhhdCB0aGVcbiAgICAjIGRldmljZSBnZXRzIGRpc2Nvbm5lY3RlZCBiZWNhdXNlIGl0IGlzIHVuYWJsZSB0byByZWFjaCBvbmUgb2YgdGhlXG4gICAgIyBzdXJyb3VuZGVkIGdhdGV3YXlzLlxuICAgIGluc3RhbGxhdGlvbl9tYXJnaW49MTBcblxuICAgICMgUlggd2luZG93IChDbGFzcy1BKS5cbiAgICAjXG4gICAgIyBTZXQgdGhpcyB0bzpcbiAgICAjIDA6IFJYMSAvIFJYMlxuICAgICMgMTogUlgxIG9ubHlcbiAgICAjIDI6IFJYMiBvbmx5XG4gICAgcnhfd2luZG93PTBcblxuICAgICMgUlgxIGRlbGF5ICgxIC0gMTUgc2Vjb25kcykuXG4gICAgcngxX2RlbGF5PTFcblxuICAgICMgUlgxIGRhdGEtcmF0ZSBvZmZzZXRcbiAgICByeDFfZHJfb2Zmc2V0PTBcblxuICAgICMgUlgyIGRhdGEtcmF0ZVxuICAgIHJ4Ml9kcj0yXG5cbiAgICAjIFJYMiBmcmVxdWVuY3kgKEh6KVxuICAgIHJ4Ml9mcmVxdWVuY3k9OTE2NjAwMDAwXG5cbiAgICAjIFByZWZlciBSWDIgb24gUlgxIGRhdGEtcmF0ZSBsZXNzIHRoYW4uXG4gICAgI1xuICAgICMgUHJlZmVyIFJYMiBvdmVyIFJYMSBiYXNlZCBvbiB0aGUgUlgxIGRhdGEtcmF0ZS4gV2hlbiB0aGUgUlgxIGRhdGEtcmF0ZVxuICAgICMgaXMgc21hbGxlciB0aGFuIHRoZSBjb25maWd1cmVkIHZhbHVlLCB0aGVuIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsXG4gICAgIyBmaXJzdCB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGZvciBSWDIsIGZhaWxpbmcgdGhhdCAoZS5nLiB0aGUgZ2F0ZXdheVxuICAgICMgaGFzIGFscmVhZHkgYSBwYXlsb2FkIHNjaGVkdWxlZCBhdCB0aGUgUlgyIHRpbWluZykgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fcngxX2RyX2x0PTBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBsaW5rIGJ1ZGdldC5cbiAgICAjXG4gICAgIyBXaGVuIHRoZSBsaW5rLWJ1ZGdldCBpcyBiZXR0ZXIgZm9yIFJYMiB0aGFuIGZvciBSWDEsIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsIGZpcnN0XG4gICAgIyB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGluIFJYMiwgZmFpbGluZyB0aGF0IGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX2xpbmtfYnVkZ2V0PWZhbHNlXG5cbiAgICAjIERvd25saW5rIFRYIFBvd2VyIChkQm0pXG4gICAgI1xuICAgICMgV2hlbiBzZXQgdG8gLTEsIHRoZSBkb3dubGluayBUWCBQb3dlciBmcm9tIHRoZSBjb25maWd1cmVkIGJhbmQgd2lsbFxuICAgICMgYmUgdXNlZC5cbiAgICAjXG4gICAgIyBQbGVhc2UgY29uc3VsdCB0aGUgTG9SYVdBTiBSZWdpb25hbCBQYXJhbWV0ZXJzIGFuZCBsb2NhbCByZWd1bGF0aW9uc1xuICAgICMgZm9yIHZhbGlkIGFuZCBsZWdhbCBvcHRpb25zLiBOb3RlIHRoYXQgdGhlIGNvbmZpZ3VyZWQgVFggUG93ZXIgbXVzdCBiZVxuICAgICMgc3VwcG9ydGVkIGJ5IHlvdXIgZ2F0ZXdheShzKS5cbiAgICBkb3dubGlua190eF9wb3dlcj0tMVxuXG4gICAgIyBBRFIgaXMgZGlzYWJsZWQuXG4gICAgYWRyX2Rpc2FibGVkPWZhbHNlXG5cbiAgICAjIE1pbmltdW0gZGF0YS1yYXRlLlxuICAgIG1pbl9kcj0wXG5cbiAgICAjIE1heGltdW0gZGF0YS1yYXRlLlxuICAgIG1heF9kcj01XG5cblxuICAgICMgUmVqb2luLXJlcXVlc3QgY29uZmlndXJhdGlvbiAoTG9SYVdBTiAxLjEpXG4gICAgW3JlZ2lvbnMubmV0d29yay5yZWpvaW5fcmVxdWVzdF1cblxuICAgICAgIyBSZXF1ZXN0IGRldmljZXMgdG8gcGVyaW9kaWNhbGx5IHNlbmQgcmVqb2luLXJlcXVlc3RzLlxuICAgICAgZW5hYmxlZD1mYWxzZVxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF9jb3VudF9uICsgNClcbiAgICAgICMgdXBsaW5rIG1lc3NhZ2VzLiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gMTUuXG4gICAgICBtYXhfY291bnRfbj0wXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X3RpbWVfbiArIDEwKVxuICAgICAgIyBzZWNvbmRzLiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gMTUuXG4gICAgICAjXG4gICAgICAjIDAgID0gcm91Z2hseSAxNyBtaW51dGVzXG4gICAgICAjIDE1ID0gYWJvdXQgMSB5ZWFyXG4gICAgICBtYXhfdGltZV9uPTBcbiAgICBcblxuICAgICMgQ2xhc3MtQiBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLm5ldHdvcmsuY2xhc3NfYl1cblxuICAgICAgIyBQaW5nLXNsb3QgZGF0YS1yYXRlLiBcbiAgICAgIHBpbmdfc2xvdF9kcj0zXG5cbiAgICAgICMgUGluZy1zbG90IGZyZXF1ZW5jeSAoSHopXG4gICAgICAjXG4gICAgICAjIHNldCB0aGlzIHRvIDAgdG8gdXNlIHRoZSBkZWZhdWx0IGZyZXF1ZW5jeSBwbGFuIGZvciB0aGUgY29uZmlndXJlZCByZWdpb25cbiAgICAgICMgKHdoaWNoIGNvdWxkIGJlIGZyZXF1ZW5jeSBob3BwaW5nKS5cbiAgICAgIHBpbmdfc2xvdF9mcmVxdWVuY3k9MFxuXCJcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5zZXJ2aWNlTmFtZSA9IFwiY2hpcnBzdGFja1wiXG5maWxlUGF0aCA9IFwiL2NoaXJwc3RhY2svcmVnaW9uX2FzOTIzXzQudG9tbFwiXG5jb250ZW50ID0gXCJcIlwiXG4jIFRoaXMgZmlsZSBjb250YWlucyBhbiBleGFtcGxlIEFTOTIzXzQgY29uZmlndXJhdGlvbi5cbltbcmVnaW9uc11dXG5cbiAgIyBJRCBpcyBhbiB1c2VyLWRlZmluZWQgaWRlbnRpZmllciBmb3IgdGhpcyByZWdpb24uXG4gIGlkPVwiYXM5MjNfNFwiXG5cbiAgIyBEZXNjcmlwdGlvbiBpcyBhIHNob3J0IGRlc2NyaXB0aW9uIGZvciB0aGlzIHJlZ2lvbi5cbiAgZGVzY3JpcHRpb249XCJBUzkyMy00XCJcblxuICAjIENvbW1vbi1uYW1lIHJlZmVycyB0byB0aGUgY29tbW9uLW5hbWUgb2YgdGhpcyByZWdpb24gYXMgZGVmaW5lZCBieVxuICAjIHRoZSBMb1JhIEFsbGlhbmNlLlxuICBjb21tb25fbmFtZT1cIkFTOTIzXzRcIlxuXG5cbiAgIyBHYXRld2F5IGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLmdhdGV3YXldXG5cbiAgICAjIEZvcmNlIGdhdGV3YXlzIGFzIHByaXZhdGUuXG4gICAgI1xuICAgICMgSWYgZW5hYmxlZCwgZ2F0ZXdheXMgY2FuIG9ubHkgYmUgdXNlZCBieSBkZXZpY2VzIHVuZGVyIHRoZSBzYW1lIHRlbmFudC5cbiAgICBmb3JjZV9nd3NfcHJpdmF0ZT1mYWxzZVxuXG5cbiAgICAjIEdhdGV3YXkgYmFja2VuZCBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZF1cblxuICAgICAgIyBUaGUgZW5hYmxlZCBiYWNrZW5kIHR5cGUuXG4gICAgICBlbmFibGVkPVwibXF0dFwiXG5cbiAgICAgICMgTVFUVCBjb25maWd1cmF0aW9uLlxuICAgICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kLm1xdHRdXG5cbiAgICAgICAgIyBUb3BpYyBwcmVmaXguXG4gICAgICAgICNcbiAgICAgICAgIyBUaGUgdG9waWMgcHJlZml4IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB0aGUgcmVnaW9uIG9mIHRoZSBnYXRld2F5LlxuICAgICAgICAjIE5vdGUsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYWRkIGEgdHJhaWxpbmcgJy8nIHRvIHRoZSBwcmVmaXguIFRoZSB0cmFpbGluZ1xuICAgICAgICAjICcvJyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBwcmVmaXggaWYgaXQgaXMgY29uZmlndXJlZC5cbiAgICAgICAgdG9waWNfcHJlZml4PVwiYXM5MjNfNFwiXG5cbiAgICAgICAgIyBNUVRUIHNlcnZlciAoZS5nLiBzY2hlbWU6Ly9ob3N0OnBvcnQgd2hlcmUgc2NoZW1lIGlzIHRjcCwgc3NsIG9yIHdzKVxuICAgICAgICBzZXJ2ZXI9XCJ0Y3A6Ly9tb3NxdWl0dG86MTg4M1wiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHVzZXJuYW1lIChvcHRpb25hbClcbiAgICAgICAgdXNlcm5hbWU9XCJcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiBwYXNzd29yZCAob3B0aW9uYWwpXG4gICAgICAgIHBhc3N3b3JkPVwiXCJcblxuICAgICAgICAjIFF1YWxpdHkgb2Ygc2VydmljZSBsZXZlbFxuICAgICAgICAjXG4gICAgICAgICMgMDogYXQgbW9zdCBvbmNlXG4gICAgICAgICMgMTogYXQgbGVhc3Qgb25jZVxuICAgICAgICAjIDI6IGV4YWN0bHkgb25jZVxuICAgICAgICAjXG4gICAgICAgICMgTm90ZTogYW4gaW5jcmVhc2Ugb2YgdGhpcyB2YWx1ZSB3aWxsIGRlY3JlYXNlIHRoZSBwZXJmb3JtYW5jZS5cbiAgICAgICAgIyBGb3IgbW9yZSBpbmZvcm1hdGlvbjogaHR0cHM6Ly93d3cuaGl2ZW1xLmNvbS9ibG9nL21xdHQtZXNzZW50aWFscy1wYXJ0LTYtbXF0dC1xdWFsaXR5LW9mLXNlcnZpY2UtbGV2ZWxzXG4gICAgICAgIHFvcz0wXG5cbiAgICAgICAgIyBDbGVhbiBzZXNzaW9uXG4gICAgICAgICNcbiAgICAgICAgIyBTZXQgdGhlIFwiY2xlYW4gc2Vzc2lvblwiIGZsYWcgaW4gdGhlIGNvbm5lY3QgbWVzc2FnZSB3aGVuIHRoaXMgY2xpZW50XG4gICAgICAgICMgY29ubmVjdHMgdG8gYW4gTVFUVCBicm9rZXIuIEJ5IHNldHRpbmcgdGhpcyBmbGFnIHlvdSBhcmUgaW5kaWNhdGluZ1xuICAgICAgICAjIHRoYXQgbm8gbWVzc2FnZXMgc2F2ZWQgYnkgdGhlIGJyb2tlciBmb3IgdGhpcyBjbGllbnQgc2hvdWxkIGJlIGRlbGl2ZXJlZC5cbiAgICAgICAgY2xlYW5fc2Vzc2lvbj1mYWxzZVxuXG4gICAgICAgICMgQ2xpZW50IElEXG4gICAgICAgICNcbiAgICAgICAgIyBTZXQgdGhlIGNsaWVudCBpZCB0byBiZSB1c2VkIGJ5IHRoaXMgY2xpZW50IHdoZW4gY29ubmVjdGluZyB0byB0aGUgTVFUVFxuICAgICAgICAjIGJyb2tlci4gQSBjbGllbnQgaWQgbXVzdCBiZSBubyBsb25nZXIgdGhhbiAyMyBjaGFyYWN0ZXJzLiBJZiBsZWZ0IGJsYW5rLFxuICAgICAgICAjIGEgcmFuZG9tIGlkIHdpbGwgYmUgZ2VuZXJhdGVkIGJ5IENoaXJwU3RhY2suXG4gICAgICAgIGNsaWVudF9pZD1cIlwiXG5cbiAgICAgICAgIyBLZWVwIGFsaXZlIGludGVydmFsLlxuICAgICAgICAjXG4gICAgICAgICMgVGhpcyBkZWZpbmVzIHRoZSBtYXhpbXVtIHRpbWUgdGhhdCB0aGF0IHNob3VsZCBwYXNzIHdpdGhvdXQgY29tbXVuaWNhdGlvblxuICAgICAgICAjIGJldHdlZW4gdGhlIGNsaWVudCBhbmQgc2VydmVyLlxuICAgICAgICBrZWVwX2FsaXZlX2ludGVydmFsPVwiMzBzXCJcblxuICAgICAgICAjIENBIGNlcnRpZmljYXRlIGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICAjXG4gICAgICAgICMgVXNlIHRoaXMgd2hlbiBzZXR0aW5nIHVwIGEgc2VjdXJlIGNvbm5lY3Rpb24gKHdoZW4gc2VydmVyIHVzZXMgc3NsOi8vLi4uKVxuICAgICAgICAjIGJ1dCB0aGUgY2VydGlmaWNhdGUgdXNlZCBieSB0aGUgc2VydmVyIGlzIG5vdCB0cnVzdGVkIGJ5IGFueSBDQSBjZXJ0aWZpY2F0ZVxuICAgICAgICAjIG9uIHRoZSBzZXJ2ZXIgKGUuZy4gd2hlbiBzZWxmIGdlbmVyYXRlZCkuXG4gICAgICAgIGNhX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGNlcnRpZmljYXRlIGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICB0bHNfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMga2V5IGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICB0bHNfa2V5PVwiXCJcblxuXG4gICAgIyBHYXRld2F5IGNoYW5uZWwgY29uZmlndXJhdGlvbi5cbiAgICAjXG4gICAgIyBOb3RlOiB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgb25seSB1c2VkIGluIGNhc2UgdGhlIGdhdGV3YXkgaXMgdXNpbmcgdGhlXG4gICAgIyBDaGlycFN0YWNrIENvbmNlbnRyYXRvcmQgZGFlbW9uLiBJbiBhbnkgb3RoZXIgY2FzZSwgdGhpcyBjb25maWd1cmF0aW9uIFxuICAgICMgaXMgaWdub3JlZC5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTE3MzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MTc1MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG5cbiAgIyBSZWdpb24gc3BlY2lmaWMgbmV0d29yayBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5uZXR3b3JrXVxuICAgIFxuICAgICMgSW5zdGFsbGF0aW9uIG1hcmdpbiAoZEIpIHVzZWQgYnkgdGhlIEFEUiBlbmdpbmUuXG4gICAgI1xuICAgICMgQSBoaWdoZXIgbnVtYmVyIG1lYW5zIHRoYXQgdGhlIG5ldHdvcmstc2VydmVyIHdpbGwga2VlcCBtb3JlIG1hcmdpbixcbiAgICAjIHJlc3VsdGluZyBpbiBhIGxvd2VyIGRhdGEtcmF0ZSBidXQgZGVjcmVhc2luZyB0aGUgY2hhbmNlIHRoYXQgdGhlXG4gICAgIyBkZXZpY2UgZ2V0cyBkaXNjb25uZWN0ZWQgYmVjYXVzZSBpdCBpcyB1bmFibGUgdG8gcmVhY2ggb25lIG9mIHRoZVxuICAgICMgc3Vycm91bmRlZCBnYXRld2F5cy5cbiAgICBpbnN0YWxsYXRpb25fbWFyZ2luPTEwXG5cbiAgICAjIFJYIHdpbmRvdyAoQ2xhc3MtQSkuXG4gICAgI1xuICAgICMgU2V0IHRoaXMgdG86XG4gICAgIyAwOiBSWDEgLyBSWDJcbiAgICAjIDE6IFJYMSBvbmx5XG4gICAgIyAyOiBSWDIgb25seVxuICAgIHJ4X3dpbmRvdz0wXG5cbiAgICAjIFJYMSBkZWxheSAoMSAtIDE1IHNlY29uZHMpLlxuICAgIHJ4MV9kZWxheT0xXG5cbiAgICAjIFJYMSBkYXRhLXJhdGUgb2Zmc2V0XG4gICAgcngxX2RyX29mZnNldD0wXG5cbiAgICAjIFJYMiBkYXRhLXJhdGVcbiAgICByeDJfZHI9MlxuXG4gICAgIyBSWDIgZnJlcXVlbmN5IChIeilcbiAgICByeDJfZnJlcXVlbmN5PTkxNzMwMDAwMFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIFJYMSBkYXRhLXJhdGUgbGVzcyB0aGFuLlxuICAgICNcbiAgICAjIFByZWZlciBSWDIgb3ZlciBSWDEgYmFzZWQgb24gdGhlIFJYMSBkYXRhLXJhdGUuIFdoZW4gdGhlIFJYMSBkYXRhLXJhdGVcbiAgICAjIGlzIHNtYWxsZXIgdGhhbiB0aGUgY29uZmlndXJlZCB2YWx1ZSwgdGhlbiB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbFxuICAgICMgZmlyc3QgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBmb3IgUlgyLCBmYWlsaW5nIHRoYXQgKGUuZy4gdGhlIGdhdGV3YXlcbiAgICAjIGhhcyBhbHJlYWR5IGEgcGF5bG9hZCBzY2hlZHVsZWQgYXQgdGhlIFJYMiB0aW1pbmcpIGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX3J4MV9kcl9sdD0wXG5cbiAgICAjIFByZWZlciBSWDIgb24gbGluayBidWRnZXQuXG4gICAgI1xuICAgICMgV2hlbiB0aGUgbGluay1idWRnZXQgaXMgYmV0dGVyIGZvciBSWDIgdGhhbiBmb3IgUlgxLCB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbCBmaXJzdFxuICAgICMgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBpbiBSWDIsIGZhaWxpbmcgdGhhdCBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9saW5rX2J1ZGdldD1mYWxzZVxuXG4gICAgIyBEb3dubGluayBUWCBQb3dlciAoZEJtKVxuICAgICNcbiAgICAjIFdoZW4gc2V0IHRvIC0xLCB0aGUgZG93bmxpbmsgVFggUG93ZXIgZnJvbSB0aGUgY29uZmlndXJlZCBiYW5kIHdpbGxcbiAgICAjIGJlIHVzZWQuXG4gICAgI1xuICAgICMgUGxlYXNlIGNvbnN1bHQgdGhlIExvUmFXQU4gUmVnaW9uYWwgUGFyYW1ldGVycyBhbmQgbG9jYWwgcmVndWxhdGlvbnNcbiAgICAjIGZvciB2YWxpZCBhbmQgbGVnYWwgb3B0aW9ucy4gTm90ZSB0aGF0IHRoZSBjb25maWd1cmVkIFRYIFBvd2VyIG11c3QgYmVcbiAgICAjIHN1cHBvcnRlZCBieSB5b3VyIGdhdGV3YXkocykuXG4gICAgZG93bmxpbmtfdHhfcG93ZXI9LTFcblxuICAgICMgQURSIGlzIGRpc2FibGVkLlxuICAgIGFkcl9kaXNhYmxlZD1mYWxzZVxuXG4gICAgIyBNaW5pbXVtIGRhdGEtcmF0ZS5cbiAgICBtaW5fZHI9MFxuXG4gICAgIyBNYXhpbXVtIGRhdGEtcmF0ZS5cbiAgICBtYXhfZHI9NVxuXG5cbiAgICAjIFJlam9pbi1yZXF1ZXN0IGNvbmZpZ3VyYXRpb24gKExvUmFXQU4gMS4xKVxuICAgIFtyZWdpb25zLm5ldHdvcmsucmVqb2luX3JlcXVlc3RdXG5cbiAgICAgICMgUmVxdWVzdCBkZXZpY2VzIHRvIHBlcmlvZGljYWxseSBzZW5kIHJlam9pbi1yZXF1ZXN0cy5cbiAgICAgIGVuYWJsZWQ9ZmFsc2VcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfY291bnRfbiArIDQpXG4gICAgICAjIHVwbGluayBtZXNzYWdlcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgbWF4X2NvdW50X249MFxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF90aW1lX24gKyAxMClcbiAgICAgICMgc2Vjb25kcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgI1xuICAgICAgIyAwICA9IHJvdWdobHkgMTcgbWludXRlc1xuICAgICAgIyAxNSA9IGFib3V0IDEgeWVhclxuICAgICAgbWF4X3RpbWVfbj0wXG4gICAgXG5cbiAgICAjIENsYXNzLUIgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5uZXR3b3JrLmNsYXNzX2JdXG5cbiAgICAgICMgUGluZy1zbG90IGRhdGEtcmF0ZS4gXG4gICAgICBwaW5nX3Nsb3RfZHI9M1xuXG4gICAgICAjIFBpbmctc2xvdCBmcmVxdWVuY3kgKEh6KVxuICAgICAgI1xuICAgICAgIyBzZXQgdGhpcyB0byAwIHRvIHVzZSB0aGUgZGVmYXVsdCBmcmVxdWVuY3kgcGxhbiBmb3IgdGhlIGNvbmZpZ3VyZWQgcmVnaW9uXG4gICAgICAjICh3aGljaCBjb3VsZCBiZSBmcmVxdWVuY3kgaG9wcGluZykuXG4gICAgICBwaW5nX3Nsb3RfZnJlcXVlbmN5PTBcblwiXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuc2VydmljZU5hbWUgPSBcImNoaXJwc3RhY2tcIlxuZmlsZVBhdGggPSBcIi9jaGlycHN0YWNrL3JlZ2lvbl9hczkyMy50b21sXCJcbmNvbnRlbnQgPSBcIlwiXCJcbiMgVGhpcyBmaWxlIGNvbnRhaW5zIGFuIGV4YW1wbGUgQVM5MjMgY29uZmlndXJhdGlvbi5cbltbcmVnaW9uc11dXG5cbiAgIyBJRCBpcyBhbiB1c2VyLWRlZmluZWQgaWRlbnRpZmllciBmb3IgdGhpcyByZWdpb24uXG4gIGlkPVwiYXM5MjNcIlxuXG4gICMgRGVzY3JpcHRpb24gaXMgYSBzaG9ydCBkZXNjcmlwdGlvbiBmb3IgdGhpcyByZWdpb24uXG4gIGRlc2NyaXB0aW9uPVwiQVM5MjNcIlxuXG4gICMgQ29tbW9uLW5hbWUgcmVmZXJzIHRvIHRoZSBjb21tb24tbmFtZSBvZiB0aGlzIHJlZ2lvbiBhcyBkZWZpbmVkIGJ5XG4gICMgdGhlIExvUmEgQWxsaWFuY2UuXG4gIGNvbW1vbl9uYW1lPVwiQVM5MjNcIlxuXG5cbiAgIyBHYXRld2F5IGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLmdhdGV3YXldXG5cbiAgICAjIEZvcmNlIGdhdGV3YXlzIGFzIHByaXZhdGUuXG4gICAgI1xuICAgICMgSWYgZW5hYmxlZCwgZ2F0ZXdheXMgY2FuIG9ubHkgYmUgdXNlZCBieSBkZXZpY2VzIHVuZGVyIHRoZSBzYW1lIHRlbmFudC5cbiAgICBmb3JjZV9nd3NfcHJpdmF0ZT1mYWxzZVxuXG5cbiAgICAjIEdhdGV3YXkgYmFja2VuZCBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZF1cblxuICAgICAgIyBUaGUgZW5hYmxlZCBiYWNrZW5kIHR5cGUuXG4gICAgICBlbmFibGVkPVwibXF0dFwiXG5cbiAgICAgICMgTVFUVCBjb25maWd1cmF0aW9uLlxuICAgICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kLm1xdHRdXG5cbiAgICAgICAgIyBUb3BpYyBwcmVmaXguXG4gICAgICAgICNcbiAgICAgICAgIyBUaGUgdG9waWMgcHJlZml4IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB0aGUgcmVnaW9uIG9mIHRoZSBnYXRld2F5LlxuICAgICAgICAjIE5vdGUsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYWRkIGEgdHJhaWxpbmcgJy8nIHRvIHRoZSBwcmVmaXguIFRoZSB0cmFpbGluZ1xuICAgICAgICAjICcvJyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBwcmVmaXggaWYgaXQgaXMgY29uZmlndXJlZC5cbiAgICAgICAgdG9waWNfcHJlZml4PVwiYXM5MjNcIlxuXG4gICAgICAgICMgTVFUVCBzZXJ2ZXIgKGUuZy4gc2NoZW1lOi8vaG9zdDpwb3J0IHdoZXJlIHNjaGVtZSBpcyB0Y3AsIHNzbCBvciB3cylcbiAgICAgICAgc2VydmVyPVwidGNwOi8vbW9zcXVpdHRvOjE4ODNcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiB1c2VybmFtZSAob3B0aW9uYWwpXG4gICAgICAgIHVzZXJuYW1lPVwiXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gcGFzc3dvcmQgKG9wdGlvbmFsKVxuICAgICAgICBwYXNzd29yZD1cIlwiXG5cbiAgICAgICAgIyBRdWFsaXR5IG9mIHNlcnZpY2UgbGV2ZWxcbiAgICAgICAgI1xuICAgICAgICAjIDA6IGF0IG1vc3Qgb25jZVxuICAgICAgICAjIDE6IGF0IGxlYXN0IG9uY2VcbiAgICAgICAgIyAyOiBleGFjdGx5IG9uY2VcbiAgICAgICAgI1xuICAgICAgICAjIE5vdGU6IGFuIGluY3JlYXNlIG9mIHRoaXMgdmFsdWUgd2lsbCBkZWNyZWFzZSB0aGUgcGVyZm9ybWFuY2UuXG4gICAgICAgICMgRm9yIG1vcmUgaW5mb3JtYXRpb246IGh0dHBzOi8vd3d3LmhpdmVtcS5jb20vYmxvZy9tcXR0LWVzc2VudGlhbHMtcGFydC02LW1xdHQtcXVhbGl0eS1vZi1zZXJ2aWNlLWxldmVsc1xuICAgICAgICBxb3M9MFxuXG4gICAgICAgICMgQ2xlYW4gc2Vzc2lvblxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBcImNsZWFuIHNlc3Npb25cIiBmbGFnIGluIHRoZSBjb25uZWN0IG1lc3NhZ2Ugd2hlbiB0aGlzIGNsaWVudFxuICAgICAgICAjIGNvbm5lY3RzIHRvIGFuIE1RVFQgYnJva2VyLiBCeSBzZXR0aW5nIHRoaXMgZmxhZyB5b3UgYXJlIGluZGljYXRpbmdcbiAgICAgICAgIyB0aGF0IG5vIG1lc3NhZ2VzIHNhdmVkIGJ5IHRoZSBicm9rZXIgZm9yIHRoaXMgY2xpZW50IHNob3VsZCBiZSBkZWxpdmVyZWQuXG4gICAgICAgIGNsZWFuX3Nlc3Npb249ZmFsc2VcblxuICAgICAgICAjIENsaWVudCBJRFxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBjbGllbnQgaWQgdG8gYmUgdXNlZCBieSB0aGlzIGNsaWVudCB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIE1RVFRcbiAgICAgICAgIyBicm9rZXIuIEEgY2xpZW50IGlkIG11c3QgYmUgbm8gbG9uZ2VyIHRoYW4gMjMgY2hhcmFjdGVycy4gSWYgbGVmdCBibGFuayxcbiAgICAgICAgIyBhIHJhbmRvbSBpZCB3aWxsIGJlIGdlbmVyYXRlZCBieSBDaGlycFN0YWNrLlxuICAgICAgICBjbGllbnRfaWQ9XCJcIlxuXG4gICAgICAgICMgS2VlcCBhbGl2ZSBpbnRlcnZhbC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoaXMgZGVmaW5lcyB0aGUgbWF4aW11bSB0aW1lIHRoYXQgdGhhdCBzaG91bGQgcGFzcyB3aXRob3V0IGNvbW11bmljYXRpb25cbiAgICAgICAgIyBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlci5cbiAgICAgICAga2VlcF9hbGl2ZV9pbnRlcnZhbD1cIjMwc1wiXG5cbiAgICAgICAgIyBDQSBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgI1xuICAgICAgICAjIFVzZSB0aGlzIHdoZW4gc2V0dGluZyB1cCBhIHNlY3VyZSBjb25uZWN0aW9uICh3aGVuIHNlcnZlciB1c2VzIHNzbDovLy4uLilcbiAgICAgICAgIyBidXQgdGhlIGNlcnRpZmljYXRlIHVzZWQgYnkgdGhlIHNlcnZlciBpcyBub3QgdHJ1c3RlZCBieSBhbnkgQ0EgY2VydGlmaWNhdGVcbiAgICAgICAgIyBvbiB0aGUgc2VydmVyIChlLmcuIHdoZW4gc2VsZiBnZW5lcmF0ZWQpLlxuICAgICAgICBjYV9jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGtleSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2tleT1cIlwiXG5cblxuICAgICMgR2F0ZXdheSBjaGFubmVsIGNvbmZpZ3VyYXRpb24uXG4gICAgI1xuICAgICMgTm90ZTogdGhpcyBjb25maWd1cmF0aW9uIGlzIG9ubHkgdXNlZCBpbiBjYXNlIHRoZSBnYXRld2F5IGlzIHVzaW5nIHRoZVxuICAgICMgQ2hpcnBTdGFjayBDb25jZW50cmF0b3JkIGRhZW1vbi4gSW4gYW55IG90aGVyIGNhc2UsIHRoaXMgY29uZmlndXJhdGlvbiBcbiAgICAjIGlzIGlnbm9yZWQuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkyMzIwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTIzNDAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuXG4gICMgUmVnaW9uIHNwZWNpZmljIG5ldHdvcmsgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMubmV0d29ya11cbiAgICBcbiAgICAjIEluc3RhbGxhdGlvbiBtYXJnaW4gKGRCKSB1c2VkIGJ5IHRoZSBBRFIgZW5naW5lLlxuICAgICNcbiAgICAjIEEgaGlnaGVyIG51bWJlciBtZWFucyB0aGF0IHRoZSBuZXR3b3JrLXNlcnZlciB3aWxsIGtlZXAgbW9yZSBtYXJnaW4sXG4gICAgIyByZXN1bHRpbmcgaW4gYSBsb3dlciBkYXRhLXJhdGUgYnV0IGRlY3JlYXNpbmcgdGhlIGNoYW5jZSB0aGF0IHRoZVxuICAgICMgZGV2aWNlIGdldHMgZGlzY29ubmVjdGVkIGJlY2F1c2UgaXQgaXMgdW5hYmxlIHRvIHJlYWNoIG9uZSBvZiB0aGVcbiAgICAjIHN1cnJvdW5kZWQgZ2F0ZXdheXMuXG4gICAgaW5zdGFsbGF0aW9uX21hcmdpbj0xMFxuXG4gICAgIyBSWCB3aW5kb3cgKENsYXNzLUEpLlxuICAgICNcbiAgICAjIFNldCB0aGlzIHRvOlxuICAgICMgMDogUlgxIC8gUlgyXG4gICAgIyAxOiBSWDEgb25seVxuICAgICMgMjogUlgyIG9ubHlcbiAgICByeF93aW5kb3c9MFxuXG4gICAgIyBSWDEgZGVsYXkgKDEgLSAxNSBzZWNvbmRzKS5cbiAgICByeDFfZGVsYXk9MVxuXG4gICAgIyBSWDEgZGF0YS1yYXRlIG9mZnNldFxuICAgIHJ4MV9kcl9vZmZzZXQ9MFxuXG4gICAgIyBSWDIgZGF0YS1yYXRlXG4gICAgcngyX2RyPTJcblxuICAgICMgUlgyIGZyZXF1ZW5jeSAoSHopXG4gICAgcngyX2ZyZXF1ZW5jeT05MjMyMDAwMDBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBSWDEgZGF0YS1yYXRlIGxlc3MgdGhhbi5cbiAgICAjXG4gICAgIyBQcmVmZXIgUlgyIG92ZXIgUlgxIGJhc2VkIG9uIHRoZSBSWDEgZGF0YS1yYXRlLiBXaGVuIHRoZSBSWDEgZGF0YS1yYXRlXG4gICAgIyBpcyBzbWFsbGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgdmFsdWUsIHRoZW4gdGhlIE5ldHdvcmsgU2VydmVyIHdpbGxcbiAgICAjIGZpcnN0IHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgZm9yIFJYMiwgZmFpbGluZyB0aGF0IChlLmcuIHRoZSBnYXRld2F5XG4gICAgIyBoYXMgYWxyZWFkeSBhIHBheWxvYWQgc2NoZWR1bGVkIGF0IHRoZSBSWDIgdGltaW5nKSBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9yeDFfZHJfbHQ9MFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIGxpbmsgYnVkZ2V0LlxuICAgICNcbiAgICAjIFdoZW4gdGhlIGxpbmstYnVkZ2V0IGlzIGJldHRlciBmb3IgUlgyIHRoYW4gZm9yIFJYMSwgdGhlIE5ldHdvcmsgU2VydmVyIHdpbGwgZmlyc3RcbiAgICAjIHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgaW4gUlgyLCBmYWlsaW5nIHRoYXQgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fbGlua19idWRnZXQ9ZmFsc2VcblxuICAgICMgRG93bmxpbmsgVFggUG93ZXIgKGRCbSlcbiAgICAjXG4gICAgIyBXaGVuIHNldCB0byAtMSwgdGhlIGRvd25saW5rIFRYIFBvd2VyIGZyb20gdGhlIGNvbmZpZ3VyZWQgYmFuZCB3aWxsXG4gICAgIyBiZSB1c2VkLlxuICAgICNcbiAgICAjIFBsZWFzZSBjb25zdWx0IHRoZSBMb1JhV0FOIFJlZ2lvbmFsIFBhcmFtZXRlcnMgYW5kIGxvY2FsIHJlZ3VsYXRpb25zXG4gICAgIyBmb3IgdmFsaWQgYW5kIGxlZ2FsIG9wdGlvbnMuIE5vdGUgdGhhdCB0aGUgY29uZmlndXJlZCBUWCBQb3dlciBtdXN0IGJlXG4gICAgIyBzdXBwb3J0ZWQgYnkgeW91ciBnYXRld2F5KHMpLlxuICAgIGRvd25saW5rX3R4X3Bvd2VyPS0xXG5cbiAgICAjIEFEUiBpcyBkaXNhYmxlZC5cbiAgICBhZHJfZGlzYWJsZWQ9ZmFsc2VcblxuICAgICMgTWluaW11bSBkYXRhLXJhdGUuXG4gICAgbWluX2RyPTBcblxuICAgICMgTWF4aW11bSBkYXRhLXJhdGUuXG4gICAgbWF4X2RyPTVcblxuXG4gICAgIyBSZWpvaW4tcmVxdWVzdCBjb25maWd1cmF0aW9uIChMb1JhV0FOIDEuMSlcbiAgICBbcmVnaW9ucy5uZXR3b3JrLnJlam9pbl9yZXF1ZXN0XVxuXG4gICAgICAjIFJlcXVlc3QgZGV2aWNlcyB0byBwZXJpb2RpY2FsbHkgc2VuZCByZWpvaW4tcmVxdWVzdHMuXG4gICAgICBlbmFibGVkPWZhbHNlXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X2NvdW50X24gKyA0KVxuICAgICAgIyB1cGxpbmsgbWVzc2FnZXMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgIG1heF9jb3VudF9uPTBcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfdGltZV9uICsgMTApXG4gICAgICAjIHNlY29uZHMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgICNcbiAgICAgICMgMCAgPSByb3VnaGx5IDE3IG1pbnV0ZXNcbiAgICAgICMgMTUgPSBhYm91dCAxIHllYXJcbiAgICAgIG1heF90aW1lX249MFxuICAgIFxuXG4gICAgIyBDbGFzcy1CIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMubmV0d29yay5jbGFzc19iXVxuXG4gICAgICAjIFBpbmctc2xvdCBkYXRhLXJhdGUuIFxuICAgICAgcGluZ19zbG90X2RyPTNcblxuICAgICAgIyBQaW5nLXNsb3QgZnJlcXVlbmN5IChIeilcbiAgICAgICNcbiAgICAgICMgc2V0IHRoaXMgdG8gMCB0byB1c2UgdGhlIGRlZmF1bHQgZnJlcXVlbmN5IHBsYW4gZm9yIHRoZSBjb25maWd1cmVkIHJlZ2lvblxuICAgICAgIyAod2hpY2ggY291bGQgYmUgZnJlcXVlbmN5IGhvcHBpbmcpLlxuICAgICAgcGluZ19zbG90X2ZyZXF1ZW5jeT0wXG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbnNlcnZpY2VOYW1lID0gXCJjaGlycHN0YWNrXCJcbmZpbGVQYXRoID0gXCIvY2hpcnBzdGFjay9yZWdpb25fYXU5MTVfMC50b21sXCJcbmNvbnRlbnQgPSBcIlwiXCJcbiMgVGhpcyBmaWxlIGNvbnRhaW5zIGFuIGV4YW1wbGUgQVU5MTUgZXhhbXBsZSAoY2hhbm5lbHMgMC03ICsgNjQpLlxuW1tyZWdpb25zXV1cblxuICAjIElEIGlzIGFuIHVzZS1kZWZpbmVkIGlkZW50aWZpZXIgZm9yIHRoaXMgcmVnaW9uLlxuICBpZD1cImF1OTE1XzBcIlxuXG4gICMgRGVzY3JpcHRpb24gaXMgYSBzaG9ydCBkZXNjcmlwdGlvbiBmb3IgdGhpcyByZWdpb24uXG4gIGRlc2NyaXB0aW9uPVwiQVU5MTUgKGNoYW5uZWxzIDAtNyArIDY0KVwiXG5cbiAgIyBDb21tb24tbmFtZSByZWZlcnMgdG8gdGhlIGNvbW1vbi1uYW1lIG9mIHRoaXMgcmVnaW9uIGFzIGRlZmluZWQgYnlcbiAgIyB0aGUgTG9SYSBBbGxpYW5jZS5cbiAgY29tbW9uX25hbWU9XCJBVTkxNVwiXG5cblxuICAjIEdhdGV3YXkgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMuZ2F0ZXdheV1cblxuICAgICMgRm9yY2UgZ2F0ZXdheXMgYXMgcHJpdmF0ZS5cbiAgICAjXG4gICAgIyBJZiBlbmFibGVkLCBnYXRld2F5cyBjYW4gb25seSBiZSB1c2VkIGJ5IGRldmljZXMgdW5kZXIgdGhlIHNhbWUgdGVuYW50LlxuICAgIGZvcmNlX2d3c19wcml2YXRlPWZhbHNlXG5cbiAgICBcbiAgICAjIEdhdGV3YXkgYmFja2VuZCBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZF1cblxuICAgICAgIyBUaGUgZW5hYmxlZCBiYWNrZW5kIHR5cGUuXG4gICAgICBlbmFibGVkPVwibXF0dFwiXG5cbiAgICAgICMgTVFUVCBjb25maWd1cmF0aW9uLlxuICAgICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kLm1xdHRdXG5cbiAgICAgICAgIyBUb3BpYyBwcmVmaXguXG4gICAgICAgICNcbiAgICAgICAgIyBUaGUgdG9waWMgcHJlZml4IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB0aGUgcmVnaW9uIG9mIHRoZSBnYXRld2F5LlxuICAgICAgICAjIE5vdGUsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYWRkIGEgdHJhaWxpbmcgJy8nIHRvIHRoZSBwcmVmaXguIFRoZSB0cmFpbGluZ1xuICAgICAgICAjICcvJyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBwcmVmaXggaWYgaXQgaXMgY29uZmlndXJlZC5cbiAgICAgICAgdG9waWNfcHJlZml4PVwiYXU5MTVfMFwiXG5cbiAgICAgICAgIyBNUVRUIHNlcnZlciAoZS5nLiBzY2hlbWU6Ly9ob3N0OnBvcnQgd2hlcmUgc2NoZW1lIGlzIHRjcCwgc3NsIG9yIHdzKVxuICAgICAgICBzZXJ2ZXI9XCJ0Y3A6Ly9tb3NxdWl0dG86MTg4M1wiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHVzZXJuYW1lIChvcHRpb25hbClcbiAgICAgICAgdXNlcm5hbWU9XCJcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiBwYXNzd29yZCAob3B0aW9uYWwpXG4gICAgICAgIHBhc3N3b3JkPVwiXCJcblxuICAgICAgICAjIFF1YWxpdHkgb2Ygc2VydmljZSBsZXZlbFxuICAgICAgICAjXG4gICAgICAgICMgMDogYXQgbW9zdCBvbmNlXG4gICAgICAgICMgMTogYXQgbGVhc3Qgb25jZVxuICAgICAgICAjIDI6IGV4YWN0bHkgb25jZVxuICAgICAgICAjXG4gICAgICAgICMgTm90ZTogYW4gaW5jcmVhc2Ugb2YgdGhpcyB2YWx1ZSB3aWxsIGRlY3JlYXNlIHRoZSBwZXJmb3JtYW5jZS5cbiAgICAgICAgIyBGb3IgbW9yZSBpbmZvcm1hdGlvbjogaHR0cHM6Ly93d3cuaGl2ZW1xLmNvbS9ibG9nL21xdHQtZXNzZW50aWFscy1wYXJ0LTYtbXF0dC1xdWFsaXR5LW9mLXNlcnZpY2UtbGV2ZWxzXG4gICAgICAgIHFvcz0wXG5cbiAgICAgICAgIyBDbGVhbiBzZXNzaW9uXG4gICAgICAgICNcbiAgICAgICAgIyBTZXQgdGhlIFwiY2xlYW4gc2Vzc2lvblwiIGZsYWcgaW4gdGhlIGNvbm5lY3QgbWVzc2FnZSB3aGVuIHRoaXMgY2xpZW50XG4gICAgICAgICMgY29ubmVjdHMgdG8gYW4gTVFUVCBicm9rZXIuIEJ5IHNldHRpbmcgdGhpcyBmbGFnIHlvdSBhcmUgaW5kaWNhdGluZ1xuICAgICAgICAjIHRoYXQgbm8gbWVzc2FnZXMgc2F2ZWQgYnkgdGhlIGJyb2tlciBmb3IgdGhpcyBjbGllbnQgc2hvdWxkIGJlIGRlbGl2ZXJlZC5cbiAgICAgICAgY2xlYW5fc2Vzc2lvbj1mYWxzZVxuXG4gICAgICAgICMgQ2xpZW50IElEXG4gICAgICAgICNcbiAgICAgICAgIyBTZXQgdGhlIGNsaWVudCBpZCB0byBiZSB1c2VkIGJ5IHRoaXMgY2xpZW50IHdoZW4gY29ubmVjdGluZyB0byB0aGUgTVFUVFxuICAgICAgICAjIGJyb2tlci4gQSBjbGllbnQgaWQgbXVzdCBiZSBubyBsb25nZXIgdGhhbiAyMyBjaGFyYWN0ZXJzLiBJZiBsZWZ0IGJsYW5rLFxuICAgICAgICAjIGEgcmFuZG9tIGlkIHdpbGwgYmUgZ2VuZXJhdGVkIGJ5IENoaXJwU3RhY2suXG4gICAgICAgIGNsaWVudF9pZD1cIlwiXG5cbiAgICAgICAgIyBLZWVwIGFsaXZlIGludGVydmFsLlxuICAgICAgICAjXG4gICAgICAgICMgVGhpcyBkZWZpbmVzIHRoZSBtYXhpbXVtIHRpbWUgdGhhdCB0aGF0IHNob3VsZCBwYXNzIHdpdGhvdXQgY29tbXVuaWNhdGlvblxuICAgICAgICAjIGJldHdlZW4gdGhlIGNsaWVudCBhbmQgc2VydmVyLlxuICAgICAgICBrZWVwX2FsaXZlX2ludGVydmFsPVwiMzBzXCJcblxuICAgICAgICAjIENBIGNlcnRpZmljYXRlIGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICAjXG4gICAgICAgICMgVXNlIHRoaXMgd2hlbiBzZXR0aW5nIHVwIGEgc2VjdXJlIGNvbm5lY3Rpb24gKHdoZW4gc2VydmVyIHVzZXMgc3NsOi8vLi4uKVxuICAgICAgICAjIGJ1dCB0aGUgY2VydGlmaWNhdGUgdXNlZCBieSB0aGUgc2VydmVyIGlzIG5vdCB0cnVzdGVkIGJ5IGFueSBDQSBjZXJ0aWZpY2F0ZVxuICAgICAgICAjIG9uIHRoZSBzZXJ2ZXIgKGUuZy4gd2hlbiBzZWxmIGdlbmVyYXRlZCkuXG4gICAgICAgIGNhX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGNlcnRpZmljYXRlIGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICB0bHNfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMga2V5IGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICB0bHNfa2V5PVwiXCJcblxuXG4gICAgIyBHYXRld2F5IGNoYW5uZWwgY29uZmlndXJhdGlvbi5cbiAgICAjXG4gICAgIyBOb3RlOiB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgb25seSB1c2VkIGluIGNhc2UgdGhlIGdhdGV3YXkgaXMgdXNpbmcgdGhlXG4gICAgIyBDaGlycFN0YWNrIENvbmNlbnRyYXRvcmQgZGFlbW9uLiBJbiBhbnkgb3RoZXIgY2FzZSwgdGhpcyBjb25maWd1cmF0aW9uIFxuICAgICMgaXMgaWdub3JlZC5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTE1MjAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MTU0MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkxNTYwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTE1ODAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MTYwMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkxNjIwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTE2NDAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MTY2MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkxNTkwMDAwMFxuICAgICAgYmFuZHdpZHRoPTUwMDAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzhdXG5cblxuICAjIFJlZ2lvbiBzcGVjaWZpYyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLm5ldHdvcmtdXG4gICAgXG4gICAgIyBJbnN0YWxsYXRpb24gbWFyZ2luIChkQikgdXNlZCBieSB0aGUgQURSIGVuZ2luZS5cbiAgICAjXG4gICAgIyBBIGhpZ2hlciBudW1iZXIgbWVhbnMgdGhhdCB0aGUgbmV0d29yay1zZXJ2ZXIgd2lsbCBrZWVwIG1vcmUgbWFyZ2luLFxuICAgICMgcmVzdWx0aW5nIGluIGEgbG93ZXIgZGF0YS1yYXRlIGJ1dCBkZWNyZWFzaW5nIHRoZSBjaGFuY2UgdGhhdCB0aGVcbiAgICAjIGRldmljZSBnZXRzIGRpc2Nvbm5lY3RlZCBiZWNhdXNlIGl0IGlzIHVuYWJsZSB0byByZWFjaCBvbmUgb2YgdGhlXG4gICAgIyBzdXJyb3VuZGVkIGdhdGV3YXlzLlxuICAgIGluc3RhbGxhdGlvbl9tYXJnaW49MTBcblxuICAgICMgUlggd2luZG93IChDbGFzcy1BKS5cbiAgICAjXG4gICAgIyBTZXQgdGhpcyB0bzpcbiAgICAjIDA6IFJYMSAvIFJYMlxuICAgICMgMTogUlgxIG9ubHlcbiAgICAjIDI6IFJYMiBvbmx5XG4gICAgcnhfd2luZG93PTBcblxuICAgICMgUlgxIGRlbGF5ICgxIC0gMTUgc2Vjb25kcykuXG4gICAgcngxX2RlbGF5PTFcblxuICAgICMgUlgxIGRhdGEtcmF0ZSBvZmZzZXRcbiAgICByeDFfZHJfb2Zmc2V0PTBcblxuICAgICMgUlgyIGRhdGEtcmF0ZVxuICAgIHJ4Ml9kcj04XG5cbiAgICAjIFJYMiBmcmVxdWVuY3kgKEh6KVxuICAgIHJ4Ml9mcmVxdWVuY3k9OTIzMzAwMDAwXG5cbiAgICAjIFByZWZlciBSWDIgb24gUlgxIGRhdGEtcmF0ZSBsZXNzIHRoYW4uXG4gICAgI1xuICAgICMgUHJlZmVyIFJYMiBvdmVyIFJYMSBiYXNlZCBvbiB0aGUgUlgxIGRhdGEtcmF0ZS4gV2hlbiB0aGUgUlgxIGRhdGEtcmF0ZVxuICAgICMgaXMgc21hbGxlciB0aGFuIHRoZSBjb25maWd1cmVkIHZhbHVlLCB0aGVuIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsXG4gICAgIyBmaXJzdCB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGZvciBSWDIsIGZhaWxpbmcgdGhhdCAoZS5nLiB0aGUgZ2F0ZXdheVxuICAgICMgaGFzIGFscmVhZHkgYSBwYXlsb2FkIHNjaGVkdWxlZCBhdCB0aGUgUlgyIHRpbWluZykgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fcngxX2RyX2x0PTBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBsaW5rIGJ1ZGdldC5cbiAgICAjXG4gICAgIyBXaGVuIHRoZSBsaW5rLWJ1ZGdldCBpcyBiZXR0ZXIgZm9yIFJYMiB0aGFuIGZvciBSWDEsIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsIGZpcnN0XG4gICAgIyB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGluIFJYMiwgZmFpbGluZyB0aGF0IGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX2xpbmtfYnVkZ2V0PWZhbHNlXG5cbiAgICAjIERvd25saW5rIFRYIFBvd2VyIChkQm0pXG4gICAgI1xuICAgICMgV2hlbiBzZXQgdG8gLTEsIHRoZSBkb3dubGluayBUWCBQb3dlciBmcm9tIHRoZSBjb25maWd1cmVkIGJhbmQgd2lsbFxuICAgICMgYmUgdXNlZC5cbiAgICAjXG4gICAgIyBQbGVhc2UgY29uc3VsdCB0aGUgTG9SYVdBTiBSZWdpb25hbCBQYXJhbWV0ZXJzIGFuZCBsb2NhbCByZWd1bGF0aW9uc1xuICAgICMgZm9yIHZhbGlkIGFuZCBsZWdhbCBvcHRpb25zLiBOb3RlIHRoYXQgdGhlIGNvbmZpZ3VyZWQgVFggUG93ZXIgbXVzdCBiZVxuICAgICMgc3VwcG9ydGVkIGJ5IHlvdXIgZ2F0ZXdheShzKS5cbiAgICBkb3dubGlua190eF9wb3dlcj0tMVxuXG4gICAgIyBBRFIgaXMgZGlzYWJsZWQuXG4gICAgYWRyX2Rpc2FibGVkPWZhbHNlXG5cbiAgICAjIE1pbmltdW0gZGF0YS1yYXRlLlxuICAgIG1pbl9kcj0wXG5cbiAgICAjIE1heGltdW0gZGF0YS1yYXRlLlxuICAgIG1heF9kcj01XG5cbiAgICAjIEVuYWJsZWQgdXBsaW5rIGNoYW5uZWxzLlxuICAgICNcbiAgICAjIFVzZSB0aGlzIHdoZW4gb255IGEgc3ViLXNldCBvZiB0aGUgYnkgZGVmYXVsdCBlbmFibGVkIGNoYW5uZWxzIGFyZSBiZWluZ1xuICAgICMgdXNlZC4gRm9yIGV4YW1wbGUgd2hlbiBvbmx5IHVzaW5nIHRoZSBmaXJzdCA4IGNoYW5uZWxzIG9mIHRoZSBVUyBiYW5kLlxuICAgICMgTm90ZTogd2hlbiBsZWZ0IGJsYW5rIC8gZW1wdHkgYXJyYXksIGFsbCBjaGFubmVscyB3aWxsIGJlIGVuYWJsZWQuXG4gICAgZW5hYmxlZF91cGxpbmtfY2hhbm5lbHM9WzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDY0XVxuXG5cbiAgICAjIFJlam9pbi1yZXF1ZXN0IGNvbmZpZ3VyYXRpb24gKExvUmFXQU4gMS4xKVxuICAgIFtyZWdpb25zLm5ldHdvcmsucmVqb2luX3JlcXVlc3RdXG5cbiAgICAgICMgUmVxdWVzdCBkZXZpY2VzIHRvIHBlcmlvZGljYWxseSBzZW5kIHJlam9pbi1yZXF1ZXN0cy5cbiAgICAgIGVuYWJsZWQ9ZmFsc2VcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfY291bnRfbiArIDQpXG4gICAgICAjIHVwbGluayBtZXNzYWdlcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgbWF4X2NvdW50X249MFxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF90aW1lX24gKyAxMClcbiAgICAgICMgc2Vjb25kcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgI1xuICAgICAgIyAwICA9IHJvdWdobHkgMTcgbWludXRlc1xuICAgICAgIyAxNSA9IGFib3V0IDEgeWVhclxuICAgICAgbWF4X3RpbWVfbj0wXG4gICAgXG5cbiAgICAjIENsYXNzLUIgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5uZXR3b3JrLmNsYXNzX2JdXG5cbiAgICAgICMgUGluZy1zbG90IGRhdGEtcmF0ZS4gXG4gICAgICBwaW5nX3Nsb3RfZHI9OFxuXG4gICAgICAjIFBpbmctc2xvdCBmcmVxdWVuY3kgKEh6KVxuICAgICAgI1xuICAgICAgIyBzZXQgdGhpcyB0byAwIHRvIHVzZSB0aGUgZGVmYXVsdCBmcmVxdWVuY3kgcGxhbiBmb3IgdGhlIGNvbmZpZ3VyZWQgcmVnaW9uXG4gICAgICAjICh3aGljaCBjb3VsZCBiZSBmcmVxdWVuY3kgaG9wcGluZykuXG4gICAgICBwaW5nX3Nsb3RfZnJlcXVlbmN5PTBcblwiXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuc2VydmljZU5hbWUgPSBcImNoaXJwc3RhY2tcIlxuZmlsZVBhdGggPSBcIi9jaGlycHN0YWNrL3JlZ2lvbl9hdTkxNV8xLnRvbWxcIlxuY29udGVudCA9IFwiXCJcIlxuIyBUaGlzIGZpbGUgY29udGFpbnMgYW4gZXhhbXBsZSBBVTkxNSBleGFtcGxlIChjaGFubmVscyA4LTE1ICsgNjUpLlxuW1tyZWdpb25zXV1cblxuICAjIElEIGlzIGFuIHVzZS1kZWZpbmVkIGlkZW50aWZpZXIgZm9yIHRoaXMgcmVnaW9uLlxuICBpZD1cImF1OTE1XzFcIlxuXG4gICMgRGVzY3JpcHRpb24gaXMgYSBzaG9ydCBkZXNjcmlwdGlvbiBmb3IgdGhpcyByZWdpb24uXG4gIGRlc2NyaXB0aW9uPVwiQVU5MTUgKGNoYW5uZWxzIDgtMTUgKyA2NSlcIlxuXG4gICMgQ29tbW9uLW5hbWUgcmVmZXJzIHRvIHRoZSBjb21tb24tbmFtZSBvZiB0aGlzIHJlZ2lvbiBhcyBkZWZpbmVkIGJ5XG4gICMgdGhlIExvUmEgQWxsaWFuY2UuXG4gIGNvbW1vbl9uYW1lPVwiQVU5MTVcIlxuXG5cbiAgIyBHYXRld2F5IGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLmdhdGV3YXldXG5cbiAgICAjIEZvcmNlIGdhdGV3YXlzIGFzIHByaXZhdGUuXG4gICAgI1xuICAgICMgSWYgZW5hYmxlZCwgZ2F0ZXdheXMgY2FuIG9ubHkgYmUgdXNlZCBieSBkZXZpY2VzIHVuZGVyIHRoZSBzYW1lIHRlbmFudC5cbiAgICBmb3JjZV9nd3NfcHJpdmF0ZT1mYWxzZVxuXG4gICAgXG4gICAgIyBHYXRld2F5IGJhY2tlbmQgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmRdXG5cbiAgICAgICMgVGhlIGVuYWJsZWQgYmFja2VuZCB0eXBlLlxuICAgICAgZW5hYmxlZD1cIm1xdHRcIlxuXG4gICAgICAjIE1RVFQgY29uZmlndXJhdGlvbi5cbiAgICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZC5tcXR0XVxuXG4gICAgICAgICMgVG9waWMgcHJlZml4LlxuICAgICAgICAjXG4gICAgICAgICMgVGhlIHRvcGljIHByZWZpeCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgdGhlIHJlZ2lvbiBvZiB0aGUgZ2F0ZXdheS5cbiAgICAgICAgIyBOb3RlLCB0aGVyZSBpcyBubyBuZWVkIHRvIGFkZCBhIHRyYWlsaW5nICcvJyB0byB0aGUgcHJlZml4LiBUaGUgdHJhaWxpbmdcbiAgICAgICAgIyAnLycgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgcHJlZml4IGlmIGl0IGlzIGNvbmZpZ3VyZWQuXG4gICAgICAgIHRvcGljX3ByZWZpeD1cImF1OTE1XzFcIlxuXG4gICAgICAgICMgTVFUVCBzZXJ2ZXIgKGUuZy4gc2NoZW1lOi8vaG9zdDpwb3J0IHdoZXJlIHNjaGVtZSBpcyB0Y3AsIHNzbCBvciB3cylcbiAgICAgICAgc2VydmVyPVwidGNwOi8vbW9zcXVpdHRvOjE4ODNcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiB1c2VybmFtZSAob3B0aW9uYWwpXG4gICAgICAgIHVzZXJuYW1lPVwiXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gcGFzc3dvcmQgKG9wdGlvbmFsKVxuICAgICAgICBwYXNzd29yZD1cIlwiXG5cbiAgICAgICAgIyBRdWFsaXR5IG9mIHNlcnZpY2UgbGV2ZWxcbiAgICAgICAgI1xuICAgICAgICAjIDA6IGF0IG1vc3Qgb25jZVxuICAgICAgICAjIDE6IGF0IGxlYXN0IG9uY2VcbiAgICAgICAgIyAyOiBleGFjdGx5IG9uY2VcbiAgICAgICAgI1xuICAgICAgICAjIE5vdGU6IGFuIGluY3JlYXNlIG9mIHRoaXMgdmFsdWUgd2lsbCBkZWNyZWFzZSB0aGUgcGVyZm9ybWFuY2UuXG4gICAgICAgICMgRm9yIG1vcmUgaW5mb3JtYXRpb246IGh0dHBzOi8vd3d3LmhpdmVtcS5jb20vYmxvZy9tcXR0LWVzc2VudGlhbHMtcGFydC02LW1xdHQtcXVhbGl0eS1vZi1zZXJ2aWNlLWxldmVsc1xuICAgICAgICBxb3M9MFxuXG4gICAgICAgICMgQ2xlYW4gc2Vzc2lvblxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBcImNsZWFuIHNlc3Npb25cIiBmbGFnIGluIHRoZSBjb25uZWN0IG1lc3NhZ2Ugd2hlbiB0aGlzIGNsaWVudFxuICAgICAgICAjIGNvbm5lY3RzIHRvIGFuIE1RVFQgYnJva2VyLiBCeSBzZXR0aW5nIHRoaXMgZmxhZyB5b3UgYXJlIGluZGljYXRpbmdcbiAgICAgICAgIyB0aGF0IG5vIG1lc3NhZ2VzIHNhdmVkIGJ5IHRoZSBicm9rZXIgZm9yIHRoaXMgY2xpZW50IHNob3VsZCBiZSBkZWxpdmVyZWQuXG4gICAgICAgIGNsZWFuX3Nlc3Npb249ZmFsc2VcblxuICAgICAgICAjIENsaWVudCBJRFxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBjbGllbnQgaWQgdG8gYmUgdXNlZCBieSB0aGlzIGNsaWVudCB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIE1RVFRcbiAgICAgICAgIyBicm9rZXIuIEEgY2xpZW50IGlkIG11c3QgYmUgbm8gbG9uZ2VyIHRoYW4gMjMgY2hhcmFjdGVycy4gSWYgbGVmdCBibGFuayxcbiAgICAgICAgIyBhIHJhbmRvbSBpZCB3aWxsIGJlIGdlbmVyYXRlZCBieSBDaGlycFN0YWNrLlxuICAgICAgICBjbGllbnRfaWQ9XCJcIlxuXG4gICAgICAgICMgS2VlcCBhbGl2ZSBpbnRlcnZhbC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoaXMgZGVmaW5lcyB0aGUgbWF4aW11bSB0aW1lIHRoYXQgdGhhdCBzaG91bGQgcGFzcyB3aXRob3V0IGNvbW11bmljYXRpb25cbiAgICAgICAgIyBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlci5cbiAgICAgICAga2VlcF9hbGl2ZV9pbnRlcnZhbD1cIjMwc1wiXG5cbiAgICAgICAgIyBDQSBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgI1xuICAgICAgICAjIFVzZSB0aGlzIHdoZW4gc2V0dGluZyB1cCBhIHNlY3VyZSBjb25uZWN0aW9uICh3aGVuIHNlcnZlciB1c2VzIHNzbDovLy4uLilcbiAgICAgICAgIyBidXQgdGhlIGNlcnRpZmljYXRlIHVzZWQgYnkgdGhlIHNlcnZlciBpcyBub3QgdHJ1c3RlZCBieSBhbnkgQ0EgY2VydGlmaWNhdGVcbiAgICAgICAgIyBvbiB0aGUgc2VydmVyIChlLmcuIHdoZW4gc2VsZiBnZW5lcmF0ZWQpLlxuICAgICAgICBjYV9jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGtleSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2tleT1cIlwiXG5cblxuICAgICMgR2F0ZXdheSBjaGFubmVsIGNvbmZpZ3VyYXRpb24uXG4gICAgI1xuICAgICMgTm90ZTogdGhpcyBjb25maWd1cmF0aW9uIGlzIG9ubHkgdXNlZCBpbiBjYXNlIHRoZSBnYXRld2F5IGlzIHVzaW5nIHRoZVxuICAgICMgQ2hpcnBTdGFjayBDb25jZW50cmF0b3JkIGRhZW1vbi4gSW4gYW55IG90aGVyIGNhc2UsIHRoaXMgY29uZmlndXJhdGlvbiBcbiAgICAjIGlzIGlnbm9yZWQuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkxNjgwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTE3MDAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MTcyMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkxNzQwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTE3NjAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MTc4MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkxODAwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTE4MjAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MTc1MDAwMDBcbiAgICAgIGJhbmR3aWR0aD01MDAwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs4XVxuXG5cbiAgIyBSZWdpb24gc3BlY2lmaWMgbmV0d29yayBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5uZXR3b3JrXVxuICAgIFxuICAgICMgSW5zdGFsbGF0aW9uIG1hcmdpbiAoZEIpIHVzZWQgYnkgdGhlIEFEUiBlbmdpbmUuXG4gICAgI1xuICAgICMgQSBoaWdoZXIgbnVtYmVyIG1lYW5zIHRoYXQgdGhlIG5ldHdvcmstc2VydmVyIHdpbGwga2VlcCBtb3JlIG1hcmdpbixcbiAgICAjIHJlc3VsdGluZyBpbiBhIGxvd2VyIGRhdGEtcmF0ZSBidXQgZGVjcmVhc2luZyB0aGUgY2hhbmNlIHRoYXQgdGhlXG4gICAgIyBkZXZpY2UgZ2V0cyBkaXNjb25uZWN0ZWQgYmVjYXVzZSBpdCBpcyB1bmFibGUgdG8gcmVhY2ggb25lIG9mIHRoZVxuICAgICMgc3Vycm91bmRlZCBnYXRld2F5cy5cbiAgICBpbnN0YWxsYXRpb25fbWFyZ2luPTEwXG5cbiAgICAjIFJYIHdpbmRvdyAoQ2xhc3MtQSkuXG4gICAgI1xuICAgICMgU2V0IHRoaXMgdG86XG4gICAgIyAwOiBSWDEgLyBSWDJcbiAgICAjIDE6IFJYMSBvbmx5XG4gICAgIyAyOiBSWDIgb25seVxuICAgIHJ4X3dpbmRvdz0wXG5cbiAgICAjIFJYMSBkZWxheSAoMSAtIDE1IHNlY29uZHMpLlxuICAgIHJ4MV9kZWxheT0xXG5cbiAgICAjIFJYMSBkYXRhLXJhdGUgb2Zmc2V0XG4gICAgcngxX2RyX29mZnNldD0wXG5cbiAgICAjIFJYMiBkYXRhLXJhdGVcbiAgICByeDJfZHI9OFxuXG4gICAgIyBSWDIgZnJlcXVlbmN5IChIeilcbiAgICByeDJfZnJlcXVlbmN5PTkyMzMwMDAwMFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIFJYMSBkYXRhLXJhdGUgbGVzcyB0aGFuLlxuICAgICNcbiAgICAjIFByZWZlciBSWDIgb3ZlciBSWDEgYmFzZWQgb24gdGhlIFJYMSBkYXRhLXJhdGUuIFdoZW4gdGhlIFJYMSBkYXRhLXJhdGVcbiAgICAjIGlzIHNtYWxsZXIgdGhhbiB0aGUgY29uZmlndXJlZCB2YWx1ZSwgdGhlbiB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbFxuICAgICMgZmlyc3QgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBmb3IgUlgyLCBmYWlsaW5nIHRoYXQgKGUuZy4gdGhlIGdhdGV3YXlcbiAgICAjIGhhcyBhbHJlYWR5IGEgcGF5bG9hZCBzY2hlZHVsZWQgYXQgdGhlIFJYMiB0aW1pbmcpIGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX3J4MV9kcl9sdD0wXG5cbiAgICAjIFByZWZlciBSWDIgb24gbGluayBidWRnZXQuXG4gICAgI1xuICAgICMgV2hlbiB0aGUgbGluay1idWRnZXQgaXMgYmV0dGVyIGZvciBSWDIgdGhhbiBmb3IgUlgxLCB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbCBmaXJzdFxuICAgICMgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBpbiBSWDIsIGZhaWxpbmcgdGhhdCBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9saW5rX2J1ZGdldD1mYWxzZVxuXG4gICAgIyBEb3dubGluayBUWCBQb3dlciAoZEJtKVxuICAgICNcbiAgICAjIFdoZW4gc2V0IHRvIC0xLCB0aGUgZG93bmxpbmsgVFggUG93ZXIgZnJvbSB0aGUgY29uZmlndXJlZCBiYW5kIHdpbGxcbiAgICAjIGJlIHVzZWQuXG4gICAgI1xuICAgICMgUGxlYXNlIGNvbnN1bHQgdGhlIExvUmFXQU4gUmVnaW9uYWwgUGFyYW1ldGVycyBhbmQgbG9jYWwgcmVndWxhdGlvbnNcbiAgICAjIGZvciB2YWxpZCBhbmQgbGVnYWwgb3B0aW9ucy4gTm90ZSB0aGF0IHRoZSBjb25maWd1cmVkIFRYIFBvd2VyIG11c3QgYmVcbiAgICAjIHN1cHBvcnRlZCBieSB5b3VyIGdhdGV3YXkocykuXG4gICAgZG93bmxpbmtfdHhfcG93ZXI9LTFcblxuICAgICMgQURSIGlzIGRpc2FibGVkLlxuICAgIGFkcl9kaXNhYmxlZD1mYWxzZVxuXG4gICAgIyBNaW5pbXVtIGRhdGEtcmF0ZS5cbiAgICBtaW5fZHI9MFxuXG4gICAgIyBNYXhpbXVtIGRhdGEtcmF0ZS5cbiAgICBtYXhfZHI9NVxuXG4gICAgIyBFbmFibGVkIHVwbGluayBjaGFubmVscy5cbiAgICAjXG4gICAgIyBVc2UgdGhpcyB3aGVuIG9ueSBhIHN1Yi1zZXQgb2YgdGhlIGJ5IGRlZmF1bHQgZW5hYmxlZCBjaGFubmVscyBhcmUgYmVpbmdcbiAgICAjIHVzZWQuIEZvciBleGFtcGxlIHdoZW4gb25seSB1c2luZyB0aGUgZmlyc3QgOCBjaGFubmVscyBvZiB0aGUgVVMgYmFuZC5cbiAgICAjIE5vdGU6IHdoZW4gbGVmdCBibGFuayAvIGVtcHR5IGFycmF5LCBhbGwgY2hhbm5lbHMgd2lsbCBiZSBlbmFibGVkLlxuICAgIGVuYWJsZWRfdXBsaW5rX2NoYW5uZWxzPVs4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA2NV1cblxuXG4gICAgIyBSZWpvaW4tcmVxdWVzdCBjb25maWd1cmF0aW9uIChMb1JhV0FOIDEuMSlcbiAgICBbcmVnaW9ucy5uZXR3b3JrLnJlam9pbl9yZXF1ZXN0XVxuXG4gICAgICAjIFJlcXVlc3QgZGV2aWNlcyB0byBwZXJpb2RpY2FsbHkgc2VuZCByZWpvaW4tcmVxdWVzdHMuXG4gICAgICBlbmFibGVkPWZhbHNlXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X2NvdW50X24gKyA0KVxuICAgICAgIyB1cGxpbmsgbWVzc2FnZXMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgIG1heF9jb3VudF9uPTBcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfdGltZV9uICsgMTApXG4gICAgICAjIHNlY29uZHMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgICNcbiAgICAgICMgMCAgPSByb3VnaGx5IDE3IG1pbnV0ZXNcbiAgICAgICMgMTUgPSBhYm91dCAxIHllYXJcbiAgICAgIG1heF90aW1lX249MFxuICAgIFxuXG4gICAgIyBDbGFzcy1CIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMubmV0d29yay5jbGFzc19iXVxuXG4gICAgICAjIFBpbmctc2xvdCBkYXRhLXJhdGUuIFxuICAgICAgcGluZ19zbG90X2RyPThcblxuICAgICAgIyBQaW5nLXNsb3QgZnJlcXVlbmN5IChIeilcbiAgICAgICNcbiAgICAgICMgc2V0IHRoaXMgdG8gMCB0byB1c2UgdGhlIGRlZmF1bHQgZnJlcXVlbmN5IHBsYW4gZm9yIHRoZSBjb25maWd1cmVkIHJlZ2lvblxuICAgICAgIyAod2hpY2ggY291bGQgYmUgZnJlcXVlbmN5IGhvcHBpbmcpLlxuICAgICAgcGluZ19zbG90X2ZyZXF1ZW5jeT0wXG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbnNlcnZpY2VOYW1lID0gXCJjaGlycHN0YWNrXCJcbmZpbGVQYXRoID0gXCIvY2hpcnBzdGFjay9yZWdpb25fYXU5MTVfMi50b21sXCJcbmNvbnRlbnQgPSBcIlwiXCJcbiMgVGhpcyBmaWxlIGNvbnRhaW5zIGFuIGV4YW1wbGUgQVU5MTUgZXhhbXBsZSAoY2hhbm5lbHMgMTYtMjMgKyA2NikuXG5bW3JlZ2lvbnNdXVxuXG4gICMgSUQgaXMgYW4gdXNlLWRlZmluZWQgaWRlbnRpZmllciBmb3IgdGhpcyByZWdpb24uXG4gIGlkPVwiYXU5MTVfMlwiXG5cbiAgIyBEZXNjcmlwdGlvbiBpcyBhIHNob3J0IGRlc2NyaXB0aW9uIGZvciB0aGlzIHJlZ2lvbi5cbiAgZGVzY3JpcHRpb249XCJBVTkxNSAoY2hhbm5lbHMgMTYtMjMgKyA2NSlcIlxuXG4gICMgQ29tbW9uLW5hbWUgcmVmZXJzIHRvIHRoZSBjb21tb24tbmFtZSBvZiB0aGlzIHJlZ2lvbiBhcyBkZWZpbmVkIGJ5XG4gICMgdGhlIExvUmEgQWxsaWFuY2UuXG4gIGNvbW1vbl9uYW1lPVwiQVU5MTVcIlxuXG5cbiAgIyBHYXRld2F5IGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLmdhdGV3YXldXG5cbiAgICAjIEZvcmNlIGdhdGV3YXlzIGFzIHByaXZhdGUuXG4gICAgI1xuICAgICMgSWYgZW5hYmxlZCwgZ2F0ZXdheXMgY2FuIG9ubHkgYmUgdXNlZCBieSBkZXZpY2VzIHVuZGVyIHRoZSBzYW1lIHRlbmFudC5cbiAgICBmb3JjZV9nd3NfcHJpdmF0ZT1mYWxzZVxuXG4gICAgXG4gICAgIyBHYXRld2F5IGJhY2tlbmQgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmRdXG5cbiAgICAgICMgVGhlIGVuYWJsZWQgYmFja2VuZCB0eXBlLlxuICAgICAgZW5hYmxlZD1cIm1xdHRcIlxuXG4gICAgICAjIE1RVFQgY29uZmlndXJhdGlvbi5cbiAgICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZC5tcXR0XVxuXG4gICAgICAgICMgVG9waWMgcHJlZml4LlxuICAgICAgICAjXG4gICAgICAgICMgVGhlIHRvcGljIHByZWZpeCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgdGhlIHJlZ2lvbiBvZiB0aGUgZ2F0ZXdheS5cbiAgICAgICAgIyBOb3RlLCB0aGVyZSBpcyBubyBuZWVkIHRvIGFkZCBhIHRyYWlsaW5nICcvJyB0byB0aGUgcHJlZml4LiBUaGUgdHJhaWxpbmdcbiAgICAgICAgIyAnLycgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgcHJlZml4IGlmIGl0IGlzIGNvbmZpZ3VyZWQuXG4gICAgICAgIHRvcGljX3ByZWZpeD1cImF1OTE1XzJcIlxuXG4gICAgICAgICMgTVFUVCBzZXJ2ZXIgKGUuZy4gc2NoZW1lOi8vaG9zdDpwb3J0IHdoZXJlIHNjaGVtZSBpcyB0Y3AsIHNzbCBvciB3cylcbiAgICAgICAgc2VydmVyPVwidGNwOi8vbW9zcXVpdHRvOjE4ODNcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiB1c2VybmFtZSAob3B0aW9uYWwpXG4gICAgICAgIHVzZXJuYW1lPVwiXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gcGFzc3dvcmQgKG9wdGlvbmFsKVxuICAgICAgICBwYXNzd29yZD1cIlwiXG5cbiAgICAgICAgIyBRdWFsaXR5IG9mIHNlcnZpY2UgbGV2ZWxcbiAgICAgICAgI1xuICAgICAgICAjIDA6IGF0IG1vc3Qgb25jZVxuICAgICAgICAjIDE6IGF0IGxlYXN0IG9uY2VcbiAgICAgICAgIyAyOiBleGFjdGx5IG9uY2VcbiAgICAgICAgI1xuICAgICAgICAjIE5vdGU6IGFuIGluY3JlYXNlIG9mIHRoaXMgdmFsdWUgd2lsbCBkZWNyZWFzZSB0aGUgcGVyZm9ybWFuY2UuXG4gICAgICAgICMgRm9yIG1vcmUgaW5mb3JtYXRpb246IGh0dHBzOi8vd3d3LmhpdmVtcS5jb20vYmxvZy9tcXR0LWVzc2VudGlhbHMtcGFydC02LW1xdHQtcXVhbGl0eS1vZi1zZXJ2aWNlLWxldmVsc1xuICAgICAgICBxb3M9MFxuXG4gICAgICAgICMgQ2xlYW4gc2Vzc2lvblxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBcImNsZWFuIHNlc3Npb25cIiBmbGFnIGluIHRoZSBjb25uZWN0IG1lc3NhZ2Ugd2hlbiB0aGlzIGNsaWVudFxuICAgICAgICAjIGNvbm5lY3RzIHRvIGFuIE1RVFQgYnJva2VyLiBCeSBzZXR0aW5nIHRoaXMgZmxhZyB5b3UgYXJlIGluZGljYXRpbmdcbiAgICAgICAgIyB0aGF0IG5vIG1lc3NhZ2VzIHNhdmVkIGJ5IHRoZSBicm9rZXIgZm9yIHRoaXMgY2xpZW50IHNob3VsZCBiZSBkZWxpdmVyZWQuXG4gICAgICAgIGNsZWFuX3Nlc3Npb249ZmFsc2VcblxuICAgICAgICAjIENsaWVudCBJRFxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBjbGllbnQgaWQgdG8gYmUgdXNlZCBieSB0aGlzIGNsaWVudCB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIE1RVFRcbiAgICAgICAgIyBicm9rZXIuIEEgY2xpZW50IGlkIG11c3QgYmUgbm8gbG9uZ2VyIHRoYW4gMjMgY2hhcmFjdGVycy4gSWYgbGVmdCBibGFuayxcbiAgICAgICAgIyBhIHJhbmRvbSBpZCB3aWxsIGJlIGdlbmVyYXRlZCBieSBDaGlycFN0YWNrLlxuICAgICAgICBjbGllbnRfaWQ9XCJcIlxuXG4gICAgICAgICMgS2VlcCBhbGl2ZSBpbnRlcnZhbC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoaXMgZGVmaW5lcyB0aGUgbWF4aW11bSB0aW1lIHRoYXQgdGhhdCBzaG91bGQgcGFzcyB3aXRob3V0IGNvbW11bmljYXRpb25cbiAgICAgICAgIyBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlci5cbiAgICAgICAga2VlcF9hbGl2ZV9pbnRlcnZhbD1cIjMwc1wiXG5cbiAgICAgICAgIyBDQSBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgI1xuICAgICAgICAjIFVzZSB0aGlzIHdoZW4gc2V0dGluZyB1cCBhIHNlY3VyZSBjb25uZWN0aW9uICh3aGVuIHNlcnZlciB1c2VzIHNzbDovLy4uLilcbiAgICAgICAgIyBidXQgdGhlIGNlcnRpZmljYXRlIHVzZWQgYnkgdGhlIHNlcnZlciBpcyBub3QgdHJ1c3RlZCBieSBhbnkgQ0EgY2VydGlmaWNhdGVcbiAgICAgICAgIyBvbiB0aGUgc2VydmVyIChlLmcuIHdoZW4gc2VsZiBnZW5lcmF0ZWQpLlxuICAgICAgICBjYV9jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGtleSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2tleT1cIlwiXG5cblxuICAgICMgR2F0ZXdheSBjaGFubmVsIGNvbmZpZ3VyYXRpb24uXG4gICAgI1xuICAgICMgTm90ZTogdGhpcyBjb25maWd1cmF0aW9uIGlzIG9ubHkgdXNlZCBpbiBjYXNlIHRoZSBnYXRld2F5IGlzIHVzaW5nIHRoZVxuICAgICMgQ2hpcnBTdGFjayBDb25jZW50cmF0b3JkIGRhZW1vbi4gSW4gYW55IG90aGVyIGNhc2UsIHRoaXMgY29uZmlndXJhdGlvbiBcbiAgICAjIGlzIGlnbm9yZWQuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkxODQwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTE4NjAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MTg4MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkxOTAwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTE5MjAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MTk0MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkxOTYwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTE5ODAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MTkxMDAwMDBcbiAgICAgIGJhbmR3aWR0aD01MDAwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs4XVxuXG5cbiAgIyBSZWdpb24gc3BlY2lmaWMgbmV0d29yayBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5uZXR3b3JrXVxuICAgIFxuICAgICMgSW5zdGFsbGF0aW9uIG1hcmdpbiAoZEIpIHVzZWQgYnkgdGhlIEFEUiBlbmdpbmUuXG4gICAgI1xuICAgICMgQSBoaWdoZXIgbnVtYmVyIG1lYW5zIHRoYXQgdGhlIG5ldHdvcmstc2VydmVyIHdpbGwga2VlcCBtb3JlIG1hcmdpbixcbiAgICAjIHJlc3VsdGluZyBpbiBhIGxvd2VyIGRhdGEtcmF0ZSBidXQgZGVjcmVhc2luZyB0aGUgY2hhbmNlIHRoYXQgdGhlXG4gICAgIyBkZXZpY2UgZ2V0cyBkaXNjb25uZWN0ZWQgYmVjYXVzZSBpdCBpcyB1bmFibGUgdG8gcmVhY2ggb25lIG9mIHRoZVxuICAgICMgc3Vycm91bmRlZCBnYXRld2F5cy5cbiAgICBpbnN0YWxsYXRpb25fbWFyZ2luPTEwXG5cbiAgICAjIFJYIHdpbmRvdyAoQ2xhc3MtQSkuXG4gICAgI1xuICAgICMgU2V0IHRoaXMgdG86XG4gICAgIyAwOiBSWDEgLyBSWDJcbiAgICAjIDE6IFJYMSBvbmx5XG4gICAgIyAyOiBSWDIgb25seVxuICAgIHJ4X3dpbmRvdz0wXG5cbiAgICAjIFJYMSBkZWxheSAoMSAtIDE1IHNlY29uZHMpLlxuICAgIHJ4MV9kZWxheT0xXG5cbiAgICAjIFJYMSBkYXRhLXJhdGUgb2Zmc2V0XG4gICAgcngxX2RyX29mZnNldD0wXG5cbiAgICAjIFJYMiBkYXRhLXJhdGVcbiAgICByeDJfZHI9OFxuXG4gICAgIyBSWDIgZnJlcXVlbmN5IChIeilcbiAgICByeDJfZnJlcXVlbmN5PTkyMzMwMDAwMFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIFJYMSBkYXRhLXJhdGUgbGVzcyB0aGFuLlxuICAgICNcbiAgICAjIFByZWZlciBSWDIgb3ZlciBSWDEgYmFzZWQgb24gdGhlIFJYMSBkYXRhLXJhdGUuIFdoZW4gdGhlIFJYMSBkYXRhLXJhdGVcbiAgICAjIGlzIHNtYWxsZXIgdGhhbiB0aGUgY29uZmlndXJlZCB2YWx1ZSwgdGhlbiB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbFxuICAgICMgZmlyc3QgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBmb3IgUlgyLCBmYWlsaW5nIHRoYXQgKGUuZy4gdGhlIGdhdGV3YXlcbiAgICAjIGhhcyBhbHJlYWR5IGEgcGF5bG9hZCBzY2hlZHVsZWQgYXQgdGhlIFJYMiB0aW1pbmcpIGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX3J4MV9kcl9sdD0wXG5cbiAgICAjIFByZWZlciBSWDIgb24gbGluayBidWRnZXQuXG4gICAgI1xuICAgICMgV2hlbiB0aGUgbGluay1idWRnZXQgaXMgYmV0dGVyIGZvciBSWDIgdGhhbiBmb3IgUlgxLCB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbCBmaXJzdFxuICAgICMgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBpbiBSWDIsIGZhaWxpbmcgdGhhdCBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9saW5rX2J1ZGdldD1mYWxzZVxuXG4gICAgIyBEb3dubGluayBUWCBQb3dlciAoZEJtKVxuICAgICNcbiAgICAjIFdoZW4gc2V0IHRvIC0xLCB0aGUgZG93bmxpbmsgVFggUG93ZXIgZnJvbSB0aGUgY29uZmlndXJlZCBiYW5kIHdpbGxcbiAgICAjIGJlIHVzZWQuXG4gICAgI1xuICAgICMgUGxlYXNlIGNvbnN1bHQgdGhlIExvUmFXQU4gUmVnaW9uYWwgUGFyYW1ldGVycyBhbmQgbG9jYWwgcmVndWxhdGlvbnNcbiAgICAjIGZvciB2YWxpZCBhbmQgbGVnYWwgb3B0aW9ucy4gTm90ZSB0aGF0IHRoZSBjb25maWd1cmVkIFRYIFBvd2VyIG11c3QgYmVcbiAgICAjIHN1cHBvcnRlZCBieSB5b3VyIGdhdGV3YXkocykuXG4gICAgZG93bmxpbmtfdHhfcG93ZXI9LTFcblxuICAgICMgQURSIGlzIGRpc2FibGVkLlxuICAgIGFkcl9kaXNhYmxlZD1mYWxzZVxuXG4gICAgIyBNaW5pbXVtIGRhdGEtcmF0ZS5cbiAgICBtaW5fZHI9MFxuXG4gICAgIyBNYXhpbXVtIGRhdGEtcmF0ZS5cbiAgICBtYXhfZHI9NVxuXG4gICAgIyBFbmFibGVkIHVwbGluayBjaGFubmVscy5cbiAgICAjXG4gICAgIyBVc2UgdGhpcyB3aGVuIG9ueSBhIHN1Yi1zZXQgb2YgdGhlIGJ5IGRlZmF1bHQgZW5hYmxlZCBjaGFubmVscyBhcmUgYmVpbmdcbiAgICAjIHVzZWQuIEZvciBleGFtcGxlIHdoZW4gb25seSB1c2luZyB0aGUgZmlyc3QgOCBjaGFubmVscyBvZiB0aGUgVVMgYmFuZC5cbiAgICAjIE5vdGU6IHdoZW4gbGVmdCBibGFuayAvIGVtcHR5IGFycmF5LCBhbGwgY2hhbm5lbHMgd2lsbCBiZSBlbmFibGVkLlxuICAgIGVuYWJsZWRfdXBsaW5rX2NoYW5uZWxzPVsxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDY1XVxuXG5cbiAgICAjIFJlam9pbi1yZXF1ZXN0IGNvbmZpZ3VyYXRpb24gKExvUmFXQU4gMS4xKVxuICAgIFtyZWdpb25zLm5ldHdvcmsucmVqb2luX3JlcXVlc3RdXG5cbiAgICAgICMgUmVxdWVzdCBkZXZpY2VzIHRvIHBlcmlvZGljYWxseSBzZW5kIHJlam9pbi1yZXF1ZXN0cy5cbiAgICAgIGVuYWJsZWQ9ZmFsc2VcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfY291bnRfbiArIDQpXG4gICAgICAjIHVwbGluayBtZXNzYWdlcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgbWF4X2NvdW50X249MFxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF90aW1lX24gKyAxMClcbiAgICAgICMgc2Vjb25kcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgI1xuICAgICAgIyAwICA9IHJvdWdobHkgMTcgbWludXRlc1xuICAgICAgIyAxNSA9IGFib3V0IDEgeWVhclxuICAgICAgbWF4X3RpbWVfbj0wXG4gICAgXG5cbiAgICAjIENsYXNzLUIgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5uZXR3b3JrLmNsYXNzX2JdXG5cbiAgICAgICMgUGluZy1zbG90IGRhdGEtcmF0ZS4gXG4gICAgICBwaW5nX3Nsb3RfZHI9OFxuXG4gICAgICAjIFBpbmctc2xvdCBmcmVxdWVuY3kgKEh6KVxuICAgICAgI1xuICAgICAgIyBzZXQgdGhpcyB0byAwIHRvIHVzZSB0aGUgZGVmYXVsdCBmcmVxdWVuY3kgcGxhbiBmb3IgdGhlIGNvbmZpZ3VyZWQgcmVnaW9uXG4gICAgICAjICh3aGljaCBjb3VsZCBiZSBmcmVxdWVuY3kgaG9wcGluZykuXG4gICAgICBwaW5nX3Nsb3RfZnJlcXVlbmN5PTBcblwiXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuc2VydmljZU5hbWUgPSBcImNoaXJwc3RhY2tcIlxuZmlsZVBhdGggPSBcIi9jaGlycHN0YWNrL3JlZ2lvbl9hdTkxNV8zLnRvbWxcIlxuY29udGVudCA9IFwiXCJcIlxuIyBUaGlzIGZpbGUgY29udGFpbnMgYW4gZXhhbXBsZSBBVTkxNSBleGFtcGxlIChjaGFubmVscyAyNC0zMSArIDY3KS5cbltbcmVnaW9uc11dXG5cbiAgIyBJRCBpcyBhbiB1c2UtZGVmaW5lZCBpZGVudGlmaWVyIGZvciB0aGlzIHJlZ2lvbi5cbiAgaWQ9XCJhdTkxNV8zXCJcblxuICAjIERlc2NyaXB0aW9uIGlzIGEgc2hvcnQgZGVzY3JpcHRpb24gZm9yIHRoaXMgcmVnaW9uLlxuICBkZXNjcmlwdGlvbj1cIkFVOTE1IChjaGFubmVscyAyNC0zMSArIDY3KVwiXG5cbiAgIyBDb21tb24tbmFtZSByZWZlcnMgdG8gdGhlIGNvbW1vbi1uYW1lIG9mIHRoaXMgcmVnaW9uIGFzIGRlZmluZWQgYnlcbiAgIyB0aGUgTG9SYSBBbGxpYW5jZS5cbiAgY29tbW9uX25hbWU9XCJBVTkxNVwiXG5cblxuICAjIEdhdGV3YXkgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMuZ2F0ZXdheV1cblxuICAgICMgRm9yY2UgZ2F0ZXdheXMgYXMgcHJpdmF0ZS5cbiAgICAjXG4gICAgIyBJZiBlbmFibGVkLCBnYXRld2F5cyBjYW4gb25seSBiZSB1c2VkIGJ5IGRldmljZXMgdW5kZXIgdGhlIHNhbWUgdGVuYW50LlxuICAgIGZvcmNlX2d3c19wcml2YXRlPWZhbHNlXG5cbiAgICBcbiAgICAjIEdhdGV3YXkgYmFja2VuZCBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZF1cblxuICAgICAgIyBUaGUgZW5hYmxlZCBiYWNrZW5kIHR5cGUuXG4gICAgICBlbmFibGVkPVwibXF0dFwiXG5cbiAgICAgICMgTVFUVCBjb25maWd1cmF0aW9uLlxuICAgICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kLm1xdHRdXG5cbiAgICAgICAgIyBUb3BpYyBwcmVmaXguXG4gICAgICAgICNcbiAgICAgICAgIyBUaGUgdG9waWMgcHJlZml4IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB0aGUgcmVnaW9uIG9mIHRoZSBnYXRld2F5LlxuICAgICAgICAjIE5vdGUsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYWRkIGEgdHJhaWxpbmcgJy8nIHRvIHRoZSBwcmVmaXguIFRoZSB0cmFpbGluZ1xuICAgICAgICAjICcvJyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBwcmVmaXggaWYgaXQgaXMgY29uZmlndXJlZC5cbiAgICAgICAgdG9waWNfcHJlZml4PVwiYXU5MTVfM1wiXG5cbiAgICAgICAgIyBNUVRUIHNlcnZlciAoZS5nLiBzY2hlbWU6Ly9ob3N0OnBvcnQgd2hlcmUgc2NoZW1lIGlzIHRjcCwgc3NsIG9yIHdzKVxuICAgICAgICBzZXJ2ZXI9XCJ0Y3A6Ly9tb3NxdWl0dG86MTg4M1wiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHVzZXJuYW1lIChvcHRpb25hbClcbiAgICAgICAgdXNlcm5hbWU9XCJcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiBwYXNzd29yZCAob3B0aW9uYWwpXG4gICAgICAgIHBhc3N3b3JkPVwiXCJcblxuICAgICAgICAjIFF1YWxpdHkgb2Ygc2VydmljZSBsZXZlbFxuICAgICAgICAjXG4gICAgICAgICMgMDogYXQgbW9zdCBvbmNlXG4gICAgICAgICMgMTogYXQgbGVhc3Qgb25jZVxuICAgICAgICAjIDI6IGV4YWN0bHkgb25jZVxuICAgICAgICAjXG4gICAgICAgICMgTm90ZTogYW4gaW5jcmVhc2Ugb2YgdGhpcyB2YWx1ZSB3aWxsIGRlY3JlYXNlIHRoZSBwZXJmb3JtYW5jZS5cbiAgICAgICAgIyBGb3IgbW9yZSBpbmZvcm1hdGlvbjogaHR0cHM6Ly93d3cuaGl2ZW1xLmNvbS9ibG9nL21xdHQtZXNzZW50aWFscy1wYXJ0LTYtbXF0dC1xdWFsaXR5LW9mLXNlcnZpY2UtbGV2ZWxzXG4gICAgICAgIHFvcz0wXG5cbiAgICAgICAgIyBDbGVhbiBzZXNzaW9uXG4gICAgICAgICNcbiAgICAgICAgIyBTZXQgdGhlIFwiY2xlYW4gc2Vzc2lvblwiIGZsYWcgaW4gdGhlIGNvbm5lY3QgbWVzc2FnZSB3aGVuIHRoaXMgY2xpZW50XG4gICAgICAgICMgY29ubmVjdHMgdG8gYW4gTVFUVCBicm9rZXIuIEJ5IHNldHRpbmcgdGhpcyBmbGFnIHlvdSBhcmUgaW5kaWNhdGluZ1xuICAgICAgICAjIHRoYXQgbm8gbWVzc2FnZXMgc2F2ZWQgYnkgdGhlIGJyb2tlciBmb3IgdGhpcyBjbGllbnQgc2hvdWxkIGJlIGRlbGl2ZXJlZC5cbiAgICAgICAgY2xlYW5fc2Vzc2lvbj1mYWxzZVxuXG4gICAgICAgICMgQ2xpZW50IElEXG4gICAgICAgICNcbiAgICAgICAgIyBTZXQgdGhlIGNsaWVudCBpZCB0byBiZSB1c2VkIGJ5IHRoaXMgY2xpZW50IHdoZW4gY29ubmVjdGluZyB0byB0aGUgTVFUVFxuICAgICAgICAjIGJyb2tlci4gQSBjbGllbnQgaWQgbXVzdCBiZSBubyBsb25nZXIgdGhhbiAyMyBjaGFyYWN0ZXJzLiBJZiBsZWZ0IGJsYW5rLFxuICAgICAgICAjIGEgcmFuZG9tIGlkIHdpbGwgYmUgZ2VuZXJhdGVkIGJ5IENoaXJwU3RhY2suXG4gICAgICAgIGNsaWVudF9pZD1cIlwiXG5cbiAgICAgICAgIyBLZWVwIGFsaXZlIGludGVydmFsLlxuICAgICAgICAjXG4gICAgICAgICMgVGhpcyBkZWZpbmVzIHRoZSBtYXhpbXVtIHRpbWUgdGhhdCB0aGF0IHNob3VsZCBwYXNzIHdpdGhvdXQgY29tbXVuaWNhdGlvblxuICAgICAgICAjIGJldHdlZW4gdGhlIGNsaWVudCBhbmQgc2VydmVyLlxuICAgICAgICBrZWVwX2FsaXZlX2ludGVydmFsPVwiMzBzXCJcblxuICAgICAgICAjIENBIGNlcnRpZmljYXRlIGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICAjXG4gICAgICAgICMgVXNlIHRoaXMgd2hlbiBzZXR0aW5nIHVwIGEgc2VjdXJlIGNvbm5lY3Rpb24gKHdoZW4gc2VydmVyIHVzZXMgc3NsOi8vLi4uKVxuICAgICAgICAjIGJ1dCB0aGUgY2VydGlmaWNhdGUgdXNlZCBieSB0aGUgc2VydmVyIGlzIG5vdCB0cnVzdGVkIGJ5IGFueSBDQSBjZXJ0aWZpY2F0ZVxuICAgICAgICAjIG9uIHRoZSBzZXJ2ZXIgKGUuZy4gd2hlbiBzZWxmIGdlbmVyYXRlZCkuXG4gICAgICAgIGNhX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGNlcnRpZmljYXRlIGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICB0bHNfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMga2V5IGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICB0bHNfa2V5PVwiXCJcblxuXG4gICAgIyBHYXRld2F5IGNoYW5uZWwgY29uZmlndXJhdGlvbi5cbiAgICAjXG4gICAgIyBOb3RlOiB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgb25seSB1c2VkIGluIGNhc2UgdGhlIGdhdGV3YXkgaXMgdXNpbmcgdGhlXG4gICAgIyBDaGlycFN0YWNrIENvbmNlbnRyYXRvcmQgZGFlbW9uLiBJbiBhbnkgb3RoZXIgY2FzZSwgdGhpcyBjb25maWd1cmF0aW9uIFxuICAgICMgaXMgaWdub3JlZC5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTIwMDAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MjAyMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkyMDQwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTIwNjAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MjA4MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkyMTAwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTIxMjAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MjE0MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkyMDcwMDAwMFxuICAgICAgYmFuZHdpZHRoPTUwMDAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzhdXG5cblxuICAjIFJlZ2lvbiBzcGVjaWZpYyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLm5ldHdvcmtdXG4gICAgXG4gICAgIyBJbnN0YWxsYXRpb24gbWFyZ2luIChkQikgdXNlZCBieSB0aGUgQURSIGVuZ2luZS5cbiAgICAjXG4gICAgIyBBIGhpZ2hlciBudW1iZXIgbWVhbnMgdGhhdCB0aGUgbmV0d29yay1zZXJ2ZXIgd2lsbCBrZWVwIG1vcmUgbWFyZ2luLFxuICAgICMgcmVzdWx0aW5nIGluIGEgbG93ZXIgZGF0YS1yYXRlIGJ1dCBkZWNyZWFzaW5nIHRoZSBjaGFuY2UgdGhhdCB0aGVcbiAgICAjIGRldmljZSBnZXRzIGRpc2Nvbm5lY3RlZCBiZWNhdXNlIGl0IGlzIHVuYWJsZSB0byByZWFjaCBvbmUgb2YgdGhlXG4gICAgIyBzdXJyb3VuZGVkIGdhdGV3YXlzLlxuICAgIGluc3RhbGxhdGlvbl9tYXJnaW49MTBcblxuICAgICMgUlggd2luZG93IChDbGFzcy1BKS5cbiAgICAjXG4gICAgIyBTZXQgdGhpcyB0bzpcbiAgICAjIDA6IFJYMSAvIFJYMlxuICAgICMgMTogUlgxIG9ubHlcbiAgICAjIDI6IFJYMiBvbmx5XG4gICAgcnhfd2luZG93PTBcblxuICAgICMgUlgxIGRlbGF5ICgxIC0gMTUgc2Vjb25kcykuXG4gICAgcngxX2RlbGF5PTFcblxuICAgICMgUlgxIGRhdGEtcmF0ZSBvZmZzZXRcbiAgICByeDFfZHJfb2Zmc2V0PTBcblxuICAgICMgUlgyIGRhdGEtcmF0ZVxuICAgIHJ4Ml9kcj04XG5cbiAgICAjIFJYMiBmcmVxdWVuY3kgKEh6KVxuICAgIHJ4Ml9mcmVxdWVuY3k9OTIzMzAwMDAwXG5cbiAgICAjIFByZWZlciBSWDIgb24gUlgxIGRhdGEtcmF0ZSBsZXNzIHRoYW4uXG4gICAgI1xuICAgICMgUHJlZmVyIFJYMiBvdmVyIFJYMSBiYXNlZCBvbiB0aGUgUlgxIGRhdGEtcmF0ZS4gV2hlbiB0aGUgUlgxIGRhdGEtcmF0ZVxuICAgICMgaXMgc21hbGxlciB0aGFuIHRoZSBjb25maWd1cmVkIHZhbHVlLCB0aGVuIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsXG4gICAgIyBmaXJzdCB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGZvciBSWDIsIGZhaWxpbmcgdGhhdCAoZS5nLiB0aGUgZ2F0ZXdheVxuICAgICMgaGFzIGFscmVhZHkgYSBwYXlsb2FkIHNjaGVkdWxlZCBhdCB0aGUgUlgyIHRpbWluZykgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fcngxX2RyX2x0PTBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBsaW5rIGJ1ZGdldC5cbiAgICAjXG4gICAgIyBXaGVuIHRoZSBsaW5rLWJ1ZGdldCBpcyBiZXR0ZXIgZm9yIFJYMiB0aGFuIGZvciBSWDEsIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsIGZpcnN0XG4gICAgIyB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGluIFJYMiwgZmFpbGluZyB0aGF0IGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX2xpbmtfYnVkZ2V0PWZhbHNlXG5cbiAgICAjIERvd25saW5rIFRYIFBvd2VyIChkQm0pXG4gICAgI1xuICAgICMgV2hlbiBzZXQgdG8gLTEsIHRoZSBkb3dubGluayBUWCBQb3dlciBmcm9tIHRoZSBjb25maWd1cmVkIGJhbmQgd2lsbFxuICAgICMgYmUgdXNlZC5cbiAgICAjXG4gICAgIyBQbGVhc2UgY29uc3VsdCB0aGUgTG9SYVdBTiBSZWdpb25hbCBQYXJhbWV0ZXJzIGFuZCBsb2NhbCByZWd1bGF0aW9uc1xuICAgICMgZm9yIHZhbGlkIGFuZCBsZWdhbCBvcHRpb25zLiBOb3RlIHRoYXQgdGhlIGNvbmZpZ3VyZWQgVFggUG93ZXIgbXVzdCBiZVxuICAgICMgc3VwcG9ydGVkIGJ5IHlvdXIgZ2F0ZXdheShzKS5cbiAgICBkb3dubGlua190eF9wb3dlcj0tMVxuXG4gICAgIyBBRFIgaXMgZGlzYWJsZWQuXG4gICAgYWRyX2Rpc2FibGVkPWZhbHNlXG5cbiAgICAjIE1pbmltdW0gZGF0YS1yYXRlLlxuICAgIG1pbl9kcj0wXG5cbiAgICAjIE1heGltdW0gZGF0YS1yYXRlLlxuICAgIG1heF9kcj01XG5cbiAgICAjIEVuYWJsZWQgdXBsaW5rIGNoYW5uZWxzLlxuICAgICNcbiAgICAjIFVzZSB0aGlzIHdoZW4gb255IGEgc3ViLXNldCBvZiB0aGUgYnkgZGVmYXVsdCBlbmFibGVkIGNoYW5uZWxzIGFyZSBiZWluZ1xuICAgICMgdXNlZC4gRm9yIGV4YW1wbGUgd2hlbiBvbmx5IHVzaW5nIHRoZSBmaXJzdCA4IGNoYW5uZWxzIG9mIHRoZSBVUyBiYW5kLlxuICAgICMgTm90ZTogd2hlbiBsZWZ0IGJsYW5rIC8gZW1wdHkgYXJyYXksIGFsbCBjaGFubmVscyB3aWxsIGJlIGVuYWJsZWQuXG4gICAgZW5hYmxlZF91cGxpbmtfY2hhbm5lbHM9WzI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgNjddXG5cblxuICAgICMgUmVqb2luLXJlcXVlc3QgY29uZmlndXJhdGlvbiAoTG9SYVdBTiAxLjEpXG4gICAgW3JlZ2lvbnMubmV0d29yay5yZWpvaW5fcmVxdWVzdF1cblxuICAgICAgIyBSZXF1ZXN0IGRldmljZXMgdG8gcGVyaW9kaWNhbGx5IHNlbmQgcmVqb2luLXJlcXVlc3RzLlxuICAgICAgZW5hYmxlZD1mYWxzZVxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF9jb3VudF9uICsgNClcbiAgICAgICMgdXBsaW5rIG1lc3NhZ2VzLiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gMTUuXG4gICAgICBtYXhfY291bnRfbj0wXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X3RpbWVfbiArIDEwKVxuICAgICAgIyBzZWNvbmRzLiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gMTUuXG4gICAgICAjXG4gICAgICAjIDAgID0gcm91Z2hseSAxNyBtaW51dGVzXG4gICAgICAjIDE1ID0gYWJvdXQgMSB5ZWFyXG4gICAgICBtYXhfdGltZV9uPTBcbiAgICBcblxuICAgICMgQ2xhc3MtQiBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLm5ldHdvcmsuY2xhc3NfYl1cblxuICAgICAgIyBQaW5nLXNsb3QgZGF0YS1yYXRlLiBcbiAgICAgIHBpbmdfc2xvdF9kcj04XG5cbiAgICAgICMgUGluZy1zbG90IGZyZXF1ZW5jeSAoSHopXG4gICAgICAjXG4gICAgICAjIHNldCB0aGlzIHRvIDAgdG8gdXNlIHRoZSBkZWZhdWx0IGZyZXF1ZW5jeSBwbGFuIGZvciB0aGUgY29uZmlndXJlZCByZWdpb25cbiAgICAgICMgKHdoaWNoIGNvdWxkIGJlIGZyZXF1ZW5jeSBob3BwaW5nKS5cbiAgICAgIHBpbmdfc2xvdF9mcmVxdWVuY3k9MFxuXCJcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5zZXJ2aWNlTmFtZSA9IFwiY2hpcnBzdGFja1wiXG5maWxlUGF0aCA9IFwiL2NoaXJwc3RhY2svcmVnaW9uX2F1OTE1XzQudG9tbFwiXG5jb250ZW50ID0gXCJcIlwiXG4jIFRoaXMgZmlsZSBjb250YWlucyBhbiBleGFtcGxlIEFVOTE1IGV4YW1wbGUgKGNoYW5uZWxzIDMyLTM5ICsgNjgpLlxuW1tyZWdpb25zXV1cblxuICAjIElEIGlzIGFuIHVzZS1kZWZpbmVkIGlkZW50aWZpZXIgZm9yIHRoaXMgcmVnaW9uLlxuICBpZD1cImF1OTE1XzRcIlxuXG4gICMgRGVzY3JpcHRpb24gaXMgYSBzaG9ydCBkZXNjcmlwdGlvbiBmb3IgdGhpcyByZWdpb24uXG4gIGRlc2NyaXB0aW9uPVwiQVU5MTUgKGNoYW5uZWxzIDMyLTM5ICsgNjgpXCJcblxuICAjIENvbW1vbi1uYW1lIHJlZmVycyB0byB0aGUgY29tbW9uLW5hbWUgb2YgdGhpcyByZWdpb24gYXMgZGVmaW5lZCBieVxuICAjIHRoZSBMb1JhIEFsbGlhbmNlLlxuICBjb21tb25fbmFtZT1cIkFVOTE1XCJcblxuXG4gICMgR2F0ZXdheSBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5nYXRld2F5XVxuXG4gICAgIyBGb3JjZSBnYXRld2F5cyBhcyBwcml2YXRlLlxuICAgICNcbiAgICAjIElmIGVuYWJsZWQsIGdhdGV3YXlzIGNhbiBvbmx5IGJlIHVzZWQgYnkgZGV2aWNlcyB1bmRlciB0aGUgc2FtZSB0ZW5hbnQuXG4gICAgZm9yY2VfZ3dzX3ByaXZhdGU9ZmFsc2VcblxuICAgIFxuICAgICMgR2F0ZXdheSBiYWNrZW5kIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kXVxuXG4gICAgICAjIFRoZSBlbmFibGVkIGJhY2tlbmQgdHlwZS5cbiAgICAgIGVuYWJsZWQ9XCJtcXR0XCJcblxuICAgICAgIyBNUVRUIGNvbmZpZ3VyYXRpb24uXG4gICAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmQubXF0dF1cblxuICAgICAgICAjIFRvcGljIHByZWZpeC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoZSB0b3BpYyBwcmVmaXggY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHRoZSByZWdpb24gb2YgdGhlIGdhdGV3YXkuXG4gICAgICAgICMgTm90ZSwgdGhlcmUgaXMgbm8gbmVlZCB0byBhZGQgYSB0cmFpbGluZyAnLycgdG8gdGhlIHByZWZpeC4gVGhlIHRyYWlsaW5nXG4gICAgICAgICMgJy8nIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIHByZWZpeCBpZiBpdCBpcyBjb25maWd1cmVkLlxuICAgICAgICB0b3BpY19wcmVmaXg9XCJhdTkxNV80XCJcblxuICAgICAgICAjIE1RVFQgc2VydmVyIChlLmcuIHNjaGVtZTovL2hvc3Q6cG9ydCB3aGVyZSBzY2hlbWUgaXMgdGNwLCBzc2wgb3Igd3MpXG4gICAgICAgIHNlcnZlcj1cInRjcDovL21vc3F1aXR0bzoxODgzXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gdXNlcm5hbWUgKG9wdGlvbmFsKVxuICAgICAgICB1c2VybmFtZT1cIlwiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHBhc3N3b3JkIChvcHRpb25hbClcbiAgICAgICAgcGFzc3dvcmQ9XCJcIlxuXG4gICAgICAgICMgUXVhbGl0eSBvZiBzZXJ2aWNlIGxldmVsXG4gICAgICAgICNcbiAgICAgICAgIyAwOiBhdCBtb3N0IG9uY2VcbiAgICAgICAgIyAxOiBhdCBsZWFzdCBvbmNlXG4gICAgICAgICMgMjogZXhhY3RseSBvbmNlXG4gICAgICAgICNcbiAgICAgICAgIyBOb3RlOiBhbiBpbmNyZWFzZSBvZiB0aGlzIHZhbHVlIHdpbGwgZGVjcmVhc2UgdGhlIHBlcmZvcm1hbmNlLlxuICAgICAgICAjIEZvciBtb3JlIGluZm9ybWF0aW9uOiBodHRwczovL3d3dy5oaXZlbXEuY29tL2Jsb2cvbXF0dC1lc3NlbnRpYWxzLXBhcnQtNi1tcXR0LXF1YWxpdHktb2Ytc2VydmljZS1sZXZlbHNcbiAgICAgICAgcW9zPTBcblxuICAgICAgICAjIENsZWFuIHNlc3Npb25cbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgXCJjbGVhbiBzZXNzaW9uXCIgZmxhZyBpbiB0aGUgY29ubmVjdCBtZXNzYWdlIHdoZW4gdGhpcyBjbGllbnRcbiAgICAgICAgIyBjb25uZWN0cyB0byBhbiBNUVRUIGJyb2tlci4gQnkgc2V0dGluZyB0aGlzIGZsYWcgeW91IGFyZSBpbmRpY2F0aW5nXG4gICAgICAgICMgdGhhdCBubyBtZXNzYWdlcyBzYXZlZCBieSB0aGUgYnJva2VyIGZvciB0aGlzIGNsaWVudCBzaG91bGQgYmUgZGVsaXZlcmVkLlxuICAgICAgICBjbGVhbl9zZXNzaW9uPWZhbHNlXG5cbiAgICAgICAgIyBDbGllbnQgSURcbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgY2xpZW50IGlkIHRvIGJlIHVzZWQgYnkgdGhpcyBjbGllbnQgd2hlbiBjb25uZWN0aW5nIHRvIHRoZSBNUVRUXG4gICAgICAgICMgYnJva2VyLiBBIGNsaWVudCBpZCBtdXN0IGJlIG5vIGxvbmdlciB0aGFuIDIzIGNoYXJhY3RlcnMuIElmIGxlZnQgYmxhbmssXG4gICAgICAgICMgYSByYW5kb20gaWQgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgQ2hpcnBTdGFjay5cbiAgICAgICAgY2xpZW50X2lkPVwiXCJcblxuICAgICAgICAjIEtlZXAgYWxpdmUgaW50ZXJ2YWwuXG4gICAgICAgICNcbiAgICAgICAgIyBUaGlzIGRlZmluZXMgdGhlIG1heGltdW0gdGltZSB0aGF0IHRoYXQgc2hvdWxkIHBhc3Mgd2l0aG91dCBjb21tdW5pY2F0aW9uXG4gICAgICAgICMgYmV0d2VlbiB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIuXG4gICAgICAgIGtlZXBfYWxpdmVfaW50ZXJ2YWw9XCIzMHNcIlxuXG4gICAgICAgICMgQ0EgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgICNcbiAgICAgICAgIyBVc2UgdGhpcyB3aGVuIHNldHRpbmcgdXAgYSBzZWN1cmUgY29ubmVjdGlvbiAod2hlbiBzZXJ2ZXIgdXNlcyBzc2w6Ly8uLi4pXG4gICAgICAgICMgYnV0IHRoZSBjZXJ0aWZpY2F0ZSB1c2VkIGJ5IHRoZSBzZXJ2ZXIgaXMgbm90IHRydXN0ZWQgYnkgYW55IENBIGNlcnRpZmljYXRlXG4gICAgICAgICMgb24gdGhlIHNlcnZlciAoZS5nLiB3aGVuIHNlbGYgZ2VuZXJhdGVkKS5cbiAgICAgICAgY2FfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBrZXkgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19rZXk9XCJcIlxuXG5cbiAgICAjIEdhdGV3YXkgY2hhbm5lbCBjb25maWd1cmF0aW9uLlxuICAgICNcbiAgICAjIE5vdGU6IHRoaXMgY29uZmlndXJhdGlvbiBpcyBvbmx5IHVzZWQgaW4gY2FzZSB0aGUgZ2F0ZXdheSBpcyB1c2luZyB0aGVcbiAgICAjIENoaXJwU3RhY2sgQ29uY2VudHJhdG9yZCBkYWVtb24uIEluIGFueSBvdGhlciBjYXNlLCB0aGlzIGNvbmZpZ3VyYXRpb24gXG4gICAgIyBpcyBpZ25vcmVkLlxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MjE2MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkyMTgwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTIyMDAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MjIyMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkyMjQwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTIyNjAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MjI4MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkyMzAwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTIyMzAwMDAwXG4gICAgICBiYW5kd2lkdGg9NTAwMDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bOF1cblxuXG4gICMgUmVnaW9uIHNwZWNpZmljIG5ldHdvcmsgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMubmV0d29ya11cbiAgICBcbiAgICAjIEluc3RhbGxhdGlvbiBtYXJnaW4gKGRCKSB1c2VkIGJ5IHRoZSBBRFIgZW5naW5lLlxuICAgICNcbiAgICAjIEEgaGlnaGVyIG51bWJlciBtZWFucyB0aGF0IHRoZSBuZXR3b3JrLXNlcnZlciB3aWxsIGtlZXAgbW9yZSBtYXJnaW4sXG4gICAgIyByZXN1bHRpbmcgaW4gYSBsb3dlciBkYXRhLXJhdGUgYnV0IGRlY3JlYXNpbmcgdGhlIGNoYW5jZSB0aGF0IHRoZVxuICAgICMgZGV2aWNlIGdldHMgZGlzY29ubmVjdGVkIGJlY2F1c2UgaXQgaXMgdW5hYmxlIHRvIHJlYWNoIG9uZSBvZiB0aGVcbiAgICAjIHN1cnJvdW5kZWQgZ2F0ZXdheXMuXG4gICAgaW5zdGFsbGF0aW9uX21hcmdpbj0xMFxuXG4gICAgIyBSWCB3aW5kb3cgKENsYXNzLUEpLlxuICAgICNcbiAgICAjIFNldCB0aGlzIHRvOlxuICAgICMgMDogUlgxIC8gUlgyXG4gICAgIyAxOiBSWDEgb25seVxuICAgICMgMjogUlgyIG9ubHlcbiAgICByeF93aW5kb3c9MFxuXG4gICAgIyBSWDEgZGVsYXkgKDEgLSAxNSBzZWNvbmRzKS5cbiAgICByeDFfZGVsYXk9MVxuXG4gICAgIyBSWDEgZGF0YS1yYXRlIG9mZnNldFxuICAgIHJ4MV9kcl9vZmZzZXQ9MFxuXG4gICAgIyBSWDIgZGF0YS1yYXRlXG4gICAgcngyX2RyPThcblxuICAgICMgUlgyIGZyZXF1ZW5jeSAoSHopXG4gICAgcngyX2ZyZXF1ZW5jeT05MjMzMDAwMDBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBSWDEgZGF0YS1yYXRlIGxlc3MgdGhhbi5cbiAgICAjXG4gICAgIyBQcmVmZXIgUlgyIG92ZXIgUlgxIGJhc2VkIG9uIHRoZSBSWDEgZGF0YS1yYXRlLiBXaGVuIHRoZSBSWDEgZGF0YS1yYXRlXG4gICAgIyBpcyBzbWFsbGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgdmFsdWUsIHRoZW4gdGhlIE5ldHdvcmsgU2VydmVyIHdpbGxcbiAgICAjIGZpcnN0IHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgZm9yIFJYMiwgZmFpbGluZyB0aGF0IChlLmcuIHRoZSBnYXRld2F5XG4gICAgIyBoYXMgYWxyZWFkeSBhIHBheWxvYWQgc2NoZWR1bGVkIGF0IHRoZSBSWDIgdGltaW5nKSBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9yeDFfZHJfbHQ9MFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIGxpbmsgYnVkZ2V0LlxuICAgICNcbiAgICAjIFdoZW4gdGhlIGxpbmstYnVkZ2V0IGlzIGJldHRlciBmb3IgUlgyIHRoYW4gZm9yIFJYMSwgdGhlIE5ldHdvcmsgU2VydmVyIHdpbGwgZmlyc3RcbiAgICAjIHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgaW4gUlgyLCBmYWlsaW5nIHRoYXQgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fbGlua19idWRnZXQ9ZmFsc2VcblxuICAgICMgRG93bmxpbmsgVFggUG93ZXIgKGRCbSlcbiAgICAjXG4gICAgIyBXaGVuIHNldCB0byAtMSwgdGhlIGRvd25saW5rIFRYIFBvd2VyIGZyb20gdGhlIGNvbmZpZ3VyZWQgYmFuZCB3aWxsXG4gICAgIyBiZSB1c2VkLlxuICAgICNcbiAgICAjIFBsZWFzZSBjb25zdWx0IHRoZSBMb1JhV0FOIFJlZ2lvbmFsIFBhcmFtZXRlcnMgYW5kIGxvY2FsIHJlZ3VsYXRpb25zXG4gICAgIyBmb3IgdmFsaWQgYW5kIGxlZ2FsIG9wdGlvbnMuIE5vdGUgdGhhdCB0aGUgY29uZmlndXJlZCBUWCBQb3dlciBtdXN0IGJlXG4gICAgIyBzdXBwb3J0ZWQgYnkgeW91ciBnYXRld2F5KHMpLlxuICAgIGRvd25saW5rX3R4X3Bvd2VyPS0xXG5cbiAgICAjIEFEUiBpcyBkaXNhYmxlZC5cbiAgICBhZHJfZGlzYWJsZWQ9ZmFsc2VcblxuICAgICMgTWluaW11bSBkYXRhLXJhdGUuXG4gICAgbWluX2RyPTBcblxuICAgICMgTWF4aW11bSBkYXRhLXJhdGUuXG4gICAgbWF4X2RyPTVcblxuICAgICMgRW5hYmxlZCB1cGxpbmsgY2hhbm5lbHMuXG4gICAgI1xuICAgICMgVXNlIHRoaXMgd2hlbiBvbnkgYSBzdWItc2V0IG9mIHRoZSBieSBkZWZhdWx0IGVuYWJsZWQgY2hhbm5lbHMgYXJlIGJlaW5nXG4gICAgIyB1c2VkLiBGb3IgZXhhbXBsZSB3aGVuIG9ubHkgdXNpbmcgdGhlIGZpcnN0IDggY2hhbm5lbHMgb2YgdGhlIFVTIGJhbmQuXG4gICAgIyBOb3RlOiB3aGVuIGxlZnQgYmxhbmsgLyBlbXB0eSBhcnJheSwgYWxsIGNoYW5uZWxzIHdpbGwgYmUgZW5hYmxlZC5cbiAgICBlbmFibGVkX3VwbGlua19jaGFubmVscz1bMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5LCA2OF1cblxuXG4gICAgIyBSZWpvaW4tcmVxdWVzdCBjb25maWd1cmF0aW9uIChMb1JhV0FOIDEuMSlcbiAgICBbcmVnaW9ucy5uZXR3b3JrLnJlam9pbl9yZXF1ZXN0XVxuXG4gICAgICAjIFJlcXVlc3QgZGV2aWNlcyB0byBwZXJpb2RpY2FsbHkgc2VuZCByZWpvaW4tcmVxdWVzdHMuXG4gICAgICBlbmFibGVkPWZhbHNlXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X2NvdW50X24gKyA0KVxuICAgICAgIyB1cGxpbmsgbWVzc2FnZXMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgIG1heF9jb3VudF9uPTBcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfdGltZV9uICsgMTApXG4gICAgICAjIHNlY29uZHMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgICNcbiAgICAgICMgMCAgPSByb3VnaGx5IDE3IG1pbnV0ZXNcbiAgICAgICMgMTUgPSBhYm91dCAxIHllYXJcbiAgICAgIG1heF90aW1lX249MFxuICAgIFxuXG4gICAgIyBDbGFzcy1CIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMubmV0d29yay5jbGFzc19iXVxuXG4gICAgICAjIFBpbmctc2xvdCBkYXRhLXJhdGUuIFxuICAgICAgcGluZ19zbG90X2RyPThcblxuICAgICAgIyBQaW5nLXNsb3QgZnJlcXVlbmN5IChIeilcbiAgICAgICNcbiAgICAgICMgc2V0IHRoaXMgdG8gMCB0byB1c2UgdGhlIGRlZmF1bHQgZnJlcXVlbmN5IHBsYW4gZm9yIHRoZSBjb25maWd1cmVkIHJlZ2lvblxuICAgICAgIyAod2hpY2ggY291bGQgYmUgZnJlcXVlbmN5IGhvcHBpbmcpLlxuICAgICAgcGluZ19zbG90X2ZyZXF1ZW5jeT0wXG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbnNlcnZpY2VOYW1lID0gXCJjaGlycHN0YWNrXCJcbmZpbGVQYXRoID0gXCIvY2hpcnBzdGFjay9yZWdpb25fYXU5MTVfNS50b21sXCJcbmNvbnRlbnQgPSBcIlwiXCJcbiMgVGhpcyBmaWxlIGNvbnRhaW5zIGFuIGV4YW1wbGUgQVU5MTUgZXhhbXBsZSAoY2hhbm5lbHMgNDAtNDcgKyA2OSkuXG5bW3JlZ2lvbnNdXVxuXG4gICMgSUQgaXMgYW4gdXNlLWRlZmluZWQgaWRlbnRpZmllciBmb3IgdGhpcyByZWdpb24uXG4gIGlkPVwiYXU5MTVfNVwiXG5cbiAgIyBEZXNjcmlwdGlvbiBpcyBhIHNob3J0IGRlc2NyaXB0aW9uIGZvciB0aGlzIHJlZ2lvbi5cbiAgZGVzY3JpcHRpb249XCJBVTkxNSAoY2hhbm5lbHMgNDAtNDcgKyA2OSlcIlxuXG4gICMgQ29tbW9uLW5hbWUgcmVmZXJzIHRvIHRoZSBjb21tb24tbmFtZSBvZiB0aGlzIHJlZ2lvbiBhcyBkZWZpbmVkIGJ5XG4gICMgdGhlIExvUmEgQWxsaWFuY2UuXG4gIGNvbW1vbl9uYW1lPVwiQVU5MTVcIlxuXG5cbiAgIyBHYXRld2F5IGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLmdhdGV3YXldXG5cbiAgICAjIEZvcmNlIGdhdGV3YXlzIGFzIHByaXZhdGUuXG4gICAgI1xuICAgICMgSWYgZW5hYmxlZCwgZ2F0ZXdheXMgY2FuIG9ubHkgYmUgdXNlZCBieSBkZXZpY2VzIHVuZGVyIHRoZSBzYW1lIHRlbmFudC5cbiAgICBmb3JjZV9nd3NfcHJpdmF0ZT1mYWxzZVxuXG4gICAgXG4gICAgIyBHYXRld2F5IGJhY2tlbmQgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmRdXG5cbiAgICAgICMgVGhlIGVuYWJsZWQgYmFja2VuZCB0eXBlLlxuICAgICAgZW5hYmxlZD1cIm1xdHRcIlxuXG4gICAgICAjIE1RVFQgY29uZmlndXJhdGlvbi5cbiAgICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZC5tcXR0XVxuXG4gICAgICAgICMgVG9waWMgcHJlZml4LlxuICAgICAgICAjXG4gICAgICAgICMgVGhlIHRvcGljIHByZWZpeCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgdGhlIHJlZ2lvbiBvZiB0aGUgZ2F0ZXdheS5cbiAgICAgICAgIyBOb3RlLCB0aGVyZSBpcyBubyBuZWVkIHRvIGFkZCBhIHRyYWlsaW5nICcvJyB0byB0aGUgcHJlZml4LiBUaGUgdHJhaWxpbmdcbiAgICAgICAgIyAnLycgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgcHJlZml4IGlmIGl0IGlzIGNvbmZpZ3VyZWQuXG4gICAgICAgIHRvcGljX3ByZWZpeD1cImF1OTE1XzVcIlxuXG4gICAgICAgICMgTVFUVCBzZXJ2ZXIgKGUuZy4gc2NoZW1lOi8vaG9zdDpwb3J0IHdoZXJlIHNjaGVtZSBpcyB0Y3AsIHNzbCBvciB3cylcbiAgICAgICAgc2VydmVyPVwidGNwOi8vbW9zcXVpdHRvOjE4ODNcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiB1c2VybmFtZSAob3B0aW9uYWwpXG4gICAgICAgIHVzZXJuYW1lPVwiXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gcGFzc3dvcmQgKG9wdGlvbmFsKVxuICAgICAgICBwYXNzd29yZD1cIlwiXG5cbiAgICAgICAgIyBRdWFsaXR5IG9mIHNlcnZpY2UgbGV2ZWxcbiAgICAgICAgI1xuICAgICAgICAjIDA6IGF0IG1vc3Qgb25jZVxuICAgICAgICAjIDE6IGF0IGxlYXN0IG9uY2VcbiAgICAgICAgIyAyOiBleGFjdGx5IG9uY2VcbiAgICAgICAgI1xuICAgICAgICAjIE5vdGU6IGFuIGluY3JlYXNlIG9mIHRoaXMgdmFsdWUgd2lsbCBkZWNyZWFzZSB0aGUgcGVyZm9ybWFuY2UuXG4gICAgICAgICMgRm9yIG1vcmUgaW5mb3JtYXRpb246IGh0dHBzOi8vd3d3LmhpdmVtcS5jb20vYmxvZy9tcXR0LWVzc2VudGlhbHMtcGFydC02LW1xdHQtcXVhbGl0eS1vZi1zZXJ2aWNlLWxldmVsc1xuICAgICAgICBxb3M9MFxuXG4gICAgICAgICMgQ2xlYW4gc2Vzc2lvblxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBcImNsZWFuIHNlc3Npb25cIiBmbGFnIGluIHRoZSBjb25uZWN0IG1lc3NhZ2Ugd2hlbiB0aGlzIGNsaWVudFxuICAgICAgICAjIGNvbm5lY3RzIHRvIGFuIE1RVFQgYnJva2VyLiBCeSBzZXR0aW5nIHRoaXMgZmxhZyB5b3UgYXJlIGluZGljYXRpbmdcbiAgICAgICAgIyB0aGF0IG5vIG1lc3NhZ2VzIHNhdmVkIGJ5IHRoZSBicm9rZXIgZm9yIHRoaXMgY2xpZW50IHNob3VsZCBiZSBkZWxpdmVyZWQuXG4gICAgICAgIGNsZWFuX3Nlc3Npb249ZmFsc2VcblxuICAgICAgICAjIENsaWVudCBJRFxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBjbGllbnQgaWQgdG8gYmUgdXNlZCBieSB0aGlzIGNsaWVudCB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIE1RVFRcbiAgICAgICAgIyBicm9rZXIuIEEgY2xpZW50IGlkIG11c3QgYmUgbm8gbG9uZ2VyIHRoYW4gMjMgY2hhcmFjdGVycy4gSWYgbGVmdCBibGFuayxcbiAgICAgICAgIyBhIHJhbmRvbSBpZCB3aWxsIGJlIGdlbmVyYXRlZCBieSBDaGlycFN0YWNrLlxuICAgICAgICBjbGllbnRfaWQ9XCJcIlxuXG4gICAgICAgICMgS2VlcCBhbGl2ZSBpbnRlcnZhbC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoaXMgZGVmaW5lcyB0aGUgbWF4aW11bSB0aW1lIHRoYXQgdGhhdCBzaG91bGQgcGFzcyB3aXRob3V0IGNvbW11bmljYXRpb25cbiAgICAgICAgIyBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlci5cbiAgICAgICAga2VlcF9hbGl2ZV9pbnRlcnZhbD1cIjMwc1wiXG5cbiAgICAgICAgIyBDQSBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgI1xuICAgICAgICAjIFVzZSB0aGlzIHdoZW4gc2V0dGluZyB1cCBhIHNlY3VyZSBjb25uZWN0aW9uICh3aGVuIHNlcnZlciB1c2VzIHNzbDovLy4uLilcbiAgICAgICAgIyBidXQgdGhlIGNlcnRpZmljYXRlIHVzZWQgYnkgdGhlIHNlcnZlciBpcyBub3QgdHJ1c3RlZCBieSBhbnkgQ0EgY2VydGlmaWNhdGVcbiAgICAgICAgIyBvbiB0aGUgc2VydmVyIChlLmcuIHdoZW4gc2VsZiBnZW5lcmF0ZWQpLlxuICAgICAgICBjYV9jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGtleSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2tleT1cIlwiXG5cblxuICAgICMgR2F0ZXdheSBjaGFubmVsIGNvbmZpZ3VyYXRpb24uXG4gICAgI1xuICAgICMgTm90ZTogdGhpcyBjb25maWd1cmF0aW9uIGlzIG9ubHkgdXNlZCBpbiBjYXNlIHRoZSBnYXRld2F5IGlzIHVzaW5nIHRoZVxuICAgICMgQ2hpcnBTdGFjayBDb25jZW50cmF0b3JkIGRhZW1vbi4gSW4gYW55IG90aGVyIGNhc2UsIHRoaXMgY29uZmlndXJhdGlvbiBcbiAgICAjIGlzIGlnbm9yZWQuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkyMzIwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTIzNDAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MjM2MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkyMzgwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTI0MDAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MjQyMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkyNDQwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTI0NjAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MjM5MDAwMDBcbiAgICAgIGJhbmR3aWR0aD01MDAwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs4XVxuXG5cbiAgIyBSZWdpb24gc3BlY2lmaWMgbmV0d29yayBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5uZXR3b3JrXVxuICAgIFxuICAgICMgSW5zdGFsbGF0aW9uIG1hcmdpbiAoZEIpIHVzZWQgYnkgdGhlIEFEUiBlbmdpbmUuXG4gICAgI1xuICAgICMgQSBoaWdoZXIgbnVtYmVyIG1lYW5zIHRoYXQgdGhlIG5ldHdvcmstc2VydmVyIHdpbGwga2VlcCBtb3JlIG1hcmdpbixcbiAgICAjIHJlc3VsdGluZyBpbiBhIGxvd2VyIGRhdGEtcmF0ZSBidXQgZGVjcmVhc2luZyB0aGUgY2hhbmNlIHRoYXQgdGhlXG4gICAgIyBkZXZpY2UgZ2V0cyBkaXNjb25uZWN0ZWQgYmVjYXVzZSBpdCBpcyB1bmFibGUgdG8gcmVhY2ggb25lIG9mIHRoZVxuICAgICMgc3Vycm91bmRlZCBnYXRld2F5cy5cbiAgICBpbnN0YWxsYXRpb25fbWFyZ2luPTEwXG5cbiAgICAjIFJYIHdpbmRvdyAoQ2xhc3MtQSkuXG4gICAgI1xuICAgICMgU2V0IHRoaXMgdG86XG4gICAgIyAwOiBSWDEgLyBSWDJcbiAgICAjIDE6IFJYMSBvbmx5XG4gICAgIyAyOiBSWDIgb25seVxuICAgIHJ4X3dpbmRvdz0wXG5cbiAgICAjIFJYMSBkZWxheSAoMSAtIDE1IHNlY29uZHMpLlxuICAgIHJ4MV9kZWxheT0xXG5cbiAgICAjIFJYMSBkYXRhLXJhdGUgb2Zmc2V0XG4gICAgcngxX2RyX29mZnNldD0wXG5cbiAgICAjIFJYMiBkYXRhLXJhdGVcbiAgICByeDJfZHI9OFxuXG4gICAgIyBSWDIgZnJlcXVlbmN5IChIeilcbiAgICByeDJfZnJlcXVlbmN5PTkyMzMwMDAwMFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIFJYMSBkYXRhLXJhdGUgbGVzcyB0aGFuLlxuICAgICNcbiAgICAjIFByZWZlciBSWDIgb3ZlciBSWDEgYmFzZWQgb24gdGhlIFJYMSBkYXRhLXJhdGUuIFdoZW4gdGhlIFJYMSBkYXRhLXJhdGVcbiAgICAjIGlzIHNtYWxsZXIgdGhhbiB0aGUgY29uZmlndXJlZCB2YWx1ZSwgdGhlbiB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbFxuICAgICMgZmlyc3QgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBmb3IgUlgyLCBmYWlsaW5nIHRoYXQgKGUuZy4gdGhlIGdhdGV3YXlcbiAgICAjIGhhcyBhbHJlYWR5IGEgcGF5bG9hZCBzY2hlZHVsZWQgYXQgdGhlIFJYMiB0aW1pbmcpIGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX3J4MV9kcl9sdD0wXG5cbiAgICAjIFByZWZlciBSWDIgb24gbGluayBidWRnZXQuXG4gICAgI1xuICAgICMgV2hlbiB0aGUgbGluay1idWRnZXQgaXMgYmV0dGVyIGZvciBSWDIgdGhhbiBmb3IgUlgxLCB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbCBmaXJzdFxuICAgICMgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBpbiBSWDIsIGZhaWxpbmcgdGhhdCBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9saW5rX2J1ZGdldD1mYWxzZVxuXG4gICAgIyBEb3dubGluayBUWCBQb3dlciAoZEJtKVxuICAgICNcbiAgICAjIFdoZW4gc2V0IHRvIC0xLCB0aGUgZG93bmxpbmsgVFggUG93ZXIgZnJvbSB0aGUgY29uZmlndXJlZCBiYW5kIHdpbGxcbiAgICAjIGJlIHVzZWQuXG4gICAgI1xuICAgICMgUGxlYXNlIGNvbnN1bHQgdGhlIExvUmFXQU4gUmVnaW9uYWwgUGFyYW1ldGVycyBhbmQgbG9jYWwgcmVndWxhdGlvbnNcbiAgICAjIGZvciB2YWxpZCBhbmQgbGVnYWwgb3B0aW9ucy4gTm90ZSB0aGF0IHRoZSBjb25maWd1cmVkIFRYIFBvd2VyIG11c3QgYmVcbiAgICAjIHN1cHBvcnRlZCBieSB5b3VyIGdhdGV3YXkocykuXG4gICAgZG93bmxpbmtfdHhfcG93ZXI9LTFcblxuICAgICMgQURSIGlzIGRpc2FibGVkLlxuICAgIGFkcl9kaXNhYmxlZD1mYWxzZVxuXG4gICAgIyBNaW5pbXVtIGRhdGEtcmF0ZS5cbiAgICBtaW5fZHI9MFxuXG4gICAgIyBNYXhpbXVtIGRhdGEtcmF0ZS5cbiAgICBtYXhfZHI9NVxuXG4gICAgIyBFbmFibGVkIHVwbGluayBjaGFubmVscy5cbiAgICAjXG4gICAgIyBVc2UgdGhpcyB3aGVuIG9ueSBhIHN1Yi1zZXQgb2YgdGhlIGJ5IGRlZmF1bHQgZW5hYmxlZCBjaGFubmVscyBhcmUgYmVpbmdcbiAgICAjIHVzZWQuIEZvciBleGFtcGxlIHdoZW4gb25seSB1c2luZyB0aGUgZmlyc3QgOCBjaGFubmVscyBvZiB0aGUgVVMgYmFuZC5cbiAgICAjIE5vdGU6IHdoZW4gbGVmdCBibGFuayAvIGVtcHR5IGFycmF5LCBhbGwgY2hhbm5lbHMgd2lsbCBiZSBlbmFibGVkLlxuICAgIGVuYWJsZWRfdXBsaW5rX2NoYW5uZWxzPVs0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDY5XVxuXG5cbiAgICAjIFJlam9pbi1yZXF1ZXN0IGNvbmZpZ3VyYXRpb24gKExvUmFXQU4gMS4xKVxuICAgIFtyZWdpb25zLm5ldHdvcmsucmVqb2luX3JlcXVlc3RdXG5cbiAgICAgICMgUmVxdWVzdCBkZXZpY2VzIHRvIHBlcmlvZGljYWxseSBzZW5kIHJlam9pbi1yZXF1ZXN0cy5cbiAgICAgIGVuYWJsZWQ9ZmFsc2VcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfY291bnRfbiArIDQpXG4gICAgICAjIHVwbGluayBtZXNzYWdlcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgbWF4X2NvdW50X249MFxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF90aW1lX24gKyAxMClcbiAgICAgICMgc2Vjb25kcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgI1xuICAgICAgIyAwICA9IHJvdWdobHkgMTcgbWludXRlc1xuICAgICAgIyAxNSA9IGFib3V0IDEgeWVhclxuICAgICAgbWF4X3RpbWVfbj0wXG4gICAgXG5cbiAgICAjIENsYXNzLUIgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5uZXR3b3JrLmNsYXNzX2JdXG5cbiAgICAgICMgUGluZy1zbG90IGRhdGEtcmF0ZS4gXG4gICAgICBwaW5nX3Nsb3RfZHI9OFxuXG4gICAgICAjIFBpbmctc2xvdCBmcmVxdWVuY3kgKEh6KVxuICAgICAgI1xuICAgICAgIyBzZXQgdGhpcyB0byAwIHRvIHVzZSB0aGUgZGVmYXVsdCBmcmVxdWVuY3kgcGxhbiBmb3IgdGhlIGNvbmZpZ3VyZWQgcmVnaW9uXG4gICAgICAjICh3aGljaCBjb3VsZCBiZSBmcmVxdWVuY3kgaG9wcGluZykuXG4gICAgICBwaW5nX3Nsb3RfZnJlcXVlbmN5PTBcblwiXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuc2VydmljZU5hbWUgPSBcImNoaXJwc3RhY2tcIlxuZmlsZVBhdGggPSBcIi9jaGlycHN0YWNrL3JlZ2lvbl9hdTkxNV82LnRvbWxcIlxuY29udGVudCA9IFwiXCJcIlxuIyBUaGlzIGZpbGUgY29udGFpbnMgYW4gZXhhbXBsZSBBVTkxNSBleGFtcGxlIChjaGFubmVscyA0OC01NSArIDcwKS5cbltbcmVnaW9uc11dXG5cbiAgIyBJRCBpcyBhbiB1c2UtZGVmaW5lZCBpZGVudGlmaWVyIGZvciB0aGlzIHJlZ2lvbi5cbiAgaWQ9XCJhdTkxNV82XCJcblxuICAjIERlc2NyaXB0aW9uIGlzIGEgc2hvcnQgZGVzY3JpcHRpb24gZm9yIHRoaXMgcmVnaW9uLlxuICBkZXNjcmlwdGlvbj1cIkFVOTE1IChjaGFubmVscyA0OC01NSArIDcwKVwiXG5cbiAgIyBDb21tb24tbmFtZSByZWZlcnMgdG8gdGhlIGNvbW1vbi1uYW1lIG9mIHRoaXMgcmVnaW9uIGFzIGRlZmluZWQgYnlcbiAgIyB0aGUgTG9SYSBBbGxpYW5jZS5cbiAgY29tbW9uX25hbWU9XCJBVTkxNVwiXG5cblxuICAjIEdhdGV3YXkgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMuZ2F0ZXdheV1cblxuICAgICMgRm9yY2UgZ2F0ZXdheXMgYXMgcHJpdmF0ZS5cbiAgICAjXG4gICAgIyBJZiBlbmFibGVkLCBnYXRld2F5cyBjYW4gb25seSBiZSB1c2VkIGJ5IGRldmljZXMgdW5kZXIgdGhlIHNhbWUgdGVuYW50LlxuICAgIGZvcmNlX2d3c19wcml2YXRlPWZhbHNlXG5cbiAgICBcbiAgICAjIEdhdGV3YXkgYmFja2VuZCBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZF1cblxuICAgICAgIyBUaGUgZW5hYmxlZCBiYWNrZW5kIHR5cGUuXG4gICAgICBlbmFibGVkPVwibXF0dFwiXG5cbiAgICAgICMgTVFUVCBjb25maWd1cmF0aW9uLlxuICAgICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kLm1xdHRdXG5cbiAgICAgICAgIyBUb3BpYyBwcmVmaXguXG4gICAgICAgICNcbiAgICAgICAgIyBUaGUgdG9waWMgcHJlZml4IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB0aGUgcmVnaW9uIG9mIHRoZSBnYXRld2F5LlxuICAgICAgICAjIE5vdGUsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYWRkIGEgdHJhaWxpbmcgJy8nIHRvIHRoZSBwcmVmaXguIFRoZSB0cmFpbGluZ1xuICAgICAgICAjICcvJyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBwcmVmaXggaWYgaXQgaXMgY29uZmlndXJlZC5cbiAgICAgICAgdG9waWNfcHJlZml4PVwiYXU5MTVfNlwiXG5cbiAgICAgICAgIyBNUVRUIHNlcnZlciAoZS5nLiBzY2hlbWU6Ly9ob3N0OnBvcnQgd2hlcmUgc2NoZW1lIGlzIHRjcCwgc3NsIG9yIHdzKVxuICAgICAgICBzZXJ2ZXI9XCJ0Y3A6Ly9tb3NxdWl0dG86MTg4M1wiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHVzZXJuYW1lIChvcHRpb25hbClcbiAgICAgICAgdXNlcm5hbWU9XCJcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiBwYXNzd29yZCAob3B0aW9uYWwpXG4gICAgICAgIHBhc3N3b3JkPVwiXCJcblxuICAgICAgICAjIFF1YWxpdHkgb2Ygc2VydmljZSBsZXZlbFxuICAgICAgICAjXG4gICAgICAgICMgMDogYXQgbW9zdCBvbmNlXG4gICAgICAgICMgMTogYXQgbGVhc3Qgb25jZVxuICAgICAgICAjIDI6IGV4YWN0bHkgb25jZVxuICAgICAgICAjXG4gICAgICAgICMgTm90ZTogYW4gaW5jcmVhc2Ugb2YgdGhpcyB2YWx1ZSB3aWxsIGRlY3JlYXNlIHRoZSBwZXJmb3JtYW5jZS5cbiAgICAgICAgIyBGb3IgbW9yZSBpbmZvcm1hdGlvbjogaHR0cHM6Ly93d3cuaGl2ZW1xLmNvbS9ibG9nL21xdHQtZXNzZW50aWFscy1wYXJ0LTYtbXF0dC1xdWFsaXR5LW9mLXNlcnZpY2UtbGV2ZWxzXG4gICAgICAgIHFvcz0wXG5cbiAgICAgICAgIyBDbGVhbiBzZXNzaW9uXG4gICAgICAgICNcbiAgICAgICAgIyBTZXQgdGhlIFwiY2xlYW4gc2Vzc2lvblwiIGZsYWcgaW4gdGhlIGNvbm5lY3QgbWVzc2FnZSB3aGVuIHRoaXMgY2xpZW50XG4gICAgICAgICMgY29ubmVjdHMgdG8gYW4gTVFUVCBicm9rZXIuIEJ5IHNldHRpbmcgdGhpcyBmbGFnIHlvdSBhcmUgaW5kaWNhdGluZ1xuICAgICAgICAjIHRoYXQgbm8gbWVzc2FnZXMgc2F2ZWQgYnkgdGhlIGJyb2tlciBmb3IgdGhpcyBjbGllbnQgc2hvdWxkIGJlIGRlbGl2ZXJlZC5cbiAgICAgICAgY2xlYW5fc2Vzc2lvbj1mYWxzZVxuXG4gICAgICAgICMgQ2xpZW50IElEXG4gICAgICAgICNcbiAgICAgICAgIyBTZXQgdGhlIGNsaWVudCBpZCB0byBiZSB1c2VkIGJ5IHRoaXMgY2xpZW50IHdoZW4gY29ubmVjdGluZyB0byB0aGUgTVFUVFxuICAgICAgICAjIGJyb2tlci4gQSBjbGllbnQgaWQgbXVzdCBiZSBubyBsb25nZXIgdGhhbiAyMyBjaGFyYWN0ZXJzLiBJZiBsZWZ0IGJsYW5rLFxuICAgICAgICAjIGEgcmFuZG9tIGlkIHdpbGwgYmUgZ2VuZXJhdGVkIGJ5IENoaXJwU3RhY2suXG4gICAgICAgIGNsaWVudF9pZD1cIlwiXG5cbiAgICAgICAgIyBLZWVwIGFsaXZlIGludGVydmFsLlxuICAgICAgICAjXG4gICAgICAgICMgVGhpcyBkZWZpbmVzIHRoZSBtYXhpbXVtIHRpbWUgdGhhdCB0aGF0IHNob3VsZCBwYXNzIHdpdGhvdXQgY29tbXVuaWNhdGlvblxuICAgICAgICAjIGJldHdlZW4gdGhlIGNsaWVudCBhbmQgc2VydmVyLlxuICAgICAgICBrZWVwX2FsaXZlX2ludGVydmFsPVwiMzBzXCJcblxuICAgICAgICAjIENBIGNlcnRpZmljYXRlIGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICAjXG4gICAgICAgICMgVXNlIHRoaXMgd2hlbiBzZXR0aW5nIHVwIGEgc2VjdXJlIGNvbm5lY3Rpb24gKHdoZW4gc2VydmVyIHVzZXMgc3NsOi8vLi4uKVxuICAgICAgICAjIGJ1dCB0aGUgY2VydGlmaWNhdGUgdXNlZCBieSB0aGUgc2VydmVyIGlzIG5vdCB0cnVzdGVkIGJ5IGFueSBDQSBjZXJ0aWZpY2F0ZVxuICAgICAgICAjIG9uIHRoZSBzZXJ2ZXIgKGUuZy4gd2hlbiBzZWxmIGdlbmVyYXRlZCkuXG4gICAgICAgIGNhX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGNlcnRpZmljYXRlIGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICB0bHNfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMga2V5IGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICB0bHNfa2V5PVwiXCJcblxuXG4gICAgIyBHYXRld2F5IGNoYW5uZWwgY29uZmlndXJhdGlvbi5cbiAgICAjXG4gICAgIyBOb3RlOiB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgb25seSB1c2VkIGluIGNhc2UgdGhlIGdhdGV3YXkgaXMgdXNpbmcgdGhlXG4gICAgIyBDaGlycFN0YWNrIENvbmNlbnRyYXRvcmQgZGFlbW9uLiBJbiBhbnkgb3RoZXIgY2FzZSwgdGhpcyBjb25maWd1cmF0aW9uIFxuICAgICMgaXMgaWdub3JlZC5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTI0ODAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MjUwMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkyNTIwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTI1NDAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MjU2MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkyNTgwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTI2MDAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MjYyMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkyNTUwMDAwMFxuICAgICAgYmFuZHdpZHRoPTUwMDAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzhdXG5cblxuICAjIFJlZ2lvbiBzcGVjaWZpYyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLm5ldHdvcmtdXG4gICAgXG4gICAgIyBJbnN0YWxsYXRpb24gbWFyZ2luIChkQikgdXNlZCBieSB0aGUgQURSIGVuZ2luZS5cbiAgICAjXG4gICAgIyBBIGhpZ2hlciBudW1iZXIgbWVhbnMgdGhhdCB0aGUgbmV0d29yay1zZXJ2ZXIgd2lsbCBrZWVwIG1vcmUgbWFyZ2luLFxuICAgICMgcmVzdWx0aW5nIGluIGEgbG93ZXIgZGF0YS1yYXRlIGJ1dCBkZWNyZWFzaW5nIHRoZSBjaGFuY2UgdGhhdCB0aGVcbiAgICAjIGRldmljZSBnZXRzIGRpc2Nvbm5lY3RlZCBiZWNhdXNlIGl0IGlzIHVuYWJsZSB0byByZWFjaCBvbmUgb2YgdGhlXG4gICAgIyBzdXJyb3VuZGVkIGdhdGV3YXlzLlxuICAgIGluc3RhbGxhdGlvbl9tYXJnaW49MTBcblxuICAgICMgUlggd2luZG93IChDbGFzcy1BKS5cbiAgICAjXG4gICAgIyBTZXQgdGhpcyB0bzpcbiAgICAjIDA6IFJYMSAvIFJYMlxuICAgICMgMTogUlgxIG9ubHlcbiAgICAjIDI6IFJYMiBvbmx5XG4gICAgcnhfd2luZG93PTBcblxuICAgICMgUlgxIGRlbGF5ICgxIC0gMTUgc2Vjb25kcykuXG4gICAgcngxX2RlbGF5PTFcblxuICAgICMgUlgxIGRhdGEtcmF0ZSBvZmZzZXRcbiAgICByeDFfZHJfb2Zmc2V0PTBcblxuICAgICMgUlgyIGRhdGEtcmF0ZVxuICAgIHJ4Ml9kcj04XG5cbiAgICAjIFJYMiBmcmVxdWVuY3kgKEh6KVxuICAgIHJ4Ml9mcmVxdWVuY3k9OTIzMzAwMDAwXG5cbiAgICAjIFByZWZlciBSWDIgb24gUlgxIGRhdGEtcmF0ZSBsZXNzIHRoYW4uXG4gICAgI1xuICAgICMgUHJlZmVyIFJYMiBvdmVyIFJYMSBiYXNlZCBvbiB0aGUgUlgxIGRhdGEtcmF0ZS4gV2hlbiB0aGUgUlgxIGRhdGEtcmF0ZVxuICAgICMgaXMgc21hbGxlciB0aGFuIHRoZSBjb25maWd1cmVkIHZhbHVlLCB0aGVuIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsXG4gICAgIyBmaXJzdCB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGZvciBSWDIsIGZhaWxpbmcgdGhhdCAoZS5nLiB0aGUgZ2F0ZXdheVxuICAgICMgaGFzIGFscmVhZHkgYSBwYXlsb2FkIHNjaGVkdWxlZCBhdCB0aGUgUlgyIHRpbWluZykgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fcngxX2RyX2x0PTBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBsaW5rIGJ1ZGdldC5cbiAgICAjXG4gICAgIyBXaGVuIHRoZSBsaW5rLWJ1ZGdldCBpcyBiZXR0ZXIgZm9yIFJYMiB0aGFuIGZvciBSWDEsIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsIGZpcnN0XG4gICAgIyB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGluIFJYMiwgZmFpbGluZyB0aGF0IGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX2xpbmtfYnVkZ2V0PWZhbHNlXG5cbiAgICAjIERvd25saW5rIFRYIFBvd2VyIChkQm0pXG4gICAgI1xuICAgICMgV2hlbiBzZXQgdG8gLTEsIHRoZSBkb3dubGluayBUWCBQb3dlciBmcm9tIHRoZSBjb25maWd1cmVkIGJhbmQgd2lsbFxuICAgICMgYmUgdXNlZC5cbiAgICAjXG4gICAgIyBQbGVhc2UgY29uc3VsdCB0aGUgTG9SYVdBTiBSZWdpb25hbCBQYXJhbWV0ZXJzIGFuZCBsb2NhbCByZWd1bGF0aW9uc1xuICAgICMgZm9yIHZhbGlkIGFuZCBsZWdhbCBvcHRpb25zLiBOb3RlIHRoYXQgdGhlIGNvbmZpZ3VyZWQgVFggUG93ZXIgbXVzdCBiZVxuICAgICMgc3VwcG9ydGVkIGJ5IHlvdXIgZ2F0ZXdheShzKS5cbiAgICBkb3dubGlua190eF9wb3dlcj0tMVxuXG4gICAgIyBBRFIgaXMgZGlzYWJsZWQuXG4gICAgYWRyX2Rpc2FibGVkPWZhbHNlXG5cbiAgICAjIE1pbmltdW0gZGF0YS1yYXRlLlxuICAgIG1pbl9kcj0wXG5cbiAgICAjIE1heGltdW0gZGF0YS1yYXRlLlxuICAgIG1heF9kcj01XG5cbiAgICAjIEVuYWJsZWQgdXBsaW5rIGNoYW5uZWxzLlxuICAgICNcbiAgICAjIFVzZSB0aGlzIHdoZW4gb255IGEgc3ViLXNldCBvZiB0aGUgYnkgZGVmYXVsdCBlbmFibGVkIGNoYW5uZWxzIGFyZSBiZWluZ1xuICAgICMgdXNlZC4gRm9yIGV4YW1wbGUgd2hlbiBvbmx5IHVzaW5nIHRoZSBmaXJzdCA4IGNoYW5uZWxzIG9mIHRoZSBVUyBiYW5kLlxuICAgICMgTm90ZTogd2hlbiBsZWZ0IGJsYW5rIC8gZW1wdHkgYXJyYXksIGFsbCBjaGFubmVscyB3aWxsIGJlIGVuYWJsZWQuXG4gICAgZW5hYmxlZF91cGxpbmtfY2hhbm5lbHM9WzQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNzBdXG5cblxuICAgICMgUmVqb2luLXJlcXVlc3QgY29uZmlndXJhdGlvbiAoTG9SYVdBTiAxLjEpXG4gICAgW3JlZ2lvbnMubmV0d29yay5yZWpvaW5fcmVxdWVzdF1cblxuICAgICAgIyBSZXF1ZXN0IGRldmljZXMgdG8gcGVyaW9kaWNhbGx5IHNlbmQgcmVqb2luLXJlcXVlc3RzLlxuICAgICAgZW5hYmxlZD1mYWxzZVxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF9jb3VudF9uICsgNClcbiAgICAgICMgdXBsaW5rIG1lc3NhZ2VzLiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gMTUuXG4gICAgICBtYXhfY291bnRfbj0wXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X3RpbWVfbiArIDEwKVxuICAgICAgIyBzZWNvbmRzLiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gMTUuXG4gICAgICAjXG4gICAgICAjIDAgID0gcm91Z2hseSAxNyBtaW51dGVzXG4gICAgICAjIDE1ID0gYWJvdXQgMSB5ZWFyXG4gICAgICBtYXhfdGltZV9uPTBcbiAgICBcblxuICAgICMgQ2xhc3MtQiBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLm5ldHdvcmsuY2xhc3NfYl1cblxuICAgICAgIyBQaW5nLXNsb3QgZGF0YS1yYXRlLiBcbiAgICAgIHBpbmdfc2xvdF9kcj04XG5cbiAgICAgICMgUGluZy1zbG90IGZyZXF1ZW5jeSAoSHopXG4gICAgICAjXG4gICAgICAjIHNldCB0aGlzIHRvIDAgdG8gdXNlIHRoZSBkZWZhdWx0IGZyZXF1ZW5jeSBwbGFuIGZvciB0aGUgY29uZmlndXJlZCByZWdpb25cbiAgICAgICMgKHdoaWNoIGNvdWxkIGJlIGZyZXF1ZW5jeSBob3BwaW5nKS5cbiAgICAgIHBpbmdfc2xvdF9mcmVxdWVuY3k9MFxuXCJcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5zZXJ2aWNlTmFtZSA9IFwiY2hpcnBzdGFja1wiXG5maWxlUGF0aCA9IFwiL2NoaXJwc3RhY2svcmVnaW9uX2F1OTE1XzcudG9tbFwiXG5jb250ZW50ID0gXCJcIlwiXG4jIFRoaXMgZmlsZSBjb250YWlucyBhbiBleGFtcGxlIEFVOTE1IGV4YW1wbGUgKGNoYW5uZWxzIDU2LTYzICsgNzEpLlxuW1tyZWdpb25zXV1cblxuICAjIElEIGlzIGFuIHVzZS1kZWZpbmVkIGlkZW50aWZpZXIgZm9yIHRoaXMgcmVnaW9uLlxuICBpZD1cImF1OTE1XzdcIlxuXG4gICMgRGVzY3JpcHRpb24gaXMgYSBzaG9ydCBkZXNjcmlwdGlvbiBmb3IgdGhpcyByZWdpb24uXG4gIGRlc2NyaXB0aW9uPVwiQVU5MTUgKGNoYW5uZWxzIDU2LTYzICsgNzEpXCJcblxuICAjIENvbW1vbi1uYW1lIHJlZmVycyB0byB0aGUgY29tbW9uLW5hbWUgb2YgdGhpcyByZWdpb24gYXMgZGVmaW5lZCBieVxuICAjIHRoZSBMb1JhIEFsbGlhbmNlLlxuICBjb21tb25fbmFtZT1cIkFVOTE1XCJcblxuXG4gICMgR2F0ZXdheSBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5nYXRld2F5XVxuXG4gICAgIyBGb3JjZSBnYXRld2F5cyBhcyBwcml2YXRlLlxuICAgICNcbiAgICAjIElmIGVuYWJsZWQsIGdhdGV3YXlzIGNhbiBvbmx5IGJlIHVzZWQgYnkgZGV2aWNlcyB1bmRlciB0aGUgc2FtZSB0ZW5hbnQuXG4gICAgZm9yY2VfZ3dzX3ByaXZhdGU9ZmFsc2VcblxuICAgIFxuICAgICMgR2F0ZXdheSBiYWNrZW5kIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kXVxuXG4gICAgICAjIFRoZSBlbmFibGVkIGJhY2tlbmQgdHlwZS5cbiAgICAgIGVuYWJsZWQ9XCJtcXR0XCJcblxuICAgICAgIyBNUVRUIGNvbmZpZ3VyYXRpb24uXG4gICAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmQubXF0dF1cblxuICAgICAgICAjIFRvcGljIHByZWZpeC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoZSB0b3BpYyBwcmVmaXggY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHRoZSByZWdpb24gb2YgdGhlIGdhdGV3YXkuXG4gICAgICAgICMgTm90ZSwgdGhlcmUgaXMgbm8gbmVlZCB0byBhZGQgYSB0cmFpbGluZyAnLycgdG8gdGhlIHByZWZpeC4gVGhlIHRyYWlsaW5nXG4gICAgICAgICMgJy8nIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIHByZWZpeCBpZiBpdCBpcyBjb25maWd1cmVkLlxuICAgICAgICB0b3BpY19wcmVmaXg9XCJhdTkxNV83XCJcblxuICAgICAgICAjIE1RVFQgc2VydmVyIChlLmcuIHNjaGVtZTovL2hvc3Q6cG9ydCB3aGVyZSBzY2hlbWUgaXMgdGNwLCBzc2wgb3Igd3MpXG4gICAgICAgIHNlcnZlcj1cInRjcDovL21vc3F1aXR0bzoxODgzXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gdXNlcm5hbWUgKG9wdGlvbmFsKVxuICAgICAgICB1c2VybmFtZT1cIlwiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHBhc3N3b3JkIChvcHRpb25hbClcbiAgICAgICAgcGFzc3dvcmQ9XCJcIlxuXG4gICAgICAgICMgUXVhbGl0eSBvZiBzZXJ2aWNlIGxldmVsXG4gICAgICAgICNcbiAgICAgICAgIyAwOiBhdCBtb3N0IG9uY2VcbiAgICAgICAgIyAxOiBhdCBsZWFzdCBvbmNlXG4gICAgICAgICMgMjogZXhhY3RseSBvbmNlXG4gICAgICAgICNcbiAgICAgICAgIyBOb3RlOiBhbiBpbmNyZWFzZSBvZiB0aGlzIHZhbHVlIHdpbGwgZGVjcmVhc2UgdGhlIHBlcmZvcm1hbmNlLlxuICAgICAgICAjIEZvciBtb3JlIGluZm9ybWF0aW9uOiBodHRwczovL3d3dy5oaXZlbXEuY29tL2Jsb2cvbXF0dC1lc3NlbnRpYWxzLXBhcnQtNi1tcXR0LXF1YWxpdHktb2Ytc2VydmljZS1sZXZlbHNcbiAgICAgICAgcW9zPTBcblxuICAgICAgICAjIENsZWFuIHNlc3Npb25cbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgXCJjbGVhbiBzZXNzaW9uXCIgZmxhZyBpbiB0aGUgY29ubmVjdCBtZXNzYWdlIHdoZW4gdGhpcyBjbGllbnRcbiAgICAgICAgIyBjb25uZWN0cyB0byBhbiBNUVRUIGJyb2tlci4gQnkgc2V0dGluZyB0aGlzIGZsYWcgeW91IGFyZSBpbmRpY2F0aW5nXG4gICAgICAgICMgdGhhdCBubyBtZXNzYWdlcyBzYXZlZCBieSB0aGUgYnJva2VyIGZvciB0aGlzIGNsaWVudCBzaG91bGQgYmUgZGVsaXZlcmVkLlxuICAgICAgICBjbGVhbl9zZXNzaW9uPWZhbHNlXG5cbiAgICAgICAgIyBDbGllbnQgSURcbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgY2xpZW50IGlkIHRvIGJlIHVzZWQgYnkgdGhpcyBjbGllbnQgd2hlbiBjb25uZWN0aW5nIHRvIHRoZSBNUVRUXG4gICAgICAgICMgYnJva2VyLiBBIGNsaWVudCBpZCBtdXN0IGJlIG5vIGxvbmdlciB0aGFuIDIzIGNoYXJhY3RlcnMuIElmIGxlZnQgYmxhbmssXG4gICAgICAgICMgYSByYW5kb20gaWQgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgQ2hpcnBTdGFjay5cbiAgICAgICAgY2xpZW50X2lkPVwiXCJcblxuICAgICAgICAjIEtlZXAgYWxpdmUgaW50ZXJ2YWwuXG4gICAgICAgICNcbiAgICAgICAgIyBUaGlzIGRlZmluZXMgdGhlIG1heGltdW0gdGltZSB0aGF0IHRoYXQgc2hvdWxkIHBhc3Mgd2l0aG91dCBjb21tdW5pY2F0aW9uXG4gICAgICAgICMgYmV0d2VlbiB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIuXG4gICAgICAgIGtlZXBfYWxpdmVfaW50ZXJ2YWw9XCIzMHNcIlxuXG4gICAgICAgICMgQ0EgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgICNcbiAgICAgICAgIyBVc2UgdGhpcyB3aGVuIHNldHRpbmcgdXAgYSBzZWN1cmUgY29ubmVjdGlvbiAod2hlbiBzZXJ2ZXIgdXNlcyBzc2w6Ly8uLi4pXG4gICAgICAgICMgYnV0IHRoZSBjZXJ0aWZpY2F0ZSB1c2VkIGJ5IHRoZSBzZXJ2ZXIgaXMgbm90IHRydXN0ZWQgYnkgYW55IENBIGNlcnRpZmljYXRlXG4gICAgICAgICMgb24gdGhlIHNlcnZlciAoZS5nLiB3aGVuIHNlbGYgZ2VuZXJhdGVkKS5cbiAgICAgICAgY2FfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBrZXkgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19rZXk9XCJcIlxuXG5cbiAgICAjIEdhdGV3YXkgY2hhbm5lbCBjb25maWd1cmF0aW9uLlxuICAgICNcbiAgICAjIE5vdGU6IHRoaXMgY29uZmlndXJhdGlvbiBpcyBvbmx5IHVzZWQgaW4gY2FzZSB0aGUgZ2F0ZXdheSBpcyB1c2luZyB0aGVcbiAgICAjIENoaXJwU3RhY2sgQ29uY2VudHJhdG9yZCBkYWVtb24uIEluIGFueSBvdGhlciBjYXNlLCB0aGlzIGNvbmZpZ3VyYXRpb24gXG4gICAgIyBpcyBpZ25vcmVkLlxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MjY0MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkyNjYwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTI2ODAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MjcwMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkyNzIwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTI3NDAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05Mjc2MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkyNzgwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTI3MTAwMDAwXG4gICAgICBiYW5kd2lkdGg9NTAwMDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bOF1cblxuXG4gICMgUmVnaW9uIHNwZWNpZmljIG5ldHdvcmsgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMubmV0d29ya11cbiAgICBcbiAgICAjIEluc3RhbGxhdGlvbiBtYXJnaW4gKGRCKSB1c2VkIGJ5IHRoZSBBRFIgZW5naW5lLlxuICAgICNcbiAgICAjIEEgaGlnaGVyIG51bWJlciBtZWFucyB0aGF0IHRoZSBuZXR3b3JrLXNlcnZlciB3aWxsIGtlZXAgbW9yZSBtYXJnaW4sXG4gICAgIyByZXN1bHRpbmcgaW4gYSBsb3dlciBkYXRhLXJhdGUgYnV0IGRlY3JlYXNpbmcgdGhlIGNoYW5jZSB0aGF0IHRoZVxuICAgICMgZGV2aWNlIGdldHMgZGlzY29ubmVjdGVkIGJlY2F1c2UgaXQgaXMgdW5hYmxlIHRvIHJlYWNoIG9uZSBvZiB0aGVcbiAgICAjIHN1cnJvdW5kZWQgZ2F0ZXdheXMuXG4gICAgaW5zdGFsbGF0aW9uX21hcmdpbj0xMFxuXG4gICAgIyBSWCB3aW5kb3cgKENsYXNzLUEpLlxuICAgICNcbiAgICAjIFNldCB0aGlzIHRvOlxuICAgICMgMDogUlgxIC8gUlgyXG4gICAgIyAxOiBSWDEgb25seVxuICAgICMgMjogUlgyIG9ubHlcbiAgICByeF93aW5kb3c9MFxuXG4gICAgIyBSWDEgZGVsYXkgKDEgLSAxNSBzZWNvbmRzKS5cbiAgICByeDFfZGVsYXk9MVxuXG4gICAgIyBSWDEgZGF0YS1yYXRlIG9mZnNldFxuICAgIHJ4MV9kcl9vZmZzZXQ9MFxuXG4gICAgIyBSWDIgZGF0YS1yYXRlXG4gICAgcngyX2RyPThcblxuICAgICMgUlgyIGZyZXF1ZW5jeSAoSHopXG4gICAgcngyX2ZyZXF1ZW5jeT05MjMzMDAwMDBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBSWDEgZGF0YS1yYXRlIGxlc3MgdGhhbi5cbiAgICAjXG4gICAgIyBQcmVmZXIgUlgyIG92ZXIgUlgxIGJhc2VkIG9uIHRoZSBSWDEgZGF0YS1yYXRlLiBXaGVuIHRoZSBSWDEgZGF0YS1yYXRlXG4gICAgIyBpcyBzbWFsbGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgdmFsdWUsIHRoZW4gdGhlIE5ldHdvcmsgU2VydmVyIHdpbGxcbiAgICAjIGZpcnN0IHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgZm9yIFJYMiwgZmFpbGluZyB0aGF0IChlLmcuIHRoZSBnYXRld2F5XG4gICAgIyBoYXMgYWxyZWFkeSBhIHBheWxvYWQgc2NoZWR1bGVkIGF0IHRoZSBSWDIgdGltaW5nKSBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9yeDFfZHJfbHQ9MFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIGxpbmsgYnVkZ2V0LlxuICAgICNcbiAgICAjIFdoZW4gdGhlIGxpbmstYnVkZ2V0IGlzIGJldHRlciBmb3IgUlgyIHRoYW4gZm9yIFJYMSwgdGhlIE5ldHdvcmsgU2VydmVyIHdpbGwgZmlyc3RcbiAgICAjIHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgaW4gUlgyLCBmYWlsaW5nIHRoYXQgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fbGlua19idWRnZXQ9ZmFsc2VcblxuICAgICMgRG93bmxpbmsgVFggUG93ZXIgKGRCbSlcbiAgICAjXG4gICAgIyBXaGVuIHNldCB0byAtMSwgdGhlIGRvd25saW5rIFRYIFBvd2VyIGZyb20gdGhlIGNvbmZpZ3VyZWQgYmFuZCB3aWxsXG4gICAgIyBiZSB1c2VkLlxuICAgICNcbiAgICAjIFBsZWFzZSBjb25zdWx0IHRoZSBMb1JhV0FOIFJlZ2lvbmFsIFBhcmFtZXRlcnMgYW5kIGxvY2FsIHJlZ3VsYXRpb25zXG4gICAgIyBmb3IgdmFsaWQgYW5kIGxlZ2FsIG9wdGlvbnMuIE5vdGUgdGhhdCB0aGUgY29uZmlndXJlZCBUWCBQb3dlciBtdXN0IGJlXG4gICAgIyBzdXBwb3J0ZWQgYnkgeW91ciBnYXRld2F5KHMpLlxuICAgIGRvd25saW5rX3R4X3Bvd2VyPS0xXG5cbiAgICAjIEFEUiBpcyBkaXNhYmxlZC5cbiAgICBhZHJfZGlzYWJsZWQ9ZmFsc2VcblxuICAgICMgTWluaW11bSBkYXRhLXJhdGUuXG4gICAgbWluX2RyPTBcblxuICAgICMgTWF4aW11bSBkYXRhLXJhdGUuXG4gICAgbWF4X2RyPTVcblxuICAgICMgRW5hYmxlZCB1cGxpbmsgY2hhbm5lbHMuXG4gICAgI1xuICAgICMgVXNlIHRoaXMgd2hlbiBvbnkgYSBzdWItc2V0IG9mIHRoZSBieSBkZWZhdWx0IGVuYWJsZWQgY2hhbm5lbHMgYXJlIGJlaW5nXG4gICAgIyB1c2VkLiBGb3IgZXhhbXBsZSB3aGVuIG9ubHkgdXNpbmcgdGhlIGZpcnN0IDggY2hhbm5lbHMgb2YgdGhlIFVTIGJhbmQuXG4gICAgIyBOb3RlOiB3aGVuIGxlZnQgYmxhbmsgLyBlbXB0eSBhcnJheSwgYWxsIGNoYW5uZWxzIHdpbGwgYmUgZW5hYmxlZC5cbiAgICBlbmFibGVkX3VwbGlua19jaGFubmVscz1bNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLCA3MV1cblxuXG4gICAgIyBSZWpvaW4tcmVxdWVzdCBjb25maWd1cmF0aW9uIChMb1JhV0FOIDEuMSlcbiAgICBbcmVnaW9ucy5uZXR3b3JrLnJlam9pbl9yZXF1ZXN0XVxuXG4gICAgICAjIFJlcXVlc3QgZGV2aWNlcyB0byBwZXJpb2RpY2FsbHkgc2VuZCByZWpvaW4tcmVxdWVzdHMuXG4gICAgICBlbmFibGVkPWZhbHNlXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X2NvdW50X24gKyA0KVxuICAgICAgIyB1cGxpbmsgbWVzc2FnZXMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgIG1heF9jb3VudF9uPTBcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfdGltZV9uICsgMTApXG4gICAgICAjIHNlY29uZHMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgICNcbiAgICAgICMgMCAgPSByb3VnaGx5IDE3IG1pbnV0ZXNcbiAgICAgICMgMTUgPSBhYm91dCAxIHllYXJcbiAgICAgIG1heF90aW1lX249MFxuICAgIFxuXG4gICAgIyBDbGFzcy1CIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMubmV0d29yay5jbGFzc19iXVxuXG4gICAgICAjIFBpbmctc2xvdCBkYXRhLXJhdGUuIFxuICAgICAgcGluZ19zbG90X2RyPThcblxuICAgICAgIyBQaW5nLXNsb3QgZnJlcXVlbmN5IChIeilcbiAgICAgICNcbiAgICAgICMgc2V0IHRoaXMgdG8gMCB0byB1c2UgdGhlIGRlZmF1bHQgZnJlcXVlbmN5IHBsYW4gZm9yIHRoZSBjb25maWd1cmVkIHJlZ2lvblxuICAgICAgIyAod2hpY2ggY291bGQgYmUgZnJlcXVlbmN5IGhvcHBpbmcpLlxuICAgICAgcGluZ19zbG90X2ZyZXF1ZW5jeT0wXG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbnNlcnZpY2VOYW1lID0gXCJjaGlycHN0YWNrXCJcbmZpbGVQYXRoID0gXCIvY2hpcnBzdGFjay9yZWdpb25fY240NzBfMC50b21sXCJcbmNvbnRlbnQgPSBcIlwiXCJcbiMgVGhpcyBmaWxlIGNvbnRhaW5zIGFuIGV4YW1wbGUgQ040NzAgZXhhbXBsZSAoY2hhbm5lbHMgMC03KS5cbltbcmVnaW9uc11dXG5cbiAgIyBJRCBpcyBhbiB1c2UtZGVmaW5lZCBpZGVudGlmaWVyIGZvciB0aGlzIHJlZ2lvbi5cbiAgaWQ9XCJjbjQ3MF8wXCJcblxuICAjIERlc2NyaXB0aW9uIGlzIGEgc2hvcnQgZGVzY3JpcHRpb24gZm9yIHRoaXMgcmVnaW9uLlxuICBkZXNjcmlwdGlvbj1cIkNONDcwIChjaGFubmVscyAwLTcpXCJcblxuICAjIENvbW1vbi1uYW1lIHJlZmVycyB0byB0aGUgY29tbW9uLW5hbWUgb2YgdGhpcyByZWdpb24gYXMgZGVmaW5lZCBieVxuICAjIHRoZSBMb1JhIEFsbGlhbmNlLlxuICBjb21tb25fbmFtZT1cIkNONDcwXCJcblxuXG4gICMgR2F0ZXdheSBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5nYXRld2F5XVxuXG4gICAgIyBGb3JjZSBnYXRld2F5cyBhcyBwcml2YXRlLlxuICAgICNcbiAgICAjIElmIGVuYWJsZWQsIGdhdGV3YXlzIGNhbiBvbmx5IGJlIHVzZWQgYnkgZGV2aWNlcyB1bmRlciB0aGUgc2FtZSB0ZW5hbnQuXG4gICAgZm9yY2VfZ3dzX3ByaXZhdGU9ZmFsc2VcblxuICAgIFxuICAgICMgR2F0ZXdheSBiYWNrZW5kIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kXVxuXG4gICAgICAjIFRoZSBlbmFibGVkIGJhY2tlbmQgdHlwZS5cbiAgICAgIGVuYWJsZWQ9XCJtcXR0XCJcblxuICAgICAgIyBNUVRUIGNvbmZpZ3VyYXRpb24uXG4gICAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmQubXF0dF1cblxuICAgICAgICAjIFRvcGljIHByZWZpeC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoZSB0b3BpYyBwcmVmaXggY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHRoZSByZWdpb24gb2YgdGhlIGdhdGV3YXkuXG4gICAgICAgICMgTm90ZSwgdGhlcmUgaXMgbm8gbmVlZCB0byBhZGQgYSB0cmFpbGluZyAnLycgdG8gdGhlIHByZWZpeC4gVGhlIHRyYWlsaW5nXG4gICAgICAgICMgJy8nIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIHByZWZpeCBpZiBpdCBpcyBjb25maWd1cmVkLlxuICAgICAgICB0b3BpY19wcmVmaXg9XCJjbjQ3MF8wXCJcblxuICAgICAgICAjIE1RVFQgc2VydmVyIChlLmcuIHNjaGVtZTovL2hvc3Q6cG9ydCB3aGVyZSBzY2hlbWUgaXMgdGNwLCBzc2wgb3Igd3MpXG4gICAgICAgIHNlcnZlcj1cInRjcDovL21vc3F1aXR0bzoxODgzXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gdXNlcm5hbWUgKG9wdGlvbmFsKVxuICAgICAgICB1c2VybmFtZT1cIlwiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHBhc3N3b3JkIChvcHRpb25hbClcbiAgICAgICAgcGFzc3dvcmQ9XCJcIlxuXG4gICAgICAgICMgUXVhbGl0eSBvZiBzZXJ2aWNlIGxldmVsXG4gICAgICAgICNcbiAgICAgICAgIyAwOiBhdCBtb3N0IG9uY2VcbiAgICAgICAgIyAxOiBhdCBsZWFzdCBvbmNlXG4gICAgICAgICMgMjogZXhhY3RseSBvbmNlXG4gICAgICAgICNcbiAgICAgICAgIyBOb3RlOiBhbiBpbmNyZWFzZSBvZiB0aGlzIHZhbHVlIHdpbGwgZGVjcmVhc2UgdGhlIHBlcmZvcm1hbmNlLlxuICAgICAgICAjIEZvciBtb3JlIGluZm9ybWF0aW9uOiBodHRwczovL3d3dy5oaXZlbXEuY29tL2Jsb2cvbXF0dC1lc3NlbnRpYWxzLXBhcnQtNi1tcXR0LXF1YWxpdHktb2Ytc2VydmljZS1sZXZlbHNcbiAgICAgICAgcW9zPTBcblxuICAgICAgICAjIENsZWFuIHNlc3Npb25cbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgXCJjbGVhbiBzZXNzaW9uXCIgZmxhZyBpbiB0aGUgY29ubmVjdCBtZXNzYWdlIHdoZW4gdGhpcyBjbGllbnRcbiAgICAgICAgIyBjb25uZWN0cyB0byBhbiBNUVRUIGJyb2tlci4gQnkgc2V0dGluZyB0aGlzIGZsYWcgeW91IGFyZSBpbmRpY2F0aW5nXG4gICAgICAgICMgdGhhdCBubyBtZXNzYWdlcyBzYXZlZCBieSB0aGUgYnJva2VyIGZvciB0aGlzIGNsaWVudCBzaG91bGQgYmUgZGVsaXZlcmVkLlxuICAgICAgICBjbGVhbl9zZXNzaW9uPWZhbHNlXG5cbiAgICAgICAgIyBDbGllbnQgSURcbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgY2xpZW50IGlkIHRvIGJlIHVzZWQgYnkgdGhpcyBjbGllbnQgd2hlbiBjb25uZWN0aW5nIHRvIHRoZSBNUVRUXG4gICAgICAgICMgYnJva2VyLiBBIGNsaWVudCBpZCBtdXN0IGJlIG5vIGxvbmdlciB0aGFuIDIzIGNoYXJhY3RlcnMuIElmIGxlZnQgYmxhbmssXG4gICAgICAgICMgYSByYW5kb20gaWQgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgQ2hpcnBTdGFjay5cbiAgICAgICAgY2xpZW50X2lkPVwiXCJcblxuICAgICAgICAjIEtlZXAgYWxpdmUgaW50ZXJ2YWwuXG4gICAgICAgICNcbiAgICAgICAgIyBUaGlzIGRlZmluZXMgdGhlIG1heGltdW0gdGltZSB0aGF0IHRoYXQgc2hvdWxkIHBhc3Mgd2l0aG91dCBjb21tdW5pY2F0aW9uXG4gICAgICAgICMgYmV0d2VlbiB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIuXG4gICAgICAgIGtlZXBfYWxpdmVfaW50ZXJ2YWw9XCIzMHNcIlxuXG4gICAgICAgICMgQ0EgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgICNcbiAgICAgICAgIyBVc2UgdGhpcyB3aGVuIHNldHRpbmcgdXAgYSBzZWN1cmUgY29ubmVjdGlvbiAod2hlbiBzZXJ2ZXIgdXNlcyBzc2w6Ly8uLi4pXG4gICAgICAgICMgYnV0IHRoZSBjZXJ0aWZpY2F0ZSB1c2VkIGJ5IHRoZSBzZXJ2ZXIgaXMgbm90IHRydXN0ZWQgYnkgYW55IENBIGNlcnRpZmljYXRlXG4gICAgICAgICMgb24gdGhlIHNlcnZlciAoZS5nLiB3aGVuIHNlbGYgZ2VuZXJhdGVkKS5cbiAgICAgICAgY2FfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBrZXkgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19rZXk9XCJcIlxuXG5cbiAgICAjIEdhdGV3YXkgY2hhbm5lbCBjb25maWd1cmF0aW9uLlxuICAgICNcbiAgICAjIE5vdGU6IHRoaXMgY29uZmlndXJhdGlvbiBpcyBvbmx5IHVzZWQgaW4gY2FzZSB0aGUgZ2F0ZXdheSBpcyB1c2luZyB0aGVcbiAgICAjIENoaXJwU3RhY2sgQ29uY2VudHJhdG9yZCBkYWVtb24uIEluIGFueSBvdGhlciBjYXNlLCB0aGlzIGNvbmZpZ3VyYXRpb24gXG4gICAgIyBpcyBpZ25vcmVkLlxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00NzAzMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ3MDUwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDcwNzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00NzA5MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ3MTEwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDcxMzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00NzE1MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ3MTcwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cblxuICAjIFJlZ2lvbiBzcGVjaWZpYyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLm5ldHdvcmtdXG4gICAgXG4gICAgIyBJbnN0YWxsYXRpb24gbWFyZ2luIChkQikgdXNlZCBieSB0aGUgQURSIGVuZ2luZS5cbiAgICAjXG4gICAgIyBBIGhpZ2hlciBudW1iZXIgbWVhbnMgdGhhdCB0aGUgbmV0d29yay1zZXJ2ZXIgd2lsbCBrZWVwIG1vcmUgbWFyZ2luLFxuICAgICMgcmVzdWx0aW5nIGluIGEgbG93ZXIgZGF0YS1yYXRlIGJ1dCBkZWNyZWFzaW5nIHRoZSBjaGFuY2UgdGhhdCB0aGVcbiAgICAjIGRldmljZSBnZXRzIGRpc2Nvbm5lY3RlZCBiZWNhdXNlIGl0IGlzIHVuYWJsZSB0byByZWFjaCBvbmUgb2YgdGhlXG4gICAgIyBzdXJyb3VuZGVkIGdhdGV3YXlzLlxuICAgIGluc3RhbGxhdGlvbl9tYXJnaW49MTBcblxuICAgICMgUlggd2luZG93IChDbGFzcy1BKS5cbiAgICAjXG4gICAgIyBTZXQgdGhpcyB0bzpcbiAgICAjIDA6IFJYMSAvIFJYMlxuICAgICMgMTogUlgxIG9ubHlcbiAgICAjIDI6IFJYMiBvbmx5XG4gICAgcnhfd2luZG93PTBcblxuICAgICMgUlgxIGRlbGF5ICgxIC0gMTUgc2Vjb25kcykuXG4gICAgcngxX2RlbGF5PTFcblxuICAgICMgUlgxIGRhdGEtcmF0ZSBvZmZzZXRcbiAgICByeDFfZHJfb2Zmc2V0PTBcblxuICAgICMgUlgyIGRhdGEtcmF0ZVxuICAgIHJ4Ml9kcj0wXG5cbiAgICAjIFJYMiBmcmVxdWVuY3kgKEh6KVxuICAgIHJ4Ml9mcmVxdWVuY3k9NTA1MzAwMDAwXG5cbiAgICAjIFByZWZlciBSWDIgb24gUlgxIGRhdGEtcmF0ZSBsZXNzIHRoYW4uXG4gICAgI1xuICAgICMgUHJlZmVyIFJYMiBvdmVyIFJYMSBiYXNlZCBvbiB0aGUgUlgxIGRhdGEtcmF0ZS4gV2hlbiB0aGUgUlgxIGRhdGEtcmF0ZVxuICAgICMgaXMgc21hbGxlciB0aGFuIHRoZSBjb25maWd1cmVkIHZhbHVlLCB0aGVuIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsXG4gICAgIyBmaXJzdCB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGZvciBSWDIsIGZhaWxpbmcgdGhhdCAoZS5nLiB0aGUgZ2F0ZXdheVxuICAgICMgaGFzIGFscmVhZHkgYSBwYXlsb2FkIHNjaGVkdWxlZCBhdCB0aGUgUlgyIHRpbWluZykgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fcngxX2RyX2x0PTBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBsaW5rIGJ1ZGdldC5cbiAgICAjXG4gICAgIyBXaGVuIHRoZSBsaW5rLWJ1ZGdldCBpcyBiZXR0ZXIgZm9yIFJYMiB0aGFuIGZvciBSWDEsIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsIGZpcnN0XG4gICAgIyB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGluIFJYMiwgZmFpbGluZyB0aGF0IGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX2xpbmtfYnVkZ2V0PWZhbHNlXG5cbiAgICAjIERvd25saW5rIFRYIFBvd2VyIChkQm0pXG4gICAgI1xuICAgICMgV2hlbiBzZXQgdG8gLTEsIHRoZSBkb3dubGluayBUWCBQb3dlciBmcm9tIHRoZSBjb25maWd1cmVkIGJhbmQgd2lsbFxuICAgICMgYmUgdXNlZC5cbiAgICAjXG4gICAgIyBQbGVhc2UgY29uc3VsdCB0aGUgTG9SYVdBTiBSZWdpb25hbCBQYXJhbWV0ZXJzIGFuZCBsb2NhbCByZWd1bGF0aW9uc1xuICAgICMgZm9yIHZhbGlkIGFuZCBsZWdhbCBvcHRpb25zLiBOb3RlIHRoYXQgdGhlIGNvbmZpZ3VyZWQgVFggUG93ZXIgbXVzdCBiZVxuICAgICMgc3VwcG9ydGVkIGJ5IHlvdXIgZ2F0ZXdheShzKS5cbiAgICBkb3dubGlua190eF9wb3dlcj0tMVxuXG4gICAgIyBBRFIgaXMgZGlzYWJsZWQuXG4gICAgYWRyX2Rpc2FibGVkPWZhbHNlXG5cbiAgICAjIE1pbmltdW0gZGF0YS1yYXRlLlxuICAgIG1pbl9kcj0wXG5cbiAgICAjIE1heGltdW0gZGF0YS1yYXRlLlxuICAgIG1heF9kcj01XG5cbiAgICAjIEVuYWJsZWQgdXBsaW5rIGNoYW5uZWxzLlxuICAgICNcbiAgICAjIFVzZSB0aGlzIHdoZW4gb255IGEgc3ViLXNldCBvZiB0aGUgYnkgZGVmYXVsdCBlbmFibGVkIGNoYW5uZWxzIGFyZSBiZWluZ1xuICAgICMgdXNlZC4gRm9yIGV4YW1wbGUgd2hlbiBvbmx5IHVzaW5nIHRoZSBmaXJzdCA4IGNoYW5uZWxzIG9mIHRoZSBVUyBiYW5kLlxuICAgICMgTm90ZTogd2hlbiBsZWZ0IGJsYW5rIC8gZW1wdHkgYXJyYXksIGFsbCBjaGFubmVscyB3aWxsIGJlIGVuYWJsZWQuXG4gICAgZW5hYmxlZF91cGxpbmtfY2hhbm5lbHM9WzAsIDEsIDIsIDMsIDQsIDUsIDYsIDddXG5cblxuICAgICMgUmVqb2luLXJlcXVlc3QgY29uZmlndXJhdGlvbiAoTG9SYVdBTiAxLjEpXG4gICAgW3JlZ2lvbnMubmV0d29yay5yZWpvaW5fcmVxdWVzdF1cblxuICAgICAgIyBSZXF1ZXN0IGRldmljZXMgdG8gcGVyaW9kaWNhbGx5IHNlbmQgcmVqb2luLXJlcXVlc3RzLlxuICAgICAgZW5hYmxlZD1mYWxzZVxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF9jb3VudF9uICsgNClcbiAgICAgICMgdXBsaW5rIG1lc3NhZ2VzLiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gMTUuXG4gICAgICBtYXhfY291bnRfbj0wXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X3RpbWVfbiArIDEwKVxuICAgICAgIyBzZWNvbmRzLiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gMTUuXG4gICAgICAjXG4gICAgICAjIDAgID0gcm91Z2hseSAxNyBtaW51dGVzXG4gICAgICAjIDE1ID0gYWJvdXQgMSB5ZWFyXG4gICAgICBtYXhfdGltZV9uPTBcbiAgICBcblxuICAgICMgQ2xhc3MtQiBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLm5ldHdvcmsuY2xhc3NfYl1cblxuICAgICAgIyBQaW5nLXNsb3QgZGF0YS1yYXRlLiBcbiAgICAgIHBpbmdfc2xvdF9kcj0yXG5cbiAgICAgICMgUGluZy1zbG90IGZyZXF1ZW5jeSAoSHopXG4gICAgICAjXG4gICAgICAjIHNldCB0aGlzIHRvIDAgdG8gdXNlIHRoZSBkZWZhdWx0IGZyZXF1ZW5jeSBwbGFuIGZvciB0aGUgY29uZmlndXJlZCByZWdpb25cbiAgICAgICMgKHdoaWNoIGNvdWxkIGJlIGZyZXF1ZW5jeSBob3BwaW5nKS5cbiAgICAgIHBpbmdfc2xvdF9mcmVxdWVuY3k9MFxuXCJcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5zZXJ2aWNlTmFtZSA9IFwiY2hpcnBzdGFja1wiXG5maWxlUGF0aCA9IFwiL2NoaXJwc3RhY2svcmVnaW9uX2NuNDcwXzEwLnRvbWxcIlxuY29udGVudCA9IFwiXCJcIlxuIyBUaGlzIGZpbGUgY29udGFpbnMgYW4gZXhhbXBsZSBDTjQ3MCBleGFtcGxlIChjaGFubmVscyA4MC04NykuXG5bW3JlZ2lvbnNdXVxuXG4gICMgSUQgaXMgYW4gdXNlLWRlZmluZWQgaWRlbnRpZmllciBmb3IgdGhpcyByZWdpb24uXG4gIGlkPVwiY240NzBfMTBcIlxuXG4gICMgRGVzY3JpcHRpb24gaXMgYSBzaG9ydCBkZXNjcmlwdGlvbiBmb3IgdGhpcyByZWdpb24uXG4gIGRlc2NyaXB0aW9uPVwiQ040NzAgKGNoYW5uZWxzIDgwLTg3KVwiXG5cbiAgIyBDb21tb24tbmFtZSByZWZlcnMgdG8gdGhlIGNvbW1vbi1uYW1lIG9mIHRoaXMgcmVnaW9uIGFzIGRlZmluZWQgYnlcbiAgIyB0aGUgTG9SYSBBbGxpYW5jZS5cbiAgY29tbW9uX25hbWU9XCJDTjQ3MFwiXG5cblxuICAjIEdhdGV3YXkgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMuZ2F0ZXdheV1cblxuICAgICMgRm9yY2UgZ2F0ZXdheXMgYXMgcHJpdmF0ZS5cbiAgICAjXG4gICAgIyBJZiBlbmFibGVkLCBnYXRld2F5cyBjYW4gb25seSBiZSB1c2VkIGJ5IGRldmljZXMgdW5kZXIgdGhlIHNhbWUgdGVuYW50LlxuICAgIGZvcmNlX2d3c19wcml2YXRlPWZhbHNlXG5cbiAgICBcbiAgICAjIEdhdGV3YXkgYmFja2VuZCBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZF1cblxuICAgICAgIyBUaGUgZW5hYmxlZCBiYWNrZW5kIHR5cGUuXG4gICAgICBlbmFibGVkPVwibXF0dFwiXG5cbiAgICAgICMgTVFUVCBjb25maWd1cmF0aW9uLlxuICAgICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kLm1xdHRdXG5cbiAgICAgICAgIyBUb3BpYyBwcmVmaXguXG4gICAgICAgICNcbiAgICAgICAgIyBUaGUgdG9waWMgcHJlZml4IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB0aGUgcmVnaW9uIG9mIHRoZSBnYXRld2F5LlxuICAgICAgICAjIE5vdGUsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYWRkIGEgdHJhaWxpbmcgJy8nIHRvIHRoZSBwcmVmaXguIFRoZSB0cmFpbGluZ1xuICAgICAgICAjICcvJyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBwcmVmaXggaWYgaXQgaXMgY29uZmlndXJlZC5cbiAgICAgICAgdG9waWNfcHJlZml4PVwiY240NzBfMTBcIlxuXG4gICAgICAgICMgTVFUVCBzZXJ2ZXIgKGUuZy4gc2NoZW1lOi8vaG9zdDpwb3J0IHdoZXJlIHNjaGVtZSBpcyB0Y3AsIHNzbCBvciB3cylcbiAgICAgICAgc2VydmVyPVwidGNwOi8vbW9zcXVpdHRvOjE4ODNcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiB1c2VybmFtZSAob3B0aW9uYWwpXG4gICAgICAgIHVzZXJuYW1lPVwiXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gcGFzc3dvcmQgKG9wdGlvbmFsKVxuICAgICAgICBwYXNzd29yZD1cIlwiXG5cbiAgICAgICAgIyBRdWFsaXR5IG9mIHNlcnZpY2UgbGV2ZWxcbiAgICAgICAgI1xuICAgICAgICAjIDA6IGF0IG1vc3Qgb25jZVxuICAgICAgICAjIDE6IGF0IGxlYXN0IG9uY2VcbiAgICAgICAgIyAyOiBleGFjdGx5IG9uY2VcbiAgICAgICAgI1xuICAgICAgICAjIE5vdGU6IGFuIGluY3JlYXNlIG9mIHRoaXMgdmFsdWUgd2lsbCBkZWNyZWFzZSB0aGUgcGVyZm9ybWFuY2UuXG4gICAgICAgICMgRm9yIG1vcmUgaW5mb3JtYXRpb246IGh0dHBzOi8vd3d3LmhpdmVtcS5jb20vYmxvZy9tcXR0LWVzc2VudGlhbHMtcGFydC02LW1xdHQtcXVhbGl0eS1vZi1zZXJ2aWNlLWxldmVsc1xuICAgICAgICBxb3M9MFxuXG4gICAgICAgICMgQ2xlYW4gc2Vzc2lvblxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBcImNsZWFuIHNlc3Npb25cIiBmbGFnIGluIHRoZSBjb25uZWN0IG1lc3NhZ2Ugd2hlbiB0aGlzIGNsaWVudFxuICAgICAgICAjIGNvbm5lY3RzIHRvIGFuIE1RVFQgYnJva2VyLiBCeSBzZXR0aW5nIHRoaXMgZmxhZyB5b3UgYXJlIGluZGljYXRpbmdcbiAgICAgICAgIyB0aGF0IG5vIG1lc3NhZ2VzIHNhdmVkIGJ5IHRoZSBicm9rZXIgZm9yIHRoaXMgY2xpZW50IHNob3VsZCBiZSBkZWxpdmVyZWQuXG4gICAgICAgIGNsZWFuX3Nlc3Npb249ZmFsc2VcblxuICAgICAgICAjIENsaWVudCBJRFxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBjbGllbnQgaWQgdG8gYmUgdXNlZCBieSB0aGlzIGNsaWVudCB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIE1RVFRcbiAgICAgICAgIyBicm9rZXIuIEEgY2xpZW50IGlkIG11c3QgYmUgbm8gbG9uZ2VyIHRoYW4gMjMgY2hhcmFjdGVycy4gSWYgbGVmdCBibGFuayxcbiAgICAgICAgIyBhIHJhbmRvbSBpZCB3aWxsIGJlIGdlbmVyYXRlZCBieSBDaGlycFN0YWNrLlxuICAgICAgICBjbGllbnRfaWQ9XCJcIlxuXG4gICAgICAgICMgS2VlcCBhbGl2ZSBpbnRlcnZhbC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoaXMgZGVmaW5lcyB0aGUgbWF4aW11bSB0aW1lIHRoYXQgdGhhdCBzaG91bGQgcGFzcyB3aXRob3V0IGNvbW11bmljYXRpb25cbiAgICAgICAgIyBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlci5cbiAgICAgICAga2VlcF9hbGl2ZV9pbnRlcnZhbD1cIjMwc1wiXG5cbiAgICAgICAgIyBDQSBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgI1xuICAgICAgICAjIFVzZSB0aGlzIHdoZW4gc2V0dGluZyB1cCBhIHNlY3VyZSBjb25uZWN0aW9uICh3aGVuIHNlcnZlciB1c2VzIHNzbDovLy4uLilcbiAgICAgICAgIyBidXQgdGhlIGNlcnRpZmljYXRlIHVzZWQgYnkgdGhlIHNlcnZlciBpcyBub3QgdHJ1c3RlZCBieSBhbnkgQ0EgY2VydGlmaWNhdGVcbiAgICAgICAgIyBvbiB0aGUgc2VydmVyIChlLmcuIHdoZW4gc2VsZiBnZW5lcmF0ZWQpLlxuICAgICAgICBjYV9jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGtleSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2tleT1cIlwiXG5cblxuICAgICMgR2F0ZXdheSBjaGFubmVsIGNvbmZpZ3VyYXRpb24uXG4gICAgI1xuICAgICMgTm90ZTogdGhpcyBjb25maWd1cmF0aW9uIGlzIG9ubHkgdXNlZCBpbiBjYXNlIHRoZSBnYXRld2F5IGlzIHVzaW5nIHRoZVxuICAgICMgQ2hpcnBTdGFjayBDb25jZW50cmF0b3JkIGRhZW1vbi4gSW4gYW55IG90aGVyIGNhc2UsIHRoaXMgY29uZmlndXJhdGlvbiBcbiAgICAjIGlzIGlnbm9yZWQuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ4NjMwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDg2NTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00ODY3MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ4NjkwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDg3MTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00ODczMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ4NzUwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDg3NzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuXG4gICMgUmVnaW9uIHNwZWNpZmljIG5ldHdvcmsgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMubmV0d29ya11cbiAgICBcbiAgICAjIEluc3RhbGxhdGlvbiBtYXJnaW4gKGRCKSB1c2VkIGJ5IHRoZSBBRFIgZW5naW5lLlxuICAgICNcbiAgICAjIEEgaGlnaGVyIG51bWJlciBtZWFucyB0aGF0IHRoZSBuZXR3b3JrLXNlcnZlciB3aWxsIGtlZXAgbW9yZSBtYXJnaW4sXG4gICAgIyByZXN1bHRpbmcgaW4gYSBsb3dlciBkYXRhLXJhdGUgYnV0IGRlY3JlYXNpbmcgdGhlIGNoYW5jZSB0aGF0IHRoZVxuICAgICMgZGV2aWNlIGdldHMgZGlzY29ubmVjdGVkIGJlY2F1c2UgaXQgaXMgdW5hYmxlIHRvIHJlYWNoIG9uZSBvZiB0aGVcbiAgICAjIHN1cnJvdW5kZWQgZ2F0ZXdheXMuXG4gICAgaW5zdGFsbGF0aW9uX21hcmdpbj0xMFxuXG4gICAgIyBSWCB3aW5kb3cgKENsYXNzLUEpLlxuICAgICNcbiAgICAjIFNldCB0aGlzIHRvOlxuICAgICMgMDogUlgxIC8gUlgyXG4gICAgIyAxOiBSWDEgb25seVxuICAgICMgMjogUlgyIG9ubHlcbiAgICByeF93aW5kb3c9MFxuXG4gICAgIyBSWDEgZGVsYXkgKDEgLSAxNSBzZWNvbmRzKS5cbiAgICByeDFfZGVsYXk9MVxuXG4gICAgIyBSWDEgZGF0YS1yYXRlIG9mZnNldFxuICAgIHJ4MV9kcl9vZmZzZXQ9MFxuXG4gICAgIyBSWDIgZGF0YS1yYXRlXG4gICAgcngyX2RyPTBcblxuICAgICMgUlgyIGZyZXF1ZW5jeSAoSHopXG4gICAgcngyX2ZyZXF1ZW5jeT01MDUzMDAwMDBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBSWDEgZGF0YS1yYXRlIGxlc3MgdGhhbi5cbiAgICAjXG4gICAgIyBQcmVmZXIgUlgyIG92ZXIgUlgxIGJhc2VkIG9uIHRoZSBSWDEgZGF0YS1yYXRlLiBXaGVuIHRoZSBSWDEgZGF0YS1yYXRlXG4gICAgIyBpcyBzbWFsbGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgdmFsdWUsIHRoZW4gdGhlIE5ldHdvcmsgU2VydmVyIHdpbGxcbiAgICAjIGZpcnN0IHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgZm9yIFJYMiwgZmFpbGluZyB0aGF0IChlLmcuIHRoZSBnYXRld2F5XG4gICAgIyBoYXMgYWxyZWFkeSBhIHBheWxvYWQgc2NoZWR1bGVkIGF0IHRoZSBSWDIgdGltaW5nKSBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9yeDFfZHJfbHQ9MFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIGxpbmsgYnVkZ2V0LlxuICAgICNcbiAgICAjIFdoZW4gdGhlIGxpbmstYnVkZ2V0IGlzIGJldHRlciBmb3IgUlgyIHRoYW4gZm9yIFJYMSwgdGhlIE5ldHdvcmsgU2VydmVyIHdpbGwgZmlyc3RcbiAgICAjIHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgaW4gUlgyLCBmYWlsaW5nIHRoYXQgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fbGlua19idWRnZXQ9ZmFsc2VcblxuICAgICMgRG93bmxpbmsgVFggUG93ZXIgKGRCbSlcbiAgICAjXG4gICAgIyBXaGVuIHNldCB0byAtMSwgdGhlIGRvd25saW5rIFRYIFBvd2VyIGZyb20gdGhlIGNvbmZpZ3VyZWQgYmFuZCB3aWxsXG4gICAgIyBiZSB1c2VkLlxuICAgICNcbiAgICAjIFBsZWFzZSBjb25zdWx0IHRoZSBMb1JhV0FOIFJlZ2lvbmFsIFBhcmFtZXRlcnMgYW5kIGxvY2FsIHJlZ3VsYXRpb25zXG4gICAgIyBmb3IgdmFsaWQgYW5kIGxlZ2FsIG9wdGlvbnMuIE5vdGUgdGhhdCB0aGUgY29uZmlndXJlZCBUWCBQb3dlciBtdXN0IGJlXG4gICAgIyBzdXBwb3J0ZWQgYnkgeW91ciBnYXRld2F5KHMpLlxuICAgIGRvd25saW5rX3R4X3Bvd2VyPS0xXG5cbiAgICAjIEFEUiBpcyBkaXNhYmxlZC5cbiAgICBhZHJfZGlzYWJsZWQ9ZmFsc2VcblxuICAgICMgTWluaW11bSBkYXRhLXJhdGUuXG4gICAgbWluX2RyPTBcblxuICAgICMgTWF4aW11bSBkYXRhLXJhdGUuXG4gICAgbWF4X2RyPTVcblxuICAgICMgRW5hYmxlZCB1cGxpbmsgY2hhbm5lbHMuXG4gICAgI1xuICAgICMgVXNlIHRoaXMgd2hlbiBvbnkgYSBzdWItc2V0IG9mIHRoZSBieSBkZWZhdWx0IGVuYWJsZWQgY2hhbm5lbHMgYXJlIGJlaW5nXG4gICAgIyB1c2VkLiBGb3IgZXhhbXBsZSB3aGVuIG9ubHkgdXNpbmcgdGhlIGZpcnN0IDggY2hhbm5lbHMgb2YgdGhlIFVTIGJhbmQuXG4gICAgIyBOb3RlOiB3aGVuIGxlZnQgYmxhbmsgLyBlbXB0eSBhcnJheSwgYWxsIGNoYW5uZWxzIHdpbGwgYmUgZW5hYmxlZC5cbiAgICBlbmFibGVkX3VwbGlua19jaGFubmVscz1bODAsIDgxLCA4MiwgODMsIDg0LCA4NSwgODYsIDg3XVxuXG5cbiAgICAjIFJlam9pbi1yZXF1ZXN0IGNvbmZpZ3VyYXRpb24gKExvUmFXQU4gMS4xKVxuICAgIFtyZWdpb25zLm5ldHdvcmsucmVqb2luX3JlcXVlc3RdXG5cbiAgICAgICMgUmVxdWVzdCBkZXZpY2VzIHRvIHBlcmlvZGljYWxseSBzZW5kIHJlam9pbi1yZXF1ZXN0cy5cbiAgICAgIGVuYWJsZWQ9ZmFsc2VcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfY291bnRfbiArIDQpXG4gICAgICAjIHVwbGluayBtZXNzYWdlcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgbWF4X2NvdW50X249MFxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF90aW1lX24gKyAxMClcbiAgICAgICMgc2Vjb25kcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgI1xuICAgICAgIyAwICA9IHJvdWdobHkgMTcgbWludXRlc1xuICAgICAgIyAxNSA9IGFib3V0IDEgeWVhclxuICAgICAgbWF4X3RpbWVfbj0wXG4gICAgXG5cbiAgICAjIENsYXNzLUIgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5uZXR3b3JrLmNsYXNzX2JdXG5cbiAgICAgICMgUGluZy1zbG90IGRhdGEtcmF0ZS4gXG4gICAgICBwaW5nX3Nsb3RfZHI9MlxuXG4gICAgICAjIFBpbmctc2xvdCBmcmVxdWVuY3kgKEh6KVxuICAgICAgI1xuICAgICAgIyBzZXQgdGhpcyB0byAwIHRvIHVzZSB0aGUgZGVmYXVsdCBmcmVxdWVuY3kgcGxhbiBmb3IgdGhlIGNvbmZpZ3VyZWQgcmVnaW9uXG4gICAgICAjICh3aGljaCBjb3VsZCBiZSBmcmVxdWVuY3kgaG9wcGluZykuXG4gICAgICBwaW5nX3Nsb3RfZnJlcXVlbmN5PTBcblwiXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuc2VydmljZU5hbWUgPSBcImNoaXJwc3RhY2tcIlxuZmlsZVBhdGggPSBcIi9jaGlycHN0YWNrL3JlZ2lvbl9jbjQ3MF8xMS50b21sXCJcbmNvbnRlbnQgPSBcIlwiXCJcbiMgVGhpcyBmaWxlIGNvbnRhaW5zIGFuIGV4YW1wbGUgQ040NzAgZXhhbXBsZSAoY2hhbm5lbHMgODgtOTUpLlxuW1tyZWdpb25zXV1cblxuICAjIElEIGlzIGFuIHVzZS1kZWZpbmVkIGlkZW50aWZpZXIgZm9yIHRoaXMgcmVnaW9uLlxuICBpZD1cImNuNDcwXzExXCJcblxuICAjIERlc2NyaXB0aW9uIGlzIGEgc2hvcnQgZGVzY3JpcHRpb24gZm9yIHRoaXMgcmVnaW9uLlxuICBkZXNjcmlwdGlvbj1cIkNONDcwIChjaGFubmVscyA4OC05NSlcIlxuXG4gICMgQ29tbW9uLW5hbWUgcmVmZXJzIHRvIHRoZSBjb21tb24tbmFtZSBvZiB0aGlzIHJlZ2lvbiBhcyBkZWZpbmVkIGJ5XG4gICMgdGhlIExvUmEgQWxsaWFuY2UuXG4gIGNvbW1vbl9uYW1lPVwiQ040NzBcIlxuXG5cbiAgIyBHYXRld2F5IGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLmdhdGV3YXldXG5cbiAgICAjIEZvcmNlIGdhdGV3YXlzIGFzIHByaXZhdGUuXG4gICAgI1xuICAgICMgSWYgZW5hYmxlZCwgZ2F0ZXdheXMgY2FuIG9ubHkgYmUgdXNlZCBieSBkZXZpY2VzIHVuZGVyIHRoZSBzYW1lIHRlbmFudC5cbiAgICBmb3JjZV9nd3NfcHJpdmF0ZT1mYWxzZVxuXG4gICAgXG4gICAgIyBHYXRld2F5IGJhY2tlbmQgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmRdXG5cbiAgICAgICMgVGhlIGVuYWJsZWQgYmFja2VuZCB0eXBlLlxuICAgICAgZW5hYmxlZD1cIm1xdHRcIlxuXG4gICAgICAjIE1RVFQgY29uZmlndXJhdGlvbi5cbiAgICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZC5tcXR0XVxuXG4gICAgICAgICMgVG9waWMgcHJlZml4LlxuICAgICAgICAjXG4gICAgICAgICMgVGhlIHRvcGljIHByZWZpeCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgdGhlIHJlZ2lvbiBvZiB0aGUgZ2F0ZXdheS5cbiAgICAgICAgIyBOb3RlLCB0aGVyZSBpcyBubyBuZWVkIHRvIGFkZCBhIHRyYWlsaW5nICcvJyB0byB0aGUgcHJlZml4LiBUaGUgdHJhaWxpbmdcbiAgICAgICAgIyAnLycgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgcHJlZml4IGlmIGl0IGlzIGNvbmZpZ3VyZWQuXG4gICAgICAgIHRvcGljX3ByZWZpeD1cImNuNDcwXzExXCJcblxuICAgICAgICAjIE1RVFQgc2VydmVyIChlLmcuIHNjaGVtZTovL2hvc3Q6cG9ydCB3aGVyZSBzY2hlbWUgaXMgdGNwLCBzc2wgb3Igd3MpXG4gICAgICAgIHNlcnZlcj1cInRjcDovL21vc3F1aXR0bzoxODgzXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gdXNlcm5hbWUgKG9wdGlvbmFsKVxuICAgICAgICB1c2VybmFtZT1cIlwiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHBhc3N3b3JkIChvcHRpb25hbClcbiAgICAgICAgcGFzc3dvcmQ9XCJcIlxuXG4gICAgICAgICMgUXVhbGl0eSBvZiBzZXJ2aWNlIGxldmVsXG4gICAgICAgICNcbiAgICAgICAgIyAwOiBhdCBtb3N0IG9uY2VcbiAgICAgICAgIyAxOiBhdCBsZWFzdCBvbmNlXG4gICAgICAgICMgMjogZXhhY3RseSBvbmNlXG4gICAgICAgICNcbiAgICAgICAgIyBOb3RlOiBhbiBpbmNyZWFzZSBvZiB0aGlzIHZhbHVlIHdpbGwgZGVjcmVhc2UgdGhlIHBlcmZvcm1hbmNlLlxuICAgICAgICAjIEZvciBtb3JlIGluZm9ybWF0aW9uOiBodHRwczovL3d3dy5oaXZlbXEuY29tL2Jsb2cvbXF0dC1lc3NlbnRpYWxzLXBhcnQtNi1tcXR0LXF1YWxpdHktb2Ytc2VydmljZS1sZXZlbHNcbiAgICAgICAgcW9zPTBcblxuICAgICAgICAjIENsZWFuIHNlc3Npb25cbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgXCJjbGVhbiBzZXNzaW9uXCIgZmxhZyBpbiB0aGUgY29ubmVjdCBtZXNzYWdlIHdoZW4gdGhpcyBjbGllbnRcbiAgICAgICAgIyBjb25uZWN0cyB0byBhbiBNUVRUIGJyb2tlci4gQnkgc2V0dGluZyB0aGlzIGZsYWcgeW91IGFyZSBpbmRpY2F0aW5nXG4gICAgICAgICMgdGhhdCBubyBtZXNzYWdlcyBzYXZlZCBieSB0aGUgYnJva2VyIGZvciB0aGlzIGNsaWVudCBzaG91bGQgYmUgZGVsaXZlcmVkLlxuICAgICAgICBjbGVhbl9zZXNzaW9uPWZhbHNlXG5cbiAgICAgICAgIyBDbGllbnQgSURcbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgY2xpZW50IGlkIHRvIGJlIHVzZWQgYnkgdGhpcyBjbGllbnQgd2hlbiBjb25uZWN0aW5nIHRvIHRoZSBNUVRUXG4gICAgICAgICMgYnJva2VyLiBBIGNsaWVudCBpZCBtdXN0IGJlIG5vIGxvbmdlciB0aGFuIDIzIGNoYXJhY3RlcnMuIElmIGxlZnQgYmxhbmssXG4gICAgICAgICMgYSByYW5kb20gaWQgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgQ2hpcnBTdGFjay5cbiAgICAgICAgY2xpZW50X2lkPVwiXCJcblxuICAgICAgICAjIEtlZXAgYWxpdmUgaW50ZXJ2YWwuXG4gICAgICAgICNcbiAgICAgICAgIyBUaGlzIGRlZmluZXMgdGhlIG1heGltdW0gdGltZSB0aGF0IHRoYXQgc2hvdWxkIHBhc3Mgd2l0aG91dCBjb21tdW5pY2F0aW9uXG4gICAgICAgICMgYmV0d2VlbiB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIuXG4gICAgICAgIGtlZXBfYWxpdmVfaW50ZXJ2YWw9XCIzMHNcIlxuXG4gICAgICAgICMgQ0EgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgICNcbiAgICAgICAgIyBVc2UgdGhpcyB3aGVuIHNldHRpbmcgdXAgYSBzZWN1cmUgY29ubmVjdGlvbiAod2hlbiBzZXJ2ZXIgdXNlcyBzc2w6Ly8uLi4pXG4gICAgICAgICMgYnV0IHRoZSBjZXJ0aWZpY2F0ZSB1c2VkIGJ5IHRoZSBzZXJ2ZXIgaXMgbm90IHRydXN0ZWQgYnkgYW55IENBIGNlcnRpZmljYXRlXG4gICAgICAgICMgb24gdGhlIHNlcnZlciAoZS5nLiB3aGVuIHNlbGYgZ2VuZXJhdGVkKS5cbiAgICAgICAgY2FfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBrZXkgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19rZXk9XCJcIlxuXG5cbiAgICAjIEdhdGV3YXkgY2hhbm5lbCBjb25maWd1cmF0aW9uLlxuICAgICNcbiAgICAjIE5vdGU6IHRoaXMgY29uZmlndXJhdGlvbiBpcyBvbmx5IHVzZWQgaW4gY2FzZSB0aGUgZ2F0ZXdheSBpcyB1c2luZyB0aGVcbiAgICAjIENoaXJwU3RhY2sgQ29uY2VudHJhdG9yZCBkYWVtb24uIEluIGFueSBvdGhlciBjYXNlLCB0aGlzIGNvbmZpZ3VyYXRpb24gXG4gICAgIyBpcyBpZ25vcmVkLlxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00ODc5MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ4ODEwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDg4MzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00ODg1MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ4ODcwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDg4OTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00ODkxMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ4OTMwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cblxuICAjIFJlZ2lvbiBzcGVjaWZpYyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLm5ldHdvcmtdXG4gICAgXG4gICAgIyBJbnN0YWxsYXRpb24gbWFyZ2luIChkQikgdXNlZCBieSB0aGUgQURSIGVuZ2luZS5cbiAgICAjXG4gICAgIyBBIGhpZ2hlciBudW1iZXIgbWVhbnMgdGhhdCB0aGUgbmV0d29yay1zZXJ2ZXIgd2lsbCBrZWVwIG1vcmUgbWFyZ2luLFxuICAgICMgcmVzdWx0aW5nIGluIGEgbG93ZXIgZGF0YS1yYXRlIGJ1dCBkZWNyZWFzaW5nIHRoZSBjaGFuY2UgdGhhdCB0aGVcbiAgICAjIGRldmljZSBnZXRzIGRpc2Nvbm5lY3RlZCBiZWNhdXNlIGl0IGlzIHVuYWJsZSB0byByZWFjaCBvbmUgb2YgdGhlXG4gICAgIyBzdXJyb3VuZGVkIGdhdGV3YXlzLlxuICAgIGluc3RhbGxhdGlvbl9tYXJnaW49MTBcblxuICAgICMgUlggd2luZG93IChDbGFzcy1BKS5cbiAgICAjXG4gICAgIyBTZXQgdGhpcyB0bzpcbiAgICAjIDA6IFJYMSAvIFJYMlxuICAgICMgMTogUlgxIG9ubHlcbiAgICAjIDI6IFJYMiBvbmx5XG4gICAgcnhfd2luZG93PTBcblxuICAgICMgUlgxIGRlbGF5ICgxIC0gMTUgc2Vjb25kcykuXG4gICAgcngxX2RlbGF5PTFcblxuICAgICMgUlgxIGRhdGEtcmF0ZSBvZmZzZXRcbiAgICByeDFfZHJfb2Zmc2V0PTBcblxuICAgICMgUlgyIGRhdGEtcmF0ZVxuICAgIHJ4Ml9kcj0wXG5cbiAgICAjIFJYMiBmcmVxdWVuY3kgKEh6KVxuICAgIHJ4Ml9mcmVxdWVuY3k9NTA1MzAwMDAwXG5cbiAgICAjIFByZWZlciBSWDIgb24gUlgxIGRhdGEtcmF0ZSBsZXNzIHRoYW4uXG4gICAgI1xuICAgICMgUHJlZmVyIFJYMiBvdmVyIFJYMSBiYXNlZCBvbiB0aGUgUlgxIGRhdGEtcmF0ZS4gV2hlbiB0aGUgUlgxIGRhdGEtcmF0ZVxuICAgICMgaXMgc21hbGxlciB0aGFuIHRoZSBjb25maWd1cmVkIHZhbHVlLCB0aGVuIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsXG4gICAgIyBmaXJzdCB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGZvciBSWDIsIGZhaWxpbmcgdGhhdCAoZS5nLiB0aGUgZ2F0ZXdheVxuICAgICMgaGFzIGFscmVhZHkgYSBwYXlsb2FkIHNjaGVkdWxlZCBhdCB0aGUgUlgyIHRpbWluZykgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fcngxX2RyX2x0PTBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBsaW5rIGJ1ZGdldC5cbiAgICAjXG4gICAgIyBXaGVuIHRoZSBsaW5rLWJ1ZGdldCBpcyBiZXR0ZXIgZm9yIFJYMiB0aGFuIGZvciBSWDEsIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsIGZpcnN0XG4gICAgIyB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGluIFJYMiwgZmFpbGluZyB0aGF0IGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX2xpbmtfYnVkZ2V0PWZhbHNlXG5cbiAgICAjIERvd25saW5rIFRYIFBvd2VyIChkQm0pXG4gICAgI1xuICAgICMgV2hlbiBzZXQgdG8gLTEsIHRoZSBkb3dubGluayBUWCBQb3dlciBmcm9tIHRoZSBjb25maWd1cmVkIGJhbmQgd2lsbFxuICAgICMgYmUgdXNlZC5cbiAgICAjXG4gICAgIyBQbGVhc2UgY29uc3VsdCB0aGUgTG9SYVdBTiBSZWdpb25hbCBQYXJhbWV0ZXJzIGFuZCBsb2NhbCByZWd1bGF0aW9uc1xuICAgICMgZm9yIHZhbGlkIGFuZCBsZWdhbCBvcHRpb25zLiBOb3RlIHRoYXQgdGhlIGNvbmZpZ3VyZWQgVFggUG93ZXIgbXVzdCBiZVxuICAgICMgc3VwcG9ydGVkIGJ5IHlvdXIgZ2F0ZXdheShzKS5cbiAgICBkb3dubGlua190eF9wb3dlcj0tMVxuXG4gICAgIyBBRFIgaXMgZGlzYWJsZWQuXG4gICAgYWRyX2Rpc2FibGVkPWZhbHNlXG5cbiAgICAjIE1pbmltdW0gZGF0YS1yYXRlLlxuICAgIG1pbl9kcj0wXG5cbiAgICAjIE1heGltdW0gZGF0YS1yYXRlLlxuICAgIG1heF9kcj01XG5cbiAgICAjIEVuYWJsZWQgdXBsaW5rIGNoYW5uZWxzLlxuICAgICNcbiAgICAjIFVzZSB0aGlzIHdoZW4gb255IGEgc3ViLXNldCBvZiB0aGUgYnkgZGVmYXVsdCBlbmFibGVkIGNoYW5uZWxzIGFyZSBiZWluZ1xuICAgICMgdXNlZC4gRm9yIGV4YW1wbGUgd2hlbiBvbmx5IHVzaW5nIHRoZSBmaXJzdCA4IGNoYW5uZWxzIG9mIHRoZSBVUyBiYW5kLlxuICAgICMgTm90ZTogd2hlbiBsZWZ0IGJsYW5rIC8gZW1wdHkgYXJyYXksIGFsbCBjaGFubmVscyB3aWxsIGJlIGVuYWJsZWQuXG4gICAgZW5hYmxlZF91cGxpbmtfY2hhbm5lbHM9Wzg4LCA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NV1cblxuXG4gICAgIyBSZWpvaW4tcmVxdWVzdCBjb25maWd1cmF0aW9uIChMb1JhV0FOIDEuMSlcbiAgICBbcmVnaW9ucy5uZXR3b3JrLnJlam9pbl9yZXF1ZXN0XVxuXG4gICAgICAjIFJlcXVlc3QgZGV2aWNlcyB0byBwZXJpb2RpY2FsbHkgc2VuZCByZWpvaW4tcmVxdWVzdHMuXG4gICAgICBlbmFibGVkPWZhbHNlXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X2NvdW50X24gKyA0KVxuICAgICAgIyB1cGxpbmsgbWVzc2FnZXMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgIG1heF9jb3VudF9uPTBcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfdGltZV9uICsgMTApXG4gICAgICAjIHNlY29uZHMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgICNcbiAgICAgICMgMCAgPSByb3VnaGx5IDE3IG1pbnV0ZXNcbiAgICAgICMgMTUgPSBhYm91dCAxIHllYXJcbiAgICAgIG1heF90aW1lX249MFxuICAgIFxuXG4gICAgIyBDbGFzcy1CIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMubmV0d29yay5jbGFzc19iXVxuXG4gICAgICAjIFBpbmctc2xvdCBkYXRhLXJhdGUuIFxuICAgICAgcGluZ19zbG90X2RyPTJcblxuICAgICAgIyBQaW5nLXNsb3QgZnJlcXVlbmN5IChIeilcbiAgICAgICNcbiAgICAgICMgc2V0IHRoaXMgdG8gMCB0byB1c2UgdGhlIGRlZmF1bHQgZnJlcXVlbmN5IHBsYW4gZm9yIHRoZSBjb25maWd1cmVkIHJlZ2lvblxuICAgICAgIyAod2hpY2ggY291bGQgYmUgZnJlcXVlbmN5IGhvcHBpbmcpLlxuICAgICAgcGluZ19zbG90X2ZyZXF1ZW5jeT0wXG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbnNlcnZpY2VOYW1lID0gXCJjaGlycHN0YWNrXCJcbmZpbGVQYXRoID0gXCIvY2hpcnBzdGFjay9yZWdpb25fY240NzBfMS50b21sXCJcbmNvbnRlbnQgPSBcIlwiXCJcbiMgVGhpcyBmaWxlIGNvbnRhaW5zIGFuIGV4YW1wbGUgQ040NzAgZXhhbXBsZSAoY2hhbm5lbHMgOC0xNSkuXG5bW3JlZ2lvbnNdXVxuXG4gICMgSUQgaXMgYW4gdXNlLWRlZmluZWQgaWRlbnRpZmllciBmb3IgdGhpcyByZWdpb24uXG4gIGlkPVwiY240NzBfMVwiXG5cbiAgIyBEZXNjcmlwdGlvbiBpcyBhIHNob3J0IGRlc2NyaXB0aW9uIGZvciB0aGlzIHJlZ2lvbi5cbiAgZGVzY3JpcHRpb249XCJDTjQ3MCAoY2hhbm5lbHMgOC0xNSlcIlxuXG4gICMgQ29tbW9uLW5hbWUgcmVmZXJzIHRvIHRoZSBjb21tb24tbmFtZSBvZiB0aGlzIHJlZ2lvbiBhcyBkZWZpbmVkIGJ5XG4gICMgdGhlIExvUmEgQWxsaWFuY2UuXG4gIGNvbW1vbl9uYW1lPVwiQ040NzBcIlxuXG5cbiAgIyBHYXRld2F5IGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLmdhdGV3YXldXG5cbiAgICAjIEZvcmNlIGdhdGV3YXlzIGFzIHByaXZhdGUuXG4gICAgI1xuICAgICMgSWYgZW5hYmxlZCwgZ2F0ZXdheXMgY2FuIG9ubHkgYmUgdXNlZCBieSBkZXZpY2VzIHVuZGVyIHRoZSBzYW1lIHRlbmFudC5cbiAgICBmb3JjZV9nd3NfcHJpdmF0ZT1mYWxzZVxuXG4gICAgXG4gICAgIyBHYXRld2F5IGJhY2tlbmQgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmRdXG5cbiAgICAgICMgVGhlIGVuYWJsZWQgYmFja2VuZCB0eXBlLlxuICAgICAgZW5hYmxlZD1cIm1xdHRcIlxuXG4gICAgICAjIE1RVFQgY29uZmlndXJhdGlvbi5cbiAgICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZC5tcXR0XVxuXG4gICAgICAgICMgVG9waWMgcHJlZml4LlxuICAgICAgICAjXG4gICAgICAgICMgVGhlIHRvcGljIHByZWZpeCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgdGhlIHJlZ2lvbiBvZiB0aGUgZ2F0ZXdheS5cbiAgICAgICAgIyBOb3RlLCB0aGVyZSBpcyBubyBuZWVkIHRvIGFkZCBhIHRyYWlsaW5nICcvJyB0byB0aGUgcHJlZml4LiBUaGUgdHJhaWxpbmdcbiAgICAgICAgIyAnLycgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgcHJlZml4IGlmIGl0IGlzIGNvbmZpZ3VyZWQuXG4gICAgICAgIHRvcGljX3ByZWZpeD1cImNuNDcwXzFcIlxuXG4gICAgICAgICMgTVFUVCBzZXJ2ZXIgKGUuZy4gc2NoZW1lOi8vaG9zdDpwb3J0IHdoZXJlIHNjaGVtZSBpcyB0Y3AsIHNzbCBvciB3cylcbiAgICAgICAgc2VydmVyPVwidGNwOi8vbW9zcXVpdHRvOjE4ODNcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiB1c2VybmFtZSAob3B0aW9uYWwpXG4gICAgICAgIHVzZXJuYW1lPVwiXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gcGFzc3dvcmQgKG9wdGlvbmFsKVxuICAgICAgICBwYXNzd29yZD1cIlwiXG5cbiAgICAgICAgIyBRdWFsaXR5IG9mIHNlcnZpY2UgbGV2ZWxcbiAgICAgICAgI1xuICAgICAgICAjIDA6IGF0IG1vc3Qgb25jZVxuICAgICAgICAjIDE6IGF0IGxlYXN0IG9uY2VcbiAgICAgICAgIyAyOiBleGFjdGx5IG9uY2VcbiAgICAgICAgI1xuICAgICAgICAjIE5vdGU6IGFuIGluY3JlYXNlIG9mIHRoaXMgdmFsdWUgd2lsbCBkZWNyZWFzZSB0aGUgcGVyZm9ybWFuY2UuXG4gICAgICAgICMgRm9yIG1vcmUgaW5mb3JtYXRpb246IGh0dHBzOi8vd3d3LmhpdmVtcS5jb20vYmxvZy9tcXR0LWVzc2VudGlhbHMtcGFydC02LW1xdHQtcXVhbGl0eS1vZi1zZXJ2aWNlLWxldmVsc1xuICAgICAgICBxb3M9MFxuXG4gICAgICAgICMgQ2xlYW4gc2Vzc2lvblxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBcImNsZWFuIHNlc3Npb25cIiBmbGFnIGluIHRoZSBjb25uZWN0IG1lc3NhZ2Ugd2hlbiB0aGlzIGNsaWVudFxuICAgICAgICAjIGNvbm5lY3RzIHRvIGFuIE1RVFQgYnJva2VyLiBCeSBzZXR0aW5nIHRoaXMgZmxhZyB5b3UgYXJlIGluZGljYXRpbmdcbiAgICAgICAgIyB0aGF0IG5vIG1lc3NhZ2VzIHNhdmVkIGJ5IHRoZSBicm9rZXIgZm9yIHRoaXMgY2xpZW50IHNob3VsZCBiZSBkZWxpdmVyZWQuXG4gICAgICAgIGNsZWFuX3Nlc3Npb249ZmFsc2VcblxuICAgICAgICAjIENsaWVudCBJRFxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBjbGllbnQgaWQgdG8gYmUgdXNlZCBieSB0aGlzIGNsaWVudCB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIE1RVFRcbiAgICAgICAgIyBicm9rZXIuIEEgY2xpZW50IGlkIG11c3QgYmUgbm8gbG9uZ2VyIHRoYW4gMjMgY2hhcmFjdGVycy4gSWYgbGVmdCBibGFuayxcbiAgICAgICAgIyBhIHJhbmRvbSBpZCB3aWxsIGJlIGdlbmVyYXRlZCBieSBDaGlycFN0YWNrLlxuICAgICAgICBjbGllbnRfaWQ9XCJcIlxuXG4gICAgICAgICMgS2VlcCBhbGl2ZSBpbnRlcnZhbC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoaXMgZGVmaW5lcyB0aGUgbWF4aW11bSB0aW1lIHRoYXQgdGhhdCBzaG91bGQgcGFzcyB3aXRob3V0IGNvbW11bmljYXRpb25cbiAgICAgICAgIyBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlci5cbiAgICAgICAga2VlcF9hbGl2ZV9pbnRlcnZhbD1cIjMwc1wiXG5cbiAgICAgICAgIyBDQSBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgI1xuICAgICAgICAjIFVzZSB0aGlzIHdoZW4gc2V0dGluZyB1cCBhIHNlY3VyZSBjb25uZWN0aW9uICh3aGVuIHNlcnZlciB1c2VzIHNzbDovLy4uLilcbiAgICAgICAgIyBidXQgdGhlIGNlcnRpZmljYXRlIHVzZWQgYnkgdGhlIHNlcnZlciBpcyBub3QgdHJ1c3RlZCBieSBhbnkgQ0EgY2VydGlmaWNhdGVcbiAgICAgICAgIyBvbiB0aGUgc2VydmVyIChlLmcuIHdoZW4gc2VsZiBnZW5lcmF0ZWQpLlxuICAgICAgICBjYV9jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGtleSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2tleT1cIlwiXG5cblxuICAgICMgR2F0ZXdheSBjaGFubmVsIGNvbmZpZ3VyYXRpb24uXG4gICAgI1xuICAgICMgTm90ZTogdGhpcyBjb25maWd1cmF0aW9uIGlzIG9ubHkgdXNlZCBpbiBjYXNlIHRoZSBnYXRld2F5IGlzIHVzaW5nIHRoZVxuICAgICMgQ2hpcnBTdGFjayBDb25jZW50cmF0b3JkIGRhZW1vbi4gSW4gYW55IG90aGVyIGNhc2UsIHRoaXMgY29uZmlndXJhdGlvbiBcbiAgICAjIGlzIGlnbm9yZWQuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ3MTkwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDcyMTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00NzIzMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ3MjUwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDcyNzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00NzI5MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ3MzEwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDczMzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuXG4gICMgUmVnaW9uIHNwZWNpZmljIG5ldHdvcmsgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMubmV0d29ya11cbiAgICBcbiAgICAjIEluc3RhbGxhdGlvbiBtYXJnaW4gKGRCKSB1c2VkIGJ5IHRoZSBBRFIgZW5naW5lLlxuICAgICNcbiAgICAjIEEgaGlnaGVyIG51bWJlciBtZWFucyB0aGF0IHRoZSBuZXR3b3JrLXNlcnZlciB3aWxsIGtlZXAgbW9yZSBtYXJnaW4sXG4gICAgIyByZXN1bHRpbmcgaW4gYSBsb3dlciBkYXRhLXJhdGUgYnV0IGRlY3JlYXNpbmcgdGhlIGNoYW5jZSB0aGF0IHRoZVxuICAgICMgZGV2aWNlIGdldHMgZGlzY29ubmVjdGVkIGJlY2F1c2UgaXQgaXMgdW5hYmxlIHRvIHJlYWNoIG9uZSBvZiB0aGVcbiAgICAjIHN1cnJvdW5kZWQgZ2F0ZXdheXMuXG4gICAgaW5zdGFsbGF0aW9uX21hcmdpbj0xMFxuXG4gICAgIyBSWCB3aW5kb3cgKENsYXNzLUEpLlxuICAgICNcbiAgICAjIFNldCB0aGlzIHRvOlxuICAgICMgMDogUlgxIC8gUlgyXG4gICAgIyAxOiBSWDEgb25seVxuICAgICMgMjogUlgyIG9ubHlcbiAgICByeF93aW5kb3c9MFxuXG4gICAgIyBSWDEgZGVsYXkgKDEgLSAxNSBzZWNvbmRzKS5cbiAgICByeDFfZGVsYXk9MVxuXG4gICAgIyBSWDEgZGF0YS1yYXRlIG9mZnNldFxuICAgIHJ4MV9kcl9vZmZzZXQ9MFxuXG4gICAgIyBSWDIgZGF0YS1yYXRlXG4gICAgcngyX2RyPTBcblxuICAgICMgUlgyIGZyZXF1ZW5jeSAoSHopXG4gICAgcngyX2ZyZXF1ZW5jeT01MDUzMDAwMDBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBSWDEgZGF0YS1yYXRlIGxlc3MgdGhhbi5cbiAgICAjXG4gICAgIyBQcmVmZXIgUlgyIG92ZXIgUlgxIGJhc2VkIG9uIHRoZSBSWDEgZGF0YS1yYXRlLiBXaGVuIHRoZSBSWDEgZGF0YS1yYXRlXG4gICAgIyBpcyBzbWFsbGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgdmFsdWUsIHRoZW4gdGhlIE5ldHdvcmsgU2VydmVyIHdpbGxcbiAgICAjIGZpcnN0IHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgZm9yIFJYMiwgZmFpbGluZyB0aGF0IChlLmcuIHRoZSBnYXRld2F5XG4gICAgIyBoYXMgYWxyZWFkeSBhIHBheWxvYWQgc2NoZWR1bGVkIGF0IHRoZSBSWDIgdGltaW5nKSBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9yeDFfZHJfbHQ9MFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIGxpbmsgYnVkZ2V0LlxuICAgICNcbiAgICAjIFdoZW4gdGhlIGxpbmstYnVkZ2V0IGlzIGJldHRlciBmb3IgUlgyIHRoYW4gZm9yIFJYMSwgdGhlIE5ldHdvcmsgU2VydmVyIHdpbGwgZmlyc3RcbiAgICAjIHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgaW4gUlgyLCBmYWlsaW5nIHRoYXQgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fbGlua19idWRnZXQ9ZmFsc2VcblxuICAgICMgRG93bmxpbmsgVFggUG93ZXIgKGRCbSlcbiAgICAjXG4gICAgIyBXaGVuIHNldCB0byAtMSwgdGhlIGRvd25saW5rIFRYIFBvd2VyIGZyb20gdGhlIGNvbmZpZ3VyZWQgYmFuZCB3aWxsXG4gICAgIyBiZSB1c2VkLlxuICAgICNcbiAgICAjIFBsZWFzZSBjb25zdWx0IHRoZSBMb1JhV0FOIFJlZ2lvbmFsIFBhcmFtZXRlcnMgYW5kIGxvY2FsIHJlZ3VsYXRpb25zXG4gICAgIyBmb3IgdmFsaWQgYW5kIGxlZ2FsIG9wdGlvbnMuIE5vdGUgdGhhdCB0aGUgY29uZmlndXJlZCBUWCBQb3dlciBtdXN0IGJlXG4gICAgIyBzdXBwb3J0ZWQgYnkgeW91ciBnYXRld2F5KHMpLlxuICAgIGRvd25saW5rX3R4X3Bvd2VyPS0xXG5cbiAgICAjIEFEUiBpcyBkaXNhYmxlZC5cbiAgICBhZHJfZGlzYWJsZWQ9ZmFsc2VcblxuICAgICMgTWluaW11bSBkYXRhLXJhdGUuXG4gICAgbWluX2RyPTBcblxuICAgICMgTWF4aW11bSBkYXRhLXJhdGUuXG4gICAgbWF4X2RyPTVcblxuICAgICMgRW5hYmxlZCB1cGxpbmsgY2hhbm5lbHMuXG4gICAgI1xuICAgICMgVXNlIHRoaXMgd2hlbiBvbnkgYSBzdWItc2V0IG9mIHRoZSBieSBkZWZhdWx0IGVuYWJsZWQgY2hhbm5lbHMgYXJlIGJlaW5nXG4gICAgIyB1c2VkLiBGb3IgZXhhbXBsZSB3aGVuIG9ubHkgdXNpbmcgdGhlIGZpcnN0IDggY2hhbm5lbHMgb2YgdGhlIFVTIGJhbmQuXG4gICAgIyBOb3RlOiB3aGVuIGxlZnQgYmxhbmsgLyBlbXB0eSBhcnJheSwgYWxsIGNoYW5uZWxzIHdpbGwgYmUgZW5hYmxlZC5cbiAgICBlbmFibGVkX3VwbGlua19jaGFubmVscz1bOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNV1cblxuXG4gICAgIyBSZWpvaW4tcmVxdWVzdCBjb25maWd1cmF0aW9uIChMb1JhV0FOIDEuMSlcbiAgICBbcmVnaW9ucy5uZXR3b3JrLnJlam9pbl9yZXF1ZXN0XVxuXG4gICAgICAjIFJlcXVlc3QgZGV2aWNlcyB0byBwZXJpb2RpY2FsbHkgc2VuZCByZWpvaW4tcmVxdWVzdHMuXG4gICAgICBlbmFibGVkPWZhbHNlXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X2NvdW50X24gKyA0KVxuICAgICAgIyB1cGxpbmsgbWVzc2FnZXMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgIG1heF9jb3VudF9uPTBcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfdGltZV9uICsgMTApXG4gICAgICAjIHNlY29uZHMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgICNcbiAgICAgICMgMCAgPSByb3VnaGx5IDE3IG1pbnV0ZXNcbiAgICAgICMgMTUgPSBhYm91dCAxIHllYXJcbiAgICAgIG1heF90aW1lX249MFxuICAgIFxuXG4gICAgIyBDbGFzcy1CIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMubmV0d29yay5jbGFzc19iXVxuXG4gICAgICAjIFBpbmctc2xvdCBkYXRhLXJhdGUuIFxuICAgICAgcGluZ19zbG90X2RyPTJcblxuICAgICAgIyBQaW5nLXNsb3QgZnJlcXVlbmN5IChIeilcbiAgICAgICNcbiAgICAgICMgc2V0IHRoaXMgdG8gMCB0byB1c2UgdGhlIGRlZmF1bHQgZnJlcXVlbmN5IHBsYW4gZm9yIHRoZSBjb25maWd1cmVkIHJlZ2lvblxuICAgICAgIyAod2hpY2ggY291bGQgYmUgZnJlcXVlbmN5IGhvcHBpbmcpLlxuICAgICAgcGluZ19zbG90X2ZyZXF1ZW5jeT0wXG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbnNlcnZpY2VOYW1lID0gXCJjaGlycHN0YWNrXCJcbmZpbGVQYXRoID0gXCIvY2hpcnBzdGFjay9yZWdpb25fY240NzBfMi50b21sXCJcbmNvbnRlbnQgPSBcIlwiXCJcbiMgVGhpcyBmaWxlIGNvbnRhaW5zIGFuIGV4YW1wbGUgQ040NzAgZXhhbXBsZSAoY2hhbm5lbHMgMTYtMjMpLlxuW1tyZWdpb25zXV1cblxuICAjIElEIGlzIGFuIHVzZS1kZWZpbmVkIGlkZW50aWZpZXIgZm9yIHRoaXMgcmVnaW9uLlxuICBpZD1cImNuNDcwXzJcIlxuXG4gICMgRGVzY3JpcHRpb24gaXMgYSBzaG9ydCBkZXNjcmlwdGlvbiBmb3IgdGhpcyByZWdpb24uXG4gIGRlc2NyaXB0aW9uPVwiQ040NzAgKGNoYW5uZWxzIDE2LTIzKVwiXG5cbiAgIyBDb21tb24tbmFtZSByZWZlcnMgdG8gdGhlIGNvbW1vbi1uYW1lIG9mIHRoaXMgcmVnaW9uIGFzIGRlZmluZWQgYnlcbiAgIyB0aGUgTG9SYSBBbGxpYW5jZS5cbiAgY29tbW9uX25hbWU9XCJDTjQ3MFwiXG5cblxuICAjIEdhdGV3YXkgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMuZ2F0ZXdheV1cblxuICAgICMgRm9yY2UgZ2F0ZXdheXMgYXMgcHJpdmF0ZS5cbiAgICAjXG4gICAgIyBJZiBlbmFibGVkLCBnYXRld2F5cyBjYW4gb25seSBiZSB1c2VkIGJ5IGRldmljZXMgdW5kZXIgdGhlIHNhbWUgdGVuYW50LlxuICAgIGZvcmNlX2d3c19wcml2YXRlPWZhbHNlXG5cbiAgICBcbiAgICAjIEdhdGV3YXkgYmFja2VuZCBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZF1cblxuICAgICAgIyBUaGUgZW5hYmxlZCBiYWNrZW5kIHR5cGUuXG4gICAgICBlbmFibGVkPVwibXF0dFwiXG5cbiAgICAgICMgTVFUVCBjb25maWd1cmF0aW9uLlxuICAgICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kLm1xdHRdXG5cbiAgICAgICAgIyBUb3BpYyBwcmVmaXguXG4gICAgICAgICNcbiAgICAgICAgIyBUaGUgdG9waWMgcHJlZml4IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB0aGUgcmVnaW9uIG9mIHRoZSBnYXRld2F5LlxuICAgICAgICAjIE5vdGUsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYWRkIGEgdHJhaWxpbmcgJy8nIHRvIHRoZSBwcmVmaXguIFRoZSB0cmFpbGluZ1xuICAgICAgICAjICcvJyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBwcmVmaXggaWYgaXQgaXMgY29uZmlndXJlZC5cbiAgICAgICAgdG9waWNfcHJlZml4PVwiY240NzBfMlwiXG5cbiAgICAgICAgIyBNUVRUIHNlcnZlciAoZS5nLiBzY2hlbWU6Ly9ob3N0OnBvcnQgd2hlcmUgc2NoZW1lIGlzIHRjcCwgc3NsIG9yIHdzKVxuICAgICAgICBzZXJ2ZXI9XCJ0Y3A6Ly9tb3NxdWl0dG86MTg4M1wiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHVzZXJuYW1lIChvcHRpb25hbClcbiAgICAgICAgdXNlcm5hbWU9XCJcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiBwYXNzd29yZCAob3B0aW9uYWwpXG4gICAgICAgIHBhc3N3b3JkPVwiXCJcblxuICAgICAgICAjIFF1YWxpdHkgb2Ygc2VydmljZSBsZXZlbFxuICAgICAgICAjXG4gICAgICAgICMgMDogYXQgbW9zdCBvbmNlXG4gICAgICAgICMgMTogYXQgbGVhc3Qgb25jZVxuICAgICAgICAjIDI6IGV4YWN0bHkgb25jZVxuICAgICAgICAjXG4gICAgICAgICMgTm90ZTogYW4gaW5jcmVhc2Ugb2YgdGhpcyB2YWx1ZSB3aWxsIGRlY3JlYXNlIHRoZSBwZXJmb3JtYW5jZS5cbiAgICAgICAgIyBGb3IgbW9yZSBpbmZvcm1hdGlvbjogaHR0cHM6Ly93d3cuaGl2ZW1xLmNvbS9ibG9nL21xdHQtZXNzZW50aWFscy1wYXJ0LTYtbXF0dC1xdWFsaXR5LW9mLXNlcnZpY2UtbGV2ZWxzXG4gICAgICAgIHFvcz0wXG5cbiAgICAgICAgIyBDbGVhbiBzZXNzaW9uXG4gICAgICAgICNcbiAgICAgICAgIyBTZXQgdGhlIFwiY2xlYW4gc2Vzc2lvblwiIGZsYWcgaW4gdGhlIGNvbm5lY3QgbWVzc2FnZSB3aGVuIHRoaXMgY2xpZW50XG4gICAgICAgICMgY29ubmVjdHMgdG8gYW4gTVFUVCBicm9rZXIuIEJ5IHNldHRpbmcgdGhpcyBmbGFnIHlvdSBhcmUgaW5kaWNhdGluZ1xuICAgICAgICAjIHRoYXQgbm8gbWVzc2FnZXMgc2F2ZWQgYnkgdGhlIGJyb2tlciBmb3IgdGhpcyBjbGllbnQgc2hvdWxkIGJlIGRlbGl2ZXJlZC5cbiAgICAgICAgY2xlYW5fc2Vzc2lvbj1mYWxzZVxuXG4gICAgICAgICMgQ2xpZW50IElEXG4gICAgICAgICNcbiAgICAgICAgIyBTZXQgdGhlIGNsaWVudCBpZCB0byBiZSB1c2VkIGJ5IHRoaXMgY2xpZW50IHdoZW4gY29ubmVjdGluZyB0byB0aGUgTVFUVFxuICAgICAgICAjIGJyb2tlci4gQSBjbGllbnQgaWQgbXVzdCBiZSBubyBsb25nZXIgdGhhbiAyMyBjaGFyYWN0ZXJzLiBJZiBsZWZ0IGJsYW5rLFxuICAgICAgICAjIGEgcmFuZG9tIGlkIHdpbGwgYmUgZ2VuZXJhdGVkIGJ5IENoaXJwU3RhY2suXG4gICAgICAgIGNsaWVudF9pZD1cIlwiXG5cbiAgICAgICAgIyBLZWVwIGFsaXZlIGludGVydmFsLlxuICAgICAgICAjXG4gICAgICAgICMgVGhpcyBkZWZpbmVzIHRoZSBtYXhpbXVtIHRpbWUgdGhhdCB0aGF0IHNob3VsZCBwYXNzIHdpdGhvdXQgY29tbXVuaWNhdGlvblxuICAgICAgICAjIGJldHdlZW4gdGhlIGNsaWVudCBhbmQgc2VydmVyLlxuICAgICAgICBrZWVwX2FsaXZlX2ludGVydmFsPVwiMzBzXCJcblxuICAgICAgICAjIENBIGNlcnRpZmljYXRlIGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICAjXG4gICAgICAgICMgVXNlIHRoaXMgd2hlbiBzZXR0aW5nIHVwIGEgc2VjdXJlIGNvbm5lY3Rpb24gKHdoZW4gc2VydmVyIHVzZXMgc3NsOi8vLi4uKVxuICAgICAgICAjIGJ1dCB0aGUgY2VydGlmaWNhdGUgdXNlZCBieSB0aGUgc2VydmVyIGlzIG5vdCB0cnVzdGVkIGJ5IGFueSBDQSBjZXJ0aWZpY2F0ZVxuICAgICAgICAjIG9uIHRoZSBzZXJ2ZXIgKGUuZy4gd2hlbiBzZWxmIGdlbmVyYXRlZCkuXG4gICAgICAgIGNhX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGNlcnRpZmljYXRlIGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICB0bHNfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMga2V5IGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICB0bHNfa2V5PVwiXCJcblxuXG4gICAgIyBHYXRld2F5IGNoYW5uZWwgY29uZmlndXJhdGlvbi5cbiAgICAjXG4gICAgIyBOb3RlOiB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgb25seSB1c2VkIGluIGNhc2UgdGhlIGdhdGV3YXkgaXMgdXNpbmcgdGhlXG4gICAgIyBDaGlycFN0YWNrIENvbmNlbnRyYXRvcmQgZGFlbW9uLiBJbiBhbnkgb3RoZXIgY2FzZSwgdGhpcyBjb25maWd1cmF0aW9uIFxuICAgICMgaXMgaWdub3JlZC5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDczNTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00NzM3MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ3MzkwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDc0MTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00NzQzMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ3NDUwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDc0NzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00NzQ5MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG5cbiAgIyBSZWdpb24gc3BlY2lmaWMgbmV0d29yayBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5uZXR3b3JrXVxuICAgIFxuICAgICMgSW5zdGFsbGF0aW9uIG1hcmdpbiAoZEIpIHVzZWQgYnkgdGhlIEFEUiBlbmdpbmUuXG4gICAgI1xuICAgICMgQSBoaWdoZXIgbnVtYmVyIG1lYW5zIHRoYXQgdGhlIG5ldHdvcmstc2VydmVyIHdpbGwga2VlcCBtb3JlIG1hcmdpbixcbiAgICAjIHJlc3VsdGluZyBpbiBhIGxvd2VyIGRhdGEtcmF0ZSBidXQgZGVjcmVhc2luZyB0aGUgY2hhbmNlIHRoYXQgdGhlXG4gICAgIyBkZXZpY2UgZ2V0cyBkaXNjb25uZWN0ZWQgYmVjYXVzZSBpdCBpcyB1bmFibGUgdG8gcmVhY2ggb25lIG9mIHRoZVxuICAgICMgc3Vycm91bmRlZCBnYXRld2F5cy5cbiAgICBpbnN0YWxsYXRpb25fbWFyZ2luPTEwXG5cbiAgICAjIFJYIHdpbmRvdyAoQ2xhc3MtQSkuXG4gICAgI1xuICAgICMgU2V0IHRoaXMgdG86XG4gICAgIyAwOiBSWDEgLyBSWDJcbiAgICAjIDE6IFJYMSBvbmx5XG4gICAgIyAyOiBSWDIgb25seVxuICAgIHJ4X3dpbmRvdz0wXG5cbiAgICAjIFJYMSBkZWxheSAoMSAtIDE1IHNlY29uZHMpLlxuICAgIHJ4MV9kZWxheT0xXG5cbiAgICAjIFJYMSBkYXRhLXJhdGUgb2Zmc2V0XG4gICAgcngxX2RyX29mZnNldD0wXG5cbiAgICAjIFJYMiBkYXRhLXJhdGVcbiAgICByeDJfZHI9MFxuXG4gICAgIyBSWDIgZnJlcXVlbmN5IChIeilcbiAgICByeDJfZnJlcXVlbmN5PTUwNTMwMDAwMFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIFJYMSBkYXRhLXJhdGUgbGVzcyB0aGFuLlxuICAgICNcbiAgICAjIFByZWZlciBSWDIgb3ZlciBSWDEgYmFzZWQgb24gdGhlIFJYMSBkYXRhLXJhdGUuIFdoZW4gdGhlIFJYMSBkYXRhLXJhdGVcbiAgICAjIGlzIHNtYWxsZXIgdGhhbiB0aGUgY29uZmlndXJlZCB2YWx1ZSwgdGhlbiB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbFxuICAgICMgZmlyc3QgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBmb3IgUlgyLCBmYWlsaW5nIHRoYXQgKGUuZy4gdGhlIGdhdGV3YXlcbiAgICAjIGhhcyBhbHJlYWR5IGEgcGF5bG9hZCBzY2hlZHVsZWQgYXQgdGhlIFJYMiB0aW1pbmcpIGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX3J4MV9kcl9sdD0wXG5cbiAgICAjIFByZWZlciBSWDIgb24gbGluayBidWRnZXQuXG4gICAgI1xuICAgICMgV2hlbiB0aGUgbGluay1idWRnZXQgaXMgYmV0dGVyIGZvciBSWDIgdGhhbiBmb3IgUlgxLCB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbCBmaXJzdFxuICAgICMgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBpbiBSWDIsIGZhaWxpbmcgdGhhdCBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9saW5rX2J1ZGdldD1mYWxzZVxuXG4gICAgIyBEb3dubGluayBUWCBQb3dlciAoZEJtKVxuICAgICNcbiAgICAjIFdoZW4gc2V0IHRvIC0xLCB0aGUgZG93bmxpbmsgVFggUG93ZXIgZnJvbSB0aGUgY29uZmlndXJlZCBiYW5kIHdpbGxcbiAgICAjIGJlIHVzZWQuXG4gICAgI1xuICAgICMgUGxlYXNlIGNvbnN1bHQgdGhlIExvUmFXQU4gUmVnaW9uYWwgUGFyYW1ldGVycyBhbmQgbG9jYWwgcmVndWxhdGlvbnNcbiAgICAjIGZvciB2YWxpZCBhbmQgbGVnYWwgb3B0aW9ucy4gTm90ZSB0aGF0IHRoZSBjb25maWd1cmVkIFRYIFBvd2VyIG11c3QgYmVcbiAgICAjIHN1cHBvcnRlZCBieSB5b3VyIGdhdGV3YXkocykuXG4gICAgZG93bmxpbmtfdHhfcG93ZXI9LTFcblxuICAgICMgQURSIGlzIGRpc2FibGVkLlxuICAgIGFkcl9kaXNhYmxlZD1mYWxzZVxuXG4gICAgIyBNaW5pbXVtIGRhdGEtcmF0ZS5cbiAgICBtaW5fZHI9MFxuXG4gICAgIyBNYXhpbXVtIGRhdGEtcmF0ZS5cbiAgICBtYXhfZHI9NVxuXG4gICAgIyBFbmFibGVkIHVwbGluayBjaGFubmVscy5cbiAgICAjXG4gICAgIyBVc2UgdGhpcyB3aGVuIG9ueSBhIHN1Yi1zZXQgb2YgdGhlIGJ5IGRlZmF1bHQgZW5hYmxlZCBjaGFubmVscyBhcmUgYmVpbmdcbiAgICAjIHVzZWQuIEZvciBleGFtcGxlIHdoZW4gb25seSB1c2luZyB0aGUgZmlyc3QgOCBjaGFubmVscyBvZiB0aGUgVVMgYmFuZC5cbiAgICAjIE5vdGU6IHdoZW4gbGVmdCBibGFuayAvIGVtcHR5IGFycmF5LCBhbGwgY2hhbm5lbHMgd2lsbCBiZSBlbmFibGVkLlxuICAgIGVuYWJsZWRfdXBsaW5rX2NoYW5uZWxzPVsxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjNdXG5cblxuICAgICMgUmVqb2luLXJlcXVlc3QgY29uZmlndXJhdGlvbiAoTG9SYVdBTiAxLjEpXG4gICAgW3JlZ2lvbnMubmV0d29yay5yZWpvaW5fcmVxdWVzdF1cblxuICAgICAgIyBSZXF1ZXN0IGRldmljZXMgdG8gcGVyaW9kaWNhbGx5IHNlbmQgcmVqb2luLXJlcXVlc3RzLlxuICAgICAgZW5hYmxlZD1mYWxzZVxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF9jb3VudF9uICsgNClcbiAgICAgICMgdXBsaW5rIG1lc3NhZ2VzLiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gMTUuXG4gICAgICBtYXhfY291bnRfbj0wXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X3RpbWVfbiArIDEwKVxuICAgICAgIyBzZWNvbmRzLiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gMTUuXG4gICAgICAjXG4gICAgICAjIDAgID0gcm91Z2hseSAxNyBtaW51dGVzXG4gICAgICAjIDE1ID0gYWJvdXQgMSB5ZWFyXG4gICAgICBtYXhfdGltZV9uPTBcbiAgICBcblxuICAgICMgQ2xhc3MtQiBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLm5ldHdvcmsuY2xhc3NfYl1cblxuICAgICAgIyBQaW5nLXNsb3QgZGF0YS1yYXRlLiBcbiAgICAgIHBpbmdfc2xvdF9kcj0yXG5cbiAgICAgICMgUGluZy1zbG90IGZyZXF1ZW5jeSAoSHopXG4gICAgICAjXG4gICAgICAjIHNldCB0aGlzIHRvIDAgdG8gdXNlIHRoZSBkZWZhdWx0IGZyZXF1ZW5jeSBwbGFuIGZvciB0aGUgY29uZmlndXJlZCByZWdpb25cbiAgICAgICMgKHdoaWNoIGNvdWxkIGJlIGZyZXF1ZW5jeSBob3BwaW5nKS5cbiAgICAgIHBpbmdfc2xvdF9mcmVxdWVuY3k9MFxuXCJcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5zZXJ2aWNlTmFtZSA9IFwiY2hpcnBzdGFja1wiXG5maWxlUGF0aCA9IFwiL2NoaXJwc3RhY2svcmVnaW9uX2NuNDcwXzMudG9tbFwiXG5jb250ZW50ID0gXCJcIlwiXG4jIFRoaXMgZmlsZSBjb250YWlucyBhbiBleGFtcGxlIENONDcwIGV4YW1wbGUgKGNoYW5uZWxzIDI0LTMxKS5cbltbcmVnaW9uc11dXG5cbiAgIyBJRCBpcyBhbiB1c2UtZGVmaW5lZCBpZGVudGlmaWVyIGZvciB0aGlzIHJlZ2lvbi5cbiAgaWQ9XCJjbjQ3MF8zXCJcblxuICAjIERlc2NyaXB0aW9uIGlzIGEgc2hvcnQgZGVzY3JpcHRpb24gZm9yIHRoaXMgcmVnaW9uLlxuICBkZXNjcmlwdGlvbj1cIkNONDcwIChjaGFubmVscyAyNC0zMSlcIlxuXG4gICMgQ29tbW9uLW5hbWUgcmVmZXJzIHRvIHRoZSBjb21tb24tbmFtZSBvZiB0aGlzIHJlZ2lvbiBhcyBkZWZpbmVkIGJ5XG4gICMgdGhlIExvUmEgQWxsaWFuY2UuXG4gIGNvbW1vbl9uYW1lPVwiQ040NzBcIlxuXG5cbiAgIyBHYXRld2F5IGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLmdhdGV3YXldXG5cbiAgICAjIEZvcmNlIGdhdGV3YXlzIGFzIHByaXZhdGUuXG4gICAgI1xuICAgICMgSWYgZW5hYmxlZCwgZ2F0ZXdheXMgY2FuIG9ubHkgYmUgdXNlZCBieSBkZXZpY2VzIHVuZGVyIHRoZSBzYW1lIHRlbmFudC5cbiAgICBmb3JjZV9nd3NfcHJpdmF0ZT1mYWxzZVxuXG4gICAgXG4gICAgIyBHYXRld2F5IGJhY2tlbmQgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmRdXG5cbiAgICAgICMgVGhlIGVuYWJsZWQgYmFja2VuZCB0eXBlLlxuICAgICAgZW5hYmxlZD1cIm1xdHRcIlxuXG4gICAgICAjIE1RVFQgY29uZmlndXJhdGlvbi5cbiAgICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZC5tcXR0XVxuXG4gICAgICAgICMgVG9waWMgcHJlZml4LlxuICAgICAgICAjXG4gICAgICAgICMgVGhlIHRvcGljIHByZWZpeCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgdGhlIHJlZ2lvbiBvZiB0aGUgZ2F0ZXdheS5cbiAgICAgICAgIyBOb3RlLCB0aGVyZSBpcyBubyBuZWVkIHRvIGFkZCBhIHRyYWlsaW5nICcvJyB0byB0aGUgcHJlZml4LiBUaGUgdHJhaWxpbmdcbiAgICAgICAgIyAnLycgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgcHJlZml4IGlmIGl0IGlzIGNvbmZpZ3VyZWQuXG4gICAgICAgIHRvcGljX3ByZWZpeD1cImNuNDcwXzNcIlxuXG4gICAgICAgICMgTVFUVCBzZXJ2ZXIgKGUuZy4gc2NoZW1lOi8vaG9zdDpwb3J0IHdoZXJlIHNjaGVtZSBpcyB0Y3AsIHNzbCBvciB3cylcbiAgICAgICAgc2VydmVyPVwidGNwOi8vbW9zcXVpdHRvOjE4ODNcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiB1c2VybmFtZSAob3B0aW9uYWwpXG4gICAgICAgIHVzZXJuYW1lPVwiXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gcGFzc3dvcmQgKG9wdGlvbmFsKVxuICAgICAgICBwYXNzd29yZD1cIlwiXG5cbiAgICAgICAgIyBRdWFsaXR5IG9mIHNlcnZpY2UgbGV2ZWxcbiAgICAgICAgI1xuICAgICAgICAjIDA6IGF0IG1vc3Qgb25jZVxuICAgICAgICAjIDE6IGF0IGxlYXN0IG9uY2VcbiAgICAgICAgIyAyOiBleGFjdGx5IG9uY2VcbiAgICAgICAgI1xuICAgICAgICAjIE5vdGU6IGFuIGluY3JlYXNlIG9mIHRoaXMgdmFsdWUgd2lsbCBkZWNyZWFzZSB0aGUgcGVyZm9ybWFuY2UuXG4gICAgICAgICMgRm9yIG1vcmUgaW5mb3JtYXRpb246IGh0dHBzOi8vd3d3LmhpdmVtcS5jb20vYmxvZy9tcXR0LWVzc2VudGlhbHMtcGFydC02LW1xdHQtcXVhbGl0eS1vZi1zZXJ2aWNlLWxldmVsc1xuICAgICAgICBxb3M9MFxuXG4gICAgICAgICMgQ2xlYW4gc2Vzc2lvblxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBcImNsZWFuIHNlc3Npb25cIiBmbGFnIGluIHRoZSBjb25uZWN0IG1lc3NhZ2Ugd2hlbiB0aGlzIGNsaWVudFxuICAgICAgICAjIGNvbm5lY3RzIHRvIGFuIE1RVFQgYnJva2VyLiBCeSBzZXR0aW5nIHRoaXMgZmxhZyB5b3UgYXJlIGluZGljYXRpbmdcbiAgICAgICAgIyB0aGF0IG5vIG1lc3NhZ2VzIHNhdmVkIGJ5IHRoZSBicm9rZXIgZm9yIHRoaXMgY2xpZW50IHNob3VsZCBiZSBkZWxpdmVyZWQuXG4gICAgICAgIGNsZWFuX3Nlc3Npb249ZmFsc2VcblxuICAgICAgICAjIENsaWVudCBJRFxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBjbGllbnQgaWQgdG8gYmUgdXNlZCBieSB0aGlzIGNsaWVudCB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIE1RVFRcbiAgICAgICAgIyBicm9rZXIuIEEgY2xpZW50IGlkIG11c3QgYmUgbm8gbG9uZ2VyIHRoYW4gMjMgY2hhcmFjdGVycy4gSWYgbGVmdCBibGFuayxcbiAgICAgICAgIyBhIHJhbmRvbSBpZCB3aWxsIGJlIGdlbmVyYXRlZCBieSBDaGlycFN0YWNrLlxuICAgICAgICBjbGllbnRfaWQ9XCJcIlxuXG4gICAgICAgICMgS2VlcCBhbGl2ZSBpbnRlcnZhbC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoaXMgZGVmaW5lcyB0aGUgbWF4aW11bSB0aW1lIHRoYXQgdGhhdCBzaG91bGQgcGFzcyB3aXRob3V0IGNvbW11bmljYXRpb25cbiAgICAgICAgIyBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlci5cbiAgICAgICAga2VlcF9hbGl2ZV9pbnRlcnZhbD1cIjMwc1wiXG5cbiAgICAgICAgIyBDQSBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgI1xuICAgICAgICAjIFVzZSB0aGlzIHdoZW4gc2V0dGluZyB1cCBhIHNlY3VyZSBjb25uZWN0aW9uICh3aGVuIHNlcnZlciB1c2VzIHNzbDovLy4uLilcbiAgICAgICAgIyBidXQgdGhlIGNlcnRpZmljYXRlIHVzZWQgYnkgdGhlIHNlcnZlciBpcyBub3QgdHJ1c3RlZCBieSBhbnkgQ0EgY2VydGlmaWNhdGVcbiAgICAgICAgIyBvbiB0aGUgc2VydmVyIChlLmcuIHdoZW4gc2VsZiBnZW5lcmF0ZWQpLlxuICAgICAgICBjYV9jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGtleSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2tleT1cIlwiXG5cblxuICAgICMgR2F0ZXdheSBjaGFubmVsIGNvbmZpZ3VyYXRpb24uXG4gICAgI1xuICAgICMgTm90ZTogdGhpcyBjb25maWd1cmF0aW9uIGlzIG9ubHkgdXNlZCBpbiBjYXNlIHRoZSBnYXRld2F5IGlzIHVzaW5nIHRoZVxuICAgICMgQ2hpcnBTdGFjayBDb25jZW50cmF0b3JkIGRhZW1vbi4gSW4gYW55IG90aGVyIGNhc2UsIHRoaXMgY29uZmlndXJhdGlvbiBcbiAgICAjIGlzIGlnbm9yZWQuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ3NTEwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDc1MzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00NzU1MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ3NTcwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDc1OTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00NzYxMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ3NjMwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDc2NTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuXG4gICMgUmVnaW9uIHNwZWNpZmljIG5ldHdvcmsgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMubmV0d29ya11cbiAgICBcbiAgICAjIEluc3RhbGxhdGlvbiBtYXJnaW4gKGRCKSB1c2VkIGJ5IHRoZSBBRFIgZW5naW5lLlxuICAgICNcbiAgICAjIEEgaGlnaGVyIG51bWJlciBtZWFucyB0aGF0IHRoZSBuZXR3b3JrLXNlcnZlciB3aWxsIGtlZXAgbW9yZSBtYXJnaW4sXG4gICAgIyByZXN1bHRpbmcgaW4gYSBsb3dlciBkYXRhLXJhdGUgYnV0IGRlY3JlYXNpbmcgdGhlIGNoYW5jZSB0aGF0IHRoZVxuICAgICMgZGV2aWNlIGdldHMgZGlzY29ubmVjdGVkIGJlY2F1c2UgaXQgaXMgdW5hYmxlIHRvIHJlYWNoIG9uZSBvZiB0aGVcbiAgICAjIHN1cnJvdW5kZWQgZ2F0ZXdheXMuXG4gICAgaW5zdGFsbGF0aW9uX21hcmdpbj0xMFxuXG4gICAgIyBSWCB3aW5kb3cgKENsYXNzLUEpLlxuICAgICNcbiAgICAjIFNldCB0aGlzIHRvOlxuICAgICMgMDogUlgxIC8gUlgyXG4gICAgIyAxOiBSWDEgb25seVxuICAgICMgMjogUlgyIG9ubHlcbiAgICByeF93aW5kb3c9MFxuXG4gICAgIyBSWDEgZGVsYXkgKDEgLSAxNSBzZWNvbmRzKS5cbiAgICByeDFfZGVsYXk9MVxuXG4gICAgIyBSWDEgZGF0YS1yYXRlIG9mZnNldFxuICAgIHJ4MV9kcl9vZmZzZXQ9MFxuXG4gICAgIyBSWDIgZGF0YS1yYXRlXG4gICAgcngyX2RyPTBcblxuICAgICMgUlgyIGZyZXF1ZW5jeSAoSHopXG4gICAgcngyX2ZyZXF1ZW5jeT01MDUzMDAwMDBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBSWDEgZGF0YS1yYXRlIGxlc3MgdGhhbi5cbiAgICAjXG4gICAgIyBQcmVmZXIgUlgyIG92ZXIgUlgxIGJhc2VkIG9uIHRoZSBSWDEgZGF0YS1yYXRlLiBXaGVuIHRoZSBSWDEgZGF0YS1yYXRlXG4gICAgIyBpcyBzbWFsbGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgdmFsdWUsIHRoZW4gdGhlIE5ldHdvcmsgU2VydmVyIHdpbGxcbiAgICAjIGZpcnN0IHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgZm9yIFJYMiwgZmFpbGluZyB0aGF0IChlLmcuIHRoZSBnYXRld2F5XG4gICAgIyBoYXMgYWxyZWFkeSBhIHBheWxvYWQgc2NoZWR1bGVkIGF0IHRoZSBSWDIgdGltaW5nKSBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9yeDFfZHJfbHQ9MFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIGxpbmsgYnVkZ2V0LlxuICAgICNcbiAgICAjIFdoZW4gdGhlIGxpbmstYnVkZ2V0IGlzIGJldHRlciBmb3IgUlgyIHRoYW4gZm9yIFJYMSwgdGhlIE5ldHdvcmsgU2VydmVyIHdpbGwgZmlyc3RcbiAgICAjIHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgaW4gUlgyLCBmYWlsaW5nIHRoYXQgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fbGlua19idWRnZXQ9ZmFsc2VcblxuICAgICMgRG93bmxpbmsgVFggUG93ZXIgKGRCbSlcbiAgICAjXG4gICAgIyBXaGVuIHNldCB0byAtMSwgdGhlIGRvd25saW5rIFRYIFBvd2VyIGZyb20gdGhlIGNvbmZpZ3VyZWQgYmFuZCB3aWxsXG4gICAgIyBiZSB1c2VkLlxuICAgICNcbiAgICAjIFBsZWFzZSBjb25zdWx0IHRoZSBMb1JhV0FOIFJlZ2lvbmFsIFBhcmFtZXRlcnMgYW5kIGxvY2FsIHJlZ3VsYXRpb25zXG4gICAgIyBmb3IgdmFsaWQgYW5kIGxlZ2FsIG9wdGlvbnMuIE5vdGUgdGhhdCB0aGUgY29uZmlndXJlZCBUWCBQb3dlciBtdXN0IGJlXG4gICAgIyBzdXBwb3J0ZWQgYnkgeW91ciBnYXRld2F5KHMpLlxuICAgIGRvd25saW5rX3R4X3Bvd2VyPS0xXG5cbiAgICAjIEFEUiBpcyBkaXNhYmxlZC5cbiAgICBhZHJfZGlzYWJsZWQ9ZmFsc2VcblxuICAgICMgTWluaW11bSBkYXRhLXJhdGUuXG4gICAgbWluX2RyPTBcblxuICAgICMgTWF4aW11bSBkYXRhLXJhdGUuXG4gICAgbWF4X2RyPTVcblxuICAgICMgRW5hYmxlZCB1cGxpbmsgY2hhbm5lbHMuXG4gICAgI1xuICAgICMgVXNlIHRoaXMgd2hlbiBvbnkgYSBzdWItc2V0IG9mIHRoZSBieSBkZWZhdWx0IGVuYWJsZWQgY2hhbm5lbHMgYXJlIGJlaW5nXG4gICAgIyB1c2VkLiBGb3IgZXhhbXBsZSB3aGVuIG9ubHkgdXNpbmcgdGhlIGZpcnN0IDggY2hhbm5lbHMgb2YgdGhlIFVTIGJhbmQuXG4gICAgIyBOb3RlOiB3aGVuIGxlZnQgYmxhbmsgLyBlbXB0eSBhcnJheSwgYWxsIGNoYW5uZWxzIHdpbGwgYmUgZW5hYmxlZC5cbiAgICBlbmFibGVkX3VwbGlua19jaGFubmVscz1bMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxXVxuXG5cbiAgICAjIFJlam9pbi1yZXF1ZXN0IGNvbmZpZ3VyYXRpb24gKExvUmFXQU4gMS4xKVxuICAgIFtyZWdpb25zLm5ldHdvcmsucmVqb2luX3JlcXVlc3RdXG5cbiAgICAgICMgUmVxdWVzdCBkZXZpY2VzIHRvIHBlcmlvZGljYWxseSBzZW5kIHJlam9pbi1yZXF1ZXN0cy5cbiAgICAgIGVuYWJsZWQ9ZmFsc2VcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfY291bnRfbiArIDQpXG4gICAgICAjIHVwbGluayBtZXNzYWdlcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgbWF4X2NvdW50X249MFxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF90aW1lX24gKyAxMClcbiAgICAgICMgc2Vjb25kcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgI1xuICAgICAgIyAwICA9IHJvdWdobHkgMTcgbWludXRlc1xuICAgICAgIyAxNSA9IGFib3V0IDEgeWVhclxuICAgICAgbWF4X3RpbWVfbj0wXG4gICAgXG5cbiAgICAjIENsYXNzLUIgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5uZXR3b3JrLmNsYXNzX2JdXG5cbiAgICAgICMgUGluZy1zbG90IGRhdGEtcmF0ZS4gXG4gICAgICBwaW5nX3Nsb3RfZHI9MlxuXG4gICAgICAjIFBpbmctc2xvdCBmcmVxdWVuY3kgKEh6KVxuICAgICAgI1xuICAgICAgIyBzZXQgdGhpcyB0byAwIHRvIHVzZSB0aGUgZGVmYXVsdCBmcmVxdWVuY3kgcGxhbiBmb3IgdGhlIGNvbmZpZ3VyZWQgcmVnaW9uXG4gICAgICAjICh3aGljaCBjb3VsZCBiZSBmcmVxdWVuY3kgaG9wcGluZykuXG4gICAgICBwaW5nX3Nsb3RfZnJlcXVlbmN5PTBcblwiXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuc2VydmljZU5hbWUgPSBcImNoaXJwc3RhY2tcIlxuZmlsZVBhdGggPSBcIi9jaGlycHN0YWNrL3JlZ2lvbl9jbjQ3MF80LnRvbWxcIlxuY29udGVudCA9IFwiXCJcIlxuIyBUaGlzIGZpbGUgY29udGFpbnMgYW4gZXhhbXBsZSBDTjQ3MCBleGFtcGxlIChjaGFubmVscyAzMi0zOSkuXG5bW3JlZ2lvbnNdXVxuXG4gICMgSUQgaXMgYW4gdXNlLWRlZmluZWQgaWRlbnRpZmllciBmb3IgdGhpcyByZWdpb24uXG4gIGlkPVwiY240NzBfNFwiXG5cbiAgIyBEZXNjcmlwdGlvbiBpcyBhIHNob3J0IGRlc2NyaXB0aW9uIGZvciB0aGlzIHJlZ2lvbi5cbiAgZGVzY3JpcHRpb249XCJDTjQ3MCAoY2hhbm5lbHMgMzItMzkpXCJcblxuICAjIENvbW1vbi1uYW1lIHJlZmVycyB0byB0aGUgY29tbW9uLW5hbWUgb2YgdGhpcyByZWdpb24gYXMgZGVmaW5lZCBieVxuICAjIHRoZSBMb1JhIEFsbGlhbmNlLlxuICBjb21tb25fbmFtZT1cIkNONDcwXCJcblxuXG4gICMgR2F0ZXdheSBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5nYXRld2F5XVxuXG4gICAgIyBGb3JjZSBnYXRld2F5cyBhcyBwcml2YXRlLlxuICAgICNcbiAgICAjIElmIGVuYWJsZWQsIGdhdGV3YXlzIGNhbiBvbmx5IGJlIHVzZWQgYnkgZGV2aWNlcyB1bmRlciB0aGUgc2FtZSB0ZW5hbnQuXG4gICAgZm9yY2VfZ3dzX3ByaXZhdGU9ZmFsc2VcblxuICAgIFxuICAgICMgR2F0ZXdheSBiYWNrZW5kIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kXVxuXG4gICAgICAjIFRoZSBlbmFibGVkIGJhY2tlbmQgdHlwZS5cbiAgICAgIGVuYWJsZWQ9XCJtcXR0XCJcblxuICAgICAgIyBNUVRUIGNvbmZpZ3VyYXRpb24uXG4gICAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmQubXF0dF1cblxuICAgICAgICAjIFRvcGljIHByZWZpeC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoZSB0b3BpYyBwcmVmaXggY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHRoZSByZWdpb24gb2YgdGhlIGdhdGV3YXkuXG4gICAgICAgICMgTm90ZSwgdGhlcmUgaXMgbm8gbmVlZCB0byBhZGQgYSB0cmFpbGluZyAnLycgdG8gdGhlIHByZWZpeC4gVGhlIHRyYWlsaW5nXG4gICAgICAgICMgJy8nIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIHByZWZpeCBpZiBpdCBpcyBjb25maWd1cmVkLlxuICAgICAgICB0b3BpY19wcmVmaXg9XCJjbjQ3MF80XCJcblxuICAgICAgICAjIE1RVFQgc2VydmVyIChlLmcuIHNjaGVtZTovL2hvc3Q6cG9ydCB3aGVyZSBzY2hlbWUgaXMgdGNwLCBzc2wgb3Igd3MpXG4gICAgICAgIHNlcnZlcj1cInRjcDovL21vc3F1aXR0bzoxODgzXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gdXNlcm5hbWUgKG9wdGlvbmFsKVxuICAgICAgICB1c2VybmFtZT1cIlwiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHBhc3N3b3JkIChvcHRpb25hbClcbiAgICAgICAgcGFzc3dvcmQ9XCJcIlxuXG4gICAgICAgICMgUXVhbGl0eSBvZiBzZXJ2aWNlIGxldmVsXG4gICAgICAgICNcbiAgICAgICAgIyAwOiBhdCBtb3N0IG9uY2VcbiAgICAgICAgIyAxOiBhdCBsZWFzdCBvbmNlXG4gICAgICAgICMgMjogZXhhY3RseSBvbmNlXG4gICAgICAgICNcbiAgICAgICAgIyBOb3RlOiBhbiBpbmNyZWFzZSBvZiB0aGlzIHZhbHVlIHdpbGwgZGVjcmVhc2UgdGhlIHBlcmZvcm1hbmNlLlxuICAgICAgICAjIEZvciBtb3JlIGluZm9ybWF0aW9uOiBodHRwczovL3d3dy5oaXZlbXEuY29tL2Jsb2cvbXF0dC1lc3NlbnRpYWxzLXBhcnQtNi1tcXR0LXF1YWxpdHktb2Ytc2VydmljZS1sZXZlbHNcbiAgICAgICAgcW9zPTBcblxuICAgICAgICAjIENsZWFuIHNlc3Npb25cbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgXCJjbGVhbiBzZXNzaW9uXCIgZmxhZyBpbiB0aGUgY29ubmVjdCBtZXNzYWdlIHdoZW4gdGhpcyBjbGllbnRcbiAgICAgICAgIyBjb25uZWN0cyB0byBhbiBNUVRUIGJyb2tlci4gQnkgc2V0dGluZyB0aGlzIGZsYWcgeW91IGFyZSBpbmRpY2F0aW5nXG4gICAgICAgICMgdGhhdCBubyBtZXNzYWdlcyBzYXZlZCBieSB0aGUgYnJva2VyIGZvciB0aGlzIGNsaWVudCBzaG91bGQgYmUgZGVsaXZlcmVkLlxuICAgICAgICBjbGVhbl9zZXNzaW9uPWZhbHNlXG5cbiAgICAgICAgIyBDbGllbnQgSURcbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgY2xpZW50IGlkIHRvIGJlIHVzZWQgYnkgdGhpcyBjbGllbnQgd2hlbiBjb25uZWN0aW5nIHRvIHRoZSBNUVRUXG4gICAgICAgICMgYnJva2VyLiBBIGNsaWVudCBpZCBtdXN0IGJlIG5vIGxvbmdlciB0aGFuIDIzIGNoYXJhY3RlcnMuIElmIGxlZnQgYmxhbmssXG4gICAgICAgICMgYSByYW5kb20gaWQgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgQ2hpcnBTdGFjay5cbiAgICAgICAgY2xpZW50X2lkPVwiXCJcblxuICAgICAgICAjIEtlZXAgYWxpdmUgaW50ZXJ2YWwuXG4gICAgICAgICNcbiAgICAgICAgIyBUaGlzIGRlZmluZXMgdGhlIG1heGltdW0gdGltZSB0aGF0IHRoYXQgc2hvdWxkIHBhc3Mgd2l0aG91dCBjb21tdW5pY2F0aW9uXG4gICAgICAgICMgYmV0d2VlbiB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIuXG4gICAgICAgIGtlZXBfYWxpdmVfaW50ZXJ2YWw9XCIzMHNcIlxuXG4gICAgICAgICMgQ0EgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgICNcbiAgICAgICAgIyBVc2UgdGhpcyB3aGVuIHNldHRpbmcgdXAgYSBzZWN1cmUgY29ubmVjdGlvbiAod2hlbiBzZXJ2ZXIgdXNlcyBzc2w6Ly8uLi4pXG4gICAgICAgICMgYnV0IHRoZSBjZXJ0aWZpY2F0ZSB1c2VkIGJ5IHRoZSBzZXJ2ZXIgaXMgbm90IHRydXN0ZWQgYnkgYW55IENBIGNlcnRpZmljYXRlXG4gICAgICAgICMgb24gdGhlIHNlcnZlciAoZS5nLiB3aGVuIHNlbGYgZ2VuZXJhdGVkKS5cbiAgICAgICAgY2FfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBrZXkgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19rZXk9XCJcIlxuXG5cbiAgICAjIEdhdGV3YXkgY2hhbm5lbCBjb25maWd1cmF0aW9uLlxuICAgICNcbiAgICAjIE5vdGU6IHRoaXMgY29uZmlndXJhdGlvbiBpcyBvbmx5IHVzZWQgaW4gY2FzZSB0aGUgZ2F0ZXdheSBpcyB1c2luZyB0aGVcbiAgICAjIENoaXJwU3RhY2sgQ29uY2VudHJhdG9yZCBkYWVtb24uIEluIGFueSBvdGhlciBjYXNlLCB0aGlzIGNvbmZpZ3VyYXRpb24gXG4gICAgIyBpcyBpZ25vcmVkLlxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00NzY3MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ3NjkwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDc3MTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00NzczMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ3NzUwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDc3NzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00Nzc5MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ3ODEwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cblxuICAjIFJlZ2lvbiBzcGVjaWZpYyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLm5ldHdvcmtdXG4gICAgXG4gICAgIyBJbnN0YWxsYXRpb24gbWFyZ2luIChkQikgdXNlZCBieSB0aGUgQURSIGVuZ2luZS5cbiAgICAjXG4gICAgIyBBIGhpZ2hlciBudW1iZXIgbWVhbnMgdGhhdCB0aGUgbmV0d29yay1zZXJ2ZXIgd2lsbCBrZWVwIG1vcmUgbWFyZ2luLFxuICAgICMgcmVzdWx0aW5nIGluIGEgbG93ZXIgZGF0YS1yYXRlIGJ1dCBkZWNyZWFzaW5nIHRoZSBjaGFuY2UgdGhhdCB0aGVcbiAgICAjIGRldmljZSBnZXRzIGRpc2Nvbm5lY3RlZCBiZWNhdXNlIGl0IGlzIHVuYWJsZSB0byByZWFjaCBvbmUgb2YgdGhlXG4gICAgIyBzdXJyb3VuZGVkIGdhdGV3YXlzLlxuICAgIGluc3RhbGxhdGlvbl9tYXJnaW49MTBcblxuICAgICMgUlggd2luZG93IChDbGFzcy1BKS5cbiAgICAjXG4gICAgIyBTZXQgdGhpcyB0bzpcbiAgICAjIDA6IFJYMSAvIFJYMlxuICAgICMgMTogUlgxIG9ubHlcbiAgICAjIDI6IFJYMiBvbmx5XG4gICAgcnhfd2luZG93PTBcblxuICAgICMgUlgxIGRlbGF5ICgxIC0gMTUgc2Vjb25kcykuXG4gICAgcngxX2RlbGF5PTFcblxuICAgICMgUlgxIGRhdGEtcmF0ZSBvZmZzZXRcbiAgICByeDFfZHJfb2Zmc2V0PTBcblxuICAgICMgUlgyIGRhdGEtcmF0ZVxuICAgIHJ4Ml9kcj0wXG5cbiAgICAjIFJYMiBmcmVxdWVuY3kgKEh6KVxuICAgIHJ4Ml9mcmVxdWVuY3k9NTA1MzAwMDAwXG5cbiAgICAjIFByZWZlciBSWDIgb24gUlgxIGRhdGEtcmF0ZSBsZXNzIHRoYW4uXG4gICAgI1xuICAgICMgUHJlZmVyIFJYMiBvdmVyIFJYMSBiYXNlZCBvbiB0aGUgUlgxIGRhdGEtcmF0ZS4gV2hlbiB0aGUgUlgxIGRhdGEtcmF0ZVxuICAgICMgaXMgc21hbGxlciB0aGFuIHRoZSBjb25maWd1cmVkIHZhbHVlLCB0aGVuIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsXG4gICAgIyBmaXJzdCB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGZvciBSWDIsIGZhaWxpbmcgdGhhdCAoZS5nLiB0aGUgZ2F0ZXdheVxuICAgICMgaGFzIGFscmVhZHkgYSBwYXlsb2FkIHNjaGVkdWxlZCBhdCB0aGUgUlgyIHRpbWluZykgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fcngxX2RyX2x0PTBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBsaW5rIGJ1ZGdldC5cbiAgICAjXG4gICAgIyBXaGVuIHRoZSBsaW5rLWJ1ZGdldCBpcyBiZXR0ZXIgZm9yIFJYMiB0aGFuIGZvciBSWDEsIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsIGZpcnN0XG4gICAgIyB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGluIFJYMiwgZmFpbGluZyB0aGF0IGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX2xpbmtfYnVkZ2V0PWZhbHNlXG5cbiAgICAjIERvd25saW5rIFRYIFBvd2VyIChkQm0pXG4gICAgI1xuICAgICMgV2hlbiBzZXQgdG8gLTEsIHRoZSBkb3dubGluayBUWCBQb3dlciBmcm9tIHRoZSBjb25maWd1cmVkIGJhbmQgd2lsbFxuICAgICMgYmUgdXNlZC5cbiAgICAjXG4gICAgIyBQbGVhc2UgY29uc3VsdCB0aGUgTG9SYVdBTiBSZWdpb25hbCBQYXJhbWV0ZXJzIGFuZCBsb2NhbCByZWd1bGF0aW9uc1xuICAgICMgZm9yIHZhbGlkIGFuZCBsZWdhbCBvcHRpb25zLiBOb3RlIHRoYXQgdGhlIGNvbmZpZ3VyZWQgVFggUG93ZXIgbXVzdCBiZVxuICAgICMgc3VwcG9ydGVkIGJ5IHlvdXIgZ2F0ZXdheShzKS5cbiAgICBkb3dubGlua190eF9wb3dlcj0tMVxuXG4gICAgIyBBRFIgaXMgZGlzYWJsZWQuXG4gICAgYWRyX2Rpc2FibGVkPWZhbHNlXG5cbiAgICAjIE1pbmltdW0gZGF0YS1yYXRlLlxuICAgIG1pbl9kcj0wXG5cbiAgICAjIE1heGltdW0gZGF0YS1yYXRlLlxuICAgIG1heF9kcj01XG5cbiAgICAjIEVuYWJsZWQgdXBsaW5rIGNoYW5uZWxzLlxuICAgICNcbiAgICAjIFVzZSB0aGlzIHdoZW4gb255IGEgc3ViLXNldCBvZiB0aGUgYnkgZGVmYXVsdCBlbmFibGVkIGNoYW5uZWxzIGFyZSBiZWluZ1xuICAgICMgdXNlZC4gRm9yIGV4YW1wbGUgd2hlbiBvbmx5IHVzaW5nIHRoZSBmaXJzdCA4IGNoYW5uZWxzIG9mIHRoZSBVUyBiYW5kLlxuICAgICMgTm90ZTogd2hlbiBsZWZ0IGJsYW5rIC8gZW1wdHkgYXJyYXksIGFsbCBjaGFubmVscyB3aWxsIGJlIGVuYWJsZWQuXG4gICAgZW5hYmxlZF91cGxpbmtfY2hhbm5lbHM9WzMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOV1cblxuXG4gICAgIyBSZWpvaW4tcmVxdWVzdCBjb25maWd1cmF0aW9uIChMb1JhV0FOIDEuMSlcbiAgICBbcmVnaW9ucy5uZXR3b3JrLnJlam9pbl9yZXF1ZXN0XVxuXG4gICAgICAjIFJlcXVlc3QgZGV2aWNlcyB0byBwZXJpb2RpY2FsbHkgc2VuZCByZWpvaW4tcmVxdWVzdHMuXG4gICAgICBlbmFibGVkPWZhbHNlXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X2NvdW50X24gKyA0KVxuICAgICAgIyB1cGxpbmsgbWVzc2FnZXMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgIG1heF9jb3VudF9uPTBcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfdGltZV9uICsgMTApXG4gICAgICAjIHNlY29uZHMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgICNcbiAgICAgICMgMCAgPSByb3VnaGx5IDE3IG1pbnV0ZXNcbiAgICAgICMgMTUgPSBhYm91dCAxIHllYXJcbiAgICAgIG1heF90aW1lX249MFxuICAgIFxuXG4gICAgIyBDbGFzcy1CIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMubmV0d29yay5jbGFzc19iXVxuXG4gICAgICAjIFBpbmctc2xvdCBkYXRhLXJhdGUuIFxuICAgICAgcGluZ19zbG90X2RyPTJcblxuICAgICAgIyBQaW5nLXNsb3QgZnJlcXVlbmN5IChIeilcbiAgICAgICNcbiAgICAgICMgc2V0IHRoaXMgdG8gMCB0byB1c2UgdGhlIGRlZmF1bHQgZnJlcXVlbmN5IHBsYW4gZm9yIHRoZSBjb25maWd1cmVkIHJlZ2lvblxuICAgICAgIyAod2hpY2ggY291bGQgYmUgZnJlcXVlbmN5IGhvcHBpbmcpLlxuICAgICAgcGluZ19zbG90X2ZyZXF1ZW5jeT0wXG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbnNlcnZpY2VOYW1lID0gXCJjaGlycHN0YWNrXCJcbmZpbGVQYXRoID0gXCIvY2hpcnBzdGFjay9yZWdpb25fY240NzBfNS50b21sXCJcbmNvbnRlbnQgPSBcIlwiXCJcbiMgVGhpcyBmaWxlIGNvbnRhaW5zIGFuIGV4YW1wbGUgQ040NzAgZXhhbXBsZSAoY2hhbm5lbHMgNDAtNDcpLlxuW1tyZWdpb25zXV1cblxuICAjIElEIGlzIGFuIHVzZS1kZWZpbmVkIGlkZW50aWZpZXIgZm9yIHRoaXMgcmVnaW9uLlxuICBpZD1cImNuNDcwXzVcIlxuXG4gICMgRGVzY3JpcHRpb24gaXMgYSBzaG9ydCBkZXNjcmlwdGlvbiBmb3IgdGhpcyByZWdpb24uXG4gIGRlc2NyaXB0aW9uPVwiQ040NzAgKGNoYW5uZWxzIDQwLTQ3KVwiXG5cbiAgIyBDb21tb24tbmFtZSByZWZlcnMgdG8gdGhlIGNvbW1vbi1uYW1lIG9mIHRoaXMgcmVnaW9uIGFzIGRlZmluZWQgYnlcbiAgIyB0aGUgTG9SYSBBbGxpYW5jZS5cbiAgY29tbW9uX25hbWU9XCJDTjQ3MFwiXG5cblxuICAjIEdhdGV3YXkgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMuZ2F0ZXdheV1cblxuICAgICMgRm9yY2UgZ2F0ZXdheXMgYXMgcHJpdmF0ZS5cbiAgICAjXG4gICAgIyBJZiBlbmFibGVkLCBnYXRld2F5cyBjYW4gb25seSBiZSB1c2VkIGJ5IGRldmljZXMgdW5kZXIgdGhlIHNhbWUgdGVuYW50LlxuICAgIGZvcmNlX2d3c19wcml2YXRlPWZhbHNlXG5cbiAgICBcbiAgICAjIEdhdGV3YXkgYmFja2VuZCBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZF1cblxuICAgICAgIyBUaGUgZW5hYmxlZCBiYWNrZW5kIHR5cGUuXG4gICAgICBlbmFibGVkPVwibXF0dFwiXG5cbiAgICAgICMgTVFUVCBjb25maWd1cmF0aW9uLlxuICAgICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kLm1xdHRdXG5cbiAgICAgICAgIyBUb3BpYyBwcmVmaXguXG4gICAgICAgICNcbiAgICAgICAgIyBUaGUgdG9waWMgcHJlZml4IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB0aGUgcmVnaW9uIG9mIHRoZSBnYXRld2F5LlxuICAgICAgICAjIE5vdGUsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYWRkIGEgdHJhaWxpbmcgJy8nIHRvIHRoZSBwcmVmaXguIFRoZSB0cmFpbGluZ1xuICAgICAgICAjICcvJyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBwcmVmaXggaWYgaXQgaXMgY29uZmlndXJlZC5cbiAgICAgICAgdG9waWNfcHJlZml4PVwiY240NzBfNVwiXG5cbiAgICAgICAgIyBNUVRUIHNlcnZlciAoZS5nLiBzY2hlbWU6Ly9ob3N0OnBvcnQgd2hlcmUgc2NoZW1lIGlzIHRjcCwgc3NsIG9yIHdzKVxuICAgICAgICBzZXJ2ZXI9XCJ0Y3A6Ly9tb3NxdWl0dG86MTg4M1wiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHVzZXJuYW1lIChvcHRpb25hbClcbiAgICAgICAgdXNlcm5hbWU9XCJcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiBwYXNzd29yZCAob3B0aW9uYWwpXG4gICAgICAgIHBhc3N3b3JkPVwiXCJcblxuICAgICAgICAjIFF1YWxpdHkgb2Ygc2VydmljZSBsZXZlbFxuICAgICAgICAjXG4gICAgICAgICMgMDogYXQgbW9zdCBvbmNlXG4gICAgICAgICMgMTogYXQgbGVhc3Qgb25jZVxuICAgICAgICAjIDI6IGV4YWN0bHkgb25jZVxuICAgICAgICAjXG4gICAgICAgICMgTm90ZTogYW4gaW5jcmVhc2Ugb2YgdGhpcyB2YWx1ZSB3aWxsIGRlY3JlYXNlIHRoZSBwZXJmb3JtYW5jZS5cbiAgICAgICAgIyBGb3IgbW9yZSBpbmZvcm1hdGlvbjogaHR0cHM6Ly93d3cuaGl2ZW1xLmNvbS9ibG9nL21xdHQtZXNzZW50aWFscy1wYXJ0LTYtbXF0dC1xdWFsaXR5LW9mLXNlcnZpY2UtbGV2ZWxzXG4gICAgICAgIHFvcz0wXG5cbiAgICAgICAgIyBDbGVhbiBzZXNzaW9uXG4gICAgICAgICNcbiAgICAgICAgIyBTZXQgdGhlIFwiY2xlYW4gc2Vzc2lvblwiIGZsYWcgaW4gdGhlIGNvbm5lY3QgbWVzc2FnZSB3aGVuIHRoaXMgY2xpZW50XG4gICAgICAgICMgY29ubmVjdHMgdG8gYW4gTVFUVCBicm9rZXIuIEJ5IHNldHRpbmcgdGhpcyBmbGFnIHlvdSBhcmUgaW5kaWNhdGluZ1xuICAgICAgICAjIHRoYXQgbm8gbWVzc2FnZXMgc2F2ZWQgYnkgdGhlIGJyb2tlciBmb3IgdGhpcyBjbGllbnQgc2hvdWxkIGJlIGRlbGl2ZXJlZC5cbiAgICAgICAgY2xlYW5fc2Vzc2lvbj1mYWxzZVxuXG4gICAgICAgICMgQ2xpZW50IElEXG4gICAgICAgICNcbiAgICAgICAgIyBTZXQgdGhlIGNsaWVudCBpZCB0byBiZSB1c2VkIGJ5IHRoaXMgY2xpZW50IHdoZW4gY29ubmVjdGluZyB0byB0aGUgTVFUVFxuICAgICAgICAjIGJyb2tlci4gQSBjbGllbnQgaWQgbXVzdCBiZSBubyBsb25nZXIgdGhhbiAyMyBjaGFyYWN0ZXJzLiBJZiBsZWZ0IGJsYW5rLFxuICAgICAgICAjIGEgcmFuZG9tIGlkIHdpbGwgYmUgZ2VuZXJhdGVkIGJ5IENoaXJwU3RhY2suXG4gICAgICAgIGNsaWVudF9pZD1cIlwiXG5cbiAgICAgICAgIyBLZWVwIGFsaXZlIGludGVydmFsLlxuICAgICAgICAjXG4gICAgICAgICMgVGhpcyBkZWZpbmVzIHRoZSBtYXhpbXVtIHRpbWUgdGhhdCB0aGF0IHNob3VsZCBwYXNzIHdpdGhvdXQgY29tbXVuaWNhdGlvblxuICAgICAgICAjIGJldHdlZW4gdGhlIGNsaWVudCBhbmQgc2VydmVyLlxuICAgICAgICBrZWVwX2FsaXZlX2ludGVydmFsPVwiMzBzXCJcblxuICAgICAgICAjIENBIGNlcnRpZmljYXRlIGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICAjXG4gICAgICAgICMgVXNlIHRoaXMgd2hlbiBzZXR0aW5nIHVwIGEgc2VjdXJlIGNvbm5lY3Rpb24gKHdoZW4gc2VydmVyIHVzZXMgc3NsOi8vLi4uKVxuICAgICAgICAjIGJ1dCB0aGUgY2VydGlmaWNhdGUgdXNlZCBieSB0aGUgc2VydmVyIGlzIG5vdCB0cnVzdGVkIGJ5IGFueSBDQSBjZXJ0aWZpY2F0ZVxuICAgICAgICAjIG9uIHRoZSBzZXJ2ZXIgKGUuZy4gd2hlbiBzZWxmIGdlbmVyYXRlZCkuXG4gICAgICAgIGNhX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGNlcnRpZmljYXRlIGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICB0bHNfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMga2V5IGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICB0bHNfa2V5PVwiXCJcblxuXG4gICAgIyBHYXRld2F5IGNoYW5uZWwgY29uZmlndXJhdGlvbi5cbiAgICAjXG4gICAgIyBOb3RlOiB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgb25seSB1c2VkIGluIGNhc2UgdGhlIGdhdGV3YXkgaXMgdXNpbmcgdGhlXG4gICAgIyBDaGlycFN0YWNrIENvbmNlbnRyYXRvcmQgZGFlbW9uLiBJbiBhbnkgb3RoZXIgY2FzZSwgdGhpcyBjb25maWd1cmF0aW9uIFxuICAgICMgaXMgaWdub3JlZC5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDc4MzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00Nzg1MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ3ODcwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDc4OTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00NzkxMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ3OTMwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDc5NTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00Nzk3MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG5cbiAgIyBSZWdpb24gc3BlY2lmaWMgbmV0d29yayBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5uZXR3b3JrXVxuICAgIFxuICAgICMgSW5zdGFsbGF0aW9uIG1hcmdpbiAoZEIpIHVzZWQgYnkgdGhlIEFEUiBlbmdpbmUuXG4gICAgI1xuICAgICMgQSBoaWdoZXIgbnVtYmVyIG1lYW5zIHRoYXQgdGhlIG5ldHdvcmstc2VydmVyIHdpbGwga2VlcCBtb3JlIG1hcmdpbixcbiAgICAjIHJlc3VsdGluZyBpbiBhIGxvd2VyIGRhdGEtcmF0ZSBidXQgZGVjcmVhc2luZyB0aGUgY2hhbmNlIHRoYXQgdGhlXG4gICAgIyBkZXZpY2UgZ2V0cyBkaXNjb25uZWN0ZWQgYmVjYXVzZSBpdCBpcyB1bmFibGUgdG8gcmVhY2ggb25lIG9mIHRoZVxuICAgICMgc3Vycm91bmRlZCBnYXRld2F5cy5cbiAgICBpbnN0YWxsYXRpb25fbWFyZ2luPTEwXG5cbiAgICAjIFJYIHdpbmRvdyAoQ2xhc3MtQSkuXG4gICAgI1xuICAgICMgU2V0IHRoaXMgdG86XG4gICAgIyAwOiBSWDEgLyBSWDJcbiAgICAjIDE6IFJYMSBvbmx5XG4gICAgIyAyOiBSWDIgb25seVxuICAgIHJ4X3dpbmRvdz0wXG5cbiAgICAjIFJYMSBkZWxheSAoMSAtIDE1IHNlY29uZHMpLlxuICAgIHJ4MV9kZWxheT0xXG5cbiAgICAjIFJYMSBkYXRhLXJhdGUgb2Zmc2V0XG4gICAgcngxX2RyX29mZnNldD0wXG5cbiAgICAjIFJYMiBkYXRhLXJhdGVcbiAgICByeDJfZHI9MFxuXG4gICAgIyBSWDIgZnJlcXVlbmN5IChIeilcbiAgICByeDJfZnJlcXVlbmN5PTUwNTMwMDAwMFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIFJYMSBkYXRhLXJhdGUgbGVzcyB0aGFuLlxuICAgICNcbiAgICAjIFByZWZlciBSWDIgb3ZlciBSWDEgYmFzZWQgb24gdGhlIFJYMSBkYXRhLXJhdGUuIFdoZW4gdGhlIFJYMSBkYXRhLXJhdGVcbiAgICAjIGlzIHNtYWxsZXIgdGhhbiB0aGUgY29uZmlndXJlZCB2YWx1ZSwgdGhlbiB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbFxuICAgICMgZmlyc3QgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBmb3IgUlgyLCBmYWlsaW5nIHRoYXQgKGUuZy4gdGhlIGdhdGV3YXlcbiAgICAjIGhhcyBhbHJlYWR5IGEgcGF5bG9hZCBzY2hlZHVsZWQgYXQgdGhlIFJYMiB0aW1pbmcpIGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX3J4MV9kcl9sdD0wXG5cbiAgICAjIFByZWZlciBSWDIgb24gbGluayBidWRnZXQuXG4gICAgI1xuICAgICMgV2hlbiB0aGUgbGluay1idWRnZXQgaXMgYmV0dGVyIGZvciBSWDIgdGhhbiBmb3IgUlgxLCB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbCBmaXJzdFxuICAgICMgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBpbiBSWDIsIGZhaWxpbmcgdGhhdCBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9saW5rX2J1ZGdldD1mYWxzZVxuXG4gICAgIyBEb3dubGluayBUWCBQb3dlciAoZEJtKVxuICAgICNcbiAgICAjIFdoZW4gc2V0IHRvIC0xLCB0aGUgZG93bmxpbmsgVFggUG93ZXIgZnJvbSB0aGUgY29uZmlndXJlZCBiYW5kIHdpbGxcbiAgICAjIGJlIHVzZWQuXG4gICAgI1xuICAgICMgUGxlYXNlIGNvbnN1bHQgdGhlIExvUmFXQU4gUmVnaW9uYWwgUGFyYW1ldGVycyBhbmQgbG9jYWwgcmVndWxhdGlvbnNcbiAgICAjIGZvciB2YWxpZCBhbmQgbGVnYWwgb3B0aW9ucy4gTm90ZSB0aGF0IHRoZSBjb25maWd1cmVkIFRYIFBvd2VyIG11c3QgYmVcbiAgICAjIHN1cHBvcnRlZCBieSB5b3VyIGdhdGV3YXkocykuXG4gICAgZG93bmxpbmtfdHhfcG93ZXI9LTFcblxuICAgICMgQURSIGlzIGRpc2FibGVkLlxuICAgIGFkcl9kaXNhYmxlZD1mYWxzZVxuXG4gICAgIyBNaW5pbXVtIGRhdGEtcmF0ZS5cbiAgICBtaW5fZHI9MFxuXG4gICAgIyBNYXhpbXVtIGRhdGEtcmF0ZS5cbiAgICBtYXhfZHI9NVxuXG4gICAgIyBFbmFibGVkIHVwbGluayBjaGFubmVscy5cbiAgICAjXG4gICAgIyBVc2UgdGhpcyB3aGVuIG9ueSBhIHN1Yi1zZXQgb2YgdGhlIGJ5IGRlZmF1bHQgZW5hYmxlZCBjaGFubmVscyBhcmUgYmVpbmdcbiAgICAjIHVzZWQuIEZvciBleGFtcGxlIHdoZW4gb25seSB1c2luZyB0aGUgZmlyc3QgOCBjaGFubmVscyBvZiB0aGUgVVMgYmFuZC5cbiAgICAjIE5vdGU6IHdoZW4gbGVmdCBibGFuayAvIGVtcHR5IGFycmF5LCBhbGwgY2hhbm5lbHMgd2lsbCBiZSBlbmFibGVkLlxuICAgIGVuYWJsZWRfdXBsaW5rX2NoYW5uZWxzPVs0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDddXG5cblxuICAgICMgUmVqb2luLXJlcXVlc3QgY29uZmlndXJhdGlvbiAoTG9SYVdBTiAxLjEpXG4gICAgW3JlZ2lvbnMubmV0d29yay5yZWpvaW5fcmVxdWVzdF1cblxuICAgICAgIyBSZXF1ZXN0IGRldmljZXMgdG8gcGVyaW9kaWNhbGx5IHNlbmQgcmVqb2luLXJlcXVlc3RzLlxuICAgICAgZW5hYmxlZD1mYWxzZVxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF9jb3VudF9uICsgNClcbiAgICAgICMgdXBsaW5rIG1lc3NhZ2VzLiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gMTUuXG4gICAgICBtYXhfY291bnRfbj0wXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X3RpbWVfbiArIDEwKVxuICAgICAgIyBzZWNvbmRzLiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gMTUuXG4gICAgICAjXG4gICAgICAjIDAgID0gcm91Z2hseSAxNyBtaW51dGVzXG4gICAgICAjIDE1ID0gYWJvdXQgMSB5ZWFyXG4gICAgICBtYXhfdGltZV9uPTBcbiAgICBcblxuICAgICMgQ2xhc3MtQiBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLm5ldHdvcmsuY2xhc3NfYl1cblxuICAgICAgIyBQaW5nLXNsb3QgZGF0YS1yYXRlLiBcbiAgICAgIHBpbmdfc2xvdF9kcj0yXG5cbiAgICAgICMgUGluZy1zbG90IGZyZXF1ZW5jeSAoSHopXG4gICAgICAjXG4gICAgICAjIHNldCB0aGlzIHRvIDAgdG8gdXNlIHRoZSBkZWZhdWx0IGZyZXF1ZW5jeSBwbGFuIGZvciB0aGUgY29uZmlndXJlZCByZWdpb25cbiAgICAgICMgKHdoaWNoIGNvdWxkIGJlIGZyZXF1ZW5jeSBob3BwaW5nKS5cbiAgICAgIHBpbmdfc2xvdF9mcmVxdWVuY3k9MFxuXCJcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5zZXJ2aWNlTmFtZSA9IFwiY2hpcnBzdGFja1wiXG5maWxlUGF0aCA9IFwiL2NoaXJwc3RhY2svcmVnaW9uX2NuNDcwXzYudG9tbFwiXG5jb250ZW50ID0gXCJcIlwiXG4jIFRoaXMgZmlsZSBjb250YWlucyBhbiBleGFtcGxlIENONDcwIGV4YW1wbGUgKGNoYW5uZWxzIDQ4LTU1KS5cbltbcmVnaW9uc11dXG5cbiAgIyBJRCBpcyBhbiB1c2UtZGVmaW5lZCBpZGVudGlmaWVyIGZvciB0aGlzIHJlZ2lvbi5cbiAgaWQ9XCJjbjQ3MF82XCJcblxuICAjIERlc2NyaXB0aW9uIGlzIGEgc2hvcnQgZGVzY3JpcHRpb24gZm9yIHRoaXMgcmVnaW9uLlxuICBkZXNjcmlwdGlvbj1cIkNONDcwIChjaGFubmVscyA0OC01NSlcIlxuXG4gICMgQ29tbW9uLW5hbWUgcmVmZXJzIHRvIHRoZSBjb21tb24tbmFtZSBvZiB0aGlzIHJlZ2lvbiBhcyBkZWZpbmVkIGJ5XG4gICMgdGhlIExvUmEgQWxsaWFuY2UuXG4gIGNvbW1vbl9uYW1lPVwiQ040NzBcIlxuXG5cbiAgIyBHYXRld2F5IGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLmdhdGV3YXldXG5cbiAgICAjIEZvcmNlIGdhdGV3YXlzIGFzIHByaXZhdGUuXG4gICAgI1xuICAgICMgSWYgZW5hYmxlZCwgZ2F0ZXdheXMgY2FuIG9ubHkgYmUgdXNlZCBieSBkZXZpY2VzIHVuZGVyIHRoZSBzYW1lIHRlbmFudC5cbiAgICBmb3JjZV9nd3NfcHJpdmF0ZT1mYWxzZVxuXG4gICAgXG4gICAgIyBHYXRld2F5IGJhY2tlbmQgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmRdXG5cbiAgICAgICMgVGhlIGVuYWJsZWQgYmFja2VuZCB0eXBlLlxuICAgICAgZW5hYmxlZD1cIm1xdHRcIlxuXG4gICAgICAjIE1RVFQgY29uZmlndXJhdGlvbi5cbiAgICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZC5tcXR0XVxuXG4gICAgICAgICMgVG9waWMgcHJlZml4LlxuICAgICAgICAjXG4gICAgICAgICMgVGhlIHRvcGljIHByZWZpeCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgdGhlIHJlZ2lvbiBvZiB0aGUgZ2F0ZXdheS5cbiAgICAgICAgIyBOb3RlLCB0aGVyZSBpcyBubyBuZWVkIHRvIGFkZCBhIHRyYWlsaW5nICcvJyB0byB0aGUgcHJlZml4LiBUaGUgdHJhaWxpbmdcbiAgICAgICAgIyAnLycgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgcHJlZml4IGlmIGl0IGlzIGNvbmZpZ3VyZWQuXG4gICAgICAgIHRvcGljX3ByZWZpeD1cImNuNDcwXzZcIlxuXG4gICAgICAgICMgTVFUVCBzZXJ2ZXIgKGUuZy4gc2NoZW1lOi8vaG9zdDpwb3J0IHdoZXJlIHNjaGVtZSBpcyB0Y3AsIHNzbCBvciB3cylcbiAgICAgICAgc2VydmVyPVwidGNwOi8vbW9zcXVpdHRvOjE4ODNcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiB1c2VybmFtZSAob3B0aW9uYWwpXG4gICAgICAgIHVzZXJuYW1lPVwiXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gcGFzc3dvcmQgKG9wdGlvbmFsKVxuICAgICAgICBwYXNzd29yZD1cIlwiXG5cbiAgICAgICAgIyBRdWFsaXR5IG9mIHNlcnZpY2UgbGV2ZWxcbiAgICAgICAgI1xuICAgICAgICAjIDA6IGF0IG1vc3Qgb25jZVxuICAgICAgICAjIDE6IGF0IGxlYXN0IG9uY2VcbiAgICAgICAgIyAyOiBleGFjdGx5IG9uY2VcbiAgICAgICAgI1xuICAgICAgICAjIE5vdGU6IGFuIGluY3JlYXNlIG9mIHRoaXMgdmFsdWUgd2lsbCBkZWNyZWFzZSB0aGUgcGVyZm9ybWFuY2UuXG4gICAgICAgICMgRm9yIG1vcmUgaW5mb3JtYXRpb246IGh0dHBzOi8vd3d3LmhpdmVtcS5jb20vYmxvZy9tcXR0LWVzc2VudGlhbHMtcGFydC02LW1xdHQtcXVhbGl0eS1vZi1zZXJ2aWNlLWxldmVsc1xuICAgICAgICBxb3M9MFxuXG4gICAgICAgICMgQ2xlYW4gc2Vzc2lvblxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBcImNsZWFuIHNlc3Npb25cIiBmbGFnIGluIHRoZSBjb25uZWN0IG1lc3NhZ2Ugd2hlbiB0aGlzIGNsaWVudFxuICAgICAgICAjIGNvbm5lY3RzIHRvIGFuIE1RVFQgYnJva2VyLiBCeSBzZXR0aW5nIHRoaXMgZmxhZyB5b3UgYXJlIGluZGljYXRpbmdcbiAgICAgICAgIyB0aGF0IG5vIG1lc3NhZ2VzIHNhdmVkIGJ5IHRoZSBicm9rZXIgZm9yIHRoaXMgY2xpZW50IHNob3VsZCBiZSBkZWxpdmVyZWQuXG4gICAgICAgIGNsZWFuX3Nlc3Npb249ZmFsc2VcblxuICAgICAgICAjIENsaWVudCBJRFxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBjbGllbnQgaWQgdG8gYmUgdXNlZCBieSB0aGlzIGNsaWVudCB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIE1RVFRcbiAgICAgICAgIyBicm9rZXIuIEEgY2xpZW50IGlkIG11c3QgYmUgbm8gbG9uZ2VyIHRoYW4gMjMgY2hhcmFjdGVycy4gSWYgbGVmdCBibGFuayxcbiAgICAgICAgIyBhIHJhbmRvbSBpZCB3aWxsIGJlIGdlbmVyYXRlZCBieSBDaGlycFN0YWNrLlxuICAgICAgICBjbGllbnRfaWQ9XCJcIlxuXG4gICAgICAgICMgS2VlcCBhbGl2ZSBpbnRlcnZhbC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoaXMgZGVmaW5lcyB0aGUgbWF4aW11bSB0aW1lIHRoYXQgdGhhdCBzaG91bGQgcGFzcyB3aXRob3V0IGNvbW11bmljYXRpb25cbiAgICAgICAgIyBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlci5cbiAgICAgICAga2VlcF9hbGl2ZV9pbnRlcnZhbD1cIjMwc1wiXG5cbiAgICAgICAgIyBDQSBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgI1xuICAgICAgICAjIFVzZSB0aGlzIHdoZW4gc2V0dGluZyB1cCBhIHNlY3VyZSBjb25uZWN0aW9uICh3aGVuIHNlcnZlciB1c2VzIHNzbDovLy4uLilcbiAgICAgICAgIyBidXQgdGhlIGNlcnRpZmljYXRlIHVzZWQgYnkgdGhlIHNlcnZlciBpcyBub3QgdHJ1c3RlZCBieSBhbnkgQ0EgY2VydGlmaWNhdGVcbiAgICAgICAgIyBvbiB0aGUgc2VydmVyIChlLmcuIHdoZW4gc2VsZiBnZW5lcmF0ZWQpLlxuICAgICAgICBjYV9jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGtleSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2tleT1cIlwiXG5cblxuICAgICMgR2F0ZXdheSBjaGFubmVsIGNvbmZpZ3VyYXRpb24uXG4gICAgI1xuICAgICMgTm90ZTogdGhpcyBjb25maWd1cmF0aW9uIGlzIG9ubHkgdXNlZCBpbiBjYXNlIHRoZSBnYXRld2F5IGlzIHVzaW5nIHRoZVxuICAgICMgQ2hpcnBTdGFjayBDb25jZW50cmF0b3JkIGRhZW1vbi4gSW4gYW55IG90aGVyIGNhc2UsIHRoaXMgY29uZmlndXJhdGlvbiBcbiAgICAjIGlzIGlnbm9yZWQuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ3OTkwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDgwMTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00ODAzMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ4MDUwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDgwNzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00ODA5MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ4MTEwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDgxMzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuXG4gICMgUmVnaW9uIHNwZWNpZmljIG5ldHdvcmsgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMubmV0d29ya11cbiAgICBcbiAgICAjIEluc3RhbGxhdGlvbiBtYXJnaW4gKGRCKSB1c2VkIGJ5IHRoZSBBRFIgZW5naW5lLlxuICAgICNcbiAgICAjIEEgaGlnaGVyIG51bWJlciBtZWFucyB0aGF0IHRoZSBuZXR3b3JrLXNlcnZlciB3aWxsIGtlZXAgbW9yZSBtYXJnaW4sXG4gICAgIyByZXN1bHRpbmcgaW4gYSBsb3dlciBkYXRhLXJhdGUgYnV0IGRlY3JlYXNpbmcgdGhlIGNoYW5jZSB0aGF0IHRoZVxuICAgICMgZGV2aWNlIGdldHMgZGlzY29ubmVjdGVkIGJlY2F1c2UgaXQgaXMgdW5hYmxlIHRvIHJlYWNoIG9uZSBvZiB0aGVcbiAgICAjIHN1cnJvdW5kZWQgZ2F0ZXdheXMuXG4gICAgaW5zdGFsbGF0aW9uX21hcmdpbj0xMFxuXG4gICAgIyBSWCB3aW5kb3cgKENsYXNzLUEpLlxuICAgICNcbiAgICAjIFNldCB0aGlzIHRvOlxuICAgICMgMDogUlgxIC8gUlgyXG4gICAgIyAxOiBSWDEgb25seVxuICAgICMgMjogUlgyIG9ubHlcbiAgICByeF93aW5kb3c9MFxuXG4gICAgIyBSWDEgZGVsYXkgKDEgLSAxNSBzZWNvbmRzKS5cbiAgICByeDFfZGVsYXk9MVxuXG4gICAgIyBSWDEgZGF0YS1yYXRlIG9mZnNldFxuICAgIHJ4MV9kcl9vZmZzZXQ9MFxuXG4gICAgIyBSWDIgZGF0YS1yYXRlXG4gICAgcngyX2RyPTBcblxuICAgICMgUlgyIGZyZXF1ZW5jeSAoSHopXG4gICAgcngyX2ZyZXF1ZW5jeT01MDUzMDAwMDBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBSWDEgZGF0YS1yYXRlIGxlc3MgdGhhbi5cbiAgICAjXG4gICAgIyBQcmVmZXIgUlgyIG92ZXIgUlgxIGJhc2VkIG9uIHRoZSBSWDEgZGF0YS1yYXRlLiBXaGVuIHRoZSBSWDEgZGF0YS1yYXRlXG4gICAgIyBpcyBzbWFsbGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgdmFsdWUsIHRoZW4gdGhlIE5ldHdvcmsgU2VydmVyIHdpbGxcbiAgICAjIGZpcnN0IHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgZm9yIFJYMiwgZmFpbGluZyB0aGF0IChlLmcuIHRoZSBnYXRld2F5XG4gICAgIyBoYXMgYWxyZWFkeSBhIHBheWxvYWQgc2NoZWR1bGVkIGF0IHRoZSBSWDIgdGltaW5nKSBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9yeDFfZHJfbHQ9MFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIGxpbmsgYnVkZ2V0LlxuICAgICNcbiAgICAjIFdoZW4gdGhlIGxpbmstYnVkZ2V0IGlzIGJldHRlciBmb3IgUlgyIHRoYW4gZm9yIFJYMSwgdGhlIE5ldHdvcmsgU2VydmVyIHdpbGwgZmlyc3RcbiAgICAjIHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgaW4gUlgyLCBmYWlsaW5nIHRoYXQgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fbGlua19idWRnZXQ9ZmFsc2VcblxuICAgICMgRG93bmxpbmsgVFggUG93ZXIgKGRCbSlcbiAgICAjXG4gICAgIyBXaGVuIHNldCB0byAtMSwgdGhlIGRvd25saW5rIFRYIFBvd2VyIGZyb20gdGhlIGNvbmZpZ3VyZWQgYmFuZCB3aWxsXG4gICAgIyBiZSB1c2VkLlxuICAgICNcbiAgICAjIFBsZWFzZSBjb25zdWx0IHRoZSBMb1JhV0FOIFJlZ2lvbmFsIFBhcmFtZXRlcnMgYW5kIGxvY2FsIHJlZ3VsYXRpb25zXG4gICAgIyBmb3IgdmFsaWQgYW5kIGxlZ2FsIG9wdGlvbnMuIE5vdGUgdGhhdCB0aGUgY29uZmlndXJlZCBUWCBQb3dlciBtdXN0IGJlXG4gICAgIyBzdXBwb3J0ZWQgYnkgeW91ciBnYXRld2F5KHMpLlxuICAgIGRvd25saW5rX3R4X3Bvd2VyPS0xXG5cbiAgICAjIEFEUiBpcyBkaXNhYmxlZC5cbiAgICBhZHJfZGlzYWJsZWQ9ZmFsc2VcblxuICAgICMgTWluaW11bSBkYXRhLXJhdGUuXG4gICAgbWluX2RyPTBcblxuICAgICMgTWF4aW11bSBkYXRhLXJhdGUuXG4gICAgbWF4X2RyPTVcblxuICAgICMgRW5hYmxlZCB1cGxpbmsgY2hhbm5lbHMuXG4gICAgI1xuICAgICMgVXNlIHRoaXMgd2hlbiBvbnkgYSBzdWItc2V0IG9mIHRoZSBieSBkZWZhdWx0IGVuYWJsZWQgY2hhbm5lbHMgYXJlIGJlaW5nXG4gICAgIyB1c2VkLiBGb3IgZXhhbXBsZSB3aGVuIG9ubHkgdXNpbmcgdGhlIGZpcnN0IDggY2hhbm5lbHMgb2YgdGhlIFVTIGJhbmQuXG4gICAgIyBOb3RlOiB3aGVuIGxlZnQgYmxhbmsgLyBlbXB0eSBhcnJheSwgYWxsIGNoYW5uZWxzIHdpbGwgYmUgZW5hYmxlZC5cbiAgICBlbmFibGVkX3VwbGlua19jaGFubmVscz1bNDgsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1XVxuXG5cbiAgICAjIFJlam9pbi1yZXF1ZXN0IGNvbmZpZ3VyYXRpb24gKExvUmFXQU4gMS4xKVxuICAgIFtyZWdpb25zLm5ldHdvcmsucmVqb2luX3JlcXVlc3RdXG5cbiAgICAgICMgUmVxdWVzdCBkZXZpY2VzIHRvIHBlcmlvZGljYWxseSBzZW5kIHJlam9pbi1yZXF1ZXN0cy5cbiAgICAgIGVuYWJsZWQ9ZmFsc2VcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfY291bnRfbiArIDQpXG4gICAgICAjIHVwbGluayBtZXNzYWdlcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgbWF4X2NvdW50X249MFxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF90aW1lX24gKyAxMClcbiAgICAgICMgc2Vjb25kcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgI1xuICAgICAgIyAwICA9IHJvdWdobHkgMTcgbWludXRlc1xuICAgICAgIyAxNSA9IGFib3V0IDEgeWVhclxuICAgICAgbWF4X3RpbWVfbj0wXG4gICAgXG5cbiAgICAjIENsYXNzLUIgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5uZXR3b3JrLmNsYXNzX2JdXG5cbiAgICAgICMgUGluZy1zbG90IGRhdGEtcmF0ZS4gXG4gICAgICBwaW5nX3Nsb3RfZHI9MlxuXG4gICAgICAjIFBpbmctc2xvdCBmcmVxdWVuY3kgKEh6KVxuICAgICAgI1xuICAgICAgIyBzZXQgdGhpcyB0byAwIHRvIHVzZSB0aGUgZGVmYXVsdCBmcmVxdWVuY3kgcGxhbiBmb3IgdGhlIGNvbmZpZ3VyZWQgcmVnaW9uXG4gICAgICAjICh3aGljaCBjb3VsZCBiZSBmcmVxdWVuY3kgaG9wcGluZykuXG4gICAgICBwaW5nX3Nsb3RfZnJlcXVlbmN5PTBcblwiXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuc2VydmljZU5hbWUgPSBcImNoaXJwc3RhY2tcIlxuZmlsZVBhdGggPSBcIi9jaGlycHN0YWNrL3JlZ2lvbl9jbjQ3MF83LnRvbWxcIlxuY29udGVudCA9IFwiXCJcIlxuIyBUaGlzIGZpbGUgY29udGFpbnMgYW4gZXhhbXBsZSBDTjQ3MCBleGFtcGxlIChjaGFubmVscyA1Ni02MykuXG5bW3JlZ2lvbnNdXVxuXG4gICMgSUQgaXMgYW4gdXNlLWRlZmluZWQgaWRlbnRpZmllciBmb3IgdGhpcyByZWdpb24uXG4gIGlkPVwiY240NzBfN1wiXG5cbiAgIyBEZXNjcmlwdGlvbiBpcyBhIHNob3J0IGRlc2NyaXB0aW9uIGZvciB0aGlzIHJlZ2lvbi5cbiAgZGVzY3JpcHRpb249XCJDTjQ3MCAoY2hhbm5lbHMgNTYtNjMpXCJcblxuICAjIENvbW1vbi1uYW1lIHJlZmVycyB0byB0aGUgY29tbW9uLW5hbWUgb2YgdGhpcyByZWdpb24gYXMgZGVmaW5lZCBieVxuICAjIHRoZSBMb1JhIEFsbGlhbmNlLlxuICBjb21tb25fbmFtZT1cIkNONDcwXCJcblxuXG4gICMgR2F0ZXdheSBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5nYXRld2F5XVxuXG4gICAgIyBGb3JjZSBnYXRld2F5cyBhcyBwcml2YXRlLlxuICAgICNcbiAgICAjIElmIGVuYWJsZWQsIGdhdGV3YXlzIGNhbiBvbmx5IGJlIHVzZWQgYnkgZGV2aWNlcyB1bmRlciB0aGUgc2FtZSB0ZW5hbnQuXG4gICAgZm9yY2VfZ3dzX3ByaXZhdGU9ZmFsc2VcblxuICAgIFxuICAgICMgR2F0ZXdheSBiYWNrZW5kIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kXVxuXG4gICAgICAjIFRoZSBlbmFibGVkIGJhY2tlbmQgdHlwZS5cbiAgICAgIGVuYWJsZWQ9XCJtcXR0XCJcblxuICAgICAgIyBNUVRUIGNvbmZpZ3VyYXRpb24uXG4gICAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmQubXF0dF1cblxuICAgICAgICAjIFRvcGljIHByZWZpeC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoZSB0b3BpYyBwcmVmaXggY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHRoZSByZWdpb24gb2YgdGhlIGdhdGV3YXkuXG4gICAgICAgICMgTm90ZSwgdGhlcmUgaXMgbm8gbmVlZCB0byBhZGQgYSB0cmFpbGluZyAnLycgdG8gdGhlIHByZWZpeC4gVGhlIHRyYWlsaW5nXG4gICAgICAgICMgJy8nIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIHByZWZpeCBpZiBpdCBpcyBjb25maWd1cmVkLlxuICAgICAgICB0b3BpY19wcmVmaXg9XCJjbjQ3MF83XCJcblxuICAgICAgICAjIE1RVFQgc2VydmVyIChlLmcuIHNjaGVtZTovL2hvc3Q6cG9ydCB3aGVyZSBzY2hlbWUgaXMgdGNwLCBzc2wgb3Igd3MpXG4gICAgICAgIHNlcnZlcj1cInRjcDovL21vc3F1aXR0bzoxODgzXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gdXNlcm5hbWUgKG9wdGlvbmFsKVxuICAgICAgICB1c2VybmFtZT1cIlwiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHBhc3N3b3JkIChvcHRpb25hbClcbiAgICAgICAgcGFzc3dvcmQ9XCJcIlxuXG4gICAgICAgICMgUXVhbGl0eSBvZiBzZXJ2aWNlIGxldmVsXG4gICAgICAgICNcbiAgICAgICAgIyAwOiBhdCBtb3N0IG9uY2VcbiAgICAgICAgIyAxOiBhdCBsZWFzdCBvbmNlXG4gICAgICAgICMgMjogZXhhY3RseSBvbmNlXG4gICAgICAgICNcbiAgICAgICAgIyBOb3RlOiBhbiBpbmNyZWFzZSBvZiB0aGlzIHZhbHVlIHdpbGwgZGVjcmVhc2UgdGhlIHBlcmZvcm1hbmNlLlxuICAgICAgICAjIEZvciBtb3JlIGluZm9ybWF0aW9uOiBodHRwczovL3d3dy5oaXZlbXEuY29tL2Jsb2cvbXF0dC1lc3NlbnRpYWxzLXBhcnQtNi1tcXR0LXF1YWxpdHktb2Ytc2VydmljZS1sZXZlbHNcbiAgICAgICAgcW9zPTBcblxuICAgICAgICAjIENsZWFuIHNlc3Npb25cbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgXCJjbGVhbiBzZXNzaW9uXCIgZmxhZyBpbiB0aGUgY29ubmVjdCBtZXNzYWdlIHdoZW4gdGhpcyBjbGllbnRcbiAgICAgICAgIyBjb25uZWN0cyB0byBhbiBNUVRUIGJyb2tlci4gQnkgc2V0dGluZyB0aGlzIGZsYWcgeW91IGFyZSBpbmRpY2F0aW5nXG4gICAgICAgICMgdGhhdCBubyBtZXNzYWdlcyBzYXZlZCBieSB0aGUgYnJva2VyIGZvciB0aGlzIGNsaWVudCBzaG91bGQgYmUgZGVsaXZlcmVkLlxuICAgICAgICBjbGVhbl9zZXNzaW9uPWZhbHNlXG5cbiAgICAgICAgIyBDbGllbnQgSURcbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgY2xpZW50IGlkIHRvIGJlIHVzZWQgYnkgdGhpcyBjbGllbnQgd2hlbiBjb25uZWN0aW5nIHRvIHRoZSBNUVRUXG4gICAgICAgICMgYnJva2VyLiBBIGNsaWVudCBpZCBtdXN0IGJlIG5vIGxvbmdlciB0aGFuIDIzIGNoYXJhY3RlcnMuIElmIGxlZnQgYmxhbmssXG4gICAgICAgICMgYSByYW5kb20gaWQgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgQ2hpcnBTdGFjay5cbiAgICAgICAgY2xpZW50X2lkPVwiXCJcblxuICAgICAgICAjIEtlZXAgYWxpdmUgaW50ZXJ2YWwuXG4gICAgICAgICNcbiAgICAgICAgIyBUaGlzIGRlZmluZXMgdGhlIG1heGltdW0gdGltZSB0aGF0IHRoYXQgc2hvdWxkIHBhc3Mgd2l0aG91dCBjb21tdW5pY2F0aW9uXG4gICAgICAgICMgYmV0d2VlbiB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIuXG4gICAgICAgIGtlZXBfYWxpdmVfaW50ZXJ2YWw9XCIzMHNcIlxuXG4gICAgICAgICMgQ0EgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgICNcbiAgICAgICAgIyBVc2UgdGhpcyB3aGVuIHNldHRpbmcgdXAgYSBzZWN1cmUgY29ubmVjdGlvbiAod2hlbiBzZXJ2ZXIgdXNlcyBzc2w6Ly8uLi4pXG4gICAgICAgICMgYnV0IHRoZSBjZXJ0aWZpY2F0ZSB1c2VkIGJ5IHRoZSBzZXJ2ZXIgaXMgbm90IHRydXN0ZWQgYnkgYW55IENBIGNlcnRpZmljYXRlXG4gICAgICAgICMgb24gdGhlIHNlcnZlciAoZS5nLiB3aGVuIHNlbGYgZ2VuZXJhdGVkKS5cbiAgICAgICAgY2FfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBrZXkgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19rZXk9XCJcIlxuXG5cbiAgICAjIEdhdGV3YXkgY2hhbm5lbCBjb25maWd1cmF0aW9uLlxuICAgICNcbiAgICAjIE5vdGU6IHRoaXMgY29uZmlndXJhdGlvbiBpcyBvbmx5IHVzZWQgaW4gY2FzZSB0aGUgZ2F0ZXdheSBpcyB1c2luZyB0aGVcbiAgICAjIENoaXJwU3RhY2sgQ29uY2VudHJhdG9yZCBkYWVtb24uIEluIGFueSBvdGhlciBjYXNlLCB0aGlzIGNvbmZpZ3VyYXRpb24gXG4gICAgIyBpcyBpZ25vcmVkLlxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00ODE1MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ4MTcwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDgxOTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00ODIxMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ4MjMwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDgyNTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00ODI3MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ4MjkwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cblxuICAjIFJlZ2lvbiBzcGVjaWZpYyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLm5ldHdvcmtdXG4gICAgXG4gICAgIyBJbnN0YWxsYXRpb24gbWFyZ2luIChkQikgdXNlZCBieSB0aGUgQURSIGVuZ2luZS5cbiAgICAjXG4gICAgIyBBIGhpZ2hlciBudW1iZXIgbWVhbnMgdGhhdCB0aGUgbmV0d29yay1zZXJ2ZXIgd2lsbCBrZWVwIG1vcmUgbWFyZ2luLFxuICAgICMgcmVzdWx0aW5nIGluIGEgbG93ZXIgZGF0YS1yYXRlIGJ1dCBkZWNyZWFzaW5nIHRoZSBjaGFuY2UgdGhhdCB0aGVcbiAgICAjIGRldmljZSBnZXRzIGRpc2Nvbm5lY3RlZCBiZWNhdXNlIGl0IGlzIHVuYWJsZSB0byByZWFjaCBvbmUgb2YgdGhlXG4gICAgIyBzdXJyb3VuZGVkIGdhdGV3YXlzLlxuICAgIGluc3RhbGxhdGlvbl9tYXJnaW49MTBcblxuICAgICMgUlggd2luZG93IChDbGFzcy1BKS5cbiAgICAjXG4gICAgIyBTZXQgdGhpcyB0bzpcbiAgICAjIDA6IFJYMSAvIFJYMlxuICAgICMgMTogUlgxIG9ubHlcbiAgICAjIDI6IFJYMiBvbmx5XG4gICAgcnhfd2luZG93PTBcblxuICAgICMgUlgxIGRlbGF5ICgxIC0gMTUgc2Vjb25kcykuXG4gICAgcngxX2RlbGF5PTFcblxuICAgICMgUlgxIGRhdGEtcmF0ZSBvZmZzZXRcbiAgICByeDFfZHJfb2Zmc2V0PTBcblxuICAgICMgUlgyIGRhdGEtcmF0ZVxuICAgIHJ4Ml9kcj0wXG5cbiAgICAjIFJYMiBmcmVxdWVuY3kgKEh6KVxuICAgIHJ4Ml9mcmVxdWVuY3k9NTA1MzAwMDAwXG5cbiAgICAjIFByZWZlciBSWDIgb24gUlgxIGRhdGEtcmF0ZSBsZXNzIHRoYW4uXG4gICAgI1xuICAgICMgUHJlZmVyIFJYMiBvdmVyIFJYMSBiYXNlZCBvbiB0aGUgUlgxIGRhdGEtcmF0ZS4gV2hlbiB0aGUgUlgxIGRhdGEtcmF0ZVxuICAgICMgaXMgc21hbGxlciB0aGFuIHRoZSBjb25maWd1cmVkIHZhbHVlLCB0aGVuIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsXG4gICAgIyBmaXJzdCB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGZvciBSWDIsIGZhaWxpbmcgdGhhdCAoZS5nLiB0aGUgZ2F0ZXdheVxuICAgICMgaGFzIGFscmVhZHkgYSBwYXlsb2FkIHNjaGVkdWxlZCBhdCB0aGUgUlgyIHRpbWluZykgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fcngxX2RyX2x0PTBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBsaW5rIGJ1ZGdldC5cbiAgICAjXG4gICAgIyBXaGVuIHRoZSBsaW5rLWJ1ZGdldCBpcyBiZXR0ZXIgZm9yIFJYMiB0aGFuIGZvciBSWDEsIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsIGZpcnN0XG4gICAgIyB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGluIFJYMiwgZmFpbGluZyB0aGF0IGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX2xpbmtfYnVkZ2V0PWZhbHNlXG5cbiAgICAjIERvd25saW5rIFRYIFBvd2VyIChkQm0pXG4gICAgI1xuICAgICMgV2hlbiBzZXQgdG8gLTEsIHRoZSBkb3dubGluayBUWCBQb3dlciBmcm9tIHRoZSBjb25maWd1cmVkIGJhbmQgd2lsbFxuICAgICMgYmUgdXNlZC5cbiAgICAjXG4gICAgIyBQbGVhc2UgY29uc3VsdCB0aGUgTG9SYVdBTiBSZWdpb25hbCBQYXJhbWV0ZXJzIGFuZCBsb2NhbCByZWd1bGF0aW9uc1xuICAgICMgZm9yIHZhbGlkIGFuZCBsZWdhbCBvcHRpb25zLiBOb3RlIHRoYXQgdGhlIGNvbmZpZ3VyZWQgVFggUG93ZXIgbXVzdCBiZVxuICAgICMgc3VwcG9ydGVkIGJ5IHlvdXIgZ2F0ZXdheShzKS5cbiAgICBkb3dubGlua190eF9wb3dlcj0tMVxuXG4gICAgIyBBRFIgaXMgZGlzYWJsZWQuXG4gICAgYWRyX2Rpc2FibGVkPWZhbHNlXG5cbiAgICAjIE1pbmltdW0gZGF0YS1yYXRlLlxuICAgIG1pbl9kcj0wXG5cbiAgICAjIE1heGltdW0gZGF0YS1yYXRlLlxuICAgIG1heF9kcj01XG5cbiAgICAjIEVuYWJsZWQgdXBsaW5rIGNoYW5uZWxzLlxuICAgICNcbiAgICAjIFVzZSB0aGlzIHdoZW4gb255IGEgc3ViLXNldCBvZiB0aGUgYnkgZGVmYXVsdCBlbmFibGVkIGNoYW5uZWxzIGFyZSBiZWluZ1xuICAgICMgdXNlZC4gRm9yIGV4YW1wbGUgd2hlbiBvbmx5IHVzaW5nIHRoZSBmaXJzdCA4IGNoYW5uZWxzIG9mIHRoZSBVUyBiYW5kLlxuICAgICMgTm90ZTogd2hlbiBsZWZ0IGJsYW5rIC8gZW1wdHkgYXJyYXksIGFsbCBjaGFubmVscyB3aWxsIGJlIGVuYWJsZWQuXG4gICAgZW5hYmxlZF91cGxpbmtfY2hhbm5lbHM9WzU2LCA1NywgNTgsIDU5LCA2MCwgNjEsIDYyLCA2M11cblxuXG4gICAgIyBSZWpvaW4tcmVxdWVzdCBjb25maWd1cmF0aW9uIChMb1JhV0FOIDEuMSlcbiAgICBbcmVnaW9ucy5uZXR3b3JrLnJlam9pbl9yZXF1ZXN0XVxuXG4gICAgICAjIFJlcXVlc3QgZGV2aWNlcyB0byBwZXJpb2RpY2FsbHkgc2VuZCByZWpvaW4tcmVxdWVzdHMuXG4gICAgICBlbmFibGVkPWZhbHNlXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X2NvdW50X24gKyA0KVxuICAgICAgIyB1cGxpbmsgbWVzc2FnZXMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgIG1heF9jb3VudF9uPTBcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfdGltZV9uICsgMTApXG4gICAgICAjIHNlY29uZHMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgICNcbiAgICAgICMgMCAgPSByb3VnaGx5IDE3IG1pbnV0ZXNcbiAgICAgICMgMTUgPSBhYm91dCAxIHllYXJcbiAgICAgIG1heF90aW1lX249MFxuICAgIFxuXG4gICAgIyBDbGFzcy1CIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMubmV0d29yay5jbGFzc19iXVxuXG4gICAgICAjIFBpbmctc2xvdCBkYXRhLXJhdGUuIFxuICAgICAgcGluZ19zbG90X2RyPTJcblxuICAgICAgIyBQaW5nLXNsb3QgZnJlcXVlbmN5IChIeilcbiAgICAgICNcbiAgICAgICMgc2V0IHRoaXMgdG8gMCB0byB1c2UgdGhlIGRlZmF1bHQgZnJlcXVlbmN5IHBsYW4gZm9yIHRoZSBjb25maWd1cmVkIHJlZ2lvblxuICAgICAgIyAod2hpY2ggY291bGQgYmUgZnJlcXVlbmN5IGhvcHBpbmcpLlxuICAgICAgcGluZ19zbG90X2ZyZXF1ZW5jeT0wXG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbnNlcnZpY2VOYW1lID0gXCJjaGlycHN0YWNrXCJcbmZpbGVQYXRoID0gXCIvY2hpcnBzdGFjay9yZWdpb25fY240NzBfOC50b21sXCJcbmNvbnRlbnQgPSBcIlwiXCJcbiMgVGhpcyBmaWxlIGNvbnRhaW5zIGFuIGV4YW1wbGUgQ040NzAgZXhhbXBsZSAoY2hhbm5lbHMgNjQtNzEpLlxuW1tyZWdpb25zXV1cblxuICAjIElEIGlzIGFuIHVzZS1kZWZpbmVkIGlkZW50aWZpZXIgZm9yIHRoaXMgcmVnaW9uLlxuICBpZD1cImNuNDcwXzhcIlxuXG4gICMgRGVzY3JpcHRpb24gaXMgYSBzaG9ydCBkZXNjcmlwdGlvbiBmb3IgdGhpcyByZWdpb24uXG4gIGRlc2NyaXB0aW9uPVwiQ040NzAgKGNoYW5uZWxzIDY0LTcxKVwiXG5cbiAgIyBDb21tb24tbmFtZSByZWZlcnMgdG8gdGhlIGNvbW1vbi1uYW1lIG9mIHRoaXMgcmVnaW9uIGFzIGRlZmluZWQgYnlcbiAgIyB0aGUgTG9SYSBBbGxpYW5jZS5cbiAgY29tbW9uX25hbWU9XCJDTjQ3MFwiXG5cblxuICAjIEdhdGV3YXkgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMuZ2F0ZXdheV1cblxuICAgICMgRm9yY2UgZ2F0ZXdheXMgYXMgcHJpdmF0ZS5cbiAgICAjXG4gICAgIyBJZiBlbmFibGVkLCBnYXRld2F5cyBjYW4gb25seSBiZSB1c2VkIGJ5IGRldmljZXMgdW5kZXIgdGhlIHNhbWUgdGVuYW50LlxuICAgIGZvcmNlX2d3c19wcml2YXRlPWZhbHNlXG5cbiAgICBcbiAgICAjIEdhdGV3YXkgYmFja2VuZCBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZF1cblxuICAgICAgIyBUaGUgZW5hYmxlZCBiYWNrZW5kIHR5cGUuXG4gICAgICBlbmFibGVkPVwibXF0dFwiXG5cbiAgICAgICMgTVFUVCBjb25maWd1cmF0aW9uLlxuICAgICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kLm1xdHRdXG5cbiAgICAgICAgIyBUb3BpYyBwcmVmaXguXG4gICAgICAgICNcbiAgICAgICAgIyBUaGUgdG9waWMgcHJlZml4IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB0aGUgcmVnaW9uIG9mIHRoZSBnYXRld2F5LlxuICAgICAgICAjIE5vdGUsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYWRkIGEgdHJhaWxpbmcgJy8nIHRvIHRoZSBwcmVmaXguIFRoZSB0cmFpbGluZ1xuICAgICAgICAjICcvJyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBwcmVmaXggaWYgaXQgaXMgY29uZmlndXJlZC5cbiAgICAgICAgdG9waWNfcHJlZml4PVwiY240NzBfOFwiXG5cbiAgICAgICAgIyBNUVRUIHNlcnZlciAoZS5nLiBzY2hlbWU6Ly9ob3N0OnBvcnQgd2hlcmUgc2NoZW1lIGlzIHRjcCwgc3NsIG9yIHdzKVxuICAgICAgICBzZXJ2ZXI9XCJ0Y3A6Ly9tb3NxdWl0dG86MTg4M1wiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHVzZXJuYW1lIChvcHRpb25hbClcbiAgICAgICAgdXNlcm5hbWU9XCJcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiBwYXNzd29yZCAob3B0aW9uYWwpXG4gICAgICAgIHBhc3N3b3JkPVwiXCJcblxuICAgICAgICAjIFF1YWxpdHkgb2Ygc2VydmljZSBsZXZlbFxuICAgICAgICAjXG4gICAgICAgICMgMDogYXQgbW9zdCBvbmNlXG4gICAgICAgICMgMTogYXQgbGVhc3Qgb25jZVxuICAgICAgICAjIDI6IGV4YWN0bHkgb25jZVxuICAgICAgICAjXG4gICAgICAgICMgTm90ZTogYW4gaW5jcmVhc2Ugb2YgdGhpcyB2YWx1ZSB3aWxsIGRlY3JlYXNlIHRoZSBwZXJmb3JtYW5jZS5cbiAgICAgICAgIyBGb3IgbW9yZSBpbmZvcm1hdGlvbjogaHR0cHM6Ly93d3cuaGl2ZW1xLmNvbS9ibG9nL21xdHQtZXNzZW50aWFscy1wYXJ0LTYtbXF0dC1xdWFsaXR5LW9mLXNlcnZpY2UtbGV2ZWxzXG4gICAgICAgIHFvcz0wXG5cbiAgICAgICAgIyBDbGVhbiBzZXNzaW9uXG4gICAgICAgICNcbiAgICAgICAgIyBTZXQgdGhlIFwiY2xlYW4gc2Vzc2lvblwiIGZsYWcgaW4gdGhlIGNvbm5lY3QgbWVzc2FnZSB3aGVuIHRoaXMgY2xpZW50XG4gICAgICAgICMgY29ubmVjdHMgdG8gYW4gTVFUVCBicm9rZXIuIEJ5IHNldHRpbmcgdGhpcyBmbGFnIHlvdSBhcmUgaW5kaWNhdGluZ1xuICAgICAgICAjIHRoYXQgbm8gbWVzc2FnZXMgc2F2ZWQgYnkgdGhlIGJyb2tlciBmb3IgdGhpcyBjbGllbnQgc2hvdWxkIGJlIGRlbGl2ZXJlZC5cbiAgICAgICAgY2xlYW5fc2Vzc2lvbj1mYWxzZVxuXG4gICAgICAgICMgQ2xpZW50IElEXG4gICAgICAgICNcbiAgICAgICAgIyBTZXQgdGhlIGNsaWVudCBpZCB0byBiZSB1c2VkIGJ5IHRoaXMgY2xpZW50IHdoZW4gY29ubmVjdGluZyB0byB0aGUgTVFUVFxuICAgICAgICAjIGJyb2tlci4gQSBjbGllbnQgaWQgbXVzdCBiZSBubyBsb25nZXIgdGhhbiAyMyBjaGFyYWN0ZXJzLiBJZiBsZWZ0IGJsYW5rLFxuICAgICAgICAjIGEgcmFuZG9tIGlkIHdpbGwgYmUgZ2VuZXJhdGVkIGJ5IENoaXJwU3RhY2suXG4gICAgICAgIGNsaWVudF9pZD1cIlwiXG5cbiAgICAgICAgIyBLZWVwIGFsaXZlIGludGVydmFsLlxuICAgICAgICAjXG4gICAgICAgICMgVGhpcyBkZWZpbmVzIHRoZSBtYXhpbXVtIHRpbWUgdGhhdCB0aGF0IHNob3VsZCBwYXNzIHdpdGhvdXQgY29tbXVuaWNhdGlvblxuICAgICAgICAjIGJldHdlZW4gdGhlIGNsaWVudCBhbmQgc2VydmVyLlxuICAgICAgICBrZWVwX2FsaXZlX2ludGVydmFsPVwiMzBzXCJcblxuICAgICAgICAjIENBIGNlcnRpZmljYXRlIGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICAjXG4gICAgICAgICMgVXNlIHRoaXMgd2hlbiBzZXR0aW5nIHVwIGEgc2VjdXJlIGNvbm5lY3Rpb24gKHdoZW4gc2VydmVyIHVzZXMgc3NsOi8vLi4uKVxuICAgICAgICAjIGJ1dCB0aGUgY2VydGlmaWNhdGUgdXNlZCBieSB0aGUgc2VydmVyIGlzIG5vdCB0cnVzdGVkIGJ5IGFueSBDQSBjZXJ0aWZpY2F0ZVxuICAgICAgICAjIG9uIHRoZSBzZXJ2ZXIgKGUuZy4gd2hlbiBzZWxmIGdlbmVyYXRlZCkuXG4gICAgICAgIGNhX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGNlcnRpZmljYXRlIGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICB0bHNfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMga2V5IGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICB0bHNfa2V5PVwiXCJcblxuXG4gICAgIyBHYXRld2F5IGNoYW5uZWwgY29uZmlndXJhdGlvbi5cbiAgICAjXG4gICAgIyBOb3RlOiB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgb25seSB1c2VkIGluIGNhc2UgdGhlIGdhdGV3YXkgaXMgdXNpbmcgdGhlXG4gICAgIyBDaGlycFN0YWNrIENvbmNlbnRyYXRvcmQgZGFlbW9uLiBJbiBhbnkgb3RoZXIgY2FzZSwgdGhpcyBjb25maWd1cmF0aW9uIFxuICAgICMgaXMgaWdub3JlZC5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDgzMTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00ODMzMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ4MzUwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDgzNzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00ODM5MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ4NDEwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDg0MzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00ODQ1MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG5cbiAgIyBSZWdpb24gc3BlY2lmaWMgbmV0d29yayBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5uZXR3b3JrXVxuICAgIFxuICAgICMgSW5zdGFsbGF0aW9uIG1hcmdpbiAoZEIpIHVzZWQgYnkgdGhlIEFEUiBlbmdpbmUuXG4gICAgI1xuICAgICMgQSBoaWdoZXIgbnVtYmVyIG1lYW5zIHRoYXQgdGhlIG5ldHdvcmstc2VydmVyIHdpbGwga2VlcCBtb3JlIG1hcmdpbixcbiAgICAjIHJlc3VsdGluZyBpbiBhIGxvd2VyIGRhdGEtcmF0ZSBidXQgZGVjcmVhc2luZyB0aGUgY2hhbmNlIHRoYXQgdGhlXG4gICAgIyBkZXZpY2UgZ2V0cyBkaXNjb25uZWN0ZWQgYmVjYXVzZSBpdCBpcyB1bmFibGUgdG8gcmVhY2ggb25lIG9mIHRoZVxuICAgICMgc3Vycm91bmRlZCBnYXRld2F5cy5cbiAgICBpbnN0YWxsYXRpb25fbWFyZ2luPTEwXG5cbiAgICAjIFJYIHdpbmRvdyAoQ2xhc3MtQSkuXG4gICAgI1xuICAgICMgU2V0IHRoaXMgdG86XG4gICAgIyAwOiBSWDEgLyBSWDJcbiAgICAjIDE6IFJYMSBvbmx5XG4gICAgIyAyOiBSWDIgb25seVxuICAgIHJ4X3dpbmRvdz0wXG5cbiAgICAjIFJYMSBkZWxheSAoMSAtIDE1IHNlY29uZHMpLlxuICAgIHJ4MV9kZWxheT0xXG5cbiAgICAjIFJYMSBkYXRhLXJhdGUgb2Zmc2V0XG4gICAgcngxX2RyX29mZnNldD0wXG5cbiAgICAjIFJYMiBkYXRhLXJhdGVcbiAgICByeDJfZHI9MFxuXG4gICAgIyBSWDIgZnJlcXVlbmN5IChIeilcbiAgICByeDJfZnJlcXVlbmN5PTUwNTMwMDAwMFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIFJYMSBkYXRhLXJhdGUgbGVzcyB0aGFuLlxuICAgICNcbiAgICAjIFByZWZlciBSWDIgb3ZlciBSWDEgYmFzZWQgb24gdGhlIFJYMSBkYXRhLXJhdGUuIFdoZW4gdGhlIFJYMSBkYXRhLXJhdGVcbiAgICAjIGlzIHNtYWxsZXIgdGhhbiB0aGUgY29uZmlndXJlZCB2YWx1ZSwgdGhlbiB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbFxuICAgICMgZmlyc3QgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBmb3IgUlgyLCBmYWlsaW5nIHRoYXQgKGUuZy4gdGhlIGdhdGV3YXlcbiAgICAjIGhhcyBhbHJlYWR5IGEgcGF5bG9hZCBzY2hlZHVsZWQgYXQgdGhlIFJYMiB0aW1pbmcpIGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX3J4MV9kcl9sdD0wXG5cbiAgICAjIFByZWZlciBSWDIgb24gbGluayBidWRnZXQuXG4gICAgI1xuICAgICMgV2hlbiB0aGUgbGluay1idWRnZXQgaXMgYmV0dGVyIGZvciBSWDIgdGhhbiBmb3IgUlgxLCB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbCBmaXJzdFxuICAgICMgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBpbiBSWDIsIGZhaWxpbmcgdGhhdCBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9saW5rX2J1ZGdldD1mYWxzZVxuXG4gICAgIyBEb3dubGluayBUWCBQb3dlciAoZEJtKVxuICAgICNcbiAgICAjIFdoZW4gc2V0IHRvIC0xLCB0aGUgZG93bmxpbmsgVFggUG93ZXIgZnJvbSB0aGUgY29uZmlndXJlZCBiYW5kIHdpbGxcbiAgICAjIGJlIHVzZWQuXG4gICAgI1xuICAgICMgUGxlYXNlIGNvbnN1bHQgdGhlIExvUmFXQU4gUmVnaW9uYWwgUGFyYW1ldGVycyBhbmQgbG9jYWwgcmVndWxhdGlvbnNcbiAgICAjIGZvciB2YWxpZCBhbmQgbGVnYWwgb3B0aW9ucy4gTm90ZSB0aGF0IHRoZSBjb25maWd1cmVkIFRYIFBvd2VyIG11c3QgYmVcbiAgICAjIHN1cHBvcnRlZCBieSB5b3VyIGdhdGV3YXkocykuXG4gICAgZG93bmxpbmtfdHhfcG93ZXI9LTFcblxuICAgICMgQURSIGlzIGRpc2FibGVkLlxuICAgIGFkcl9kaXNhYmxlZD1mYWxzZVxuXG4gICAgIyBNaW5pbXVtIGRhdGEtcmF0ZS5cbiAgICBtaW5fZHI9MFxuXG4gICAgIyBNYXhpbXVtIGRhdGEtcmF0ZS5cbiAgICBtYXhfZHI9NVxuXG4gICAgIyBFbmFibGVkIHVwbGluayBjaGFubmVscy5cbiAgICAjXG4gICAgIyBVc2UgdGhpcyB3aGVuIG9ueSBhIHN1Yi1zZXQgb2YgdGhlIGJ5IGRlZmF1bHQgZW5hYmxlZCBjaGFubmVscyBhcmUgYmVpbmdcbiAgICAjIHVzZWQuIEZvciBleGFtcGxlIHdoZW4gb25seSB1c2luZyB0aGUgZmlyc3QgOCBjaGFubmVscyBvZiB0aGUgVVMgYmFuZC5cbiAgICAjIE5vdGU6IHdoZW4gbGVmdCBibGFuayAvIGVtcHR5IGFycmF5LCBhbGwgY2hhbm5lbHMgd2lsbCBiZSBlbmFibGVkLlxuICAgIGVuYWJsZWRfdXBsaW5rX2NoYW5uZWxzPVs2NCwgNjUsIDY2LCA2NywgNjgsIDY5LCA3MCwgNzFdXG5cblxuICAgICMgUmVqb2luLXJlcXVlc3QgY29uZmlndXJhdGlvbiAoTG9SYVdBTiAxLjEpXG4gICAgW3JlZ2lvbnMubmV0d29yay5yZWpvaW5fcmVxdWVzdF1cblxuICAgICAgIyBSZXF1ZXN0IGRldmljZXMgdG8gcGVyaW9kaWNhbGx5IHNlbmQgcmVqb2luLXJlcXVlc3RzLlxuICAgICAgZW5hYmxlZD1mYWxzZVxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF9jb3VudF9uICsgNClcbiAgICAgICMgdXBsaW5rIG1lc3NhZ2VzLiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gMTUuXG4gICAgICBtYXhfY291bnRfbj0wXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X3RpbWVfbiArIDEwKVxuICAgICAgIyBzZWNvbmRzLiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gMTUuXG4gICAgICAjXG4gICAgICAjIDAgID0gcm91Z2hseSAxNyBtaW51dGVzXG4gICAgICAjIDE1ID0gYWJvdXQgMSB5ZWFyXG4gICAgICBtYXhfdGltZV9uPTBcbiAgICBcblxuICAgICMgQ2xhc3MtQiBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLm5ldHdvcmsuY2xhc3NfYl1cblxuICAgICAgIyBQaW5nLXNsb3QgZGF0YS1yYXRlLiBcbiAgICAgIHBpbmdfc2xvdF9kcj0yXG5cbiAgICAgICMgUGluZy1zbG90IGZyZXF1ZW5jeSAoSHopXG4gICAgICAjXG4gICAgICAjIHNldCB0aGlzIHRvIDAgdG8gdXNlIHRoZSBkZWZhdWx0IGZyZXF1ZW5jeSBwbGFuIGZvciB0aGUgY29uZmlndXJlZCByZWdpb25cbiAgICAgICMgKHdoaWNoIGNvdWxkIGJlIGZyZXF1ZW5jeSBob3BwaW5nKS5cbiAgICAgIHBpbmdfc2xvdF9mcmVxdWVuY3k9MFxuXCJcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5zZXJ2aWNlTmFtZSA9IFwiY2hpcnBzdGFja1wiXG5maWxlUGF0aCA9IFwiL2NoaXJwc3RhY2svcmVnaW9uX2NuNDcwXzkudG9tbFwiXG5jb250ZW50ID0gXCJcIlwiXG4jIFRoaXMgZmlsZSBjb250YWlucyBhbiBleGFtcGxlIENONDcwIGV4YW1wbGUgKGNoYW5uZWxzIDcyLTc5KS5cbltbcmVnaW9uc11dXG5cbiAgIyBJRCBpcyBhbiB1c2UtZGVmaW5lZCBpZGVudGlmaWVyIGZvciB0aGlzIHJlZ2lvbi5cbiAgaWQ9XCJjbjQ3MF85XCJcblxuICAjIERlc2NyaXB0aW9uIGlzIGEgc2hvcnQgZGVzY3JpcHRpb24gZm9yIHRoaXMgcmVnaW9uLlxuICBkZXNjcmlwdGlvbj1cIkNONDcwIChjaGFubmVscyA3Mi03OSlcIlxuXG4gICMgQ29tbW9uLW5hbWUgcmVmZXJzIHRvIHRoZSBjb21tb24tbmFtZSBvZiB0aGlzIHJlZ2lvbiBhcyBkZWZpbmVkIGJ5XG4gICMgdGhlIExvUmEgQWxsaWFuY2UuXG4gIGNvbW1vbl9uYW1lPVwiQ040NzBcIlxuXG5cbiAgIyBHYXRld2F5IGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLmdhdGV3YXldXG5cbiAgICAjIEZvcmNlIGdhdGV3YXlzIGFzIHByaXZhdGUuXG4gICAgI1xuICAgICMgSWYgZW5hYmxlZCwgZ2F0ZXdheXMgY2FuIG9ubHkgYmUgdXNlZCBieSBkZXZpY2VzIHVuZGVyIHRoZSBzYW1lIHRlbmFudC5cbiAgICBmb3JjZV9nd3NfcHJpdmF0ZT1mYWxzZVxuXG4gICAgXG4gICAgIyBHYXRld2F5IGJhY2tlbmQgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmRdXG5cbiAgICAgICMgVGhlIGVuYWJsZWQgYmFja2VuZCB0eXBlLlxuICAgICAgZW5hYmxlZD1cIm1xdHRcIlxuXG4gICAgICAjIE1RVFQgY29uZmlndXJhdGlvbi5cbiAgICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZC5tcXR0XVxuXG4gICAgICAgICMgVG9waWMgcHJlZml4LlxuICAgICAgICAjXG4gICAgICAgICMgVGhlIHRvcGljIHByZWZpeCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgdGhlIHJlZ2lvbiBvZiB0aGUgZ2F0ZXdheS5cbiAgICAgICAgIyBOb3RlLCB0aGVyZSBpcyBubyBuZWVkIHRvIGFkZCBhIHRyYWlsaW5nICcvJyB0byB0aGUgcHJlZml4LiBUaGUgdHJhaWxpbmdcbiAgICAgICAgIyAnLycgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgcHJlZml4IGlmIGl0IGlzIGNvbmZpZ3VyZWQuXG4gICAgICAgIHRvcGljX3ByZWZpeD1cImNuNDcwXzlcIlxuXG4gICAgICAgICMgTVFUVCBzZXJ2ZXIgKGUuZy4gc2NoZW1lOi8vaG9zdDpwb3J0IHdoZXJlIHNjaGVtZSBpcyB0Y3AsIHNzbCBvciB3cylcbiAgICAgICAgc2VydmVyPVwidGNwOi8vbW9zcXVpdHRvOjE4ODNcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiB1c2VybmFtZSAob3B0aW9uYWwpXG4gICAgICAgIHVzZXJuYW1lPVwiXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gcGFzc3dvcmQgKG9wdGlvbmFsKVxuICAgICAgICBwYXNzd29yZD1cIlwiXG5cbiAgICAgICAgIyBRdWFsaXR5IG9mIHNlcnZpY2UgbGV2ZWxcbiAgICAgICAgI1xuICAgICAgICAjIDA6IGF0IG1vc3Qgb25jZVxuICAgICAgICAjIDE6IGF0IGxlYXN0IG9uY2VcbiAgICAgICAgIyAyOiBleGFjdGx5IG9uY2VcbiAgICAgICAgI1xuICAgICAgICAjIE5vdGU6IGFuIGluY3JlYXNlIG9mIHRoaXMgdmFsdWUgd2lsbCBkZWNyZWFzZSB0aGUgcGVyZm9ybWFuY2UuXG4gICAgICAgICMgRm9yIG1vcmUgaW5mb3JtYXRpb246IGh0dHBzOi8vd3d3LmhpdmVtcS5jb20vYmxvZy9tcXR0LWVzc2VudGlhbHMtcGFydC02LW1xdHQtcXVhbGl0eS1vZi1zZXJ2aWNlLWxldmVsc1xuICAgICAgICBxb3M9MFxuXG4gICAgICAgICMgQ2xlYW4gc2Vzc2lvblxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBcImNsZWFuIHNlc3Npb25cIiBmbGFnIGluIHRoZSBjb25uZWN0IG1lc3NhZ2Ugd2hlbiB0aGlzIGNsaWVudFxuICAgICAgICAjIGNvbm5lY3RzIHRvIGFuIE1RVFQgYnJva2VyLiBCeSBzZXR0aW5nIHRoaXMgZmxhZyB5b3UgYXJlIGluZGljYXRpbmdcbiAgICAgICAgIyB0aGF0IG5vIG1lc3NhZ2VzIHNhdmVkIGJ5IHRoZSBicm9rZXIgZm9yIHRoaXMgY2xpZW50IHNob3VsZCBiZSBkZWxpdmVyZWQuXG4gICAgICAgIGNsZWFuX3Nlc3Npb249ZmFsc2VcblxuICAgICAgICAjIENsaWVudCBJRFxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBjbGllbnQgaWQgdG8gYmUgdXNlZCBieSB0aGlzIGNsaWVudCB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIE1RVFRcbiAgICAgICAgIyBicm9rZXIuIEEgY2xpZW50IGlkIG11c3QgYmUgbm8gbG9uZ2VyIHRoYW4gMjMgY2hhcmFjdGVycy4gSWYgbGVmdCBibGFuayxcbiAgICAgICAgIyBhIHJhbmRvbSBpZCB3aWxsIGJlIGdlbmVyYXRlZCBieSBDaGlycFN0YWNrLlxuICAgICAgICBjbGllbnRfaWQ9XCJcIlxuXG4gICAgICAgICMgS2VlcCBhbGl2ZSBpbnRlcnZhbC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoaXMgZGVmaW5lcyB0aGUgbWF4aW11bSB0aW1lIHRoYXQgdGhhdCBzaG91bGQgcGFzcyB3aXRob3V0IGNvbW11bmljYXRpb25cbiAgICAgICAgIyBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlci5cbiAgICAgICAga2VlcF9hbGl2ZV9pbnRlcnZhbD1cIjMwc1wiXG5cbiAgICAgICAgIyBDQSBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgI1xuICAgICAgICAjIFVzZSB0aGlzIHdoZW4gc2V0dGluZyB1cCBhIHNlY3VyZSBjb25uZWN0aW9uICh3aGVuIHNlcnZlciB1c2VzIHNzbDovLy4uLilcbiAgICAgICAgIyBidXQgdGhlIGNlcnRpZmljYXRlIHVzZWQgYnkgdGhlIHNlcnZlciBpcyBub3QgdHJ1c3RlZCBieSBhbnkgQ0EgY2VydGlmaWNhdGVcbiAgICAgICAgIyBvbiB0aGUgc2VydmVyIChlLmcuIHdoZW4gc2VsZiBnZW5lcmF0ZWQpLlxuICAgICAgICBjYV9jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGtleSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2tleT1cIlwiXG5cblxuICAgICMgR2F0ZXdheSBjaGFubmVsIGNvbmZpZ3VyYXRpb24uXG4gICAgI1xuICAgICMgTm90ZTogdGhpcyBjb25maWd1cmF0aW9uIGlzIG9ubHkgdXNlZCBpbiBjYXNlIHRoZSBnYXRld2F5IGlzIHVzaW5nIHRoZVxuICAgICMgQ2hpcnBTdGFjayBDb25jZW50cmF0b3JkIGRhZW1vbi4gSW4gYW55IG90aGVyIGNhc2UsIHRoaXMgY29uZmlndXJhdGlvbiBcbiAgICAjIGlzIGlnbm9yZWQuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ4NDcwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDg0OTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00ODUxMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ4NTMwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDg1NTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00ODU3MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQ4NTkwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDg2MTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuXG4gICMgUmVnaW9uIHNwZWNpZmljIG5ldHdvcmsgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMubmV0d29ya11cbiAgICBcbiAgICAjIEluc3RhbGxhdGlvbiBtYXJnaW4gKGRCKSB1c2VkIGJ5IHRoZSBBRFIgZW5naW5lLlxuICAgICNcbiAgICAjIEEgaGlnaGVyIG51bWJlciBtZWFucyB0aGF0IHRoZSBuZXR3b3JrLXNlcnZlciB3aWxsIGtlZXAgbW9yZSBtYXJnaW4sXG4gICAgIyByZXN1bHRpbmcgaW4gYSBsb3dlciBkYXRhLXJhdGUgYnV0IGRlY3JlYXNpbmcgdGhlIGNoYW5jZSB0aGF0IHRoZVxuICAgICMgZGV2aWNlIGdldHMgZGlzY29ubmVjdGVkIGJlY2F1c2UgaXQgaXMgdW5hYmxlIHRvIHJlYWNoIG9uZSBvZiB0aGVcbiAgICAjIHN1cnJvdW5kZWQgZ2F0ZXdheXMuXG4gICAgaW5zdGFsbGF0aW9uX21hcmdpbj0xMFxuXG4gICAgIyBSWCB3aW5kb3cgKENsYXNzLUEpLlxuICAgICNcbiAgICAjIFNldCB0aGlzIHRvOlxuICAgICMgMDogUlgxIC8gUlgyXG4gICAgIyAxOiBSWDEgb25seVxuICAgICMgMjogUlgyIG9ubHlcbiAgICByeF93aW5kb3c9MFxuXG4gICAgIyBSWDEgZGVsYXkgKDEgLSAxNSBzZWNvbmRzKS5cbiAgICByeDFfZGVsYXk9MVxuXG4gICAgIyBSWDEgZGF0YS1yYXRlIG9mZnNldFxuICAgIHJ4MV9kcl9vZmZzZXQ9MFxuXG4gICAgIyBSWDIgZGF0YS1yYXRlXG4gICAgcngyX2RyPTBcblxuICAgICMgUlgyIGZyZXF1ZW5jeSAoSHopXG4gICAgcngyX2ZyZXF1ZW5jeT01MDUzMDAwMDBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBSWDEgZGF0YS1yYXRlIGxlc3MgdGhhbi5cbiAgICAjXG4gICAgIyBQcmVmZXIgUlgyIG92ZXIgUlgxIGJhc2VkIG9uIHRoZSBSWDEgZGF0YS1yYXRlLiBXaGVuIHRoZSBSWDEgZGF0YS1yYXRlXG4gICAgIyBpcyBzbWFsbGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgdmFsdWUsIHRoZW4gdGhlIE5ldHdvcmsgU2VydmVyIHdpbGxcbiAgICAjIGZpcnN0IHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgZm9yIFJYMiwgZmFpbGluZyB0aGF0IChlLmcuIHRoZSBnYXRld2F5XG4gICAgIyBoYXMgYWxyZWFkeSBhIHBheWxvYWQgc2NoZWR1bGVkIGF0IHRoZSBSWDIgdGltaW5nKSBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9yeDFfZHJfbHQ9MFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIGxpbmsgYnVkZ2V0LlxuICAgICNcbiAgICAjIFdoZW4gdGhlIGxpbmstYnVkZ2V0IGlzIGJldHRlciBmb3IgUlgyIHRoYW4gZm9yIFJYMSwgdGhlIE5ldHdvcmsgU2VydmVyIHdpbGwgZmlyc3RcbiAgICAjIHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgaW4gUlgyLCBmYWlsaW5nIHRoYXQgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fbGlua19idWRnZXQ9ZmFsc2VcblxuICAgICMgRG93bmxpbmsgVFggUG93ZXIgKGRCbSlcbiAgICAjXG4gICAgIyBXaGVuIHNldCB0byAtMSwgdGhlIGRvd25saW5rIFRYIFBvd2VyIGZyb20gdGhlIGNvbmZpZ3VyZWQgYmFuZCB3aWxsXG4gICAgIyBiZSB1c2VkLlxuICAgICNcbiAgICAjIFBsZWFzZSBjb25zdWx0IHRoZSBMb1JhV0FOIFJlZ2lvbmFsIFBhcmFtZXRlcnMgYW5kIGxvY2FsIHJlZ3VsYXRpb25zXG4gICAgIyBmb3IgdmFsaWQgYW5kIGxlZ2FsIG9wdGlvbnMuIE5vdGUgdGhhdCB0aGUgY29uZmlndXJlZCBUWCBQb3dlciBtdXN0IGJlXG4gICAgIyBzdXBwb3J0ZWQgYnkgeW91ciBnYXRld2F5KHMpLlxuICAgIGRvd25saW5rX3R4X3Bvd2VyPS0xXG5cbiAgICAjIEFEUiBpcyBkaXNhYmxlZC5cbiAgICBhZHJfZGlzYWJsZWQ9ZmFsc2VcblxuICAgICMgTWluaW11bSBkYXRhLXJhdGUuXG4gICAgbWluX2RyPTBcblxuICAgICMgTWF4aW11bSBkYXRhLXJhdGUuXG4gICAgbWF4X2RyPTVcblxuICAgICMgRW5hYmxlZCB1cGxpbmsgY2hhbm5lbHMuXG4gICAgI1xuICAgICMgVXNlIHRoaXMgd2hlbiBvbnkgYSBzdWItc2V0IG9mIHRoZSBieSBkZWZhdWx0IGVuYWJsZWQgY2hhbm5lbHMgYXJlIGJlaW5nXG4gICAgIyB1c2VkLiBGb3IgZXhhbXBsZSB3aGVuIG9ubHkgdXNpbmcgdGhlIGZpcnN0IDggY2hhbm5lbHMgb2YgdGhlIFVTIGJhbmQuXG4gICAgIyBOb3RlOiB3aGVuIGxlZnQgYmxhbmsgLyBlbXB0eSBhcnJheSwgYWxsIGNoYW5uZWxzIHdpbGwgYmUgZW5hYmxlZC5cbiAgICBlbmFibGVkX3VwbGlua19jaGFubmVscz1bNzIsIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc5XVxuXG5cbiAgICAjIFJlam9pbi1yZXF1ZXN0IGNvbmZpZ3VyYXRpb24gKExvUmFXQU4gMS4xKVxuICAgIFtyZWdpb25zLm5ldHdvcmsucmVqb2luX3JlcXVlc3RdXG5cbiAgICAgICMgUmVxdWVzdCBkZXZpY2VzIHRvIHBlcmlvZGljYWxseSBzZW5kIHJlam9pbi1yZXF1ZXN0cy5cbiAgICAgIGVuYWJsZWQ9ZmFsc2VcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfY291bnRfbiArIDQpXG4gICAgICAjIHVwbGluayBtZXNzYWdlcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgbWF4X2NvdW50X249MFxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF90aW1lX24gKyAxMClcbiAgICAgICMgc2Vjb25kcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgI1xuICAgICAgIyAwICA9IHJvdWdobHkgMTcgbWludXRlc1xuICAgICAgIyAxNSA9IGFib3V0IDEgeWVhclxuICAgICAgbWF4X3RpbWVfbj0wXG4gICAgXG5cbiAgICAjIENsYXNzLUIgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5uZXR3b3JrLmNsYXNzX2JdXG5cbiAgICAgICMgUGluZy1zbG90IGRhdGEtcmF0ZS4gXG4gICAgICBwaW5nX3Nsb3RfZHI9MlxuXG4gICAgICAjIFBpbmctc2xvdCBmcmVxdWVuY3kgKEh6KVxuICAgICAgI1xuICAgICAgIyBzZXQgdGhpcyB0byAwIHRvIHVzZSB0aGUgZGVmYXVsdCBmcmVxdWVuY3kgcGxhbiBmb3IgdGhlIGNvbmZpZ3VyZWQgcmVnaW9uXG4gICAgICAjICh3aGljaCBjb3VsZCBiZSBmcmVxdWVuY3kgaG9wcGluZykuXG4gICAgICBwaW5nX3Nsb3RfZnJlcXVlbmN5PTBcblwiXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuc2VydmljZU5hbWUgPSBcImNoaXJwc3RhY2tcIlxuZmlsZVBhdGggPSBcIi9jaGlycHN0YWNrL3JlZ2lvbl9jbjc3OS50b21sXCJcbmNvbnRlbnQgPSBcIlwiXCJcbiMgVGhpcyBmaWxlIGNvbnRhaW5zIGFuIGV4YW1wbGUgQ043NzkgY29uZmlndXJhdGlvbi5cbltbcmVnaW9uc11dXG5cbiAgIyBJRCBpcyBhbiB1c2VyLWRlZmluZWQgaWRlbnRpZmllciBmb3IgdGhpcyByZWdpb24uXG4gIGlkPVwiY243NzlcIlxuXG4gICMgRGVzY3JpcHRpb24gaXMgYSBzaG9ydCBkZXNjcmlwdGlvbiBmb3IgdGhpcyByZWdpb24uXG4gIGRlc2NyaXB0aW9uPVwiQ043NzlcIlxuXG4gICMgQ29tbW9uLW5hbWUgcmVmZXJzIHRvIHRoZSBjb21tb24tbmFtZSBvZiB0aGlzIHJlZ2lvbiBhcyBkZWZpbmVkIGJ5XG4gICMgdGhlIExvUmEgQWxsaWFuY2UuXG4gIGNvbW1vbl9uYW1lPVwiQ043NzlcIlxuXG5cbiAgIyBHYXRld2F5IGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLmdhdGV3YXldXG5cbiAgICAjIEZvcmNlIGdhdGV3YXlzIGFzIHByaXZhdGUuXG4gICAgI1xuICAgICMgSWYgZW5hYmxlZCwgZ2F0ZXdheXMgY2FuIG9ubHkgYmUgdXNlZCBieSBkZXZpY2VzIHVuZGVyIHRoZSBzYW1lIHRlbmFudC5cbiAgICBmb3JjZV9nd3NfcHJpdmF0ZT1mYWxzZVxuXG5cbiAgICAjIEdhdGV3YXkgYmFja2VuZCBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZF1cblxuICAgICAgIyBUaGUgZW5hYmxlZCBiYWNrZW5kIHR5cGUuXG4gICAgICBlbmFibGVkPVwibXF0dFwiXG5cbiAgICAgICMgTVFUVCBjb25maWd1cmF0aW9uLlxuICAgICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kLm1xdHRdXG5cbiAgICAgICAgIyBUb3BpYyBwcmVmaXguXG4gICAgICAgICNcbiAgICAgICAgIyBUaGUgdG9waWMgcHJlZml4IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB0aGUgcmVnaW9uIG9mIHRoZSBnYXRld2F5LlxuICAgICAgICAjIE5vdGUsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYWRkIGEgdHJhaWxpbmcgJy8nIHRvIHRoZSBwcmVmaXguIFRoZSB0cmFpbGluZ1xuICAgICAgICAjICcvJyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBwcmVmaXggaWYgaXQgaXMgY29uZmlndXJlZC5cbiAgICAgICAgdG9waWNfcHJlZml4PVwiY243NzlcIlxuXG4gICAgICAgICMgTVFUVCBzZXJ2ZXIgKGUuZy4gc2NoZW1lOi8vaG9zdDpwb3J0IHdoZXJlIHNjaGVtZSBpcyB0Y3AsIHNzbCBvciB3cylcbiAgICAgICAgc2VydmVyPVwidGNwOi8vbW9zcXVpdHRvOjE4ODNcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiB1c2VybmFtZSAob3B0aW9uYWwpXG4gICAgICAgIHVzZXJuYW1lPVwiXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gcGFzc3dvcmQgKG9wdGlvbmFsKVxuICAgICAgICBwYXNzd29yZD1cIlwiXG5cbiAgICAgICAgIyBRdWFsaXR5IG9mIHNlcnZpY2UgbGV2ZWxcbiAgICAgICAgI1xuICAgICAgICAjIDA6IGF0IG1vc3Qgb25jZVxuICAgICAgICAjIDE6IGF0IGxlYXN0IG9uY2VcbiAgICAgICAgIyAyOiBleGFjdGx5IG9uY2VcbiAgICAgICAgI1xuICAgICAgICAjIE5vdGU6IGFuIGluY3JlYXNlIG9mIHRoaXMgdmFsdWUgd2lsbCBkZWNyZWFzZSB0aGUgcGVyZm9ybWFuY2UuXG4gICAgICAgICMgRm9yIG1vcmUgaW5mb3JtYXRpb246IGh0dHBzOi8vd3d3LmhpdmVtcS5jb20vYmxvZy9tcXR0LWVzc2VudGlhbHMtcGFydC02LW1xdHQtcXVhbGl0eS1vZi1zZXJ2aWNlLWxldmVsc1xuICAgICAgICBxb3M9MFxuXG4gICAgICAgICMgQ2xlYW4gc2Vzc2lvblxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBcImNsZWFuIHNlc3Npb25cIiBmbGFnIGluIHRoZSBjb25uZWN0IG1lc3NhZ2Ugd2hlbiB0aGlzIGNsaWVudFxuICAgICAgICAjIGNvbm5lY3RzIHRvIGFuIE1RVFQgYnJva2VyLiBCeSBzZXR0aW5nIHRoaXMgZmxhZyB5b3UgYXJlIGluZGljYXRpbmdcbiAgICAgICAgIyB0aGF0IG5vIG1lc3NhZ2VzIHNhdmVkIGJ5IHRoZSBicm9rZXIgZm9yIHRoaXMgY2xpZW50IHNob3VsZCBiZSBkZWxpdmVyZWQuXG4gICAgICAgIGNsZWFuX3Nlc3Npb249ZmFsc2VcblxuICAgICAgICAjIENsaWVudCBJRFxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBjbGllbnQgaWQgdG8gYmUgdXNlZCBieSB0aGlzIGNsaWVudCB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIE1RVFRcbiAgICAgICAgIyBicm9rZXIuIEEgY2xpZW50IGlkIG11c3QgYmUgbm8gbG9uZ2VyIHRoYW4gMjMgY2hhcmFjdGVycy4gSWYgbGVmdCBibGFuayxcbiAgICAgICAgIyBhIHJhbmRvbSBpZCB3aWxsIGJlIGdlbmVyYXRlZCBieSBDaGlycFN0YWNrLlxuICAgICAgICBjbGllbnRfaWQ9XCJcIlxuXG4gICAgICAgICMgS2VlcCBhbGl2ZSBpbnRlcnZhbC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoaXMgZGVmaW5lcyB0aGUgbWF4aW11bSB0aW1lIHRoYXQgdGhhdCBzaG91bGQgcGFzcyB3aXRob3V0IGNvbW11bmljYXRpb25cbiAgICAgICAgIyBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlci5cbiAgICAgICAga2VlcF9hbGl2ZV9pbnRlcnZhbD1cIjMwc1wiXG5cbiAgICAgICAgIyBDQSBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgI1xuICAgICAgICAjIFVzZSB0aGlzIHdoZW4gc2V0dGluZyB1cCBhIHNlY3VyZSBjb25uZWN0aW9uICh3aGVuIHNlcnZlciB1c2VzIHNzbDovLy4uLilcbiAgICAgICAgIyBidXQgdGhlIGNlcnRpZmljYXRlIHVzZWQgYnkgdGhlIHNlcnZlciBpcyBub3QgdHJ1c3RlZCBieSBhbnkgQ0EgY2VydGlmaWNhdGVcbiAgICAgICAgIyBvbiB0aGUgc2VydmVyIChlLmcuIHdoZW4gc2VsZiBnZW5lcmF0ZWQpLlxuICAgICAgICBjYV9jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGtleSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2tleT1cIlwiXG5cblxuICAgICMgR2F0ZXdheSBjaGFubmVsIGNvbmZpZ3VyYXRpb24uXG4gICAgI1xuICAgICMgTm90ZTogdGhpcyBjb25maWd1cmF0aW9uIGlzIG9ubHkgdXNlZCBpbiBjYXNlIHRoZSBnYXRld2F5IGlzIHVzaW5nIHRoZVxuICAgICMgQ2hpcnBTdGFjayBDb25jZW50cmF0b3JkIGRhZW1vbi4gSW4gYW55IG90aGVyIGNhc2UsIHRoaXMgY29uZmlndXJhdGlvbiBcbiAgICAjIGlzIGlnbm9yZWQuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTc3OTUwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9Nzc5NzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT03Nzk5MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG5cbiAgIyBSZWdpb24gc3BlY2lmaWMgbmV0d29yayBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5uZXR3b3JrXVxuICAgIFxuICAgICMgSW5zdGFsbGF0aW9uIG1hcmdpbiAoZEIpIHVzZWQgYnkgdGhlIEFEUiBlbmdpbmUuXG4gICAgI1xuICAgICMgQSBoaWdoZXIgbnVtYmVyIG1lYW5zIHRoYXQgdGhlIG5ldHdvcmstc2VydmVyIHdpbGwga2VlcCBtb3JlIG1hcmdpbixcbiAgICAjIHJlc3VsdGluZyBpbiBhIGxvd2VyIGRhdGEtcmF0ZSBidXQgZGVjcmVhc2luZyB0aGUgY2hhbmNlIHRoYXQgdGhlXG4gICAgIyBkZXZpY2UgZ2V0cyBkaXNjb25uZWN0ZWQgYmVjYXVzZSBpdCBpcyB1bmFibGUgdG8gcmVhY2ggb25lIG9mIHRoZVxuICAgICMgc3Vycm91bmRlZCBnYXRld2F5cy5cbiAgICBpbnN0YWxsYXRpb25fbWFyZ2luPTEwXG5cbiAgICAjIFJYIHdpbmRvdyAoQ2xhc3MtQSkuXG4gICAgI1xuICAgICMgU2V0IHRoaXMgdG86XG4gICAgIyAwOiBSWDEgLyBSWDJcbiAgICAjIDE6IFJYMSBvbmx5XG4gICAgIyAyOiBSWDIgb25seVxuICAgIHJ4X3dpbmRvdz0wXG5cbiAgICAjIFJYMSBkZWxheSAoMSAtIDE1IHNlY29uZHMpLlxuICAgIHJ4MV9kZWxheT0xXG5cbiAgICAjIFJYMSBkYXRhLXJhdGUgb2Zmc2V0XG4gICAgcngxX2RyX29mZnNldD0wXG5cbiAgICAjIFJYMiBkYXRhLXJhdGVcbiAgICByeDJfZHI9MFxuXG4gICAgIyBSWDIgZnJlcXVlbmN5IChIeilcbiAgICByeDJfZnJlcXVlbmN5PTc4NjAwMDAwMFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIFJYMSBkYXRhLXJhdGUgbGVzcyB0aGFuLlxuICAgICNcbiAgICAjIFByZWZlciBSWDIgb3ZlciBSWDEgYmFzZWQgb24gdGhlIFJYMSBkYXRhLXJhdGUuIFdoZW4gdGhlIFJYMSBkYXRhLXJhdGVcbiAgICAjIGlzIHNtYWxsZXIgdGhhbiB0aGUgY29uZmlndXJlZCB2YWx1ZSwgdGhlbiB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbFxuICAgICMgZmlyc3QgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBmb3IgUlgyLCBmYWlsaW5nIHRoYXQgKGUuZy4gdGhlIGdhdGV3YXlcbiAgICAjIGhhcyBhbHJlYWR5IGEgcGF5bG9hZCBzY2hlZHVsZWQgYXQgdGhlIFJYMiB0aW1pbmcpIGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX3J4MV9kcl9sdD0wXG5cbiAgICAjIFByZWZlciBSWDIgb24gbGluayBidWRnZXQuXG4gICAgI1xuICAgICMgV2hlbiB0aGUgbGluay1idWRnZXQgaXMgYmV0dGVyIGZvciBSWDIgdGhhbiBmb3IgUlgxLCB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbCBmaXJzdFxuICAgICMgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBpbiBSWDIsIGZhaWxpbmcgdGhhdCBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9saW5rX2J1ZGdldD1mYWxzZVxuXG4gICAgIyBEb3dubGluayBUWCBQb3dlciAoZEJtKVxuICAgICNcbiAgICAjIFdoZW4gc2V0IHRvIC0xLCB0aGUgZG93bmxpbmsgVFggUG93ZXIgZnJvbSB0aGUgY29uZmlndXJlZCBiYW5kIHdpbGxcbiAgICAjIGJlIHVzZWQuXG4gICAgI1xuICAgICMgUGxlYXNlIGNvbnN1bHQgdGhlIExvUmFXQU4gUmVnaW9uYWwgUGFyYW1ldGVycyBhbmQgbG9jYWwgcmVndWxhdGlvbnNcbiAgICAjIGZvciB2YWxpZCBhbmQgbGVnYWwgb3B0aW9ucy4gTm90ZSB0aGF0IHRoZSBjb25maWd1cmVkIFRYIFBvd2VyIG11c3QgYmVcbiAgICAjIHN1cHBvcnRlZCBieSB5b3VyIGdhdGV3YXkocykuXG4gICAgZG93bmxpbmtfdHhfcG93ZXI9LTFcblxuICAgICMgQURSIGlzIGRpc2FibGVkLlxuICAgIGFkcl9kaXNhYmxlZD1mYWxzZVxuXG4gICAgIyBNaW5pbXVtIGRhdGEtcmF0ZS5cbiAgICBtaW5fZHI9MFxuXG4gICAgIyBNYXhpbXVtIGRhdGEtcmF0ZS5cbiAgICBtYXhfZHI9NVxuXG5cbiAgICAjIFJlam9pbi1yZXF1ZXN0IGNvbmZpZ3VyYXRpb24gKExvUmFXQU4gMS4xKVxuICAgIFtyZWdpb25zLm5ldHdvcmsucmVqb2luX3JlcXVlc3RdXG5cbiAgICAgICMgUmVxdWVzdCBkZXZpY2VzIHRvIHBlcmlvZGljYWxseSBzZW5kIHJlam9pbi1yZXF1ZXN0cy5cbiAgICAgIGVuYWJsZWQ9ZmFsc2VcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfY291bnRfbiArIDQpXG4gICAgICAjIHVwbGluayBtZXNzYWdlcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgbWF4X2NvdW50X249MFxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF90aW1lX24gKyAxMClcbiAgICAgICMgc2Vjb25kcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgI1xuICAgICAgIyAwICA9IHJvdWdobHkgMTcgbWludXRlc1xuICAgICAgIyAxNSA9IGFib3V0IDEgeWVhclxuICAgICAgbWF4X3RpbWVfbj0wXG4gICAgXG5cbiAgICAjIENsYXNzLUIgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5uZXR3b3JrLmNsYXNzX2JdXG5cbiAgICAgICMgUGluZy1zbG90IGRhdGEtcmF0ZS4gXG4gICAgICBwaW5nX3Nsb3RfZHI9M1xuXG4gICAgICAjIFBpbmctc2xvdCBmcmVxdWVuY3kgKEh6KVxuICAgICAgI1xuICAgICAgIyBzZXQgdGhpcyB0byAwIHRvIHVzZSB0aGUgZGVmYXVsdCBmcmVxdWVuY3kgcGxhbiBmb3IgdGhlIGNvbmZpZ3VyZWQgcmVnaW9uXG4gICAgICAjICh3aGljaCBjb3VsZCBiZSBmcmVxdWVuY3kgaG9wcGluZykuXG4gICAgICBwaW5nX3Nsb3RfZnJlcXVlbmN5PTBcblwiXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuc2VydmljZU5hbWUgPSBcImNoaXJwc3RhY2tcIlxuZmlsZVBhdGggPSBcIi9jaGlycHN0YWNrL3JlZ2lvbl9ldTQzMy50b21sXCJcbmNvbnRlbnQgPSBcIlwiXCJcbiMgVGhpcyBmaWxlIGNvbnRhaW5zIGFuIGV4YW1wbGUgRVU0MzMgY29uZmlndXJhdGlvbi5cbltbcmVnaW9uc11dXG5cbiAgIyBJRCBpcyBhbiB1c2VyLWRlZmluZWQgaWRlbnRpZmllciBmb3IgdGhpcyByZWdpb24uXG4gIGlkPVwiZXU0MzNcIlxuXG4gICMgRGVzY3JpcHRpb24gaXMgYSBzaG9ydCBkZXNjcmlwdGlvbiBmb3IgdGhpcyByZWdpb24uXG4gIGRlc2NyaXB0aW9uPVwiRVU0NDNcIlxuXG4gICMgQ29tbW9uLW5hbWUgcmVmZXJzIHRvIHRoZSBjb21tb24tbmFtZSBvZiB0aGlzIHJlZ2lvbiBhcyBkZWZpbmVkIGJ5XG4gICMgdGhlIExvUmEgQWxsaWFuY2UuXG4gIGNvbW1vbl9uYW1lPVwiRVU0MzNcIlxuXG5cbiAgIyBHYXRld2F5IGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLmdhdGV3YXldXG5cbiAgICAjIEZvcmNlIGdhdGV3YXlzIGFzIHByaXZhdGUuXG4gICAgI1xuICAgICMgSWYgZW5hYmxlZCwgZ2F0ZXdheXMgY2FuIG9ubHkgYmUgdXNlZCBieSBkZXZpY2VzIHVuZGVyIHRoZSBzYW1lIHRlbmFudC5cbiAgICBmb3JjZV9nd3NfcHJpdmF0ZT1mYWxzZVxuXG5cbiAgICAjIEdhdGV3YXkgYmFja2VuZCBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZF1cblxuICAgICAgIyBUaGUgZW5hYmxlZCBiYWNrZW5kIHR5cGUuXG4gICAgICBlbmFibGVkPVwibXF0dFwiXG5cbiAgICAgICMgTVFUVCBjb25maWd1cmF0aW9uLlxuICAgICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kLm1xdHRdXG5cbiAgICAgICAgIyBUb3BpYyBwcmVmaXguXG4gICAgICAgICNcbiAgICAgICAgIyBUaGUgdG9waWMgcHJlZml4IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB0aGUgcmVnaW9uIG9mIHRoZSBnYXRld2F5LlxuICAgICAgICAjIE5vdGUsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYWRkIGEgdHJhaWxpbmcgJy8nIHRvIHRoZSBwcmVmaXguIFRoZSB0cmFpbGluZ1xuICAgICAgICAjICcvJyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBwcmVmaXggaWYgaXQgaXMgY29uZmlndXJlZC5cbiAgICAgICAgdG9waWNfcHJlZml4PVwiZXU0MzNcIlxuXG4gICAgICAgICMgTVFUVCBzZXJ2ZXIgKGUuZy4gc2NoZW1lOi8vaG9zdDpwb3J0IHdoZXJlIHNjaGVtZSBpcyB0Y3AsIHNzbCBvciB3cylcbiAgICAgICAgc2VydmVyPVwidGNwOi8vbW9zcXVpdHRvOjE4ODNcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiB1c2VybmFtZSAob3B0aW9uYWwpXG4gICAgICAgIHVzZXJuYW1lPVwiXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gcGFzc3dvcmQgKG9wdGlvbmFsKVxuICAgICAgICBwYXNzd29yZD1cIlwiXG5cbiAgICAgICAgIyBRdWFsaXR5IG9mIHNlcnZpY2UgbGV2ZWxcbiAgICAgICAgI1xuICAgICAgICAjIDA6IGF0IG1vc3Qgb25jZVxuICAgICAgICAjIDE6IGF0IGxlYXN0IG9uY2VcbiAgICAgICAgIyAyOiBleGFjdGx5IG9uY2VcbiAgICAgICAgI1xuICAgICAgICAjIE5vdGU6IGFuIGluY3JlYXNlIG9mIHRoaXMgdmFsdWUgd2lsbCBkZWNyZWFzZSB0aGUgcGVyZm9ybWFuY2UuXG4gICAgICAgICMgRm9yIG1vcmUgaW5mb3JtYXRpb246IGh0dHBzOi8vd3d3LmhpdmVtcS5jb20vYmxvZy9tcXR0LWVzc2VudGlhbHMtcGFydC02LW1xdHQtcXVhbGl0eS1vZi1zZXJ2aWNlLWxldmVsc1xuICAgICAgICBxb3M9MFxuXG4gICAgICAgICMgQ2xlYW4gc2Vzc2lvblxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBcImNsZWFuIHNlc3Npb25cIiBmbGFnIGluIHRoZSBjb25uZWN0IG1lc3NhZ2Ugd2hlbiB0aGlzIGNsaWVudFxuICAgICAgICAjIGNvbm5lY3RzIHRvIGFuIE1RVFQgYnJva2VyLiBCeSBzZXR0aW5nIHRoaXMgZmxhZyB5b3UgYXJlIGluZGljYXRpbmdcbiAgICAgICAgIyB0aGF0IG5vIG1lc3NhZ2VzIHNhdmVkIGJ5IHRoZSBicm9rZXIgZm9yIHRoaXMgY2xpZW50IHNob3VsZCBiZSBkZWxpdmVyZWQuXG4gICAgICAgIGNsZWFuX3Nlc3Npb249ZmFsc2VcblxuICAgICAgICAjIENsaWVudCBJRFxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBjbGllbnQgaWQgdG8gYmUgdXNlZCBieSB0aGlzIGNsaWVudCB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIE1RVFRcbiAgICAgICAgIyBicm9rZXIuIEEgY2xpZW50IGlkIG11c3QgYmUgbm8gbG9uZ2VyIHRoYW4gMjMgY2hhcmFjdGVycy4gSWYgbGVmdCBibGFuayxcbiAgICAgICAgIyBhIHJhbmRvbSBpZCB3aWxsIGJlIGdlbmVyYXRlZCBieSBDaGlycFN0YWNrLlxuICAgICAgICBjbGllbnRfaWQ9XCJcIlxuXG4gICAgICAgICMgS2VlcCBhbGl2ZSBpbnRlcnZhbC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoaXMgZGVmaW5lcyB0aGUgbWF4aW11bSB0aW1lIHRoYXQgdGhhdCBzaG91bGQgcGFzcyB3aXRob3V0IGNvbW11bmljYXRpb25cbiAgICAgICAgIyBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlci5cbiAgICAgICAga2VlcF9hbGl2ZV9pbnRlcnZhbD1cIjMwc1wiXG5cbiAgICAgICAgIyBDQSBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgI1xuICAgICAgICAjIFVzZSB0aGlzIHdoZW4gc2V0dGluZyB1cCBhIHNlY3VyZSBjb25uZWN0aW9uICh3aGVuIHNlcnZlciB1c2VzIHNzbDovLy4uLilcbiAgICAgICAgIyBidXQgdGhlIGNlcnRpZmljYXRlIHVzZWQgYnkgdGhlIHNlcnZlciBpcyBub3QgdHJ1c3RlZCBieSBhbnkgQ0EgY2VydGlmaWNhdGVcbiAgICAgICAgIyBvbiB0aGUgc2VydmVyIChlLmcuIHdoZW4gc2VsZiBnZW5lcmF0ZWQpLlxuICAgICAgICBjYV9jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGtleSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2tleT1cIlwiXG5cblxuICAgICMgR2F0ZXdheSBjaGFubmVsIGNvbmZpZ3VyYXRpb24uXG4gICAgI1xuICAgICMgTm90ZTogdGhpcyBjb25maWd1cmF0aW9uIGlzIG9ubHkgdXNlZCBpbiBjYXNlIHRoZSBnYXRld2F5IGlzIHVzaW5nIHRoZVxuICAgICMgQ2hpcnBTdGFjayBDb25jZW50cmF0b3JkIGRhZW1vbi4gSW4gYW55IG90aGVyIGNhc2UsIHRoaXMgY29uZmlndXJhdGlvbiBcbiAgICAjIGlzIGlnbm9yZWQuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTQzMzE3NTAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9NDMzMzc1MDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT00MzM1NzUwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG5cbiAgIyBSZWdpb24gc3BlY2lmaWMgbmV0d29yayBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5uZXR3b3JrXVxuICAgIFxuICAgICMgSW5zdGFsbGF0aW9uIG1hcmdpbiAoZEIpIHVzZWQgYnkgdGhlIEFEUiBlbmdpbmUuXG4gICAgI1xuICAgICMgQSBoaWdoZXIgbnVtYmVyIG1lYW5zIHRoYXQgdGhlIG5ldHdvcmstc2VydmVyIHdpbGwga2VlcCBtb3JlIG1hcmdpbixcbiAgICAjIHJlc3VsdGluZyBpbiBhIGxvd2VyIGRhdGEtcmF0ZSBidXQgZGVjcmVhc2luZyB0aGUgY2hhbmNlIHRoYXQgdGhlXG4gICAgIyBkZXZpY2UgZ2V0cyBkaXNjb25uZWN0ZWQgYmVjYXVzZSBpdCBpcyB1bmFibGUgdG8gcmVhY2ggb25lIG9mIHRoZVxuICAgICMgc3Vycm91bmRlZCBnYXRld2F5cy5cbiAgICBpbnN0YWxsYXRpb25fbWFyZ2luPTEwXG5cbiAgICAjIFJYIHdpbmRvdyAoQ2xhc3MtQSkuXG4gICAgI1xuICAgICMgU2V0IHRoaXMgdG86XG4gICAgIyAwOiBSWDEgLyBSWDJcbiAgICAjIDE6IFJYMSBvbmx5XG4gICAgIyAyOiBSWDIgb25seVxuICAgIHJ4X3dpbmRvdz0wXG5cbiAgICAjIFJYMSBkZWxheSAoMSAtIDE1IHNlY29uZHMpLlxuICAgIHJ4MV9kZWxheT0xXG5cbiAgICAjIFJYMSBkYXRhLXJhdGUgb2Zmc2V0XG4gICAgcngxX2RyX29mZnNldD0wXG5cbiAgICAjIFJYMiBkYXRhLXJhdGVcbiAgICByeDJfZHI9MFxuXG4gICAgIyBSWDIgZnJlcXVlbmN5IChIeilcbiAgICByeDJfZnJlcXVlbmN5PTQzNDY2NTAwMFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIFJYMSBkYXRhLXJhdGUgbGVzcyB0aGFuLlxuICAgICNcbiAgICAjIFByZWZlciBSWDIgb3ZlciBSWDEgYmFzZWQgb24gdGhlIFJYMSBkYXRhLXJhdGUuIFdoZW4gdGhlIFJYMSBkYXRhLXJhdGVcbiAgICAjIGlzIHNtYWxsZXIgdGhhbiB0aGUgY29uZmlndXJlZCB2YWx1ZSwgdGhlbiB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbFxuICAgICMgZmlyc3QgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBmb3IgUlgyLCBmYWlsaW5nIHRoYXQgKGUuZy4gdGhlIGdhdGV3YXlcbiAgICAjIGhhcyBhbHJlYWR5IGEgcGF5bG9hZCBzY2hlZHVsZWQgYXQgdGhlIFJYMiB0aW1pbmcpIGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX3J4MV9kcl9sdD0wXG5cbiAgICAjIFByZWZlciBSWDIgb24gbGluayBidWRnZXQuXG4gICAgI1xuICAgICMgV2hlbiB0aGUgbGluay1idWRnZXQgaXMgYmV0dGVyIGZvciBSWDIgdGhhbiBmb3IgUlgxLCB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbCBmaXJzdFxuICAgICMgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBpbiBSWDIsIGZhaWxpbmcgdGhhdCBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9saW5rX2J1ZGdldD1mYWxzZVxuXG4gICAgIyBEb3dubGluayBUWCBQb3dlciAoZEJtKVxuICAgICNcbiAgICAjIFdoZW4gc2V0IHRvIC0xLCB0aGUgZG93bmxpbmsgVFggUG93ZXIgZnJvbSB0aGUgY29uZmlndXJlZCBiYW5kIHdpbGxcbiAgICAjIGJlIHVzZWQuXG4gICAgI1xuICAgICMgUGxlYXNlIGNvbnN1bHQgdGhlIExvUmFXQU4gUmVnaW9uYWwgUGFyYW1ldGVycyBhbmQgbG9jYWwgcmVndWxhdGlvbnNcbiAgICAjIGZvciB2YWxpZCBhbmQgbGVnYWwgb3B0aW9ucy4gTm90ZSB0aGF0IHRoZSBjb25maWd1cmVkIFRYIFBvd2VyIG11c3QgYmVcbiAgICAjIHN1cHBvcnRlZCBieSB5b3VyIGdhdGV3YXkocykuXG4gICAgZG93bmxpbmtfdHhfcG93ZXI9LTFcblxuICAgICMgQURSIGlzIGRpc2FibGVkLlxuICAgIGFkcl9kaXNhYmxlZD1mYWxzZVxuXG4gICAgIyBNaW5pbXVtIGRhdGEtcmF0ZS5cbiAgICBtaW5fZHI9MFxuXG4gICAgIyBNYXhpbXVtIGRhdGEtcmF0ZS5cbiAgICBtYXhfZHI9NVxuXG5cbiAgICAjIFJlam9pbi1yZXF1ZXN0IGNvbmZpZ3VyYXRpb24gKExvUmFXQU4gMS4xKVxuICAgIFtyZWdpb25zLm5ldHdvcmsucmVqb2luX3JlcXVlc3RdXG5cbiAgICAgICMgUmVxdWVzdCBkZXZpY2VzIHRvIHBlcmlvZGljYWxseSBzZW5kIHJlam9pbi1yZXF1ZXN0cy5cbiAgICAgIGVuYWJsZWQ9ZmFsc2VcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfY291bnRfbiArIDQpXG4gICAgICAjIHVwbGluayBtZXNzYWdlcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgbWF4X2NvdW50X249MFxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF90aW1lX24gKyAxMClcbiAgICAgICMgc2Vjb25kcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgI1xuICAgICAgIyAwICA9IHJvdWdobHkgMTcgbWludXRlc1xuICAgICAgIyAxNSA9IGFib3V0IDEgeWVhclxuICAgICAgbWF4X3RpbWVfbj0wXG4gICAgXG5cbiAgICAjIENsYXNzLUIgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5uZXR3b3JrLmNsYXNzX2JdXG5cbiAgICAgICMgUGluZy1zbG90IGRhdGEtcmF0ZS4gXG4gICAgICBwaW5nX3Nsb3RfZHI9M1xuXG4gICAgICAjIFBpbmctc2xvdCBmcmVxdWVuY3kgKEh6KVxuICAgICAgI1xuICAgICAgIyBzZXQgdGhpcyB0byAwIHRvIHVzZSB0aGUgZGVmYXVsdCBmcmVxdWVuY3kgcGxhbiBmb3IgdGhlIGNvbmZpZ3VyZWQgcmVnaW9uXG4gICAgICAjICh3aGljaCBjb3VsZCBiZSBmcmVxdWVuY3kgaG9wcGluZykuXG4gICAgICBwaW5nX3Nsb3RfZnJlcXVlbmN5PTBcblwiXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuc2VydmljZU5hbWUgPSBcImNoaXJwc3RhY2tcIlxuZmlsZVBhdGggPSBcIi9jaGlycHN0YWNrL3JlZ2lvbl9ldTg2OC50b21sXCJcbmNvbnRlbnQgPSBcIlwiXCJcbiMgVGhpcyBmaWxlIGNvbnRhaW5zIGFuIGV4YW1wbGUgRVU4NjggY29uZmlndXJhdGlvbi5cbltbcmVnaW9uc11dXG5cbiAgIyBJRCBpcyBhbiB1c2VyLWRlZmluZWQgaWRlbnRpZmllciBmb3IgdGhpcyByZWdpb24uXG4gIGlkPVwiZXU4NjhcIlxuXG4gICMgRGVzY3JpcHRpb24gaXMgYSBzaG9ydCBkZXNjcmlwdGlvbiBmb3IgdGhpcyByZWdpb24uXG4gIGRlc2NyaXB0aW9uPVwiRVU4NjhcIlxuXG4gICMgQ29tbW9uLW5hbWUgcmVmZXJzIHRvIHRoZSBjb21tb24tbmFtZSBvZiB0aGlzIHJlZ2lvbiBhcyBkZWZpbmVkIGJ5XG4gICMgdGhlIExvUmEgQWxsaWFuY2UuXG4gIGNvbW1vbl9uYW1lPVwiRVU4NjhcIlxuXG5cbiAgIyBHYXRld2F5IGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLmdhdGV3YXldXG5cbiAgICAjIEZvcmNlIGdhdGV3YXlzIGFzIHByaXZhdGUuXG4gICAgI1xuICAgICMgSWYgZW5hYmxlZCwgZ2F0ZXdheXMgY2FuIG9ubHkgYmUgdXNlZCBieSBkZXZpY2VzIHVuZGVyIHRoZSBzYW1lIHRlbmFudC5cbiAgICBmb3JjZV9nd3NfcHJpdmF0ZT1mYWxzZVxuXG5cbiAgICAjIEdhdGV3YXkgYmFja2VuZCBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZF1cblxuICAgICAgIyBUaGUgZW5hYmxlZCBiYWNrZW5kIHR5cGUuXG4gICAgICBlbmFibGVkPVwibXF0dFwiXG5cbiAgICAgICMgTVFUVCBjb25maWd1cmF0aW9uLlxuICAgICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kLm1xdHRdXG5cbiAgICAgICAgIyBUb3BpYyBwcmVmaXguXG4gICAgICAgICNcbiAgICAgICAgIyBUaGUgdG9waWMgcHJlZml4IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB0aGUgcmVnaW9uIG9mIHRoZSBnYXRld2F5LlxuICAgICAgICAjIE5vdGUsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYWRkIGEgdHJhaWxpbmcgJy8nIHRvIHRoZSBwcmVmaXguIFRoZSB0cmFpbGluZ1xuICAgICAgICAjICcvJyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBwcmVmaXggaWYgaXQgaXMgY29uZmlndXJlZC5cbiAgICAgICAgdG9waWNfcHJlZml4PVwiZXU4NjhcIlxuXG4gICAgICAgICMgTVFUVCBzZXJ2ZXIgKGUuZy4gc2NoZW1lOi8vaG9zdDpwb3J0IHdoZXJlIHNjaGVtZSBpcyB0Y3AsIHNzbCBvciB3cylcbiAgICAgICAgc2VydmVyPVwidGNwOi8vbW9zcXVpdHRvOjE4ODNcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiB1c2VybmFtZSAob3B0aW9uYWwpXG4gICAgICAgIHVzZXJuYW1lPVwiXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gcGFzc3dvcmQgKG9wdGlvbmFsKVxuICAgICAgICBwYXNzd29yZD1cIlwiXG5cbiAgICAgICAgIyBRdWFsaXR5IG9mIHNlcnZpY2UgbGV2ZWxcbiAgICAgICAgI1xuICAgICAgICAjIDA6IGF0IG1vc3Qgb25jZVxuICAgICAgICAjIDE6IGF0IGxlYXN0IG9uY2VcbiAgICAgICAgIyAyOiBleGFjdGx5IG9uY2VcbiAgICAgICAgI1xuICAgICAgICAjIE5vdGU6IGFuIGluY3JlYXNlIG9mIHRoaXMgdmFsdWUgd2lsbCBkZWNyZWFzZSB0aGUgcGVyZm9ybWFuY2UuXG4gICAgICAgICMgRm9yIG1vcmUgaW5mb3JtYXRpb246IGh0dHBzOi8vd3d3LmhpdmVtcS5jb20vYmxvZy9tcXR0LWVzc2VudGlhbHMtcGFydC02LW1xdHQtcXVhbGl0eS1vZi1zZXJ2aWNlLWxldmVsc1xuICAgICAgICBxb3M9MFxuXG4gICAgICAgICMgQ2xlYW4gc2Vzc2lvblxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBcImNsZWFuIHNlc3Npb25cIiBmbGFnIGluIHRoZSBjb25uZWN0IG1lc3NhZ2Ugd2hlbiB0aGlzIGNsaWVudFxuICAgICAgICAjIGNvbm5lY3RzIHRvIGFuIE1RVFQgYnJva2VyLiBCeSBzZXR0aW5nIHRoaXMgZmxhZyB5b3UgYXJlIGluZGljYXRpbmdcbiAgICAgICAgIyB0aGF0IG5vIG1lc3NhZ2VzIHNhdmVkIGJ5IHRoZSBicm9rZXIgZm9yIHRoaXMgY2xpZW50IHNob3VsZCBiZSBkZWxpdmVyZWQuXG4gICAgICAgIGNsZWFuX3Nlc3Npb249ZmFsc2VcblxuICAgICAgICAjIENsaWVudCBJRFxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBjbGllbnQgaWQgdG8gYmUgdXNlZCBieSB0aGlzIGNsaWVudCB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIE1RVFRcbiAgICAgICAgIyBicm9rZXIuIEEgY2xpZW50IGlkIG11c3QgYmUgbm8gbG9uZ2VyIHRoYW4gMjMgY2hhcmFjdGVycy4gSWYgbGVmdCBibGFuayxcbiAgICAgICAgIyBhIHJhbmRvbSBpZCB3aWxsIGJlIGdlbmVyYXRlZCBieSBDaGlycFN0YWNrLlxuICAgICAgICBjbGllbnRfaWQ9XCJcIlxuXG4gICAgICAgICMgS2VlcCBhbGl2ZSBpbnRlcnZhbC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoaXMgZGVmaW5lcyB0aGUgbWF4aW11bSB0aW1lIHRoYXQgdGhhdCBzaG91bGQgcGFzcyB3aXRob3V0IGNvbW11bmljYXRpb25cbiAgICAgICAgIyBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlci5cbiAgICAgICAga2VlcF9hbGl2ZV9pbnRlcnZhbD1cIjMwc1wiXG5cbiAgICAgICAgIyBDQSBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgI1xuICAgICAgICAjIFVzZSB0aGlzIHdoZW4gc2V0dGluZyB1cCBhIHNlY3VyZSBjb25uZWN0aW9uICh3aGVuIHNlcnZlciB1c2VzIHNzbDovLy4uLilcbiAgICAgICAgIyBidXQgdGhlIGNlcnRpZmljYXRlIHVzZWQgYnkgdGhlIHNlcnZlciBpcyBub3QgdHJ1c3RlZCBieSBhbnkgQ0EgY2VydGlmaWNhdGVcbiAgICAgICAgIyBvbiB0aGUgc2VydmVyIChlLmcuIHdoZW4gc2VsZiBnZW5lcmF0ZWQpLlxuICAgICAgICBjYV9jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGtleSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2tleT1cIlwiXG5cblxuICAgICMgR2F0ZXdheSBjaGFubmVsIGNvbmZpZ3VyYXRpb24uXG4gICAgI1xuICAgICMgTm90ZTogdGhpcyBjb25maWd1cmF0aW9uIGlzIG9ubHkgdXNlZCBpbiBjYXNlIHRoZSBnYXRld2F5IGlzIHVzaW5nIHRoZVxuICAgICMgQ2hpcnBTdGFjayBDb25jZW50cmF0b3JkIGRhZW1vbi4gSW4gYW55IG90aGVyIGNhc2UsIHRoaXMgY29uZmlndXJhdGlvbiBcbiAgICAjIGlzIGlnbm9yZWQuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTg2ODEwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9ODY4MzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT04Njg1MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTg2NzEwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9ODY3MzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT04Njc1MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTg2NzcwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9ODY3OTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cbiAgXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTg2ODMwMDAwMFxuICAgICAgYmFuZHdpZHRoPTI1MDAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzddXG4gICAgXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTg2ODgwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkZTS1wiXG4gICAgICBkYXRhcmF0ZT01MDAwMFxuXG5cbiAgIyBSZWdpb24gc3BlY2lmaWMgbmV0d29yayBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5uZXR3b3JrXVxuICAgIFxuICAgICMgSW5zdGFsbGF0aW9uIG1hcmdpbiAoZEIpIHVzZWQgYnkgdGhlIEFEUiBlbmdpbmUuXG4gICAgI1xuICAgICMgQSBoaWdoZXIgbnVtYmVyIG1lYW5zIHRoYXQgdGhlIG5ldHdvcmstc2VydmVyIHdpbGwga2VlcCBtb3JlIG1hcmdpbixcbiAgICAjIHJlc3VsdGluZyBpbiBhIGxvd2VyIGRhdGEtcmF0ZSBidXQgZGVjcmVhc2luZyB0aGUgY2hhbmNlIHRoYXQgdGhlXG4gICAgIyBkZXZpY2UgZ2V0cyBkaXNjb25uZWN0ZWQgYmVjYXVzZSBpdCBpcyB1bmFibGUgdG8gcmVhY2ggb25lIG9mIHRoZVxuICAgICMgc3Vycm91bmRlZCBnYXRld2F5cy5cbiAgICBpbnN0YWxsYXRpb25fbWFyZ2luPTEwXG5cbiAgICAjIFJYIHdpbmRvdyAoQ2xhc3MtQSkuXG4gICAgI1xuICAgICMgU2V0IHRoaXMgdG86XG4gICAgIyAwOiBSWDEgLyBSWDJcbiAgICAjIDE6IFJYMSBvbmx5XG4gICAgIyAyOiBSWDIgb25seVxuICAgIHJ4X3dpbmRvdz0wXG5cbiAgICAjIFJYMSBkZWxheSAoMSAtIDE1IHNlY29uZHMpLlxuICAgIHJ4MV9kZWxheT0xXG5cbiAgICAjIFJYMSBkYXRhLXJhdGUgb2Zmc2V0XG4gICAgcngxX2RyX29mZnNldD0wXG5cbiAgICAjIFJYMiBkYXRhLXJhdGVcbiAgICByeDJfZHI9MFxuXG4gICAgIyBSWDIgZnJlcXVlbmN5IChIeilcbiAgICByeDJfZnJlcXVlbmN5PTg2OTUyNTAwMFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIFJYMSBkYXRhLXJhdGUgbGVzcyB0aGFuLlxuICAgICNcbiAgICAjIFByZWZlciBSWDIgb3ZlciBSWDEgYmFzZWQgb24gdGhlIFJYMSBkYXRhLXJhdGUuIFdoZW4gdGhlIFJYMSBkYXRhLXJhdGVcbiAgICAjIGlzIHNtYWxsZXIgdGhhbiB0aGUgY29uZmlndXJlZCB2YWx1ZSwgdGhlbiB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbFxuICAgICMgZmlyc3QgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBmb3IgUlgyLCBmYWlsaW5nIHRoYXQgKGUuZy4gdGhlIGdhdGV3YXlcbiAgICAjIGhhcyBhbHJlYWR5IGEgcGF5bG9hZCBzY2hlZHVsZWQgYXQgdGhlIFJYMiB0aW1pbmcpIGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX3J4MV9kcl9sdD0wXG5cbiAgICAjIFByZWZlciBSWDIgb24gbGluayBidWRnZXQuXG4gICAgI1xuICAgICMgV2hlbiB0aGUgbGluay1idWRnZXQgaXMgYmV0dGVyIGZvciBSWDIgdGhhbiBmb3IgUlgxLCB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbCBmaXJzdFxuICAgICMgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBpbiBSWDIsIGZhaWxpbmcgdGhhdCBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9saW5rX2J1ZGdldD1mYWxzZVxuXG4gICAgIyBEb3dubGluayBUWCBQb3dlciAoZEJtKVxuICAgICNcbiAgICAjIFdoZW4gc2V0IHRvIC0xLCB0aGUgZG93bmxpbmsgVFggUG93ZXIgZnJvbSB0aGUgY29uZmlndXJlZCBiYW5kIHdpbGxcbiAgICAjIGJlIHVzZWQuXG4gICAgI1xuICAgICMgUGxlYXNlIGNvbnN1bHQgdGhlIExvUmFXQU4gUmVnaW9uYWwgUGFyYW1ldGVycyBhbmQgbG9jYWwgcmVndWxhdGlvbnNcbiAgICAjIGZvciB2YWxpZCBhbmQgbGVnYWwgb3B0aW9ucy4gTm90ZSB0aGF0IHRoZSBjb25maWd1cmVkIFRYIFBvd2VyIG11c3QgYmVcbiAgICAjIHN1cHBvcnRlZCBieSB5b3VyIGdhdGV3YXkocykuXG4gICAgZG93bmxpbmtfdHhfcG93ZXI9LTFcblxuICAgICMgQURSIGlzIGRpc2FibGVkLlxuICAgIGFkcl9kaXNhYmxlZD1mYWxzZVxuXG4gICAgIyBNaW5pbXVtIGRhdGEtcmF0ZS5cbiAgICBtaW5fZHI9MFxuXG4gICAgIyBNYXhpbXVtIGRhdGEtcmF0ZS5cbiAgICBtYXhfZHI9NVxuXG5cbiAgICAjIFJlam9pbi1yZXF1ZXN0IGNvbmZpZ3VyYXRpb24gKExvUmFXQU4gMS4xKVxuICAgIFtyZWdpb25zLm5ldHdvcmsucmVqb2luX3JlcXVlc3RdXG5cbiAgICAgICMgUmVxdWVzdCBkZXZpY2VzIHRvIHBlcmlvZGljYWxseSBzZW5kIHJlam9pbi1yZXF1ZXN0cy5cbiAgICAgIGVuYWJsZWQ9ZmFsc2VcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfY291bnRfbiArIDQpXG4gICAgICAjIHVwbGluayBtZXNzYWdlcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgbWF4X2NvdW50X249MFxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF90aW1lX24gKyAxMClcbiAgICAgICMgc2Vjb25kcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgI1xuICAgICAgIyAwICA9IHJvdWdobHkgMTcgbWludXRlc1xuICAgICAgIyAxNSA9IGFib3V0IDEgeWVhclxuICAgICAgbWF4X3RpbWVfbj0wXG4gICAgXG5cbiAgICAjIENsYXNzLUIgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5uZXR3b3JrLmNsYXNzX2JdXG5cbiAgICAgICMgUGluZy1zbG90IGRhdGEtcmF0ZS4gXG4gICAgICBwaW5nX3Nsb3RfZHI9M1xuXG4gICAgICAjIFBpbmctc2xvdCBmcmVxdWVuY3kgKEh6KVxuICAgICAgI1xuICAgICAgIyBzZXQgdGhpcyB0byAwIHRvIHVzZSB0aGUgZGVmYXVsdCBmcmVxdWVuY3kgcGxhbiBmb3IgdGhlIGNvbmZpZ3VyZWQgcmVnaW9uXG4gICAgICAjICh3aGljaCBjb3VsZCBiZSBmcmVxdWVuY3kgaG9wcGluZykuXG4gICAgICBwaW5nX3Nsb3RfZnJlcXVlbmN5PTBcblxuXG4gICAgIyBCZWxvdyBpcyB0aGUgY29tbW9uIHNldCBvZiBleHRyYSBjaGFubmVscy4gUGxlYXNlIG1ha2Ugc3VyZSB0aGF0IHRoZXNlXG4gICAgIyBjaGFubmVscyBhcmUgYWxzbyBzdXBwb3J0ZWQgYnkgdGhlIGdhdGV3YXlzLlxuICAgIFtbcmVnaW9ucy5uZXR3b3JrLmV4dHJhX2NoYW5uZWxzXV1cbiAgICBmcmVxdWVuY3k9ODY3MTAwMDAwXG4gICAgbWluX2RyPTBcbiAgICBtYXhfZHI9NVxuXG4gICAgW1tyZWdpb25zLm5ldHdvcmsuZXh0cmFfY2hhbm5lbHNdXVxuICAgIGZyZXF1ZW5jeT04NjczMDAwMDBcbiAgICBtaW5fZHI9MFxuICAgIG1heF9kcj01XG5cbiAgICBbW3JlZ2lvbnMubmV0d29yay5leHRyYV9jaGFubmVsc11dXG4gICAgZnJlcXVlbmN5PTg2NzUwMDAwMFxuICAgIG1pbl9kcj0wXG4gICAgbWF4X2RyPTVcblxuICAgIFtbcmVnaW9ucy5uZXR3b3JrLmV4dHJhX2NoYW5uZWxzXV1cbiAgICBmcmVxdWVuY3k9ODY3NzAwMDAwXG4gICAgbWluX2RyPTBcbiAgICBtYXhfZHI9NVxuXG4gICAgW1tyZWdpb25zLm5ldHdvcmsuZXh0cmFfY2hhbm5lbHNdXVxuICAgIGZyZXF1ZW5jeT04Njc5MDAwMDBcbiAgICBtaW5fZHI9MFxuICAgIG1heF9kcj01XG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbnNlcnZpY2VOYW1lID0gXCJjaGlycHN0YWNrXCJcbmZpbGVQYXRoID0gXCIvY2hpcnBzdGFjay9yZWdpb25faW44NjUudG9tbFwiXG5jb250ZW50ID0gXCJcIlwiXG4jIFRoaXMgZmlsZSBjb250YWlucyBhbiBleGFtcGxlIElOODY1IGNvbmZpZ3VyYXRpb24uXG5bW3JlZ2lvbnNdXVxuXG4gICMgSUQgaXMgYW4gdXNlci1kZWZpbmVkIGlkZW50aWZpZXIgZm9yIHRoaXMgcmVnaW9uLlxuICBpZD1cImluODY1XCJcblxuICAjIERlc2NyaXB0aW9uIGlzIGEgc2hvcnQgZGVzY3JpcHRpb24gZm9yIHRoaXMgcmVnaW9uLlxuICBkZXNjcmlwdGlvbj1cIklOODY1XCJcblxuICAjIENvbW1vbi1uYW1lIHJlZmVycyB0byB0aGUgY29tbW9uLW5hbWUgb2YgdGhpcyByZWdpb24gYXMgZGVmaW5lZCBieVxuICAjIHRoZSBMb1JhIEFsbGlhbmNlLlxuICBjb21tb25fbmFtZT1cIklOODY1XCJcblxuXG4gICMgR2F0ZXdheSBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5nYXRld2F5XVxuXG4gICAgIyBGb3JjZSBnYXRld2F5cyBhcyBwcml2YXRlLlxuICAgICNcbiAgICAjIElmIGVuYWJsZWQsIGdhdGV3YXlzIGNhbiBvbmx5IGJlIHVzZWQgYnkgZGV2aWNlcyB1bmRlciB0aGUgc2FtZSB0ZW5hbnQuXG4gICAgZm9yY2VfZ3dzX3ByaXZhdGU9ZmFsc2VcblxuXG4gICAgIyBHYXRld2F5IGJhY2tlbmQgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmRdXG5cbiAgICAgICMgVGhlIGVuYWJsZWQgYmFja2VuZCB0eXBlLlxuICAgICAgZW5hYmxlZD1cIm1xdHRcIlxuXG4gICAgICAjIE1RVFQgY29uZmlndXJhdGlvbi5cbiAgICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZC5tcXR0XVxuXG4gICAgICAgICMgVG9waWMgcHJlZml4LlxuICAgICAgICAjXG4gICAgICAgICMgVGhlIHRvcGljIHByZWZpeCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgdGhlIHJlZ2lvbiBvZiB0aGUgZ2F0ZXdheS5cbiAgICAgICAgIyBOb3RlLCB0aGVyZSBpcyBubyBuZWVkIHRvIGFkZCBhIHRyYWlsaW5nICcvJyB0byB0aGUgcHJlZml4LiBUaGUgdHJhaWxpbmdcbiAgICAgICAgIyAnLycgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgcHJlZml4IGlmIGl0IGlzIGNvbmZpZ3VyZWQuXG4gICAgICAgIHRvcGljX3ByZWZpeD1cImluODY1XCJcblxuICAgICAgICAjIE1RVFQgc2VydmVyIChlLmcuIHNjaGVtZTovL2hvc3Q6cG9ydCB3aGVyZSBzY2hlbWUgaXMgdGNwLCBzc2wgb3Igd3MpXG4gICAgICAgIHNlcnZlcj1cInRjcDovL21vc3F1aXR0bzoxODgzXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gdXNlcm5hbWUgKG9wdGlvbmFsKVxuICAgICAgICB1c2VybmFtZT1cIlwiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHBhc3N3b3JkIChvcHRpb25hbClcbiAgICAgICAgcGFzc3dvcmQ9XCJcIlxuXG4gICAgICAgICMgUXVhbGl0eSBvZiBzZXJ2aWNlIGxldmVsXG4gICAgICAgICNcbiAgICAgICAgIyAwOiBhdCBtb3N0IG9uY2VcbiAgICAgICAgIyAxOiBhdCBsZWFzdCBvbmNlXG4gICAgICAgICMgMjogZXhhY3RseSBvbmNlXG4gICAgICAgICNcbiAgICAgICAgIyBOb3RlOiBhbiBpbmNyZWFzZSBvZiB0aGlzIHZhbHVlIHdpbGwgZGVjcmVhc2UgdGhlIHBlcmZvcm1hbmNlLlxuICAgICAgICAjIEZvciBtb3JlIGluZm9ybWF0aW9uOiBodHRwczovL3d3dy5oaXZlbXEuY29tL2Jsb2cvbXF0dC1lc3NlbnRpYWxzLXBhcnQtNi1tcXR0LXF1YWxpdHktb2Ytc2VydmljZS1sZXZlbHNcbiAgICAgICAgcW9zPTBcblxuICAgICAgICAjIENsZWFuIHNlc3Npb25cbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgXCJjbGVhbiBzZXNzaW9uXCIgZmxhZyBpbiB0aGUgY29ubmVjdCBtZXNzYWdlIHdoZW4gdGhpcyBjbGllbnRcbiAgICAgICAgIyBjb25uZWN0cyB0byBhbiBNUVRUIGJyb2tlci4gQnkgc2V0dGluZyB0aGlzIGZsYWcgeW91IGFyZSBpbmRpY2F0aW5nXG4gICAgICAgICMgdGhhdCBubyBtZXNzYWdlcyBzYXZlZCBieSB0aGUgYnJva2VyIGZvciB0aGlzIGNsaWVudCBzaG91bGQgYmUgZGVsaXZlcmVkLlxuICAgICAgICBjbGVhbl9zZXNzaW9uPWZhbHNlXG5cbiAgICAgICAgIyBDbGllbnQgSURcbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgY2xpZW50IGlkIHRvIGJlIHVzZWQgYnkgdGhpcyBjbGllbnQgd2hlbiBjb25uZWN0aW5nIHRvIHRoZSBNUVRUXG4gICAgICAgICMgYnJva2VyLiBBIGNsaWVudCBpZCBtdXN0IGJlIG5vIGxvbmdlciB0aGFuIDIzIGNoYXJhY3RlcnMuIElmIGxlZnQgYmxhbmssXG4gICAgICAgICMgYSByYW5kb20gaWQgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgQ2hpcnBTdGFjay5cbiAgICAgICAgY2xpZW50X2lkPVwiXCJcblxuICAgICAgICAjIEtlZXAgYWxpdmUgaW50ZXJ2YWwuXG4gICAgICAgICNcbiAgICAgICAgIyBUaGlzIGRlZmluZXMgdGhlIG1heGltdW0gdGltZSB0aGF0IHRoYXQgc2hvdWxkIHBhc3Mgd2l0aG91dCBjb21tdW5pY2F0aW9uXG4gICAgICAgICMgYmV0d2VlbiB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIuXG4gICAgICAgIGtlZXBfYWxpdmVfaW50ZXJ2YWw9XCIzMHNcIlxuXG4gICAgICAgICMgQ0EgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgICNcbiAgICAgICAgIyBVc2UgdGhpcyB3aGVuIHNldHRpbmcgdXAgYSBzZWN1cmUgY29ubmVjdGlvbiAod2hlbiBzZXJ2ZXIgdXNlcyBzc2w6Ly8uLi4pXG4gICAgICAgICMgYnV0IHRoZSBjZXJ0aWZpY2F0ZSB1c2VkIGJ5IHRoZSBzZXJ2ZXIgaXMgbm90IHRydXN0ZWQgYnkgYW55IENBIGNlcnRpZmljYXRlXG4gICAgICAgICMgb24gdGhlIHNlcnZlciAoZS5nLiB3aGVuIHNlbGYgZ2VuZXJhdGVkKS5cbiAgICAgICAgY2FfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBrZXkgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19rZXk9XCJcIlxuXG5cbiAgICAjIEdhdGV3YXkgY2hhbm5lbCBjb25maWd1cmF0aW9uLlxuICAgICNcbiAgICAjIE5vdGU6IHRoaXMgY29uZmlndXJhdGlvbiBpcyBvbmx5IHVzZWQgaW4gY2FzZSB0aGUgZ2F0ZXdheSBpcyB1c2luZyB0aGVcbiAgICAjIENoaXJwU3RhY2sgQ29uY2VudHJhdG9yZCBkYWVtb24uIEluIGFueSBvdGhlciBjYXNlLCB0aGlzIGNvbmZpZ3VyYXRpb24gXG4gICAgIyBpcyBpZ25vcmVkLlxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT04NjUwNjI1MDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTg2NTQwMjUwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9ODY1OTg1MDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuXG4gICMgUmVnaW9uIHNwZWNpZmljIG5ldHdvcmsgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMubmV0d29ya11cbiAgICBcbiAgICAjIEluc3RhbGxhdGlvbiBtYXJnaW4gKGRCKSB1c2VkIGJ5IHRoZSBBRFIgZW5naW5lLlxuICAgICNcbiAgICAjIEEgaGlnaGVyIG51bWJlciBtZWFucyB0aGF0IHRoZSBuZXR3b3JrLXNlcnZlciB3aWxsIGtlZXAgbW9yZSBtYXJnaW4sXG4gICAgIyByZXN1bHRpbmcgaW4gYSBsb3dlciBkYXRhLXJhdGUgYnV0IGRlY3JlYXNpbmcgdGhlIGNoYW5jZSB0aGF0IHRoZVxuICAgICMgZGV2aWNlIGdldHMgZGlzY29ubmVjdGVkIGJlY2F1c2UgaXQgaXMgdW5hYmxlIHRvIHJlYWNoIG9uZSBvZiB0aGVcbiAgICAjIHN1cnJvdW5kZWQgZ2F0ZXdheXMuXG4gICAgaW5zdGFsbGF0aW9uX21hcmdpbj0xMFxuXG4gICAgIyBSWCB3aW5kb3cgKENsYXNzLUEpLlxuICAgICNcbiAgICAjIFNldCB0aGlzIHRvOlxuICAgICMgMDogUlgxIC8gUlgyXG4gICAgIyAxOiBSWDEgb25seVxuICAgICMgMjogUlgyIG9ubHlcbiAgICByeF93aW5kb3c9MFxuXG4gICAgIyBSWDEgZGVsYXkgKDEgLSAxNSBzZWNvbmRzKS5cbiAgICByeDFfZGVsYXk9MVxuXG4gICAgIyBSWDEgZGF0YS1yYXRlIG9mZnNldFxuICAgIHJ4MV9kcl9vZmZzZXQ9MFxuXG4gICAgIyBSWDIgZGF0YS1yYXRlXG4gICAgcngyX2RyPTJcblxuICAgICMgUlgyIGZyZXF1ZW5jeSAoSHopXG4gICAgcngyX2ZyZXF1ZW5jeT04NjY1NTAwMDBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBSWDEgZGF0YS1yYXRlIGxlc3MgdGhhbi5cbiAgICAjXG4gICAgIyBQcmVmZXIgUlgyIG92ZXIgUlgxIGJhc2VkIG9uIHRoZSBSWDEgZGF0YS1yYXRlLiBXaGVuIHRoZSBSWDEgZGF0YS1yYXRlXG4gICAgIyBpcyBzbWFsbGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgdmFsdWUsIHRoZW4gdGhlIE5ldHdvcmsgU2VydmVyIHdpbGxcbiAgICAjIGZpcnN0IHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgZm9yIFJYMiwgZmFpbGluZyB0aGF0IChlLmcuIHRoZSBnYXRld2F5XG4gICAgIyBoYXMgYWxyZWFkeSBhIHBheWxvYWQgc2NoZWR1bGVkIGF0IHRoZSBSWDIgdGltaW5nKSBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9yeDFfZHJfbHQ9MFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIGxpbmsgYnVkZ2V0LlxuICAgICNcbiAgICAjIFdoZW4gdGhlIGxpbmstYnVkZ2V0IGlzIGJldHRlciBmb3IgUlgyIHRoYW4gZm9yIFJYMSwgdGhlIE5ldHdvcmsgU2VydmVyIHdpbGwgZmlyc3RcbiAgICAjIHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgaW4gUlgyLCBmYWlsaW5nIHRoYXQgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fbGlua19idWRnZXQ9ZmFsc2VcblxuICAgICMgRG93bmxpbmsgVFggUG93ZXIgKGRCbSlcbiAgICAjXG4gICAgIyBXaGVuIHNldCB0byAtMSwgdGhlIGRvd25saW5rIFRYIFBvd2VyIGZyb20gdGhlIGNvbmZpZ3VyZWQgYmFuZCB3aWxsXG4gICAgIyBiZSB1c2VkLlxuICAgICNcbiAgICAjIFBsZWFzZSBjb25zdWx0IHRoZSBMb1JhV0FOIFJlZ2lvbmFsIFBhcmFtZXRlcnMgYW5kIGxvY2FsIHJlZ3VsYXRpb25zXG4gICAgIyBmb3IgdmFsaWQgYW5kIGxlZ2FsIG9wdGlvbnMuIE5vdGUgdGhhdCB0aGUgY29uZmlndXJlZCBUWCBQb3dlciBtdXN0IGJlXG4gICAgIyBzdXBwb3J0ZWQgYnkgeW91ciBnYXRld2F5KHMpLlxuICAgIGRvd25saW5rX3R4X3Bvd2VyPS0xXG5cbiAgICAjIEFEUiBpcyBkaXNhYmxlZC5cbiAgICBhZHJfZGlzYWJsZWQ9ZmFsc2VcblxuICAgICMgTWluaW11bSBkYXRhLXJhdGUuXG4gICAgbWluX2RyPTBcblxuICAgICMgTWF4aW11bSBkYXRhLXJhdGUuXG4gICAgbWF4X2RyPTVcblxuXG4gICAgIyBSZWpvaW4tcmVxdWVzdCBjb25maWd1cmF0aW9uIChMb1JhV0FOIDEuMSlcbiAgICBbcmVnaW9ucy5uZXR3b3JrLnJlam9pbl9yZXF1ZXN0XVxuXG4gICAgICAjIFJlcXVlc3QgZGV2aWNlcyB0byBwZXJpb2RpY2FsbHkgc2VuZCByZWpvaW4tcmVxdWVzdHMuXG4gICAgICBlbmFibGVkPWZhbHNlXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X2NvdW50X24gKyA0KVxuICAgICAgIyB1cGxpbmsgbWVzc2FnZXMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgIG1heF9jb3VudF9uPTBcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfdGltZV9uICsgMTApXG4gICAgICAjIHNlY29uZHMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgICNcbiAgICAgICMgMCAgPSByb3VnaGx5IDE3IG1pbnV0ZXNcbiAgICAgICMgMTUgPSBhYm91dCAxIHllYXJcbiAgICAgIG1heF90aW1lX249MFxuICAgIFxuXG4gICAgIyBDbGFzcy1CIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMubmV0d29yay5jbGFzc19iXVxuXG4gICAgICAjIFBpbmctc2xvdCBkYXRhLXJhdGUuIFxuICAgICAgcGluZ19zbG90X2RyPTRcblxuICAgICAgIyBQaW5nLXNsb3QgZnJlcXVlbmN5IChIeilcbiAgICAgICNcbiAgICAgICMgc2V0IHRoaXMgdG8gMCB0byB1c2UgdGhlIGRlZmF1bHQgZnJlcXVlbmN5IHBsYW4gZm9yIHRoZSBjb25maWd1cmVkIHJlZ2lvblxuICAgICAgIyAod2hpY2ggY291bGQgYmUgZnJlcXVlbmN5IGhvcHBpbmcpLlxuICAgICAgcGluZ19zbG90X2ZyZXF1ZW5jeT0wXG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbnNlcnZpY2VOYW1lID0gXCJjaGlycHN0YWNrXCJcbmZpbGVQYXRoID0gXCIvY2hpcnBzdGFjay9yZWdpb25faXNtMjQwMC50b21sXCJcbmNvbnRlbnQgPSBcIlwiXCJcbiMgVGhpcyBmaWxlIGNvbnRhaW5zIGFuIGV4YW1wbGUgSVNNMjQwMCBjb25maWd1cmF0aW9uLlxuW1tyZWdpb25zXV1cblxuICAjIElEIGlzIGFuIHVzZXItZGVmaW5lZCBpZGVudGlmaWVyIGZvciB0aGlzIHJlZ2lvbi5cbiAgaWQ9XCJpc20yNDAwXCJcblxuICAjIERlc2NyaXB0aW9uIGlzIGEgc2hvcnQgZGVzY3JpcHRpb24gZm9yIHRoaXMgcmVnaW9uLlxuICBkZXNjcmlwdGlvbj1cIklTTTI0MDBcIlxuXG4gICMgQ29tbW9uLW5hbWUgcmVmZXJzIHRvIHRoZSBjb21tb24tbmFtZSBvZiB0aGlzIHJlZ2lvbiBhcyBkZWZpbmVkIGJ5XG4gICMgdGhlIExvUmEgQWxsaWFuY2UuXG4gIGNvbW1vbl9uYW1lPVwiSVNNMjQwMFwiXG5cblxuICAjIEdhdGV3YXkgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMuZ2F0ZXdheV1cblxuICAgICMgRm9yY2UgZ2F0ZXdheXMgYXMgcHJpdmF0ZS5cbiAgICAjXG4gICAgIyBJZiBlbmFibGVkLCBnYXRld2F5cyBjYW4gb25seSBiZSB1c2VkIGJ5IGRldmljZXMgdW5kZXIgdGhlIHNhbWUgdGVuYW50LlxuICAgIGZvcmNlX2d3c19wcml2YXRlPWZhbHNlXG5cblxuICAgICMgR2F0ZXdheSBiYWNrZW5kIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kXVxuXG4gICAgICAjIFRoZSBlbmFibGVkIGJhY2tlbmQgdHlwZS5cbiAgICAgIGVuYWJsZWQ9XCJtcXR0XCJcblxuICAgICAgIyBNUVRUIGNvbmZpZ3VyYXRpb24uXG4gICAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmQubXF0dF1cblxuICAgICAgICAjIFRvcGljIHByZWZpeC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoZSB0b3BpYyBwcmVmaXggY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHRoZSByZWdpb24gb2YgdGhlIGdhdGV3YXkuXG4gICAgICAgICMgTm90ZSwgdGhlcmUgaXMgbm8gbmVlZCB0byBhZGQgYSB0cmFpbGluZyAnLycgdG8gdGhlIHByZWZpeC4gVGhlIHRyYWlsaW5nXG4gICAgICAgICMgJy8nIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIHByZWZpeCBpZiBpdCBpcyBjb25maWd1cmVkLlxuICAgICAgICB0b3BpY19wcmVmaXg9XCJpc20yNDAwXCJcblxuICAgICAgICAjIE1RVFQgc2VydmVyIChlLmcuIHNjaGVtZTovL2hvc3Q6cG9ydCB3aGVyZSBzY2hlbWUgaXMgdGNwLCBzc2wgb3Igd3MpXG4gICAgICAgIHNlcnZlcj1cInRjcDovL21vc3F1aXR0bzoxODgzXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gdXNlcm5hbWUgKG9wdGlvbmFsKVxuICAgICAgICB1c2VybmFtZT1cIlwiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHBhc3N3b3JkIChvcHRpb25hbClcbiAgICAgICAgcGFzc3dvcmQ9XCJcIlxuXG4gICAgICAgICMgUXVhbGl0eSBvZiBzZXJ2aWNlIGxldmVsXG4gICAgICAgICNcbiAgICAgICAgIyAwOiBhdCBtb3N0IG9uY2VcbiAgICAgICAgIyAxOiBhdCBsZWFzdCBvbmNlXG4gICAgICAgICMgMjogZXhhY3RseSBvbmNlXG4gICAgICAgICNcbiAgICAgICAgIyBOb3RlOiBhbiBpbmNyZWFzZSBvZiB0aGlzIHZhbHVlIHdpbGwgZGVjcmVhc2UgdGhlIHBlcmZvcm1hbmNlLlxuICAgICAgICAjIEZvciBtb3JlIGluZm9ybWF0aW9uOiBodHRwczovL3d3dy5oaXZlbXEuY29tL2Jsb2cvbXF0dC1lc3NlbnRpYWxzLXBhcnQtNi1tcXR0LXF1YWxpdHktb2Ytc2VydmljZS1sZXZlbHNcbiAgICAgICAgcW9zPTBcblxuICAgICAgICAjIENsZWFuIHNlc3Npb25cbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgXCJjbGVhbiBzZXNzaW9uXCIgZmxhZyBpbiB0aGUgY29ubmVjdCBtZXNzYWdlIHdoZW4gdGhpcyBjbGllbnRcbiAgICAgICAgIyBjb25uZWN0cyB0byBhbiBNUVRUIGJyb2tlci4gQnkgc2V0dGluZyB0aGlzIGZsYWcgeW91IGFyZSBpbmRpY2F0aW5nXG4gICAgICAgICMgdGhhdCBubyBtZXNzYWdlcyBzYXZlZCBieSB0aGUgYnJva2VyIGZvciB0aGlzIGNsaWVudCBzaG91bGQgYmUgZGVsaXZlcmVkLlxuICAgICAgICBjbGVhbl9zZXNzaW9uPWZhbHNlXG5cbiAgICAgICAgIyBDbGllbnQgSURcbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgY2xpZW50IGlkIHRvIGJlIHVzZWQgYnkgdGhpcyBjbGllbnQgd2hlbiBjb25uZWN0aW5nIHRvIHRoZSBNUVRUXG4gICAgICAgICMgYnJva2VyLiBBIGNsaWVudCBpZCBtdXN0IGJlIG5vIGxvbmdlciB0aGFuIDIzIGNoYXJhY3RlcnMuIElmIGxlZnQgYmxhbmssXG4gICAgICAgICMgYSByYW5kb20gaWQgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgQ2hpcnBTdGFjay5cbiAgICAgICAgY2xpZW50X2lkPVwiXCJcblxuICAgICAgICAjIEtlZXAgYWxpdmUgaW50ZXJ2YWwuXG4gICAgICAgICNcbiAgICAgICAgIyBUaGlzIGRlZmluZXMgdGhlIG1heGltdW0gdGltZSB0aGF0IHRoYXQgc2hvdWxkIHBhc3Mgd2l0aG91dCBjb21tdW5pY2F0aW9uXG4gICAgICAgICMgYmV0d2VlbiB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIuXG4gICAgICAgIGtlZXBfYWxpdmVfaW50ZXJ2YWw9XCIzMHNcIlxuXG4gICAgICAgICMgQ0EgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgICNcbiAgICAgICAgIyBVc2UgdGhpcyB3aGVuIHNldHRpbmcgdXAgYSBzZWN1cmUgY29ubmVjdGlvbiAod2hlbiBzZXJ2ZXIgdXNlcyBzc2w6Ly8uLi4pXG4gICAgICAgICMgYnV0IHRoZSBjZXJ0aWZpY2F0ZSB1c2VkIGJ5IHRoZSBzZXJ2ZXIgaXMgbm90IHRydXN0ZWQgYnkgYW55IENBIGNlcnRpZmljYXRlXG4gICAgICAgICMgb24gdGhlIHNlcnZlciAoZS5nLiB3aGVuIHNlbGYgZ2VuZXJhdGVkKS5cbiAgICAgICAgY2FfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBrZXkgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19rZXk9XCJcIlxuXG5cbiAgICAjIEdhdGV3YXkgY2hhbm5lbCBjb25maWd1cmF0aW9uLlxuICAgICNcbiAgICAjIE5vdGU6IHRoaXMgY29uZmlndXJhdGlvbiBpcyBvbmx5IHVzZWQgaW4gY2FzZSB0aGUgZ2F0ZXdheSBpcyB1c2luZyB0aGVcbiAgICAjIENoaXJwU3RhY2sgQ29uY2VudHJhdG9yZCBkYWVtb24uIEluIGFueSBvdGhlciBjYXNlLCB0aGlzIGNvbmZpZ3VyYXRpb24gXG4gICAgIyBpcyBpZ25vcmVkLlxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT0yNDAzMDAwMDAwXG4gICAgICBiYW5kd2lkdGg9ODEyMDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bMTJdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9MjQ3OTAwMDAwMFxuICAgICAgYmFuZHdpZHRoPTgxMjAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTI0MjUwMDAwMDBcbiAgICAgIGJhbmR3aWR0aD04MTIwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVsxMl1cblxuXG4gICMgUmVnaW9uIHNwZWNpZmljIG5ldHdvcmsgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMubmV0d29ya11cbiAgICBcbiAgICAjIEluc3RhbGxhdGlvbiBtYXJnaW4gKGRCKSB1c2VkIGJ5IHRoZSBBRFIgZW5naW5lLlxuICAgICNcbiAgICAjIEEgaGlnaGVyIG51bWJlciBtZWFucyB0aGF0IHRoZSBuZXR3b3JrLXNlcnZlciB3aWxsIGtlZXAgbW9yZSBtYXJnaW4sXG4gICAgIyByZXN1bHRpbmcgaW4gYSBsb3dlciBkYXRhLXJhdGUgYnV0IGRlY3JlYXNpbmcgdGhlIGNoYW5jZSB0aGF0IHRoZVxuICAgICMgZGV2aWNlIGdldHMgZGlzY29ubmVjdGVkIGJlY2F1c2UgaXQgaXMgdW5hYmxlIHRvIHJlYWNoIG9uZSBvZiB0aGVcbiAgICAjIHN1cnJvdW5kZWQgZ2F0ZXdheXMuXG4gICAgaW5zdGFsbGF0aW9uX21hcmdpbj0xMFxuXG4gICAgIyBSWCB3aW5kb3cgKENsYXNzLUEpLlxuICAgICNcbiAgICAjIFNldCB0aGlzIHRvOlxuICAgICMgMDogUlgxIC8gUlgyXG4gICAgIyAxOiBSWDEgb25seVxuICAgICMgMjogUlgyIG9ubHlcbiAgICByeF93aW5kb3c9MFxuXG4gICAgIyBSWDEgZGVsYXkgKDEgLSAxNSBzZWNvbmRzKS5cbiAgICByeDFfZGVsYXk9MVxuXG4gICAgIyBSWDEgZGF0YS1yYXRlIG9mZnNldFxuICAgIHJ4MV9kcl9vZmZzZXQ9MFxuXG4gICAgIyBSWDIgZGF0YS1yYXRlXG4gICAgcngyX2RyPTBcblxuICAgICMgUlgyIGZyZXF1ZW5jeSAoSHopXG4gICAgcngyX2ZyZXF1ZW5jeT0yNDIzMDAwMDAwXG5cbiAgICAjIFByZWZlciBSWDIgb24gUlgxIGRhdGEtcmF0ZSBsZXNzIHRoYW4uXG4gICAgI1xuICAgICMgUHJlZmVyIFJYMiBvdmVyIFJYMSBiYXNlZCBvbiB0aGUgUlgxIGRhdGEtcmF0ZS4gV2hlbiB0aGUgUlgxIGRhdGEtcmF0ZVxuICAgICMgaXMgc21hbGxlciB0aGFuIHRoZSBjb25maWd1cmVkIHZhbHVlLCB0aGVuIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsXG4gICAgIyBmaXJzdCB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGZvciBSWDIsIGZhaWxpbmcgdGhhdCAoZS5nLiB0aGUgZ2F0ZXdheVxuICAgICMgaGFzIGFscmVhZHkgYSBwYXlsb2FkIHNjaGVkdWxlZCBhdCB0aGUgUlgyIHRpbWluZykgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fcngxX2RyX2x0PTBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBsaW5rIGJ1ZGdldC5cbiAgICAjXG4gICAgIyBXaGVuIHRoZSBsaW5rLWJ1ZGdldCBpcyBiZXR0ZXIgZm9yIFJYMiB0aGFuIGZvciBSWDEsIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsIGZpcnN0XG4gICAgIyB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGluIFJYMiwgZmFpbGluZyB0aGF0IGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX2xpbmtfYnVkZ2V0PWZhbHNlXG5cbiAgICAjIERvd25saW5rIFRYIFBvd2VyIChkQm0pXG4gICAgI1xuICAgICMgV2hlbiBzZXQgdG8gLTEsIHRoZSBkb3dubGluayBUWCBQb3dlciBmcm9tIHRoZSBjb25maWd1cmVkIGJhbmQgd2lsbFxuICAgICMgYmUgdXNlZC5cbiAgICAjXG4gICAgIyBQbGVhc2UgY29uc3VsdCB0aGUgTG9SYVdBTiBSZWdpb25hbCBQYXJhbWV0ZXJzIGFuZCBsb2NhbCByZWd1bGF0aW9uc1xuICAgICMgZm9yIHZhbGlkIGFuZCBsZWdhbCBvcHRpb25zLiBOb3RlIHRoYXQgdGhlIGNvbmZpZ3VyZWQgVFggUG93ZXIgbXVzdCBiZVxuICAgICMgc3VwcG9ydGVkIGJ5IHlvdXIgZ2F0ZXdheShzKS5cbiAgICBkb3dubGlua190eF9wb3dlcj0tMVxuXG4gICAgIyBBRFIgaXMgZGlzYWJsZWQuXG4gICAgYWRyX2Rpc2FibGVkPWZhbHNlXG5cbiAgICAjIE1pbmltdW0gZGF0YS1yYXRlLlxuICAgIG1pbl9kcj0wXG5cbiAgICAjIE1heGltdW0gZGF0YS1yYXRlLlxuICAgIG1heF9kcj03XG5cblxuICAgICMgUmVqb2luLXJlcXVlc3QgY29uZmlndXJhdGlvbiAoTG9SYVdBTiAxLjEpXG4gICAgW3JlZ2lvbnMubmV0d29yay5yZWpvaW5fcmVxdWVzdF1cblxuICAgICAgIyBSZXF1ZXN0IGRldmljZXMgdG8gcGVyaW9kaWNhbGx5IHNlbmQgcmVqb2luLXJlcXVlc3RzLlxuICAgICAgZW5hYmxlZD1mYWxzZVxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF9jb3VudF9uICsgNClcbiAgICAgICMgdXBsaW5rIG1lc3NhZ2VzLiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gMTUuXG4gICAgICBtYXhfY291bnRfbj0wXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X3RpbWVfbiArIDEwKVxuICAgICAgIyBzZWNvbmRzLiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gMTUuXG4gICAgICAjXG4gICAgICAjIDAgID0gcm91Z2hseSAxNyBtaW51dGVzXG4gICAgICAjIDE1ID0gYWJvdXQgMSB5ZWFyXG4gICAgICBtYXhfdGltZV9uPTBcbiAgICBcblxuICAgICMgQ2xhc3MtQiBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLm5ldHdvcmsuY2xhc3NfYl1cblxuICAgICAgIyBQaW5nLXNsb3QgZGF0YS1yYXRlLiBcbiAgICAgIHBpbmdfc2xvdF9kcj0wXG5cbiAgICAgICMgUGluZy1zbG90IGZyZXF1ZW5jeSAoSHopXG4gICAgICAjXG4gICAgICAjIHNldCB0aGlzIHRvIDAgdG8gdXNlIHRoZSBkZWZhdWx0IGZyZXF1ZW5jeSBwbGFuIGZvciB0aGUgY29uZmlndXJlZCByZWdpb25cbiAgICAgICMgKHdoaWNoIGNvdWxkIGJlIGZyZXF1ZW5jeSBob3BwaW5nKS5cbiAgICAgIHBpbmdfc2xvdF9mcmVxdWVuY3k9MFxuXCJcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5zZXJ2aWNlTmFtZSA9IFwiY2hpcnBzdGFja1wiXG5maWxlUGF0aCA9IFwiL2NoaXJwc3RhY2svcmVnaW9uX2tyOTIwLnRvbWxcIlxuY29udGVudCA9IFwiXCJcIlxuIyBUaGlzIGZpbGUgY29udGFpbnMgYW4gZXhhbXBsZSBLUjkyMCBjb25maWd1cmF0aW9uLlxuW1tyZWdpb25zXV1cblxuICAjIElEIGlzIGFuIHVzZXItZGVmaW5lZCBpZGVudGlmaWVyIGZvciB0aGlzIHJlZ2lvbi5cbiAgaWQ9XCJrcjkyMFwiXG5cbiAgIyBEZXNjcmlwdGlvbiBpcyBhIHNob3J0IGRlc2NyaXB0aW9uIGZvciB0aGlzIHJlZ2lvbi5cbiAgZGVzY3JpcHRpb249XCJLUjkyMFwiXG5cbiAgIyBDb21tb24tbmFtZSByZWZlcnMgdG8gdGhlIGNvbW1vbi1uYW1lIG9mIHRoaXMgcmVnaW9uIGFzIGRlZmluZWQgYnlcbiAgIyB0aGUgTG9SYSBBbGxpYW5jZS5cbiAgY29tbW9uX25hbWU9XCJLUjkyMFwiXG5cblxuICAjIEdhdGV3YXkgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMuZ2F0ZXdheV1cblxuICAgICMgRm9yY2UgZ2F0ZXdheXMgYXMgcHJpdmF0ZS5cbiAgICAjXG4gICAgIyBJZiBlbmFibGVkLCBnYXRld2F5cyBjYW4gb25seSBiZSB1c2VkIGJ5IGRldmljZXMgdW5kZXIgdGhlIHNhbWUgdGVuYW50LlxuICAgIGZvcmNlX2d3c19wcml2YXRlPWZhbHNlXG5cblxuICAgICMgR2F0ZXdheSBiYWNrZW5kIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kXVxuXG4gICAgICAjIFRoZSBlbmFibGVkIGJhY2tlbmQgdHlwZS5cbiAgICAgIGVuYWJsZWQ9XCJtcXR0XCJcblxuICAgICAgIyBNUVRUIGNvbmZpZ3VyYXRpb24uXG4gICAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmQubXF0dF1cblxuICAgICAgICAjIFRvcGljIHByZWZpeC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoZSB0b3BpYyBwcmVmaXggY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHRoZSByZWdpb24gb2YgdGhlIGdhdGV3YXkuXG4gICAgICAgICMgTm90ZSwgdGhlcmUgaXMgbm8gbmVlZCB0byBhZGQgYSB0cmFpbGluZyAnLycgdG8gdGhlIHByZWZpeC4gVGhlIHRyYWlsaW5nXG4gICAgICAgICMgJy8nIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIHByZWZpeCBpZiBpdCBpcyBjb25maWd1cmVkLlxuICAgICAgICB0b3BpY19wcmVmaXg9XCJrcjkyMFwiXG5cbiAgICAgICAgIyBNUVRUIHNlcnZlciAoZS5nLiBzY2hlbWU6Ly9ob3N0OnBvcnQgd2hlcmUgc2NoZW1lIGlzIHRjcCwgc3NsIG9yIHdzKVxuICAgICAgICBzZXJ2ZXI9XCJ0Y3A6Ly9tb3NxdWl0dG86MTg4M1wiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHVzZXJuYW1lIChvcHRpb25hbClcbiAgICAgICAgdXNlcm5hbWU9XCJcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiBwYXNzd29yZCAob3B0aW9uYWwpXG4gICAgICAgIHBhc3N3b3JkPVwiXCJcblxuICAgICAgICAjIFF1YWxpdHkgb2Ygc2VydmljZSBsZXZlbFxuICAgICAgICAjXG4gICAgICAgICMgMDogYXQgbW9zdCBvbmNlXG4gICAgICAgICMgMTogYXQgbGVhc3Qgb25jZVxuICAgICAgICAjIDI6IGV4YWN0bHkgb25jZVxuICAgICAgICAjXG4gICAgICAgICMgTm90ZTogYW4gaW5jcmVhc2Ugb2YgdGhpcyB2YWx1ZSB3aWxsIGRlY3JlYXNlIHRoZSBwZXJmb3JtYW5jZS5cbiAgICAgICAgIyBGb3IgbW9yZSBpbmZvcm1hdGlvbjogaHR0cHM6Ly93d3cuaGl2ZW1xLmNvbS9ibG9nL21xdHQtZXNzZW50aWFscy1wYXJ0LTYtbXF0dC1xdWFsaXR5LW9mLXNlcnZpY2UtbGV2ZWxzXG4gICAgICAgIHFvcz0wXG5cbiAgICAgICAgIyBDbGVhbiBzZXNzaW9uXG4gICAgICAgICNcbiAgICAgICAgIyBTZXQgdGhlIFwiY2xlYW4gc2Vzc2lvblwiIGZsYWcgaW4gdGhlIGNvbm5lY3QgbWVzc2FnZSB3aGVuIHRoaXMgY2xpZW50XG4gICAgICAgICMgY29ubmVjdHMgdG8gYW4gTVFUVCBicm9rZXIuIEJ5IHNldHRpbmcgdGhpcyBmbGFnIHlvdSBhcmUgaW5kaWNhdGluZ1xuICAgICAgICAjIHRoYXQgbm8gbWVzc2FnZXMgc2F2ZWQgYnkgdGhlIGJyb2tlciBmb3IgdGhpcyBjbGllbnQgc2hvdWxkIGJlIGRlbGl2ZXJlZC5cbiAgICAgICAgY2xlYW5fc2Vzc2lvbj1mYWxzZVxuXG4gICAgICAgICMgQ2xpZW50IElEXG4gICAgICAgICNcbiAgICAgICAgIyBTZXQgdGhlIGNsaWVudCBpZCB0byBiZSB1c2VkIGJ5IHRoaXMgY2xpZW50IHdoZW4gY29ubmVjdGluZyB0byB0aGUgTVFUVFxuICAgICAgICAjIGJyb2tlci4gQSBjbGllbnQgaWQgbXVzdCBiZSBubyBsb25nZXIgdGhhbiAyMyBjaGFyYWN0ZXJzLiBJZiBsZWZ0IGJsYW5rLFxuICAgICAgICAjIGEgcmFuZG9tIGlkIHdpbGwgYmUgZ2VuZXJhdGVkIGJ5IENoaXJwU3RhY2suXG4gICAgICAgIGNsaWVudF9pZD1cIlwiXG5cbiAgICAgICAgIyBLZWVwIGFsaXZlIGludGVydmFsLlxuICAgICAgICAjXG4gICAgICAgICMgVGhpcyBkZWZpbmVzIHRoZSBtYXhpbXVtIHRpbWUgdGhhdCB0aGF0IHNob3VsZCBwYXNzIHdpdGhvdXQgY29tbXVuaWNhdGlvblxuICAgICAgICAjIGJldHdlZW4gdGhlIGNsaWVudCBhbmQgc2VydmVyLlxuICAgICAgICBrZWVwX2FsaXZlX2ludGVydmFsPVwiMzBzXCJcblxuICAgICAgICAjIENBIGNlcnRpZmljYXRlIGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICAjXG4gICAgICAgICMgVXNlIHRoaXMgd2hlbiBzZXR0aW5nIHVwIGEgc2VjdXJlIGNvbm5lY3Rpb24gKHdoZW4gc2VydmVyIHVzZXMgc3NsOi8vLi4uKVxuICAgICAgICAjIGJ1dCB0aGUgY2VydGlmaWNhdGUgdXNlZCBieSB0aGUgc2VydmVyIGlzIG5vdCB0cnVzdGVkIGJ5IGFueSBDQSBjZXJ0aWZpY2F0ZVxuICAgICAgICAjIG9uIHRoZSBzZXJ2ZXIgKGUuZy4gd2hlbiBzZWxmIGdlbmVyYXRlZCkuXG4gICAgICAgIGNhX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGNlcnRpZmljYXRlIGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICB0bHNfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMga2V5IGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICB0bHNfa2V5PVwiXCJcblxuXG4gICAgIyBHYXRld2F5IGNoYW5uZWwgY29uZmlndXJhdGlvbi5cbiAgICAjXG4gICAgIyBOb3RlOiB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgb25seSB1c2VkIGluIGNhc2UgdGhlIGdhdGV3YXkgaXMgdXNpbmcgdGhlXG4gICAgIyBDaGlycFN0YWNrIENvbmNlbnRyYXRvcmQgZGFlbW9uLiBJbiBhbnkgb3RoZXIgY2FzZSwgdGhpcyBjb25maWd1cmF0aW9uIFxuICAgICMgaXMgaWdub3JlZC5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTIyMTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MjIzMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkyMjUwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwLCAxMSwgMTJdXG5cblxuICAjIFJlZ2lvbiBzcGVjaWZpYyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLm5ldHdvcmtdXG4gICAgXG4gICAgIyBJbnN0YWxsYXRpb24gbWFyZ2luIChkQikgdXNlZCBieSB0aGUgQURSIGVuZ2luZS5cbiAgICAjXG4gICAgIyBBIGhpZ2hlciBudW1iZXIgbWVhbnMgdGhhdCB0aGUgbmV0d29yay1zZXJ2ZXIgd2lsbCBrZWVwIG1vcmUgbWFyZ2luLFxuICAgICMgcmVzdWx0aW5nIGluIGEgbG93ZXIgZGF0YS1yYXRlIGJ1dCBkZWNyZWFzaW5nIHRoZSBjaGFuY2UgdGhhdCB0aGVcbiAgICAjIGRldmljZSBnZXRzIGRpc2Nvbm5lY3RlZCBiZWNhdXNlIGl0IGlzIHVuYWJsZSB0byByZWFjaCBvbmUgb2YgdGhlXG4gICAgIyBzdXJyb3VuZGVkIGdhdGV3YXlzLlxuICAgIGluc3RhbGxhdGlvbl9tYXJnaW49MTBcblxuICAgICMgUlggd2luZG93IChDbGFzcy1BKS5cbiAgICAjXG4gICAgIyBTZXQgdGhpcyB0bzpcbiAgICAjIDA6IFJYMSAvIFJYMlxuICAgICMgMTogUlgxIG9ubHlcbiAgICAjIDI6IFJYMiBvbmx5XG4gICAgcnhfd2luZG93PTBcblxuICAgICMgUlgxIGRlbGF5ICgxIC0gMTUgc2Vjb25kcykuXG4gICAgcngxX2RlbGF5PTFcblxuICAgICMgUlgxIGRhdGEtcmF0ZSBvZmZzZXRcbiAgICByeDFfZHJfb2Zmc2V0PTBcblxuICAgICMgUlgyIGRhdGEtcmF0ZVxuICAgIHJ4Ml9kcj0wXG5cbiAgICAjIFJYMiBmcmVxdWVuY3kgKEh6KVxuICAgIHJ4Ml9mcmVxdWVuY3k9OTIxOTAwMDAwXG5cbiAgICAjIFByZWZlciBSWDIgb24gUlgxIGRhdGEtcmF0ZSBsZXNzIHRoYW4uXG4gICAgI1xuICAgICMgUHJlZmVyIFJYMiBvdmVyIFJYMSBiYXNlZCBvbiB0aGUgUlgxIGRhdGEtcmF0ZS4gV2hlbiB0aGUgUlgxIGRhdGEtcmF0ZVxuICAgICMgaXMgc21hbGxlciB0aGFuIHRoZSBjb25maWd1cmVkIHZhbHVlLCB0aGVuIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsXG4gICAgIyBmaXJzdCB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGZvciBSWDIsIGZhaWxpbmcgdGhhdCAoZS5nLiB0aGUgZ2F0ZXdheVxuICAgICMgaGFzIGFscmVhZHkgYSBwYXlsb2FkIHNjaGVkdWxlZCBhdCB0aGUgUlgyIHRpbWluZykgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fcngxX2RyX2x0PTBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBsaW5rIGJ1ZGdldC5cbiAgICAjXG4gICAgIyBXaGVuIHRoZSBsaW5rLWJ1ZGdldCBpcyBiZXR0ZXIgZm9yIFJYMiB0aGFuIGZvciBSWDEsIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsIGZpcnN0XG4gICAgIyB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGluIFJYMiwgZmFpbGluZyB0aGF0IGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX2xpbmtfYnVkZ2V0PWZhbHNlXG5cbiAgICAjIERvd25saW5rIFRYIFBvd2VyIChkQm0pXG4gICAgI1xuICAgICMgV2hlbiBzZXQgdG8gLTEsIHRoZSBkb3dubGluayBUWCBQb3dlciBmcm9tIHRoZSBjb25maWd1cmVkIGJhbmQgd2lsbFxuICAgICMgYmUgdXNlZC5cbiAgICAjXG4gICAgIyBQbGVhc2UgY29uc3VsdCB0aGUgTG9SYVdBTiBSZWdpb25hbCBQYXJhbWV0ZXJzIGFuZCBsb2NhbCByZWd1bGF0aW9uc1xuICAgICMgZm9yIHZhbGlkIGFuZCBsZWdhbCBvcHRpb25zLiBOb3RlIHRoYXQgdGhlIGNvbmZpZ3VyZWQgVFggUG93ZXIgbXVzdCBiZVxuICAgICMgc3VwcG9ydGVkIGJ5IHlvdXIgZ2F0ZXdheShzKS5cbiAgICBkb3dubGlua190eF9wb3dlcj0tMVxuXG4gICAgIyBBRFIgaXMgZGlzYWJsZWQuXG4gICAgYWRyX2Rpc2FibGVkPWZhbHNlXG5cbiAgICAjIE1pbmltdW0gZGF0YS1yYXRlLlxuICAgIG1pbl9kcj0wXG5cbiAgICAjIE1heGltdW0gZGF0YS1yYXRlLlxuICAgIG1heF9kcj01XG5cblxuICAgICMgUmVqb2luLXJlcXVlc3QgY29uZmlndXJhdGlvbiAoTG9SYVdBTiAxLjEpXG4gICAgW3JlZ2lvbnMubmV0d29yay5yZWpvaW5fcmVxdWVzdF1cblxuICAgICAgIyBSZXF1ZXN0IGRldmljZXMgdG8gcGVyaW9kaWNhbGx5IHNlbmQgcmVqb2luLXJlcXVlc3RzLlxuICAgICAgZW5hYmxlZD1mYWxzZVxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF9jb3VudF9uICsgNClcbiAgICAgICMgdXBsaW5rIG1lc3NhZ2VzLiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gMTUuXG4gICAgICBtYXhfY291bnRfbj0wXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X3RpbWVfbiArIDEwKVxuICAgICAgIyBzZWNvbmRzLiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gMTUuXG4gICAgICAjXG4gICAgICAjIDAgID0gcm91Z2hseSAxNyBtaW51dGVzXG4gICAgICAjIDE1ID0gYWJvdXQgMSB5ZWFyXG4gICAgICBtYXhfdGltZV9uPTBcbiAgICBcblxuICAgICMgQ2xhc3MtQiBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLm5ldHdvcmsuY2xhc3NfYl1cblxuICAgICAgIyBQaW5nLXNsb3QgZGF0YS1yYXRlLiBcbiAgICAgIHBpbmdfc2xvdF9kcj0zXG5cbiAgICAgICMgUGluZy1zbG90IGZyZXF1ZW5jeSAoSHopXG4gICAgICAjXG4gICAgICAjIHNldCB0aGlzIHRvIDAgdG8gdXNlIHRoZSBkZWZhdWx0IGZyZXF1ZW5jeSBwbGFuIGZvciB0aGUgY29uZmlndXJlZCByZWdpb25cbiAgICAgICMgKHdoaWNoIGNvdWxkIGJlIGZyZXF1ZW5jeSBob3BwaW5nKS5cbiAgICAgIHBpbmdfc2xvdF9mcmVxdWVuY3k9MFxuXCJcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5zZXJ2aWNlTmFtZSA9IFwiY2hpcnBzdGFja1wiXG5maWxlUGF0aCA9IFwiL2NoaXJwc3RhY2svcmVnaW9uX3J1ODY0LnRvbWxcIlxuY29udGVudCA9IFwiXCJcIlxuIyBUaGlzIGZpbGUgY29udGFpbnMgYW4gZXhhbXBsZSBSVTg2NCBjb25maWd1cmF0aW9uLlxuW1tyZWdpb25zXV1cblxuICAjIElEIGlzIGFuIHVzZXItZGVmaW5lZCBpZGVudGlmaWVyIGZvciB0aGlzIHJlZ2lvbi5cbiAgaWQ9XCJydTg2NFwiXG5cbiAgIyBEZXNjcmlwdGlvbiBpcyBhIHNob3J0IGRlc2NyaXB0aW9uIGZvciB0aGlzIHJlZ2lvbi5cbiAgZGVzY3JpcHRpb249XCJSVTg2NFwiXG5cbiAgIyBDb21tb24tbmFtZSByZWZlcnMgdG8gdGhlIGNvbW1vbi1uYW1lIG9mIHRoaXMgcmVnaW9uIGFzIGRlZmluZWQgYnlcbiAgIyB0aGUgTG9SYSBBbGxpYW5jZS5cbiAgY29tbW9uX25hbWU9XCJSVTg2NFwiXG5cblxuICAjIEdhdGV3YXkgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMuZ2F0ZXdheV1cblxuICAgICMgRm9yY2UgZ2F0ZXdheXMgYXMgcHJpdmF0ZS5cbiAgICAjXG4gICAgIyBJZiBlbmFibGVkLCBnYXRld2F5cyBjYW4gb25seSBiZSB1c2VkIGJ5IGRldmljZXMgdW5kZXIgdGhlIHNhbWUgdGVuYW50LlxuICAgIGZvcmNlX2d3c19wcml2YXRlPWZhbHNlXG5cblxuICAgICMgR2F0ZXdheSBiYWNrZW5kIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kXVxuXG4gICAgICAjIFRoZSBlbmFibGVkIGJhY2tlbmQgdHlwZS5cbiAgICAgIGVuYWJsZWQ9XCJtcXR0XCJcblxuICAgICAgIyBNUVRUIGNvbmZpZ3VyYXRpb24uXG4gICAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmQubXF0dF1cblxuICAgICAgICAjIFRvcGljIHByZWZpeC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoZSB0b3BpYyBwcmVmaXggY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHRoZSByZWdpb24gb2YgdGhlIGdhdGV3YXkuXG4gICAgICAgICMgTm90ZSwgdGhlcmUgaXMgbm8gbmVlZCB0byBhZGQgYSB0cmFpbGluZyAnLycgdG8gdGhlIHByZWZpeC4gVGhlIHRyYWlsaW5nXG4gICAgICAgICMgJy8nIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIHByZWZpeCBpZiBpdCBpcyBjb25maWd1cmVkLlxuICAgICAgICB0b3BpY19wcmVmaXg9XCJydTg2NFwiXG5cbiAgICAgICAgIyBNUVRUIHNlcnZlciAoZS5nLiBzY2hlbWU6Ly9ob3N0OnBvcnQgd2hlcmUgc2NoZW1lIGlzIHRjcCwgc3NsIG9yIHdzKVxuICAgICAgICBzZXJ2ZXI9XCJ0Y3A6Ly9tb3NxdWl0dG86MTg4M1wiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHVzZXJuYW1lIChvcHRpb25hbClcbiAgICAgICAgdXNlcm5hbWU9XCJcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiBwYXNzd29yZCAob3B0aW9uYWwpXG4gICAgICAgIHBhc3N3b3JkPVwiXCJcblxuICAgICAgICAjIFF1YWxpdHkgb2Ygc2VydmljZSBsZXZlbFxuICAgICAgICAjXG4gICAgICAgICMgMDogYXQgbW9zdCBvbmNlXG4gICAgICAgICMgMTogYXQgbGVhc3Qgb25jZVxuICAgICAgICAjIDI6IGV4YWN0bHkgb25jZVxuICAgICAgICAjXG4gICAgICAgICMgTm90ZTogYW4gaW5jcmVhc2Ugb2YgdGhpcyB2YWx1ZSB3aWxsIGRlY3JlYXNlIHRoZSBwZXJmb3JtYW5jZS5cbiAgICAgICAgIyBGb3IgbW9yZSBpbmZvcm1hdGlvbjogaHR0cHM6Ly93d3cuaGl2ZW1xLmNvbS9ibG9nL21xdHQtZXNzZW50aWFscy1wYXJ0LTYtbXF0dC1xdWFsaXR5LW9mLXNlcnZpY2UtbGV2ZWxzXG4gICAgICAgIHFvcz0wXG5cbiAgICAgICAgIyBDbGVhbiBzZXNzaW9uXG4gICAgICAgICNcbiAgICAgICAgIyBTZXQgdGhlIFwiY2xlYW4gc2Vzc2lvblwiIGZsYWcgaW4gdGhlIGNvbm5lY3QgbWVzc2FnZSB3aGVuIHRoaXMgY2xpZW50XG4gICAgICAgICMgY29ubmVjdHMgdG8gYW4gTVFUVCBicm9rZXIuIEJ5IHNldHRpbmcgdGhpcyBmbGFnIHlvdSBhcmUgaW5kaWNhdGluZ1xuICAgICAgICAjIHRoYXQgbm8gbWVzc2FnZXMgc2F2ZWQgYnkgdGhlIGJyb2tlciBmb3IgdGhpcyBjbGllbnQgc2hvdWxkIGJlIGRlbGl2ZXJlZC5cbiAgICAgICAgY2xlYW5fc2Vzc2lvbj1mYWxzZVxuXG4gICAgICAgICMgQ2xpZW50IElEXG4gICAgICAgICNcbiAgICAgICAgIyBTZXQgdGhlIGNsaWVudCBpZCB0byBiZSB1c2VkIGJ5IHRoaXMgY2xpZW50IHdoZW4gY29ubmVjdGluZyB0byB0aGUgTVFUVFxuICAgICAgICAjIGJyb2tlci4gQSBjbGllbnQgaWQgbXVzdCBiZSBubyBsb25nZXIgdGhhbiAyMyBjaGFyYWN0ZXJzLiBJZiBsZWZ0IGJsYW5rLFxuICAgICAgICAjIGEgcmFuZG9tIGlkIHdpbGwgYmUgZ2VuZXJhdGVkIGJ5IENoaXJwU3RhY2suXG4gICAgICAgIGNsaWVudF9pZD1cIlwiXG5cbiAgICAgICAgIyBLZWVwIGFsaXZlIGludGVydmFsLlxuICAgICAgICAjXG4gICAgICAgICMgVGhpcyBkZWZpbmVzIHRoZSBtYXhpbXVtIHRpbWUgdGhhdCB0aGF0IHNob3VsZCBwYXNzIHdpdGhvdXQgY29tbXVuaWNhdGlvblxuICAgICAgICAjIGJldHdlZW4gdGhlIGNsaWVudCBhbmQgc2VydmVyLlxuICAgICAgICBrZWVwX2FsaXZlX2ludGVydmFsPVwiMzBzXCJcblxuICAgICAgICAjIENBIGNlcnRpZmljYXRlIGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICAjXG4gICAgICAgICMgVXNlIHRoaXMgd2hlbiBzZXR0aW5nIHVwIGEgc2VjdXJlIGNvbm5lY3Rpb24gKHdoZW4gc2VydmVyIHVzZXMgc3NsOi8vLi4uKVxuICAgICAgICAjIGJ1dCB0aGUgY2VydGlmaWNhdGUgdXNlZCBieSB0aGUgc2VydmVyIGlzIG5vdCB0cnVzdGVkIGJ5IGFueSBDQSBjZXJ0aWZpY2F0ZVxuICAgICAgICAjIG9uIHRoZSBzZXJ2ZXIgKGUuZy4gd2hlbiBzZWxmIGdlbmVyYXRlZCkuXG4gICAgICAgIGNhX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGNlcnRpZmljYXRlIGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICB0bHNfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMga2V5IGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICB0bHNfa2V5PVwiXCJcblxuXG4gICAgIyBHYXRld2F5IGNoYW5uZWwgY29uZmlndXJhdGlvbi5cbiAgICAjXG4gICAgIyBOb3RlOiB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgb25seSB1c2VkIGluIGNhc2UgdGhlIGdhdGV3YXkgaXMgdXNpbmcgdGhlXG4gICAgIyBDaGlycFN0YWNrIENvbmNlbnRyYXRvcmQgZGFlbW9uLiBJbiBhbnkgb3RoZXIgY2FzZSwgdGhpcyBjb25maWd1cmF0aW9uIFxuICAgICMgaXMgaWdub3JlZC5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9ODY4OTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTAsIDExLCAxMl1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT04NjkxMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMCwgMTEsIDEyXVxuXG5cbiAgIyBSZWdpb24gc3BlY2lmaWMgbmV0d29yayBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5uZXR3b3JrXVxuICAgIFxuICAgICMgSW5zdGFsbGF0aW9uIG1hcmdpbiAoZEIpIHVzZWQgYnkgdGhlIEFEUiBlbmdpbmUuXG4gICAgI1xuICAgICMgQSBoaWdoZXIgbnVtYmVyIG1lYW5zIHRoYXQgdGhlIG5ldHdvcmstc2VydmVyIHdpbGwga2VlcCBtb3JlIG1hcmdpbixcbiAgICAjIHJlc3VsdGluZyBpbiBhIGxvd2VyIGRhdGEtcmF0ZSBidXQgZGVjcmVhc2luZyB0aGUgY2hhbmNlIHRoYXQgdGhlXG4gICAgIyBkZXZpY2UgZ2V0cyBkaXNjb25uZWN0ZWQgYmVjYXVzZSBpdCBpcyB1bmFibGUgdG8gcmVhY2ggb25lIG9mIHRoZVxuICAgICMgc3Vycm91bmRlZCBnYXRld2F5cy5cbiAgICBpbnN0YWxsYXRpb25fbWFyZ2luPTEwXG5cbiAgICAjIFJYIHdpbmRvdyAoQ2xhc3MtQSkuXG4gICAgI1xuICAgICMgU2V0IHRoaXMgdG86XG4gICAgIyAwOiBSWDEgLyBSWDJcbiAgICAjIDE6IFJYMSBvbmx5XG4gICAgIyAyOiBSWDIgb25seVxuICAgIHJ4X3dpbmRvdz0wXG5cbiAgICAjIFJYMSBkZWxheSAoMSAtIDE1IHNlY29uZHMpLlxuICAgIHJ4MV9kZWxheT0xXG5cbiAgICAjIFJYMSBkYXRhLXJhdGUgb2Zmc2V0XG4gICAgcngxX2RyX29mZnNldD0wXG5cbiAgICAjIFJYMiBkYXRhLXJhdGVcbiAgICByeDJfZHI9MFxuXG4gICAgIyBSWDIgZnJlcXVlbmN5IChIeilcbiAgICByeDJfZnJlcXVlbmN5PTg2OTEwMDAwMFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIFJYMSBkYXRhLXJhdGUgbGVzcyB0aGFuLlxuICAgICNcbiAgICAjIFByZWZlciBSWDIgb3ZlciBSWDEgYmFzZWQgb24gdGhlIFJYMSBkYXRhLXJhdGUuIFdoZW4gdGhlIFJYMSBkYXRhLXJhdGVcbiAgICAjIGlzIHNtYWxsZXIgdGhhbiB0aGUgY29uZmlndXJlZCB2YWx1ZSwgdGhlbiB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbFxuICAgICMgZmlyc3QgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBmb3IgUlgyLCBmYWlsaW5nIHRoYXQgKGUuZy4gdGhlIGdhdGV3YXlcbiAgICAjIGhhcyBhbHJlYWR5IGEgcGF5bG9hZCBzY2hlZHVsZWQgYXQgdGhlIFJYMiB0aW1pbmcpIGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX3J4MV9kcl9sdD0wXG5cbiAgICAjIFByZWZlciBSWDIgb24gbGluayBidWRnZXQuXG4gICAgI1xuICAgICMgV2hlbiB0aGUgbGluay1idWRnZXQgaXMgYmV0dGVyIGZvciBSWDIgdGhhbiBmb3IgUlgxLCB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbCBmaXJzdFxuICAgICMgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBpbiBSWDIsIGZhaWxpbmcgdGhhdCBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9saW5rX2J1ZGdldD1mYWxzZVxuXG4gICAgIyBEb3dubGluayBUWCBQb3dlciAoZEJtKVxuICAgICNcbiAgICAjIFdoZW4gc2V0IHRvIC0xLCB0aGUgZG93bmxpbmsgVFggUG93ZXIgZnJvbSB0aGUgY29uZmlndXJlZCBiYW5kIHdpbGxcbiAgICAjIGJlIHVzZWQuXG4gICAgI1xuICAgICMgUGxlYXNlIGNvbnN1bHQgdGhlIExvUmFXQU4gUmVnaW9uYWwgUGFyYW1ldGVycyBhbmQgbG9jYWwgcmVndWxhdGlvbnNcbiAgICAjIGZvciB2YWxpZCBhbmQgbGVnYWwgb3B0aW9ucy4gTm90ZSB0aGF0IHRoZSBjb25maWd1cmVkIFRYIFBvd2VyIG11c3QgYmVcbiAgICAjIHN1cHBvcnRlZCBieSB5b3VyIGdhdGV3YXkocykuXG4gICAgZG93bmxpbmtfdHhfcG93ZXI9LTFcblxuICAgICMgQURSIGlzIGRpc2FibGVkLlxuICAgIGFkcl9kaXNhYmxlZD1mYWxzZVxuXG4gICAgIyBNaW5pbXVtIGRhdGEtcmF0ZS5cbiAgICBtaW5fZHI9MFxuXG4gICAgIyBNYXhpbXVtIGRhdGEtcmF0ZS5cbiAgICBtYXhfZHI9NVxuXG5cbiAgICAjIFJlam9pbi1yZXF1ZXN0IGNvbmZpZ3VyYXRpb24gKExvUmFXQU4gMS4xKVxuICAgIFtyZWdpb25zLm5ldHdvcmsucmVqb2luX3JlcXVlc3RdXG5cbiAgICAgICMgUmVxdWVzdCBkZXZpY2VzIHRvIHBlcmlvZGljYWxseSBzZW5kIHJlam9pbi1yZXF1ZXN0cy5cbiAgICAgIGVuYWJsZWQ9ZmFsc2VcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfY291bnRfbiArIDQpXG4gICAgICAjIHVwbGluayBtZXNzYWdlcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgbWF4X2NvdW50X249MFxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF90aW1lX24gKyAxMClcbiAgICAgICMgc2Vjb25kcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgI1xuICAgICAgIyAwICA9IHJvdWdobHkgMTcgbWludXRlc1xuICAgICAgIyAxNSA9IGFib3V0IDEgeWVhclxuICAgICAgbWF4X3RpbWVfbj0wXG4gICAgXG5cbiAgICAjIENsYXNzLUIgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5uZXR3b3JrLmNsYXNzX2JdXG5cbiAgICAgICMgUGluZy1zbG90IGRhdGEtcmF0ZS4gXG4gICAgICBwaW5nX3Nsb3RfZHI9M1xuXG4gICAgICAjIFBpbmctc2xvdCBmcmVxdWVuY3kgKEh6KVxuICAgICAgI1xuICAgICAgIyBzZXQgdGhpcyB0byAwIHRvIHVzZSB0aGUgZGVmYXVsdCBmcmVxdWVuY3kgcGxhbiBmb3IgdGhlIGNvbmZpZ3VyZWQgcmVnaW9uXG4gICAgICAjICh3aGljaCBjb3VsZCBiZSBmcmVxdWVuY3kgaG9wcGluZykuXG4gICAgICBwaW5nX3Nsb3RfZnJlcXVlbmN5PTBcblwiXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuc2VydmljZU5hbWUgPSBcImNoaXJwc3RhY2tcIlxuZmlsZVBhdGggPSBcIi9jaGlycHN0YWNrL3JlZ2lvbl91czkxNV8wLnRvbWxcIlxuY29udGVudCA9IFwiXCJcIlxuIyBUaGlzIGZpbGUgY29udGFpbnMgYW4gZXhhbXBsZSBVUzkxNSBleGFtcGxlIChjaGFubmVscyAwLTcgKyA2NCkuXG5bW3JlZ2lvbnNdXVxuXG4gICMgSUQgaXMgYW4gdXNlLWRlZmluZWQgaWRlbnRpZmllciBmb3IgdGhpcyByZWdpb24uXG4gIGlkPVwidXM5MTVfMFwiXG5cbiAgIyBEZXNjcmlwdGlvbiBpcyBhIHNob3J0IGRlc2NyaXB0aW9uIGZvciB0aGlzIHJlZ2lvbi5cbiAgZGVzY3JpcHRpb249XCJVUzkxNSAoY2hhbm5lbHMgMC03ICsgNjQpXCJcblxuICAjIENvbW1vbi1uYW1lIHJlZmVycyB0byB0aGUgY29tbW9uLW5hbWUgb2YgdGhpcyByZWdpb24gYXMgZGVmaW5lZCBieVxuICAjIHRoZSBMb1JhIEFsbGlhbmNlLlxuICBjb21tb25fbmFtZT1cIlVTOTE1XCJcblxuXG4gICMgR2F0ZXdheSBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5nYXRld2F5XVxuXG4gICAgIyBGb3JjZSBnYXRld2F5cyBhcyBwcml2YXRlLlxuICAgICNcbiAgICAjIElmIGVuYWJsZWQsIGdhdGV3YXlzIGNhbiBvbmx5IGJlIHVzZWQgYnkgZGV2aWNlcyB1bmRlciB0aGUgc2FtZSB0ZW5hbnQuXG4gICAgZm9yY2VfZ3dzX3ByaXZhdGU9ZmFsc2VcblxuICAgIFxuICAgICMgR2F0ZXdheSBiYWNrZW5kIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kXVxuXG4gICAgICAjIFRoZSBlbmFibGVkIGJhY2tlbmQgdHlwZS5cbiAgICAgIGVuYWJsZWQ9XCJtcXR0XCJcblxuICAgICAgIyBNUVRUIGNvbmZpZ3VyYXRpb24uXG4gICAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmQubXF0dF1cblxuICAgICAgICAjIFRvcGljIHByZWZpeC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoZSB0b3BpYyBwcmVmaXggY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHRoZSByZWdpb24gb2YgdGhlIGdhdGV3YXkuXG4gICAgICAgICMgTm90ZSwgdGhlcmUgaXMgbm8gbmVlZCB0byBhZGQgYSB0cmFpbGluZyAnLycgdG8gdGhlIHByZWZpeC4gVGhlIHRyYWlsaW5nXG4gICAgICAgICMgJy8nIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIHByZWZpeCBpZiBpdCBpcyBjb25maWd1cmVkLlxuICAgICAgICB0b3BpY19wcmVmaXg9XCJ1czkxNV8wXCJcblxuICAgICAgICAjIE1RVFQgc2VydmVyIChlLmcuIHNjaGVtZTovL2hvc3Q6cG9ydCB3aGVyZSBzY2hlbWUgaXMgdGNwLCBzc2wgb3Igd3MpXG4gICAgICAgIHNlcnZlcj1cInRjcDovL21vc3F1aXR0bzoxODgzXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gdXNlcm5hbWUgKG9wdGlvbmFsKVxuICAgICAgICB1c2VybmFtZT1cIlwiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHBhc3N3b3JkIChvcHRpb25hbClcbiAgICAgICAgcGFzc3dvcmQ9XCJcIlxuXG4gICAgICAgICMgUXVhbGl0eSBvZiBzZXJ2aWNlIGxldmVsXG4gICAgICAgICNcbiAgICAgICAgIyAwOiBhdCBtb3N0IG9uY2VcbiAgICAgICAgIyAxOiBhdCBsZWFzdCBvbmNlXG4gICAgICAgICMgMjogZXhhY3RseSBvbmNlXG4gICAgICAgICNcbiAgICAgICAgIyBOb3RlOiBhbiBpbmNyZWFzZSBvZiB0aGlzIHZhbHVlIHdpbGwgZGVjcmVhc2UgdGhlIHBlcmZvcm1hbmNlLlxuICAgICAgICAjIEZvciBtb3JlIGluZm9ybWF0aW9uOiBodHRwczovL3d3dy5oaXZlbXEuY29tL2Jsb2cvbXF0dC1lc3NlbnRpYWxzLXBhcnQtNi1tcXR0LXF1YWxpdHktb2Ytc2VydmljZS1sZXZlbHNcbiAgICAgICAgcW9zPTBcblxuICAgICAgICAjIENsZWFuIHNlc3Npb25cbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgXCJjbGVhbiBzZXNzaW9uXCIgZmxhZyBpbiB0aGUgY29ubmVjdCBtZXNzYWdlIHdoZW4gdGhpcyBjbGllbnRcbiAgICAgICAgIyBjb25uZWN0cyB0byBhbiBNUVRUIGJyb2tlci4gQnkgc2V0dGluZyB0aGlzIGZsYWcgeW91IGFyZSBpbmRpY2F0aW5nXG4gICAgICAgICMgdGhhdCBubyBtZXNzYWdlcyBzYXZlZCBieSB0aGUgYnJva2VyIGZvciB0aGlzIGNsaWVudCBzaG91bGQgYmUgZGVsaXZlcmVkLlxuICAgICAgICBjbGVhbl9zZXNzaW9uPWZhbHNlXG5cbiAgICAgICAgIyBDbGllbnQgSURcbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgY2xpZW50IGlkIHRvIGJlIHVzZWQgYnkgdGhpcyBjbGllbnQgd2hlbiBjb25uZWN0aW5nIHRvIHRoZSBNUVRUXG4gICAgICAgICMgYnJva2VyLiBBIGNsaWVudCBpZCBtdXN0IGJlIG5vIGxvbmdlciB0aGFuIDIzIGNoYXJhY3RlcnMuIElmIGxlZnQgYmxhbmssXG4gICAgICAgICMgYSByYW5kb20gaWQgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgQ2hpcnBTdGFjay5cbiAgICAgICAgY2xpZW50X2lkPVwiXCJcblxuICAgICAgICAjIEtlZXAgYWxpdmUgaW50ZXJ2YWwuXG4gICAgICAgICNcbiAgICAgICAgIyBUaGlzIGRlZmluZXMgdGhlIG1heGltdW0gdGltZSB0aGF0IHRoYXQgc2hvdWxkIHBhc3Mgd2l0aG91dCBjb21tdW5pY2F0aW9uXG4gICAgICAgICMgYmV0d2VlbiB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIuXG4gICAgICAgIGtlZXBfYWxpdmVfaW50ZXJ2YWw9XCIzMHNcIlxuXG4gICAgICAgICMgQ0EgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgICNcbiAgICAgICAgIyBVc2UgdGhpcyB3aGVuIHNldHRpbmcgdXAgYSBzZWN1cmUgY29ubmVjdGlvbiAod2hlbiBzZXJ2ZXIgdXNlcyBzc2w6Ly8uLi4pXG4gICAgICAgICMgYnV0IHRoZSBjZXJ0aWZpY2F0ZSB1c2VkIGJ5IHRoZSBzZXJ2ZXIgaXMgbm90IHRydXN0ZWQgYnkgYW55IENBIGNlcnRpZmljYXRlXG4gICAgICAgICMgb24gdGhlIHNlcnZlciAoZS5nLiB3aGVuIHNlbGYgZ2VuZXJhdGVkKS5cbiAgICAgICAgY2FfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBrZXkgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19rZXk9XCJcIlxuXG5cbiAgICAjIEdhdGV3YXkgY2hhbm5lbCBjb25maWd1cmF0aW9uLlxuICAgICNcbiAgICAjIE5vdGU6IHRoaXMgY29uZmlndXJhdGlvbiBpcyBvbmx5IHVzZWQgaW4gY2FzZSB0aGUgZ2F0ZXdheSBpcyB1c2luZyB0aGVcbiAgICAjIENoaXJwU3RhY2sgQ29uY2VudHJhdG9yZCBkYWVtb24uIEluIGFueSBvdGhlciBjYXNlLCB0aGlzIGNvbmZpZ3VyYXRpb24gXG4gICAgIyBpcyBpZ25vcmVkLlxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDIzMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDI1MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDI3MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDI5MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDMxMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDMzMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDM1MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDM3MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDMwMDAwMDBcbiAgICAgIGJhbmR3aWR0aD01MDAwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs4XVxuXG5cbiAgIyBSZWdpb24gc3BlY2lmaWMgbmV0d29yayBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5uZXR3b3JrXVxuICAgIFxuICAgICMgSW5zdGFsbGF0aW9uIG1hcmdpbiAoZEIpIHVzZWQgYnkgdGhlIEFEUiBlbmdpbmUuXG4gICAgI1xuICAgICMgQSBoaWdoZXIgbnVtYmVyIG1lYW5zIHRoYXQgdGhlIG5ldHdvcmstc2VydmVyIHdpbGwga2VlcCBtb3JlIG1hcmdpbixcbiAgICAjIHJlc3VsdGluZyBpbiBhIGxvd2VyIGRhdGEtcmF0ZSBidXQgZGVjcmVhc2luZyB0aGUgY2hhbmNlIHRoYXQgdGhlXG4gICAgIyBkZXZpY2UgZ2V0cyBkaXNjb25uZWN0ZWQgYmVjYXVzZSBpdCBpcyB1bmFibGUgdG8gcmVhY2ggb25lIG9mIHRoZVxuICAgICMgc3Vycm91bmRlZCBnYXRld2F5cy5cbiAgICBpbnN0YWxsYXRpb25fbWFyZ2luPTEwXG5cbiAgICAjIFJYIHdpbmRvdyAoQ2xhc3MtQSkuXG4gICAgI1xuICAgICMgU2V0IHRoaXMgdG86XG4gICAgIyAwOiBSWDEgLyBSWDJcbiAgICAjIDE6IFJYMSBvbmx5XG4gICAgIyAyOiBSWDIgb25seVxuICAgIHJ4X3dpbmRvdz0wXG5cbiAgICAjIFJYMSBkZWxheSAoMSAtIDE1IHNlY29uZHMpLlxuICAgIHJ4MV9kZWxheT0xXG5cbiAgICAjIFJYMSBkYXRhLXJhdGUgb2Zmc2V0XG4gICAgcngxX2RyX29mZnNldD0wXG5cbiAgICAjIFJYMiBkYXRhLXJhdGVcbiAgICByeDJfZHI9OFxuXG4gICAgIyBSWDIgZnJlcXVlbmN5IChIeilcbiAgICByeDJfZnJlcXVlbmN5PTkyMzMwMDAwMFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIFJYMSBkYXRhLXJhdGUgbGVzcyB0aGFuLlxuICAgICNcbiAgICAjIFByZWZlciBSWDIgb3ZlciBSWDEgYmFzZWQgb24gdGhlIFJYMSBkYXRhLXJhdGUuIFdoZW4gdGhlIFJYMSBkYXRhLXJhdGVcbiAgICAjIGlzIHNtYWxsZXIgdGhhbiB0aGUgY29uZmlndXJlZCB2YWx1ZSwgdGhlbiB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbFxuICAgICMgZmlyc3QgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBmb3IgUlgyLCBmYWlsaW5nIHRoYXQgKGUuZy4gdGhlIGdhdGV3YXlcbiAgICAjIGhhcyBhbHJlYWR5IGEgcGF5bG9hZCBzY2hlZHVsZWQgYXQgdGhlIFJYMiB0aW1pbmcpIGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX3J4MV9kcl9sdD0wXG5cbiAgICAjIFByZWZlciBSWDIgb24gbGluayBidWRnZXQuXG4gICAgI1xuICAgICMgV2hlbiB0aGUgbGluay1idWRnZXQgaXMgYmV0dGVyIGZvciBSWDIgdGhhbiBmb3IgUlgxLCB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbCBmaXJzdFxuICAgICMgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBpbiBSWDIsIGZhaWxpbmcgdGhhdCBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9saW5rX2J1ZGdldD1mYWxzZVxuXG4gICAgIyBEb3dubGluayBUWCBQb3dlciAoZEJtKVxuICAgICNcbiAgICAjIFdoZW4gc2V0IHRvIC0xLCB0aGUgZG93bmxpbmsgVFggUG93ZXIgZnJvbSB0aGUgY29uZmlndXJlZCBiYW5kIHdpbGxcbiAgICAjIGJlIHVzZWQuXG4gICAgI1xuICAgICMgUGxlYXNlIGNvbnN1bHQgdGhlIExvUmFXQU4gUmVnaW9uYWwgUGFyYW1ldGVycyBhbmQgbG9jYWwgcmVndWxhdGlvbnNcbiAgICAjIGZvciB2YWxpZCBhbmQgbGVnYWwgb3B0aW9ucy4gTm90ZSB0aGF0IHRoZSBjb25maWd1cmVkIFRYIFBvd2VyIG11c3QgYmVcbiAgICAjIHN1cHBvcnRlZCBieSB5b3VyIGdhdGV3YXkocykuXG4gICAgZG93bmxpbmtfdHhfcG93ZXI9LTFcblxuICAgICMgQURSIGlzIGRpc2FibGVkLlxuICAgIGFkcl9kaXNhYmxlZD1mYWxzZVxuXG4gICAgIyBNaW5pbXVtIGRhdGEtcmF0ZS5cbiAgICBtaW5fZHI9MFxuXG4gICAgIyBNYXhpbXVtIGRhdGEtcmF0ZS5cbiAgICBtYXhfZHI9M1xuXG4gICAgIyBFbmFibGVkIHVwbGluayBjaGFubmVscy5cbiAgICAjXG4gICAgIyBVc2UgdGhpcyB3aGVuIG9ueSBhIHN1Yi1zZXQgb2YgdGhlIGJ5IGRlZmF1bHQgZW5hYmxlZCBjaGFubmVscyBhcmUgYmVpbmdcbiAgICAjIHVzZWQuIEZvciBleGFtcGxlIHdoZW4gb25seSB1c2luZyB0aGUgZmlyc3QgOCBjaGFubmVscyBvZiB0aGUgVVMgYmFuZC5cbiAgICAjIE5vdGU6IHdoZW4gbGVmdCBibGFuayAvIGVtcHR5IGFycmF5LCBhbGwgY2hhbm5lbHMgd2lsbCBiZSBlbmFibGVkLlxuICAgIGVuYWJsZWRfdXBsaW5rX2NoYW5uZWxzPVswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA2NF1cblxuXG4gICAgIyBSZWpvaW4tcmVxdWVzdCBjb25maWd1cmF0aW9uIChMb1JhV0FOIDEuMSlcbiAgICBbcmVnaW9ucy5uZXR3b3JrLnJlam9pbl9yZXF1ZXN0XVxuXG4gICAgICAjIFJlcXVlc3QgZGV2aWNlcyB0byBwZXJpb2RpY2FsbHkgc2VuZCByZWpvaW4tcmVxdWVzdHMuXG4gICAgICBlbmFibGVkPWZhbHNlXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X2NvdW50X24gKyA0KVxuICAgICAgIyB1cGxpbmsgbWVzc2FnZXMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgIG1heF9jb3VudF9uPTBcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfdGltZV9uICsgMTApXG4gICAgICAjIHNlY29uZHMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgICNcbiAgICAgICMgMCAgPSByb3VnaGx5IDE3IG1pbnV0ZXNcbiAgICAgICMgMTUgPSBhYm91dCAxIHllYXJcbiAgICAgIG1heF90aW1lX249MFxuICAgIFxuXG4gICAgIyBDbGFzcy1CIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMubmV0d29yay5jbGFzc19iXVxuXG4gICAgICAjIFBpbmctc2xvdCBkYXRhLXJhdGUuIFxuICAgICAgcGluZ19zbG90X2RyPThcblxuICAgICAgIyBQaW5nLXNsb3QgZnJlcXVlbmN5IChIeilcbiAgICAgICNcbiAgICAgICMgc2V0IHRoaXMgdG8gMCB0byB1c2UgdGhlIGRlZmF1bHQgZnJlcXVlbmN5IHBsYW4gZm9yIHRoZSBjb25maWd1cmVkIHJlZ2lvblxuICAgICAgIyAod2hpY2ggY291bGQgYmUgZnJlcXVlbmN5IGhvcHBpbmcpLlxuICAgICAgcGluZ19zbG90X2ZyZXF1ZW5jeT0wXG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbnNlcnZpY2VOYW1lID0gXCJjaGlycHN0YWNrXCJcbmZpbGVQYXRoID0gXCIvY2hpcnBzdGFjay9yZWdpb25fdXM5MTVfMS50b21sXCJcbmNvbnRlbnQgPSBcIlwiXCJcbiMgVGhpcyBmaWxlIGNvbnRhaW5zIGFuIGV4YW1wbGUgVVM5MTUgZXhhbXBsZSAoY2hhbm5lbHMgOC0xNSArIDY1KS5cbltbcmVnaW9uc11dXG5cbiAgIyBJRCBpcyBhbiB1c2UtZGVmaW5lZCBpZGVudGlmaWVyIGZvciB0aGlzIHJlZ2lvbi5cbiAgaWQ9XCJ1czkxNV8xXCJcblxuICAjIERlc2NyaXB0aW9uIGlzIGEgc2hvcnQgZGVzY3JpcHRpb24gZm9yIHRoaXMgcmVnaW9uLlxuICBkZXNjcmlwdGlvbj1cIlVTOTE1IChjaGFubmVscyA4LTE1ICsgNjUpXCJcblxuICAjIENvbW1vbi1uYW1lIHJlZmVycyB0byB0aGUgY29tbW9uLW5hbWUgb2YgdGhpcyByZWdpb24gYXMgZGVmaW5lZCBieVxuICAjIHRoZSBMb1JhIEFsbGlhbmNlLlxuICBjb21tb25fbmFtZT1cIlVTOTE1XCJcblxuXG4gICMgR2F0ZXdheSBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5nYXRld2F5XVxuXG4gICAgIyBGb3JjZSBnYXRld2F5cyBhcyBwcml2YXRlLlxuICAgICNcbiAgICAjIElmIGVuYWJsZWQsIGdhdGV3YXlzIGNhbiBvbmx5IGJlIHVzZWQgYnkgZGV2aWNlcyB1bmRlciB0aGUgc2FtZSB0ZW5hbnQuXG4gICAgZm9yY2VfZ3dzX3ByaXZhdGU9ZmFsc2VcblxuICAgIFxuICAgICMgR2F0ZXdheSBiYWNrZW5kIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kXVxuXG4gICAgICAjIFRoZSBlbmFibGVkIGJhY2tlbmQgdHlwZS5cbiAgICAgIGVuYWJsZWQ9XCJtcXR0XCJcblxuICAgICAgIyBNUVRUIGNvbmZpZ3VyYXRpb24uXG4gICAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmQubXF0dF1cblxuICAgICAgICAjIFRvcGljIHByZWZpeC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoZSB0b3BpYyBwcmVmaXggY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHRoZSByZWdpb24gb2YgdGhlIGdhdGV3YXkuXG4gICAgICAgICMgTm90ZSwgdGhlcmUgaXMgbm8gbmVlZCB0byBhZGQgYSB0cmFpbGluZyAnLycgdG8gdGhlIHByZWZpeC4gVGhlIHRyYWlsaW5nXG4gICAgICAgICMgJy8nIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIHByZWZpeCBpZiBpdCBpcyBjb25maWd1cmVkLlxuICAgICAgICB0b3BpY19wcmVmaXg9XCJ1czkxNV8xXCJcblxuICAgICAgICAjIE1RVFQgc2VydmVyIChlLmcuIHNjaGVtZTovL2hvc3Q6cG9ydCB3aGVyZSBzY2hlbWUgaXMgdGNwLCBzc2wgb3Igd3MpXG4gICAgICAgIHNlcnZlcj1cInRjcDovL21vc3F1aXR0bzoxODgzXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gdXNlcm5hbWUgKG9wdGlvbmFsKVxuICAgICAgICB1c2VybmFtZT1cIlwiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHBhc3N3b3JkIChvcHRpb25hbClcbiAgICAgICAgcGFzc3dvcmQ9XCJcIlxuXG4gICAgICAgICMgUXVhbGl0eSBvZiBzZXJ2aWNlIGxldmVsXG4gICAgICAgICNcbiAgICAgICAgIyAwOiBhdCBtb3N0IG9uY2VcbiAgICAgICAgIyAxOiBhdCBsZWFzdCBvbmNlXG4gICAgICAgICMgMjogZXhhY3RseSBvbmNlXG4gICAgICAgICNcbiAgICAgICAgIyBOb3RlOiBhbiBpbmNyZWFzZSBvZiB0aGlzIHZhbHVlIHdpbGwgZGVjcmVhc2UgdGhlIHBlcmZvcm1hbmNlLlxuICAgICAgICAjIEZvciBtb3JlIGluZm9ybWF0aW9uOiBodHRwczovL3d3dy5oaXZlbXEuY29tL2Jsb2cvbXF0dC1lc3NlbnRpYWxzLXBhcnQtNi1tcXR0LXF1YWxpdHktb2Ytc2VydmljZS1sZXZlbHNcbiAgICAgICAgcW9zPTBcblxuICAgICAgICAjIENsZWFuIHNlc3Npb25cbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgXCJjbGVhbiBzZXNzaW9uXCIgZmxhZyBpbiB0aGUgY29ubmVjdCBtZXNzYWdlIHdoZW4gdGhpcyBjbGllbnRcbiAgICAgICAgIyBjb25uZWN0cyB0byBhbiBNUVRUIGJyb2tlci4gQnkgc2V0dGluZyB0aGlzIGZsYWcgeW91IGFyZSBpbmRpY2F0aW5nXG4gICAgICAgICMgdGhhdCBubyBtZXNzYWdlcyBzYXZlZCBieSB0aGUgYnJva2VyIGZvciB0aGlzIGNsaWVudCBzaG91bGQgYmUgZGVsaXZlcmVkLlxuICAgICAgICBjbGVhbl9zZXNzaW9uPWZhbHNlXG5cbiAgICAgICAgIyBDbGllbnQgSURcbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgY2xpZW50IGlkIHRvIGJlIHVzZWQgYnkgdGhpcyBjbGllbnQgd2hlbiBjb25uZWN0aW5nIHRvIHRoZSBNUVRUXG4gICAgICAgICMgYnJva2VyLiBBIGNsaWVudCBpZCBtdXN0IGJlIG5vIGxvbmdlciB0aGFuIDIzIGNoYXJhY3RlcnMuIElmIGxlZnQgYmxhbmssXG4gICAgICAgICMgYSByYW5kb20gaWQgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgQ2hpcnBTdGFjay5cbiAgICAgICAgY2xpZW50X2lkPVwiXCJcblxuICAgICAgICAjIEtlZXAgYWxpdmUgaW50ZXJ2YWwuXG4gICAgICAgICNcbiAgICAgICAgIyBUaGlzIGRlZmluZXMgdGhlIG1heGltdW0gdGltZSB0aGF0IHRoYXQgc2hvdWxkIHBhc3Mgd2l0aG91dCBjb21tdW5pY2F0aW9uXG4gICAgICAgICMgYmV0d2VlbiB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIuXG4gICAgICAgIGtlZXBfYWxpdmVfaW50ZXJ2YWw9XCIzMHNcIlxuXG4gICAgICAgICMgQ0EgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgICNcbiAgICAgICAgIyBVc2UgdGhpcyB3aGVuIHNldHRpbmcgdXAgYSBzZWN1cmUgY29ubmVjdGlvbiAod2hlbiBzZXJ2ZXIgdXNlcyBzc2w6Ly8uLi4pXG4gICAgICAgICMgYnV0IHRoZSBjZXJ0aWZpY2F0ZSB1c2VkIGJ5IHRoZSBzZXJ2ZXIgaXMgbm90IHRydXN0ZWQgYnkgYW55IENBIGNlcnRpZmljYXRlXG4gICAgICAgICMgb24gdGhlIHNlcnZlciAoZS5nLiB3aGVuIHNlbGYgZ2VuZXJhdGVkKS5cbiAgICAgICAgY2FfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBrZXkgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19rZXk9XCJcIlxuXG5cbiAgICAjIEdhdGV3YXkgY2hhbm5lbCBjb25maWd1cmF0aW9uLlxuICAgICNcbiAgICAjIE5vdGU6IHRoaXMgY29uZmlndXJhdGlvbiBpcyBvbmx5IHVzZWQgaW4gY2FzZSB0aGUgZ2F0ZXdheSBpcyB1c2luZyB0aGVcbiAgICAjIENoaXJwU3RhY2sgQ29uY2VudHJhdG9yZCBkYWVtb24uIEluIGFueSBvdGhlciBjYXNlLCB0aGlzIGNvbmZpZ3VyYXRpb24gXG4gICAgIyBpcyBpZ25vcmVkLlxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDM5MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDQxMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDQzMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDQ1MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDQ3MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDQ5MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDUxMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDUzMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDQ2MDAwMDBcbiAgICAgIGJhbmR3aWR0aD01MDAwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs4XVxuXG5cbiAgIyBSZWdpb24gc3BlY2lmaWMgbmV0d29yayBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5uZXR3b3JrXVxuICAgIFxuICAgICMgSW5zdGFsbGF0aW9uIG1hcmdpbiAoZEIpIHVzZWQgYnkgdGhlIEFEUiBlbmdpbmUuXG4gICAgI1xuICAgICMgQSBoaWdoZXIgbnVtYmVyIG1lYW5zIHRoYXQgdGhlIG5ldHdvcmstc2VydmVyIHdpbGwga2VlcCBtb3JlIG1hcmdpbixcbiAgICAjIHJlc3VsdGluZyBpbiBhIGxvd2VyIGRhdGEtcmF0ZSBidXQgZGVjcmVhc2luZyB0aGUgY2hhbmNlIHRoYXQgdGhlXG4gICAgIyBkZXZpY2UgZ2V0cyBkaXNjb25uZWN0ZWQgYmVjYXVzZSBpdCBpcyB1bmFibGUgdG8gcmVhY2ggb25lIG9mIHRoZVxuICAgICMgc3Vycm91bmRlZCBnYXRld2F5cy5cbiAgICBpbnN0YWxsYXRpb25fbWFyZ2luPTEwXG5cbiAgICAjIFJYIHdpbmRvdyAoQ2xhc3MtQSkuXG4gICAgI1xuICAgICMgU2V0IHRoaXMgdG86XG4gICAgIyAwOiBSWDEgLyBSWDJcbiAgICAjIDE6IFJYMSBvbmx5XG4gICAgIyAyOiBSWDIgb25seVxuICAgIHJ4X3dpbmRvdz0wXG5cbiAgICAjIFJYMSBkZWxheSAoMSAtIDE1IHNlY29uZHMpLlxuICAgIHJ4MV9kZWxheT0xXG5cbiAgICAjIFJYMSBkYXRhLXJhdGUgb2Zmc2V0XG4gICAgcngxX2RyX29mZnNldD0wXG5cbiAgICAjIFJYMiBkYXRhLXJhdGVcbiAgICByeDJfZHI9OFxuXG4gICAgIyBSWDIgZnJlcXVlbmN5IChIeilcbiAgICByeDJfZnJlcXVlbmN5PTkyMzMwMDAwMFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIFJYMSBkYXRhLXJhdGUgbGVzcyB0aGFuLlxuICAgICNcbiAgICAjIFByZWZlciBSWDIgb3ZlciBSWDEgYmFzZWQgb24gdGhlIFJYMSBkYXRhLXJhdGUuIFdoZW4gdGhlIFJYMSBkYXRhLXJhdGVcbiAgICAjIGlzIHNtYWxsZXIgdGhhbiB0aGUgY29uZmlndXJlZCB2YWx1ZSwgdGhlbiB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbFxuICAgICMgZmlyc3QgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBmb3IgUlgyLCBmYWlsaW5nIHRoYXQgKGUuZy4gdGhlIGdhdGV3YXlcbiAgICAjIGhhcyBhbHJlYWR5IGEgcGF5bG9hZCBzY2hlZHVsZWQgYXQgdGhlIFJYMiB0aW1pbmcpIGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX3J4MV9kcl9sdD0wXG5cbiAgICAjIFByZWZlciBSWDIgb24gbGluayBidWRnZXQuXG4gICAgI1xuICAgICMgV2hlbiB0aGUgbGluay1idWRnZXQgaXMgYmV0dGVyIGZvciBSWDIgdGhhbiBmb3IgUlgxLCB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbCBmaXJzdFxuICAgICMgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBpbiBSWDIsIGZhaWxpbmcgdGhhdCBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9saW5rX2J1ZGdldD1mYWxzZVxuXG4gICAgIyBEb3dubGluayBUWCBQb3dlciAoZEJtKVxuICAgICNcbiAgICAjIFdoZW4gc2V0IHRvIC0xLCB0aGUgZG93bmxpbmsgVFggUG93ZXIgZnJvbSB0aGUgY29uZmlndXJlZCBiYW5kIHdpbGxcbiAgICAjIGJlIHVzZWQuXG4gICAgI1xuICAgICMgUGxlYXNlIGNvbnN1bHQgdGhlIExvUmFXQU4gUmVnaW9uYWwgUGFyYW1ldGVycyBhbmQgbG9jYWwgcmVndWxhdGlvbnNcbiAgICAjIGZvciB2YWxpZCBhbmQgbGVnYWwgb3B0aW9ucy4gTm90ZSB0aGF0IHRoZSBjb25maWd1cmVkIFRYIFBvd2VyIG11c3QgYmVcbiAgICAjIHN1cHBvcnRlZCBieSB5b3VyIGdhdGV3YXkocykuXG4gICAgZG93bmxpbmtfdHhfcG93ZXI9LTFcblxuICAgICMgQURSIGlzIGRpc2FibGVkLlxuICAgIGFkcl9kaXNhYmxlZD1mYWxzZVxuXG4gICAgIyBNaW5pbXVtIGRhdGEtcmF0ZS5cbiAgICBtaW5fZHI9MFxuXG4gICAgIyBNYXhpbXVtIGRhdGEtcmF0ZS5cbiAgICBtYXhfZHI9M1xuXG4gICAgIyBFbmFibGVkIHVwbGluayBjaGFubmVscy5cbiAgICAjXG4gICAgIyBVc2UgdGhpcyB3aGVuIG9ueSBhIHN1Yi1zZXQgb2YgdGhlIGJ5IGRlZmF1bHQgZW5hYmxlZCBjaGFubmVscyBhcmUgYmVpbmdcbiAgICAjIHVzZWQuIEZvciBleGFtcGxlIHdoZW4gb25seSB1c2luZyB0aGUgZmlyc3QgOCBjaGFubmVscyBvZiB0aGUgVVMgYmFuZC5cbiAgICAjIE5vdGU6IHdoZW4gbGVmdCBibGFuayAvIGVtcHR5IGFycmF5LCBhbGwgY2hhbm5lbHMgd2lsbCBiZSBlbmFibGVkLlxuICAgIGVuYWJsZWRfdXBsaW5rX2NoYW5uZWxzPVs4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA2NV1cblxuXG4gICAgIyBSZWpvaW4tcmVxdWVzdCBjb25maWd1cmF0aW9uIChMb1JhV0FOIDEuMSlcbiAgICBbcmVnaW9ucy5uZXR3b3JrLnJlam9pbl9yZXF1ZXN0XVxuXG4gICAgICAjIFJlcXVlc3QgZGV2aWNlcyB0byBwZXJpb2RpY2FsbHkgc2VuZCByZWpvaW4tcmVxdWVzdHMuXG4gICAgICBlbmFibGVkPWZhbHNlXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X2NvdW50X24gKyA0KVxuICAgICAgIyB1cGxpbmsgbWVzc2FnZXMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgIG1heF9jb3VudF9uPTBcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfdGltZV9uICsgMTApXG4gICAgICAjIHNlY29uZHMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgICNcbiAgICAgICMgMCAgPSByb3VnaGx5IDE3IG1pbnV0ZXNcbiAgICAgICMgMTUgPSBhYm91dCAxIHllYXJcbiAgICAgIG1heF90aW1lX249MFxuICAgIFxuXG4gICAgIyBDbGFzcy1CIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMubmV0d29yay5jbGFzc19iXVxuXG4gICAgICAjIFBpbmctc2xvdCBkYXRhLXJhdGUuIFxuICAgICAgcGluZ19zbG90X2RyPThcblxuICAgICAgIyBQaW5nLXNsb3QgZnJlcXVlbmN5IChIeilcbiAgICAgICNcbiAgICAgICMgc2V0IHRoaXMgdG8gMCB0byB1c2UgdGhlIGRlZmF1bHQgZnJlcXVlbmN5IHBsYW4gZm9yIHRoZSBjb25maWd1cmVkIHJlZ2lvblxuICAgICAgIyAod2hpY2ggY291bGQgYmUgZnJlcXVlbmN5IGhvcHBpbmcpLlxuICAgICAgcGluZ19zbG90X2ZyZXF1ZW5jeT0wXG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbnNlcnZpY2VOYW1lID0gXCJjaGlycHN0YWNrXCJcbmZpbGVQYXRoID0gXCIvY2hpcnBzdGFjay9yZWdpb25fdXM5MTVfMi50b21sXCJcbmNvbnRlbnQgPSBcIlwiXCJcbiMgVGhpcyBmaWxlIGNvbnRhaW5zIGFuIGV4YW1wbGUgVVM5MTUgZXhhbXBsZSAoY2hhbm5lbHMgMTYtMjMgKyA2NikuXG5bW3JlZ2lvbnNdXVxuXG4gICMgSUQgaXMgYW4gdXNlLWRlZmluZWQgaWRlbnRpZmllciBmb3IgdGhpcyByZWdpb24uXG4gIGlkPVwidXM5MTVfMlwiXG5cbiAgIyBEZXNjcmlwdGlvbiBpcyBhIHNob3J0IGRlc2NyaXB0aW9uIGZvciB0aGlzIHJlZ2lvbi5cbiAgZGVzY3JpcHRpb249XCJVUzkxNSAoY2hhbm5lbHMgMTYtMjMgKyA2NilcIlxuXG4gICMgQ29tbW9uLW5hbWUgcmVmZXJzIHRvIHRoZSBjb21tb24tbmFtZSBvZiB0aGlzIHJlZ2lvbiBhcyBkZWZpbmVkIGJ5XG4gICMgdGhlIExvUmEgQWxsaWFuY2UuXG4gIGNvbW1vbl9uYW1lPVwiVVM5MTVcIlxuXG5cbiAgIyBHYXRld2F5IGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLmdhdGV3YXldXG5cbiAgICAjIEZvcmNlIGdhdGV3YXlzIGFzIHByaXZhdGUuXG4gICAgI1xuICAgICMgSWYgZW5hYmxlZCwgZ2F0ZXdheXMgY2FuIG9ubHkgYmUgdXNlZCBieSBkZXZpY2VzIHVuZGVyIHRoZSBzYW1lIHRlbmFudC5cbiAgICBmb3JjZV9nd3NfcHJpdmF0ZT1mYWxzZVxuXG4gICAgXG4gICAgIyBHYXRld2F5IGJhY2tlbmQgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmRdXG5cbiAgICAgICMgVGhlIGVuYWJsZWQgYmFja2VuZCB0eXBlLlxuICAgICAgZW5hYmxlZD1cIm1xdHRcIlxuXG4gICAgICAjIE1RVFQgY29uZmlndXJhdGlvbi5cbiAgICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZC5tcXR0XVxuXG4gICAgICAgICMgVG9waWMgcHJlZml4LlxuICAgICAgICAjXG4gICAgICAgICMgVGhlIHRvcGljIHByZWZpeCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgdGhlIHJlZ2lvbiBvZiB0aGUgZ2F0ZXdheS5cbiAgICAgICAgIyBOb3RlLCB0aGVyZSBpcyBubyBuZWVkIHRvIGFkZCBhIHRyYWlsaW5nICcvJyB0byB0aGUgcHJlZml4LiBUaGUgdHJhaWxpbmdcbiAgICAgICAgIyAnLycgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgcHJlZml4IGlmIGl0IGlzIGNvbmZpZ3VyZWQuXG4gICAgICAgIHRvcGljX3ByZWZpeD1cInVzOTE1XzJcIlxuXG4gICAgICAgICMgTVFUVCBzZXJ2ZXIgKGUuZy4gc2NoZW1lOi8vaG9zdDpwb3J0IHdoZXJlIHNjaGVtZSBpcyB0Y3AsIHNzbCBvciB3cylcbiAgICAgICAgc2VydmVyPVwidGNwOi8vbW9zcXVpdHRvOjE4ODNcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiB1c2VybmFtZSAob3B0aW9uYWwpXG4gICAgICAgIHVzZXJuYW1lPVwiXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gcGFzc3dvcmQgKG9wdGlvbmFsKVxuICAgICAgICBwYXNzd29yZD1cIlwiXG5cbiAgICAgICAgIyBRdWFsaXR5IG9mIHNlcnZpY2UgbGV2ZWxcbiAgICAgICAgI1xuICAgICAgICAjIDA6IGF0IG1vc3Qgb25jZVxuICAgICAgICAjIDE6IGF0IGxlYXN0IG9uY2VcbiAgICAgICAgIyAyOiBleGFjdGx5IG9uY2VcbiAgICAgICAgI1xuICAgICAgICAjIE5vdGU6IGFuIGluY3JlYXNlIG9mIHRoaXMgdmFsdWUgd2lsbCBkZWNyZWFzZSB0aGUgcGVyZm9ybWFuY2UuXG4gICAgICAgICMgRm9yIG1vcmUgaW5mb3JtYXRpb246IGh0dHBzOi8vd3d3LmhpdmVtcS5jb20vYmxvZy9tcXR0LWVzc2VudGlhbHMtcGFydC02LW1xdHQtcXVhbGl0eS1vZi1zZXJ2aWNlLWxldmVsc1xuICAgICAgICBxb3M9MFxuXG4gICAgICAgICMgQ2xlYW4gc2Vzc2lvblxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBcImNsZWFuIHNlc3Npb25cIiBmbGFnIGluIHRoZSBjb25uZWN0IG1lc3NhZ2Ugd2hlbiB0aGlzIGNsaWVudFxuICAgICAgICAjIGNvbm5lY3RzIHRvIGFuIE1RVFQgYnJva2VyLiBCeSBzZXR0aW5nIHRoaXMgZmxhZyB5b3UgYXJlIGluZGljYXRpbmdcbiAgICAgICAgIyB0aGF0IG5vIG1lc3NhZ2VzIHNhdmVkIGJ5IHRoZSBicm9rZXIgZm9yIHRoaXMgY2xpZW50IHNob3VsZCBiZSBkZWxpdmVyZWQuXG4gICAgICAgIGNsZWFuX3Nlc3Npb249ZmFsc2VcblxuICAgICAgICAjIENsaWVudCBJRFxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBjbGllbnQgaWQgdG8gYmUgdXNlZCBieSB0aGlzIGNsaWVudCB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIE1RVFRcbiAgICAgICAgIyBicm9rZXIuIEEgY2xpZW50IGlkIG11c3QgYmUgbm8gbG9uZ2VyIHRoYW4gMjMgY2hhcmFjdGVycy4gSWYgbGVmdCBibGFuayxcbiAgICAgICAgIyBhIHJhbmRvbSBpZCB3aWxsIGJlIGdlbmVyYXRlZCBieSBDaGlycFN0YWNrLlxuICAgICAgICBjbGllbnRfaWQ9XCJcIlxuXG4gICAgICAgICMgS2VlcCBhbGl2ZSBpbnRlcnZhbC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoaXMgZGVmaW5lcyB0aGUgbWF4aW11bSB0aW1lIHRoYXQgdGhhdCBzaG91bGQgcGFzcyB3aXRob3V0IGNvbW11bmljYXRpb25cbiAgICAgICAgIyBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlci5cbiAgICAgICAga2VlcF9hbGl2ZV9pbnRlcnZhbD1cIjMwc1wiXG5cbiAgICAgICAgIyBDQSBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgI1xuICAgICAgICAjIFVzZSB0aGlzIHdoZW4gc2V0dGluZyB1cCBhIHNlY3VyZSBjb25uZWN0aW9uICh3aGVuIHNlcnZlciB1c2VzIHNzbDovLy4uLilcbiAgICAgICAgIyBidXQgdGhlIGNlcnRpZmljYXRlIHVzZWQgYnkgdGhlIHNlcnZlciBpcyBub3QgdHJ1c3RlZCBieSBhbnkgQ0EgY2VydGlmaWNhdGVcbiAgICAgICAgIyBvbiB0aGUgc2VydmVyIChlLmcuIHdoZW4gc2VsZiBnZW5lcmF0ZWQpLlxuICAgICAgICBjYV9jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGtleSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2tleT1cIlwiXG5cblxuICAgICMgR2F0ZXdheSBjaGFubmVsIGNvbmZpZ3VyYXRpb24uXG4gICAgI1xuICAgICMgTm90ZTogdGhpcyBjb25maWd1cmF0aW9uIGlzIG9ubHkgdXNlZCBpbiBjYXNlIHRoZSBnYXRld2F5IGlzIHVzaW5nIHRoZVxuICAgICMgQ2hpcnBTdGFjayBDb25jZW50cmF0b3JkIGRhZW1vbi4gSW4gYW55IG90aGVyIGNhc2UsIHRoaXMgY29uZmlndXJhdGlvbiBcbiAgICAjIGlzIGlnbm9yZWQuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkwNTUwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkwNTcwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkwNTkwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkwNjEwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkwNjMwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkwNjUwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkwNjcwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkwNjkwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkwNjIwMDAwMFxuICAgICAgYmFuZHdpZHRoPTUwMDAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzhdXG5cblxuICAjIFJlZ2lvbiBzcGVjaWZpYyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLm5ldHdvcmtdXG4gICAgXG4gICAgIyBJbnN0YWxsYXRpb24gbWFyZ2luIChkQikgdXNlZCBieSB0aGUgQURSIGVuZ2luZS5cbiAgICAjXG4gICAgIyBBIGhpZ2hlciBudW1iZXIgbWVhbnMgdGhhdCB0aGUgbmV0d29yay1zZXJ2ZXIgd2lsbCBrZWVwIG1vcmUgbWFyZ2luLFxuICAgICMgcmVzdWx0aW5nIGluIGEgbG93ZXIgZGF0YS1yYXRlIGJ1dCBkZWNyZWFzaW5nIHRoZSBjaGFuY2UgdGhhdCB0aGVcbiAgICAjIGRldmljZSBnZXRzIGRpc2Nvbm5lY3RlZCBiZWNhdXNlIGl0IGlzIHVuYWJsZSB0byByZWFjaCBvbmUgb2YgdGhlXG4gICAgIyBzdXJyb3VuZGVkIGdhdGV3YXlzLlxuICAgIGluc3RhbGxhdGlvbl9tYXJnaW49MTBcblxuICAgICMgUlggd2luZG93IChDbGFzcy1BKS5cbiAgICAjXG4gICAgIyBTZXQgdGhpcyB0bzpcbiAgICAjIDA6IFJYMSAvIFJYMlxuICAgICMgMTogUlgxIG9ubHlcbiAgICAjIDI6IFJYMiBvbmx5XG4gICAgcnhfd2luZG93PTBcblxuICAgICMgUlgxIGRlbGF5ICgxIC0gMTUgc2Vjb25kcykuXG4gICAgcngxX2RlbGF5PTFcblxuICAgICMgUlgxIGRhdGEtcmF0ZSBvZmZzZXRcbiAgICByeDFfZHJfb2Zmc2V0PTBcblxuICAgICMgUlgyIGRhdGEtcmF0ZVxuICAgIHJ4Ml9kcj04XG5cbiAgICAjIFJYMiBmcmVxdWVuY3kgKEh6KVxuICAgIHJ4Ml9mcmVxdWVuY3k9OTIzMzAwMDAwXG5cbiAgICAjIFByZWZlciBSWDIgb24gUlgxIGRhdGEtcmF0ZSBsZXNzIHRoYW4uXG4gICAgI1xuICAgICMgUHJlZmVyIFJYMiBvdmVyIFJYMSBiYXNlZCBvbiB0aGUgUlgxIGRhdGEtcmF0ZS4gV2hlbiB0aGUgUlgxIGRhdGEtcmF0ZVxuICAgICMgaXMgc21hbGxlciB0aGFuIHRoZSBjb25maWd1cmVkIHZhbHVlLCB0aGVuIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsXG4gICAgIyBmaXJzdCB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGZvciBSWDIsIGZhaWxpbmcgdGhhdCAoZS5nLiB0aGUgZ2F0ZXdheVxuICAgICMgaGFzIGFscmVhZHkgYSBwYXlsb2FkIHNjaGVkdWxlZCBhdCB0aGUgUlgyIHRpbWluZykgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fcngxX2RyX2x0PTBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBsaW5rIGJ1ZGdldC5cbiAgICAjXG4gICAgIyBXaGVuIHRoZSBsaW5rLWJ1ZGdldCBpcyBiZXR0ZXIgZm9yIFJYMiB0aGFuIGZvciBSWDEsIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsIGZpcnN0XG4gICAgIyB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGluIFJYMiwgZmFpbGluZyB0aGF0IGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX2xpbmtfYnVkZ2V0PWZhbHNlXG5cbiAgICAjIERvd25saW5rIFRYIFBvd2VyIChkQm0pXG4gICAgI1xuICAgICMgV2hlbiBzZXQgdG8gLTEsIHRoZSBkb3dubGluayBUWCBQb3dlciBmcm9tIHRoZSBjb25maWd1cmVkIGJhbmQgd2lsbFxuICAgICMgYmUgdXNlZC5cbiAgICAjXG4gICAgIyBQbGVhc2UgY29uc3VsdCB0aGUgTG9SYVdBTiBSZWdpb25hbCBQYXJhbWV0ZXJzIGFuZCBsb2NhbCByZWd1bGF0aW9uc1xuICAgICMgZm9yIHZhbGlkIGFuZCBsZWdhbCBvcHRpb25zLiBOb3RlIHRoYXQgdGhlIGNvbmZpZ3VyZWQgVFggUG93ZXIgbXVzdCBiZVxuICAgICMgc3VwcG9ydGVkIGJ5IHlvdXIgZ2F0ZXdheShzKS5cbiAgICBkb3dubGlua190eF9wb3dlcj0tMVxuXG4gICAgIyBBRFIgaXMgZGlzYWJsZWQuXG4gICAgYWRyX2Rpc2FibGVkPWZhbHNlXG5cbiAgICAjIE1pbmltdW0gZGF0YS1yYXRlLlxuICAgIG1pbl9kcj0wXG5cbiAgICAjIE1heGltdW0gZGF0YS1yYXRlLlxuICAgIG1heF9kcj0zXG5cbiAgICAjIEVuYWJsZWQgdXBsaW5rIGNoYW5uZWxzLlxuICAgICNcbiAgICAjIFVzZSB0aGlzIHdoZW4gb255IGEgc3ViLXNldCBvZiB0aGUgYnkgZGVmYXVsdCBlbmFibGVkIGNoYW5uZWxzIGFyZSBiZWluZ1xuICAgICMgdXNlZC4gRm9yIGV4YW1wbGUgd2hlbiBvbmx5IHVzaW5nIHRoZSBmaXJzdCA4IGNoYW5uZWxzIG9mIHRoZSBVUyBiYW5kLlxuICAgICMgTm90ZTogd2hlbiBsZWZ0IGJsYW5rIC8gZW1wdHkgYXJyYXksIGFsbCBjaGFubmVscyB3aWxsIGJlIGVuYWJsZWQuXG4gICAgZW5hYmxlZF91cGxpbmtfY2hhbm5lbHM9WzE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgNjZdXG5cblxuICAgICMgUmVqb2luLXJlcXVlc3QgY29uZmlndXJhdGlvbiAoTG9SYVdBTiAxLjEpXG4gICAgW3JlZ2lvbnMubmV0d29yay5yZWpvaW5fcmVxdWVzdF1cblxuICAgICAgIyBSZXF1ZXN0IGRldmljZXMgdG8gcGVyaW9kaWNhbGx5IHNlbmQgcmVqb2luLXJlcXVlc3RzLlxuICAgICAgZW5hYmxlZD1mYWxzZVxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF9jb3VudF9uICsgNClcbiAgICAgICMgdXBsaW5rIG1lc3NhZ2VzLiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gMTUuXG4gICAgICBtYXhfY291bnRfbj0wXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X3RpbWVfbiArIDEwKVxuICAgICAgIyBzZWNvbmRzLiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gMTUuXG4gICAgICAjXG4gICAgICAjIDAgID0gcm91Z2hseSAxNyBtaW51dGVzXG4gICAgICAjIDE1ID0gYWJvdXQgMSB5ZWFyXG4gICAgICBtYXhfdGltZV9uPTBcbiAgICBcblxuICAgICMgQ2xhc3MtQiBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLm5ldHdvcmsuY2xhc3NfYl1cblxuICAgICAgIyBQaW5nLXNsb3QgZGF0YS1yYXRlLiBcbiAgICAgIHBpbmdfc2xvdF9kcj04XG5cbiAgICAgICMgUGluZy1zbG90IGZyZXF1ZW5jeSAoSHopXG4gICAgICAjXG4gICAgICAjIHNldCB0aGlzIHRvIDAgdG8gdXNlIHRoZSBkZWZhdWx0IGZyZXF1ZW5jeSBwbGFuIGZvciB0aGUgY29uZmlndXJlZCByZWdpb25cbiAgICAgICMgKHdoaWNoIGNvdWxkIGJlIGZyZXF1ZW5jeSBob3BwaW5nKS5cbiAgICAgIHBpbmdfc2xvdF9mcmVxdWVuY3k9MFxuXCJcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5zZXJ2aWNlTmFtZSA9IFwiY2hpcnBzdGFja1wiXG5maWxlUGF0aCA9IFwiL2NoaXJwc3RhY2svcmVnaW9uX3VzOTE1XzMudG9tbFwiXG5jb250ZW50ID0gXCJcIlwiXG4jIFRoaXMgZmlsZSBjb250YWlucyBhbiBleGFtcGxlIFVTOTE1IGV4YW1wbGUgKGNoYW5uZWxzIDI0LTMxICsgNjcpLlxuW1tyZWdpb25zXV1cblxuICAjIElEIGlzIGFuIHVzZS1kZWZpbmVkIGlkZW50aWZpZXIgZm9yIHRoaXMgcmVnaW9uLlxuICBpZD1cInVzOTE1XzNcIlxuXG4gICMgRGVzY3JpcHRpb24gaXMgYSBzaG9ydCBkZXNjcmlwdGlvbiBmb3IgdGhpcyByZWdpb24uXG4gIGRlc2NyaXB0aW9uPVwiVVM5MTUgKGNoYW5uZWxzIDI0LTMxICsgNjcpXCJcblxuICAjIENvbW1vbi1uYW1lIHJlZmVycyB0byB0aGUgY29tbW9uLW5hbWUgb2YgdGhpcyByZWdpb24gYXMgZGVmaW5lZCBieVxuICAjIHRoZSBMb1JhIEFsbGlhbmNlLlxuICBjb21tb25fbmFtZT1cIlVTOTE1XCJcblxuXG4gICMgR2F0ZXdheSBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5nYXRld2F5XVxuXG4gICAgIyBGb3JjZSBnYXRld2F5cyBhcyBwcml2YXRlLlxuICAgICNcbiAgICAjIElmIGVuYWJsZWQsIGdhdGV3YXlzIGNhbiBvbmx5IGJlIHVzZWQgYnkgZGV2aWNlcyB1bmRlciB0aGUgc2FtZSB0ZW5hbnQuXG4gICAgZm9yY2VfZ3dzX3ByaXZhdGU9ZmFsc2VcblxuICAgIFxuICAgICMgR2F0ZXdheSBiYWNrZW5kIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kXVxuXG4gICAgICAjIFRoZSBlbmFibGVkIGJhY2tlbmQgdHlwZS5cbiAgICAgIGVuYWJsZWQ9XCJtcXR0XCJcblxuICAgICAgIyBNUVRUIGNvbmZpZ3VyYXRpb24uXG4gICAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmQubXF0dF1cblxuICAgICAgICAjIFRvcGljIHByZWZpeC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoZSB0b3BpYyBwcmVmaXggY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHRoZSByZWdpb24gb2YgdGhlIGdhdGV3YXkuXG4gICAgICAgICMgTm90ZSwgdGhlcmUgaXMgbm8gbmVlZCB0byBhZGQgYSB0cmFpbGluZyAnLycgdG8gdGhlIHByZWZpeC4gVGhlIHRyYWlsaW5nXG4gICAgICAgICMgJy8nIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIHByZWZpeCBpZiBpdCBpcyBjb25maWd1cmVkLlxuICAgICAgICB0b3BpY19wcmVmaXg9XCJ1czkxNV8zXCJcblxuICAgICAgICAjIE1RVFQgc2VydmVyIChlLmcuIHNjaGVtZTovL2hvc3Q6cG9ydCB3aGVyZSBzY2hlbWUgaXMgdGNwLCBzc2wgb3Igd3MpXG4gICAgICAgIHNlcnZlcj1cInRjcDovL21vc3F1aXR0bzoxODgzXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gdXNlcm5hbWUgKG9wdGlvbmFsKVxuICAgICAgICB1c2VybmFtZT1cIlwiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHBhc3N3b3JkIChvcHRpb25hbClcbiAgICAgICAgcGFzc3dvcmQ9XCJcIlxuXG4gICAgICAgICMgUXVhbGl0eSBvZiBzZXJ2aWNlIGxldmVsXG4gICAgICAgICNcbiAgICAgICAgIyAwOiBhdCBtb3N0IG9uY2VcbiAgICAgICAgIyAxOiBhdCBsZWFzdCBvbmNlXG4gICAgICAgICMgMjogZXhhY3RseSBvbmNlXG4gICAgICAgICNcbiAgICAgICAgIyBOb3RlOiBhbiBpbmNyZWFzZSBvZiB0aGlzIHZhbHVlIHdpbGwgZGVjcmVhc2UgdGhlIHBlcmZvcm1hbmNlLlxuICAgICAgICAjIEZvciBtb3JlIGluZm9ybWF0aW9uOiBodHRwczovL3d3dy5oaXZlbXEuY29tL2Jsb2cvbXF0dC1lc3NlbnRpYWxzLXBhcnQtNi1tcXR0LXF1YWxpdHktb2Ytc2VydmljZS1sZXZlbHNcbiAgICAgICAgcW9zPTBcblxuICAgICAgICAjIENsZWFuIHNlc3Npb25cbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgXCJjbGVhbiBzZXNzaW9uXCIgZmxhZyBpbiB0aGUgY29ubmVjdCBtZXNzYWdlIHdoZW4gdGhpcyBjbGllbnRcbiAgICAgICAgIyBjb25uZWN0cyB0byBhbiBNUVRUIGJyb2tlci4gQnkgc2V0dGluZyB0aGlzIGZsYWcgeW91IGFyZSBpbmRpY2F0aW5nXG4gICAgICAgICMgdGhhdCBubyBtZXNzYWdlcyBzYXZlZCBieSB0aGUgYnJva2VyIGZvciB0aGlzIGNsaWVudCBzaG91bGQgYmUgZGVsaXZlcmVkLlxuICAgICAgICBjbGVhbl9zZXNzaW9uPWZhbHNlXG5cbiAgICAgICAgIyBDbGllbnQgSURcbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgY2xpZW50IGlkIHRvIGJlIHVzZWQgYnkgdGhpcyBjbGllbnQgd2hlbiBjb25uZWN0aW5nIHRvIHRoZSBNUVRUXG4gICAgICAgICMgYnJva2VyLiBBIGNsaWVudCBpZCBtdXN0IGJlIG5vIGxvbmdlciB0aGFuIDIzIGNoYXJhY3RlcnMuIElmIGxlZnQgYmxhbmssXG4gICAgICAgICMgYSByYW5kb20gaWQgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgQ2hpcnBTdGFjay5cbiAgICAgICAgY2xpZW50X2lkPVwiXCJcblxuICAgICAgICAjIEtlZXAgYWxpdmUgaW50ZXJ2YWwuXG4gICAgICAgICNcbiAgICAgICAgIyBUaGlzIGRlZmluZXMgdGhlIG1heGltdW0gdGltZSB0aGF0IHRoYXQgc2hvdWxkIHBhc3Mgd2l0aG91dCBjb21tdW5pY2F0aW9uXG4gICAgICAgICMgYmV0d2VlbiB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIuXG4gICAgICAgIGtlZXBfYWxpdmVfaW50ZXJ2YWw9XCIzMHNcIlxuXG4gICAgICAgICMgQ0EgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgICNcbiAgICAgICAgIyBVc2UgdGhpcyB3aGVuIHNldHRpbmcgdXAgYSBzZWN1cmUgY29ubmVjdGlvbiAod2hlbiBzZXJ2ZXIgdXNlcyBzc2w6Ly8uLi4pXG4gICAgICAgICMgYnV0IHRoZSBjZXJ0aWZpY2F0ZSB1c2VkIGJ5IHRoZSBzZXJ2ZXIgaXMgbm90IHRydXN0ZWQgYnkgYW55IENBIGNlcnRpZmljYXRlXG4gICAgICAgICMgb24gdGhlIHNlcnZlciAoZS5nLiB3aGVuIHNlbGYgZ2VuZXJhdGVkKS5cbiAgICAgICAgY2FfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBrZXkgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19rZXk9XCJcIlxuXG5cbiAgICAjIEdhdGV3YXkgY2hhbm5lbCBjb25maWd1cmF0aW9uLlxuICAgICNcbiAgICAjIE5vdGU6IHRoaXMgY29uZmlndXJhdGlvbiBpcyBvbmx5IHVzZWQgaW4gY2FzZSB0aGUgZ2F0ZXdheSBpcyB1c2luZyB0aGVcbiAgICAjIENoaXJwU3RhY2sgQ29uY2VudHJhdG9yZCBkYWVtb24uIEluIGFueSBvdGhlciBjYXNlLCB0aGlzIGNvbmZpZ3VyYXRpb24gXG4gICAgIyBpcyBpZ25vcmVkLlxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDcxMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDczMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDc1MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDc3MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDc5MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDgxMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDgzMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDg1MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MDc4MDAwMDBcbiAgICAgIGJhbmR3aWR0aD01MDAwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs4XVxuXG5cbiAgIyBSZWdpb24gc3BlY2lmaWMgbmV0d29yayBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5uZXR3b3JrXVxuICAgIFxuICAgICMgSW5zdGFsbGF0aW9uIG1hcmdpbiAoZEIpIHVzZWQgYnkgdGhlIEFEUiBlbmdpbmUuXG4gICAgI1xuICAgICMgQSBoaWdoZXIgbnVtYmVyIG1lYW5zIHRoYXQgdGhlIG5ldHdvcmstc2VydmVyIHdpbGwga2VlcCBtb3JlIG1hcmdpbixcbiAgICAjIHJlc3VsdGluZyBpbiBhIGxvd2VyIGRhdGEtcmF0ZSBidXQgZGVjcmVhc2luZyB0aGUgY2hhbmNlIHRoYXQgdGhlXG4gICAgIyBkZXZpY2UgZ2V0cyBkaXNjb25uZWN0ZWQgYmVjYXVzZSBpdCBpcyB1bmFibGUgdG8gcmVhY2ggb25lIG9mIHRoZVxuICAgICMgc3Vycm91bmRlZCBnYXRld2F5cy5cbiAgICBpbnN0YWxsYXRpb25fbWFyZ2luPTEwXG5cbiAgICAjIFJYIHdpbmRvdyAoQ2xhc3MtQSkuXG4gICAgI1xuICAgICMgU2V0IHRoaXMgdG86XG4gICAgIyAwOiBSWDEgLyBSWDJcbiAgICAjIDE6IFJYMSBvbmx5XG4gICAgIyAyOiBSWDIgb25seVxuICAgIHJ4X3dpbmRvdz0wXG5cbiAgICAjIFJYMSBkZWxheSAoMSAtIDE1IHNlY29uZHMpLlxuICAgIHJ4MV9kZWxheT0xXG5cbiAgICAjIFJYMSBkYXRhLXJhdGUgb2Zmc2V0XG4gICAgcngxX2RyX29mZnNldD0wXG5cbiAgICAjIFJYMiBkYXRhLXJhdGVcbiAgICByeDJfZHI9OFxuXG4gICAgIyBSWDIgZnJlcXVlbmN5IChIeilcbiAgICByeDJfZnJlcXVlbmN5PTkyMzMwMDAwMFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIFJYMSBkYXRhLXJhdGUgbGVzcyB0aGFuLlxuICAgICNcbiAgICAjIFByZWZlciBSWDIgb3ZlciBSWDEgYmFzZWQgb24gdGhlIFJYMSBkYXRhLXJhdGUuIFdoZW4gdGhlIFJYMSBkYXRhLXJhdGVcbiAgICAjIGlzIHNtYWxsZXIgdGhhbiB0aGUgY29uZmlndXJlZCB2YWx1ZSwgdGhlbiB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbFxuICAgICMgZmlyc3QgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBmb3IgUlgyLCBmYWlsaW5nIHRoYXQgKGUuZy4gdGhlIGdhdGV3YXlcbiAgICAjIGhhcyBhbHJlYWR5IGEgcGF5bG9hZCBzY2hlZHVsZWQgYXQgdGhlIFJYMiB0aW1pbmcpIGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX3J4MV9kcl9sdD0wXG5cbiAgICAjIFByZWZlciBSWDIgb24gbGluayBidWRnZXQuXG4gICAgI1xuICAgICMgV2hlbiB0aGUgbGluay1idWRnZXQgaXMgYmV0dGVyIGZvciBSWDIgdGhhbiBmb3IgUlgxLCB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbCBmaXJzdFxuICAgICMgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBpbiBSWDIsIGZhaWxpbmcgdGhhdCBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9saW5rX2J1ZGdldD1mYWxzZVxuXG4gICAgIyBEb3dubGluayBUWCBQb3dlciAoZEJtKVxuICAgICNcbiAgICAjIFdoZW4gc2V0IHRvIC0xLCB0aGUgZG93bmxpbmsgVFggUG93ZXIgZnJvbSB0aGUgY29uZmlndXJlZCBiYW5kIHdpbGxcbiAgICAjIGJlIHVzZWQuXG4gICAgI1xuICAgICMgUGxlYXNlIGNvbnN1bHQgdGhlIExvUmFXQU4gUmVnaW9uYWwgUGFyYW1ldGVycyBhbmQgbG9jYWwgcmVndWxhdGlvbnNcbiAgICAjIGZvciB2YWxpZCBhbmQgbGVnYWwgb3B0aW9ucy4gTm90ZSB0aGF0IHRoZSBjb25maWd1cmVkIFRYIFBvd2VyIG11c3QgYmVcbiAgICAjIHN1cHBvcnRlZCBieSB5b3VyIGdhdGV3YXkocykuXG4gICAgZG93bmxpbmtfdHhfcG93ZXI9LTFcblxuICAgICMgQURSIGlzIGRpc2FibGVkLlxuICAgIGFkcl9kaXNhYmxlZD1mYWxzZVxuXG4gICAgIyBNaW5pbXVtIGRhdGEtcmF0ZS5cbiAgICBtaW5fZHI9MFxuXG4gICAgIyBNYXhpbXVtIGRhdGEtcmF0ZS5cbiAgICBtYXhfZHI9M1xuXG4gICAgIyBFbmFibGVkIHVwbGluayBjaGFubmVscy5cbiAgICAjXG4gICAgIyBVc2UgdGhpcyB3aGVuIG9ueSBhIHN1Yi1zZXQgb2YgdGhlIGJ5IGRlZmF1bHQgZW5hYmxlZCBjaGFubmVscyBhcmUgYmVpbmdcbiAgICAjIHVzZWQuIEZvciBleGFtcGxlIHdoZW4gb25seSB1c2luZyB0aGUgZmlyc3QgOCBjaGFubmVscyBvZiB0aGUgVVMgYmFuZC5cbiAgICAjIE5vdGU6IHdoZW4gbGVmdCBibGFuayAvIGVtcHR5IGFycmF5LCBhbGwgY2hhbm5lbHMgd2lsbCBiZSBlbmFibGVkLlxuICAgIGVuYWJsZWRfdXBsaW5rX2NoYW5uZWxzPVsyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDY3XVxuXG5cbiAgICAjIFJlam9pbi1yZXF1ZXN0IGNvbmZpZ3VyYXRpb24gKExvUmFXQU4gMS4xKVxuICAgIFtyZWdpb25zLm5ldHdvcmsucmVqb2luX3JlcXVlc3RdXG5cbiAgICAgICMgUmVxdWVzdCBkZXZpY2VzIHRvIHBlcmlvZGljYWxseSBzZW5kIHJlam9pbi1yZXF1ZXN0cy5cbiAgICAgIGVuYWJsZWQ9ZmFsc2VcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfY291bnRfbiArIDQpXG4gICAgICAjIHVwbGluayBtZXNzYWdlcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgbWF4X2NvdW50X249MFxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF90aW1lX24gKyAxMClcbiAgICAgICMgc2Vjb25kcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgI1xuICAgICAgIyAwICA9IHJvdWdobHkgMTcgbWludXRlc1xuICAgICAgIyAxNSA9IGFib3V0IDEgeWVhclxuICAgICAgbWF4X3RpbWVfbj0wXG4gICAgXG5cbiAgICAjIENsYXNzLUIgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5uZXR3b3JrLmNsYXNzX2JdXG5cbiAgICAgICMgUGluZy1zbG90IGRhdGEtcmF0ZS4gXG4gICAgICBwaW5nX3Nsb3RfZHI9OFxuXG4gICAgICAjIFBpbmctc2xvdCBmcmVxdWVuY3kgKEh6KVxuICAgICAgI1xuICAgICAgIyBzZXQgdGhpcyB0byAwIHRvIHVzZSB0aGUgZGVmYXVsdCBmcmVxdWVuY3kgcGxhbiBmb3IgdGhlIGNvbmZpZ3VyZWQgcmVnaW9uXG4gICAgICAjICh3aGljaCBjb3VsZCBiZSBmcmVxdWVuY3kgaG9wcGluZykuXG4gICAgICBwaW5nX3Nsb3RfZnJlcXVlbmN5PTBcblwiXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuc2VydmljZU5hbWUgPSBcImNoaXJwc3RhY2tcIlxuZmlsZVBhdGggPSBcIi9jaGlycHN0YWNrL3JlZ2lvbl91czkxNV80LnRvbWxcIlxuY29udGVudCA9IFwiXCJcIlxuIyBUaGlzIGZpbGUgY29udGFpbnMgYW4gZXhhbXBsZSBVUzkxNSBleGFtcGxlIChjaGFubmVscyAzMi0zOSArIDY4KS5cbltbcmVnaW9uc11dXG5cbiAgIyBJRCBpcyBhbiB1c2UtZGVmaW5lZCBpZGVudGlmaWVyIGZvciB0aGlzIHJlZ2lvbi5cbiAgaWQ9XCJ1czkxNV80XCJcblxuICAjIERlc2NyaXB0aW9uIGlzIGEgc2hvcnQgZGVzY3JpcHRpb24gZm9yIHRoaXMgcmVnaW9uLlxuICBkZXNjcmlwdGlvbj1cIlVTOTE1IChjaGFubmVscyAzMi0zOSArIDY4KVwiXG5cbiAgIyBDb21tb24tbmFtZSByZWZlcnMgdG8gdGhlIGNvbW1vbi1uYW1lIG9mIHRoaXMgcmVnaW9uIGFzIGRlZmluZWQgYnlcbiAgIyB0aGUgTG9SYSBBbGxpYW5jZS5cbiAgY29tbW9uX25hbWU9XCJVUzkxNVwiXG5cblxuICAjIEdhdGV3YXkgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMuZ2F0ZXdheV1cblxuICAgICMgRm9yY2UgZ2F0ZXdheXMgYXMgcHJpdmF0ZS5cbiAgICAjXG4gICAgIyBJZiBlbmFibGVkLCBnYXRld2F5cyBjYW4gb25seSBiZSB1c2VkIGJ5IGRldmljZXMgdW5kZXIgdGhlIHNhbWUgdGVuYW50LlxuICAgIGZvcmNlX2d3c19wcml2YXRlPWZhbHNlXG5cbiAgICBcbiAgICAjIEdhdGV3YXkgYmFja2VuZCBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZF1cblxuICAgICAgIyBUaGUgZW5hYmxlZCBiYWNrZW5kIHR5cGUuXG4gICAgICBlbmFibGVkPVwibXF0dFwiXG5cbiAgICAgICMgTVFUVCBjb25maWd1cmF0aW9uLlxuICAgICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kLm1xdHRdXG5cbiAgICAgICAgIyBUb3BpYyBwcmVmaXguXG4gICAgICAgICNcbiAgICAgICAgIyBUaGUgdG9waWMgcHJlZml4IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB0aGUgcmVnaW9uIG9mIHRoZSBnYXRld2F5LlxuICAgICAgICAjIE5vdGUsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYWRkIGEgdHJhaWxpbmcgJy8nIHRvIHRoZSBwcmVmaXguIFRoZSB0cmFpbGluZ1xuICAgICAgICAjICcvJyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBwcmVmaXggaWYgaXQgaXMgY29uZmlndXJlZC5cbiAgICAgICAgdG9waWNfcHJlZml4PVwidXM5MTVfNFwiXG5cbiAgICAgICAgIyBNUVRUIHNlcnZlciAoZS5nLiBzY2hlbWU6Ly9ob3N0OnBvcnQgd2hlcmUgc2NoZW1lIGlzIHRjcCwgc3NsIG9yIHdzKVxuICAgICAgICBzZXJ2ZXI9XCJ0Y3A6Ly9tb3NxdWl0dG86MTg4M1wiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHVzZXJuYW1lIChvcHRpb25hbClcbiAgICAgICAgdXNlcm5hbWU9XCJcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiBwYXNzd29yZCAob3B0aW9uYWwpXG4gICAgICAgIHBhc3N3b3JkPVwiXCJcblxuICAgICAgICAjIFF1YWxpdHkgb2Ygc2VydmljZSBsZXZlbFxuICAgICAgICAjXG4gICAgICAgICMgMDogYXQgbW9zdCBvbmNlXG4gICAgICAgICMgMTogYXQgbGVhc3Qgb25jZVxuICAgICAgICAjIDI6IGV4YWN0bHkgb25jZVxuICAgICAgICAjXG4gICAgICAgICMgTm90ZTogYW4gaW5jcmVhc2Ugb2YgdGhpcyB2YWx1ZSB3aWxsIGRlY3JlYXNlIHRoZSBwZXJmb3JtYW5jZS5cbiAgICAgICAgIyBGb3IgbW9yZSBpbmZvcm1hdGlvbjogaHR0cHM6Ly93d3cuaGl2ZW1xLmNvbS9ibG9nL21xdHQtZXNzZW50aWFscy1wYXJ0LTYtbXF0dC1xdWFsaXR5LW9mLXNlcnZpY2UtbGV2ZWxzXG4gICAgICAgIHFvcz0wXG5cbiAgICAgICAgIyBDbGVhbiBzZXNzaW9uXG4gICAgICAgICNcbiAgICAgICAgIyBTZXQgdGhlIFwiY2xlYW4gc2Vzc2lvblwiIGZsYWcgaW4gdGhlIGNvbm5lY3QgbWVzc2FnZSB3aGVuIHRoaXMgY2xpZW50XG4gICAgICAgICMgY29ubmVjdHMgdG8gYW4gTVFUVCBicm9rZXIuIEJ5IHNldHRpbmcgdGhpcyBmbGFnIHlvdSBhcmUgaW5kaWNhdGluZ1xuICAgICAgICAjIHRoYXQgbm8gbWVzc2FnZXMgc2F2ZWQgYnkgdGhlIGJyb2tlciBmb3IgdGhpcyBjbGllbnQgc2hvdWxkIGJlIGRlbGl2ZXJlZC5cbiAgICAgICAgY2xlYW5fc2Vzc2lvbj1mYWxzZVxuXG4gICAgICAgICMgQ2xpZW50IElEXG4gICAgICAgICNcbiAgICAgICAgIyBTZXQgdGhlIGNsaWVudCBpZCB0byBiZSB1c2VkIGJ5IHRoaXMgY2xpZW50IHdoZW4gY29ubmVjdGluZyB0byB0aGUgTVFUVFxuICAgICAgICAjIGJyb2tlci4gQSBjbGllbnQgaWQgbXVzdCBiZSBubyBsb25nZXIgdGhhbiAyMyBjaGFyYWN0ZXJzLiBJZiBsZWZ0IGJsYW5rLFxuICAgICAgICAjIGEgcmFuZG9tIGlkIHdpbGwgYmUgZ2VuZXJhdGVkIGJ5IENoaXJwU3RhY2suXG4gICAgICAgIGNsaWVudF9pZD1cIlwiXG5cbiAgICAgICAgIyBLZWVwIGFsaXZlIGludGVydmFsLlxuICAgICAgICAjXG4gICAgICAgICMgVGhpcyBkZWZpbmVzIHRoZSBtYXhpbXVtIHRpbWUgdGhhdCB0aGF0IHNob3VsZCBwYXNzIHdpdGhvdXQgY29tbXVuaWNhdGlvblxuICAgICAgICAjIGJldHdlZW4gdGhlIGNsaWVudCBhbmQgc2VydmVyLlxuICAgICAgICBrZWVwX2FsaXZlX2ludGVydmFsPVwiMzBzXCJcblxuICAgICAgICAjIENBIGNlcnRpZmljYXRlIGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICAjXG4gICAgICAgICMgVXNlIHRoaXMgd2hlbiBzZXR0aW5nIHVwIGEgc2VjdXJlIGNvbm5lY3Rpb24gKHdoZW4gc2VydmVyIHVzZXMgc3NsOi8vLi4uKVxuICAgICAgICAjIGJ1dCB0aGUgY2VydGlmaWNhdGUgdXNlZCBieSB0aGUgc2VydmVyIGlzIG5vdCB0cnVzdGVkIGJ5IGFueSBDQSBjZXJ0aWZpY2F0ZVxuICAgICAgICAjIG9uIHRoZSBzZXJ2ZXIgKGUuZy4gd2hlbiBzZWxmIGdlbmVyYXRlZCkuXG4gICAgICAgIGNhX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGNlcnRpZmljYXRlIGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICB0bHNfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMga2V5IGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICB0bHNfa2V5PVwiXCJcblxuXG4gICAgIyBHYXRld2F5IGNoYW5uZWwgY29uZmlndXJhdGlvbi5cbiAgICAjXG4gICAgIyBOb3RlOiB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgb25seSB1c2VkIGluIGNhc2UgdGhlIGdhdGV3YXkgaXMgdXNpbmcgdGhlXG4gICAgIyBDaGlycFN0YWNrIENvbmNlbnRyYXRvcmQgZGFlbW9uLiBJbiBhbnkgb3RoZXIgY2FzZSwgdGhpcyBjb25maWd1cmF0aW9uIFxuICAgICMgaXMgaWdub3JlZC5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTA4NzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTBdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTA4OTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTBdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTA5MTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTBdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTA5MzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTBdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTA5NTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTBdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTA5NzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTBdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTA5OTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTBdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTEwMTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTBdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTA5NDAwMDAwXG4gICAgICBiYW5kd2lkdGg9NTAwMDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bOF1cblxuXG4gICMgUmVnaW9uIHNwZWNpZmljIG5ldHdvcmsgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMubmV0d29ya11cbiAgICBcbiAgICAjIEluc3RhbGxhdGlvbiBtYXJnaW4gKGRCKSB1c2VkIGJ5IHRoZSBBRFIgZW5naW5lLlxuICAgICNcbiAgICAjIEEgaGlnaGVyIG51bWJlciBtZWFucyB0aGF0IHRoZSBuZXR3b3JrLXNlcnZlciB3aWxsIGtlZXAgbW9yZSBtYXJnaW4sXG4gICAgIyByZXN1bHRpbmcgaW4gYSBsb3dlciBkYXRhLXJhdGUgYnV0IGRlY3JlYXNpbmcgdGhlIGNoYW5jZSB0aGF0IHRoZVxuICAgICMgZGV2aWNlIGdldHMgZGlzY29ubmVjdGVkIGJlY2F1c2UgaXQgaXMgdW5hYmxlIHRvIHJlYWNoIG9uZSBvZiB0aGVcbiAgICAjIHN1cnJvdW5kZWQgZ2F0ZXdheXMuXG4gICAgaW5zdGFsbGF0aW9uX21hcmdpbj0xMFxuXG4gICAgIyBSWCB3aW5kb3cgKENsYXNzLUEpLlxuICAgICNcbiAgICAjIFNldCB0aGlzIHRvOlxuICAgICMgMDogUlgxIC8gUlgyXG4gICAgIyAxOiBSWDEgb25seVxuICAgICMgMjogUlgyIG9ubHlcbiAgICByeF93aW5kb3c9MFxuXG4gICAgIyBSWDEgZGVsYXkgKDEgLSAxNSBzZWNvbmRzKS5cbiAgICByeDFfZGVsYXk9MVxuXG4gICAgIyBSWDEgZGF0YS1yYXRlIG9mZnNldFxuICAgIHJ4MV9kcl9vZmZzZXQ9MFxuXG4gICAgIyBSWDIgZGF0YS1yYXRlXG4gICAgcngyX2RyPThcblxuICAgICMgUlgyIGZyZXF1ZW5jeSAoSHopXG4gICAgcngyX2ZyZXF1ZW5jeT05MjMzMDAwMDBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBSWDEgZGF0YS1yYXRlIGxlc3MgdGhhbi5cbiAgICAjXG4gICAgIyBQcmVmZXIgUlgyIG92ZXIgUlgxIGJhc2VkIG9uIHRoZSBSWDEgZGF0YS1yYXRlLiBXaGVuIHRoZSBSWDEgZGF0YS1yYXRlXG4gICAgIyBpcyBzbWFsbGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgdmFsdWUsIHRoZW4gdGhlIE5ldHdvcmsgU2VydmVyIHdpbGxcbiAgICAjIGZpcnN0IHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgZm9yIFJYMiwgZmFpbGluZyB0aGF0IChlLmcuIHRoZSBnYXRld2F5XG4gICAgIyBoYXMgYWxyZWFkeSBhIHBheWxvYWQgc2NoZWR1bGVkIGF0IHRoZSBSWDIgdGltaW5nKSBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9yeDFfZHJfbHQ9MFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIGxpbmsgYnVkZ2V0LlxuICAgICNcbiAgICAjIFdoZW4gdGhlIGxpbmstYnVkZ2V0IGlzIGJldHRlciBmb3IgUlgyIHRoYW4gZm9yIFJYMSwgdGhlIE5ldHdvcmsgU2VydmVyIHdpbGwgZmlyc3RcbiAgICAjIHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgaW4gUlgyLCBmYWlsaW5nIHRoYXQgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fbGlua19idWRnZXQ9ZmFsc2VcblxuICAgICMgRG93bmxpbmsgVFggUG93ZXIgKGRCbSlcbiAgICAjXG4gICAgIyBXaGVuIHNldCB0byAtMSwgdGhlIGRvd25saW5rIFRYIFBvd2VyIGZyb20gdGhlIGNvbmZpZ3VyZWQgYmFuZCB3aWxsXG4gICAgIyBiZSB1c2VkLlxuICAgICNcbiAgICAjIFBsZWFzZSBjb25zdWx0IHRoZSBMb1JhV0FOIFJlZ2lvbmFsIFBhcmFtZXRlcnMgYW5kIGxvY2FsIHJlZ3VsYXRpb25zXG4gICAgIyBmb3IgdmFsaWQgYW5kIGxlZ2FsIG9wdGlvbnMuIE5vdGUgdGhhdCB0aGUgY29uZmlndXJlZCBUWCBQb3dlciBtdXN0IGJlXG4gICAgIyBzdXBwb3J0ZWQgYnkgeW91ciBnYXRld2F5KHMpLlxuICAgIGRvd25saW5rX3R4X3Bvd2VyPS0xXG5cbiAgICAjIEFEUiBpcyBkaXNhYmxlZC5cbiAgICBhZHJfZGlzYWJsZWQ9ZmFsc2VcblxuICAgICMgTWluaW11bSBkYXRhLXJhdGUuXG4gICAgbWluX2RyPTBcblxuICAgICMgTWF4aW11bSBkYXRhLXJhdGUuXG4gICAgbWF4X2RyPTNcblxuICAgICMgRW5hYmxlZCB1cGxpbmsgY2hhbm5lbHMuXG4gICAgI1xuICAgICMgVXNlIHRoaXMgd2hlbiBvbnkgYSBzdWItc2V0IG9mIHRoZSBieSBkZWZhdWx0IGVuYWJsZWQgY2hhbm5lbHMgYXJlIGJlaW5nXG4gICAgIyB1c2VkLiBGb3IgZXhhbXBsZSB3aGVuIG9ubHkgdXNpbmcgdGhlIGZpcnN0IDggY2hhbm5lbHMgb2YgdGhlIFVTIGJhbmQuXG4gICAgIyBOb3RlOiB3aGVuIGxlZnQgYmxhbmsgLyBlbXB0eSBhcnJheSwgYWxsIGNoYW5uZWxzIHdpbGwgYmUgZW5hYmxlZC5cbiAgICBlbmFibGVkX3VwbGlua19jaGFubmVscz1bMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5LCA2OF1cblxuXG4gICAgIyBSZWpvaW4tcmVxdWVzdCBjb25maWd1cmF0aW9uIChMb1JhV0FOIDEuMSlcbiAgICBbcmVnaW9ucy5uZXR3b3JrLnJlam9pbl9yZXF1ZXN0XVxuXG4gICAgICAjIFJlcXVlc3QgZGV2aWNlcyB0byBwZXJpb2RpY2FsbHkgc2VuZCByZWpvaW4tcmVxdWVzdHMuXG4gICAgICBlbmFibGVkPWZhbHNlXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X2NvdW50X24gKyA0KVxuICAgICAgIyB1cGxpbmsgbWVzc2FnZXMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgIG1heF9jb3VudF9uPTBcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfdGltZV9uICsgMTApXG4gICAgICAjIHNlY29uZHMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgICNcbiAgICAgICMgMCAgPSByb3VnaGx5IDE3IG1pbnV0ZXNcbiAgICAgICMgMTUgPSBhYm91dCAxIHllYXJcbiAgICAgIG1heF90aW1lX249MFxuICAgIFxuXG4gICAgIyBDbGFzcy1CIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMubmV0d29yay5jbGFzc19iXVxuXG4gICAgICAjIFBpbmctc2xvdCBkYXRhLXJhdGUuIFxuICAgICAgcGluZ19zbG90X2RyPThcblxuICAgICAgIyBQaW5nLXNsb3QgZnJlcXVlbmN5IChIeilcbiAgICAgICNcbiAgICAgICMgc2V0IHRoaXMgdG8gMCB0byB1c2UgdGhlIGRlZmF1bHQgZnJlcXVlbmN5IHBsYW4gZm9yIHRoZSBjb25maWd1cmVkIHJlZ2lvblxuICAgICAgIyAod2hpY2ggY291bGQgYmUgZnJlcXVlbmN5IGhvcHBpbmcpLlxuICAgICAgcGluZ19zbG90X2ZyZXF1ZW5jeT0wXG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbnNlcnZpY2VOYW1lID0gXCJjaGlycHN0YWNrXCJcbmZpbGVQYXRoID0gXCIvY2hpcnBzdGFjay9yZWdpb25fdXM5MTVfNS50b21sXCJcbmNvbnRlbnQgPSBcIlwiXCJcbiMgVGhpcyBmaWxlIGNvbnRhaW5zIGFuIGV4YW1wbGUgVVM5MTUgZXhhbXBsZSAoY2hhbm5lbHMgNDAtNDcgKyA2OSkuXG5bW3JlZ2lvbnNdXVxuXG4gICMgSUQgaXMgYW4gdXNlLWRlZmluZWQgaWRlbnRpZmllciBmb3IgdGhpcyByZWdpb24uXG4gIGlkPVwidXM5MTVfNVwiXG5cbiAgIyBEZXNjcmlwdGlvbiBpcyBhIHNob3J0IGRlc2NyaXB0aW9uIGZvciB0aGlzIHJlZ2lvbi5cbiAgZGVzY3JpcHRpb249XCJVUzkxNSAoY2hhbm5lbHMgNDAtNDcgKyA2OSlcIlxuXG4gICMgQ29tbW9uLW5hbWUgcmVmZXJzIHRvIHRoZSBjb21tb24tbmFtZSBvZiB0aGlzIHJlZ2lvbiBhcyBkZWZpbmVkIGJ5XG4gICMgdGhlIExvUmEgQWxsaWFuY2UuXG4gIGNvbW1vbl9uYW1lPVwiVVM5MTVcIlxuXG5cbiAgIyBHYXRld2F5IGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLmdhdGV3YXldXG5cbiAgICAjIEZvcmNlIGdhdGV3YXlzIGFzIHByaXZhdGUuXG4gICAgI1xuICAgICMgSWYgZW5hYmxlZCwgZ2F0ZXdheXMgY2FuIG9ubHkgYmUgdXNlZCBieSBkZXZpY2VzIHVuZGVyIHRoZSBzYW1lIHRlbmFudC5cbiAgICBmb3JjZV9nd3NfcHJpdmF0ZT1mYWxzZVxuXG4gICAgXG4gICAgIyBHYXRld2F5IGJhY2tlbmQgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmRdXG5cbiAgICAgICMgVGhlIGVuYWJsZWQgYmFja2VuZCB0eXBlLlxuICAgICAgZW5hYmxlZD1cIm1xdHRcIlxuXG4gICAgICAjIE1RVFQgY29uZmlndXJhdGlvbi5cbiAgICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZC5tcXR0XVxuXG4gICAgICAgICMgVG9waWMgcHJlZml4LlxuICAgICAgICAjXG4gICAgICAgICMgVGhlIHRvcGljIHByZWZpeCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgdGhlIHJlZ2lvbiBvZiB0aGUgZ2F0ZXdheS5cbiAgICAgICAgIyBOb3RlLCB0aGVyZSBpcyBubyBuZWVkIHRvIGFkZCBhIHRyYWlsaW5nICcvJyB0byB0aGUgcHJlZml4LiBUaGUgdHJhaWxpbmdcbiAgICAgICAgIyAnLycgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgcHJlZml4IGlmIGl0IGlzIGNvbmZpZ3VyZWQuXG4gICAgICAgIHRvcGljX3ByZWZpeD1cInVzOTE1XzVcIlxuXG4gICAgICAgICMgTVFUVCBzZXJ2ZXIgKGUuZy4gc2NoZW1lOi8vaG9zdDpwb3J0IHdoZXJlIHNjaGVtZSBpcyB0Y3AsIHNzbCBvciB3cylcbiAgICAgICAgc2VydmVyPVwidGNwOi8vbW9zcXVpdHRvOjE4ODNcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiB1c2VybmFtZSAob3B0aW9uYWwpXG4gICAgICAgIHVzZXJuYW1lPVwiXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gcGFzc3dvcmQgKG9wdGlvbmFsKVxuICAgICAgICBwYXNzd29yZD1cIlwiXG5cbiAgICAgICAgIyBRdWFsaXR5IG9mIHNlcnZpY2UgbGV2ZWxcbiAgICAgICAgI1xuICAgICAgICAjIDA6IGF0IG1vc3Qgb25jZVxuICAgICAgICAjIDE6IGF0IGxlYXN0IG9uY2VcbiAgICAgICAgIyAyOiBleGFjdGx5IG9uY2VcbiAgICAgICAgI1xuICAgICAgICAjIE5vdGU6IGFuIGluY3JlYXNlIG9mIHRoaXMgdmFsdWUgd2lsbCBkZWNyZWFzZSB0aGUgcGVyZm9ybWFuY2UuXG4gICAgICAgICMgRm9yIG1vcmUgaW5mb3JtYXRpb246IGh0dHBzOi8vd3d3LmhpdmVtcS5jb20vYmxvZy9tcXR0LWVzc2VudGlhbHMtcGFydC02LW1xdHQtcXVhbGl0eS1vZi1zZXJ2aWNlLWxldmVsc1xuICAgICAgICBxb3M9MFxuXG4gICAgICAgICMgQ2xlYW4gc2Vzc2lvblxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBcImNsZWFuIHNlc3Npb25cIiBmbGFnIGluIHRoZSBjb25uZWN0IG1lc3NhZ2Ugd2hlbiB0aGlzIGNsaWVudFxuICAgICAgICAjIGNvbm5lY3RzIHRvIGFuIE1RVFQgYnJva2VyLiBCeSBzZXR0aW5nIHRoaXMgZmxhZyB5b3UgYXJlIGluZGljYXRpbmdcbiAgICAgICAgIyB0aGF0IG5vIG1lc3NhZ2VzIHNhdmVkIGJ5IHRoZSBicm9rZXIgZm9yIHRoaXMgY2xpZW50IHNob3VsZCBiZSBkZWxpdmVyZWQuXG4gICAgICAgIGNsZWFuX3Nlc3Npb249ZmFsc2VcblxuICAgICAgICAjIENsaWVudCBJRFxuICAgICAgICAjXG4gICAgICAgICMgU2V0IHRoZSBjbGllbnQgaWQgdG8gYmUgdXNlZCBieSB0aGlzIGNsaWVudCB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIE1RVFRcbiAgICAgICAgIyBicm9rZXIuIEEgY2xpZW50IGlkIG11c3QgYmUgbm8gbG9uZ2VyIHRoYW4gMjMgY2hhcmFjdGVycy4gSWYgbGVmdCBibGFuayxcbiAgICAgICAgIyBhIHJhbmRvbSBpZCB3aWxsIGJlIGdlbmVyYXRlZCBieSBDaGlycFN0YWNrLlxuICAgICAgICBjbGllbnRfaWQ9XCJcIlxuXG4gICAgICAgICMgS2VlcCBhbGl2ZSBpbnRlcnZhbC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoaXMgZGVmaW5lcyB0aGUgbWF4aW11bSB0aW1lIHRoYXQgdGhhdCBzaG91bGQgcGFzcyB3aXRob3V0IGNvbW11bmljYXRpb25cbiAgICAgICAgIyBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlci5cbiAgICAgICAga2VlcF9hbGl2ZV9pbnRlcnZhbD1cIjMwc1wiXG5cbiAgICAgICAgIyBDQSBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgI1xuICAgICAgICAjIFVzZSB0aGlzIHdoZW4gc2V0dGluZyB1cCBhIHNlY3VyZSBjb25uZWN0aW9uICh3aGVuIHNlcnZlciB1c2VzIHNzbDovLy4uLilcbiAgICAgICAgIyBidXQgdGhlIGNlcnRpZmljYXRlIHVzZWQgYnkgdGhlIHNlcnZlciBpcyBub3QgdHJ1c3RlZCBieSBhbnkgQ0EgY2VydGlmaWNhdGVcbiAgICAgICAgIyBvbiB0aGUgc2VydmVyIChlLmcuIHdoZW4gc2VsZiBnZW5lcmF0ZWQpLlxuICAgICAgICBjYV9jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGtleSBmaWxlIChvcHRpb25hbClcbiAgICAgICAgdGxzX2tleT1cIlwiXG5cblxuICAgICMgR2F0ZXdheSBjaGFubmVsIGNvbmZpZ3VyYXRpb24uXG4gICAgI1xuICAgICMgTm90ZTogdGhpcyBjb25maWd1cmF0aW9uIGlzIG9ubHkgdXNlZCBpbiBjYXNlIHRoZSBnYXRld2F5IGlzIHVzaW5nIHRoZVxuICAgICMgQ2hpcnBTdGFjayBDb25jZW50cmF0b3JkIGRhZW1vbi4gSW4gYW55IG90aGVyIGNhc2UsIHRoaXMgY29uZmlndXJhdGlvbiBcbiAgICAjIGlzIGlnbm9yZWQuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkxMDMwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkxMDUwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkxMDcwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkxMDkwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkxMTEwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkxMTMwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkxMTUwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkxMTcwMDAwMFxuICAgICAgYmFuZHdpZHRoPTEyNTAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzcsIDgsIDksIDEwXVxuXG4gICAgW1tyZWdpb25zLmdhdGV3YXkuY2hhbm5lbHNdXVxuICAgICAgZnJlcXVlbmN5PTkxMTAwMDAwMFxuICAgICAgYmFuZHdpZHRoPTUwMDAwMFxuICAgICAgbW9kdWxhdGlvbj1cIkxPUkFcIlxuICAgICAgc3ByZWFkaW5nX2ZhY3RvcnM9WzhdXG5cblxuICAjIFJlZ2lvbiBzcGVjaWZpYyBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uXG4gIFtyZWdpb25zLm5ldHdvcmtdXG4gICAgXG4gICAgIyBJbnN0YWxsYXRpb24gbWFyZ2luIChkQikgdXNlZCBieSB0aGUgQURSIGVuZ2luZS5cbiAgICAjXG4gICAgIyBBIGhpZ2hlciBudW1iZXIgbWVhbnMgdGhhdCB0aGUgbmV0d29yay1zZXJ2ZXIgd2lsbCBrZWVwIG1vcmUgbWFyZ2luLFxuICAgICMgcmVzdWx0aW5nIGluIGEgbG93ZXIgZGF0YS1yYXRlIGJ1dCBkZWNyZWFzaW5nIHRoZSBjaGFuY2UgdGhhdCB0aGVcbiAgICAjIGRldmljZSBnZXRzIGRpc2Nvbm5lY3RlZCBiZWNhdXNlIGl0IGlzIHVuYWJsZSB0byByZWFjaCBvbmUgb2YgdGhlXG4gICAgIyBzdXJyb3VuZGVkIGdhdGV3YXlzLlxuICAgIGluc3RhbGxhdGlvbl9tYXJnaW49MTBcblxuICAgICMgUlggd2luZG93IChDbGFzcy1BKS5cbiAgICAjXG4gICAgIyBTZXQgdGhpcyB0bzpcbiAgICAjIDA6IFJYMSAvIFJYMlxuICAgICMgMTogUlgxIG9ubHlcbiAgICAjIDI6IFJYMiBvbmx5XG4gICAgcnhfd2luZG93PTBcblxuICAgICMgUlgxIGRlbGF5ICgxIC0gMTUgc2Vjb25kcykuXG4gICAgcngxX2RlbGF5PTFcblxuICAgICMgUlgxIGRhdGEtcmF0ZSBvZmZzZXRcbiAgICByeDFfZHJfb2Zmc2V0PTBcblxuICAgICMgUlgyIGRhdGEtcmF0ZVxuICAgIHJ4Ml9kcj04XG5cbiAgICAjIFJYMiBmcmVxdWVuY3kgKEh6KVxuICAgIHJ4Ml9mcmVxdWVuY3k9OTIzMzAwMDAwXG5cbiAgICAjIFByZWZlciBSWDIgb24gUlgxIGRhdGEtcmF0ZSBsZXNzIHRoYW4uXG4gICAgI1xuICAgICMgUHJlZmVyIFJYMiBvdmVyIFJYMSBiYXNlZCBvbiB0aGUgUlgxIGRhdGEtcmF0ZS4gV2hlbiB0aGUgUlgxIGRhdGEtcmF0ZVxuICAgICMgaXMgc21hbGxlciB0aGFuIHRoZSBjb25maWd1cmVkIHZhbHVlLCB0aGVuIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsXG4gICAgIyBmaXJzdCB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGZvciBSWDIsIGZhaWxpbmcgdGhhdCAoZS5nLiB0aGUgZ2F0ZXdheVxuICAgICMgaGFzIGFscmVhZHkgYSBwYXlsb2FkIHNjaGVkdWxlZCBhdCB0aGUgUlgyIHRpbWluZykgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fcngxX2RyX2x0PTBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBsaW5rIGJ1ZGdldC5cbiAgICAjXG4gICAgIyBXaGVuIHRoZSBsaW5rLWJ1ZGdldCBpcyBiZXR0ZXIgZm9yIFJYMiB0aGFuIGZvciBSWDEsIHRoZSBOZXR3b3JrIFNlcnZlciB3aWxsIGZpcnN0XG4gICAgIyB0cnkgdG8gc2NoZWR1bGUgdGhlIGRvd25saW5rIGluIFJYMiwgZmFpbGluZyB0aGF0IGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX2xpbmtfYnVkZ2V0PWZhbHNlXG5cbiAgICAjIERvd25saW5rIFRYIFBvd2VyIChkQm0pXG4gICAgI1xuICAgICMgV2hlbiBzZXQgdG8gLTEsIHRoZSBkb3dubGluayBUWCBQb3dlciBmcm9tIHRoZSBjb25maWd1cmVkIGJhbmQgd2lsbFxuICAgICMgYmUgdXNlZC5cbiAgICAjXG4gICAgIyBQbGVhc2UgY29uc3VsdCB0aGUgTG9SYVdBTiBSZWdpb25hbCBQYXJhbWV0ZXJzIGFuZCBsb2NhbCByZWd1bGF0aW9uc1xuICAgICMgZm9yIHZhbGlkIGFuZCBsZWdhbCBvcHRpb25zLiBOb3RlIHRoYXQgdGhlIGNvbmZpZ3VyZWQgVFggUG93ZXIgbXVzdCBiZVxuICAgICMgc3VwcG9ydGVkIGJ5IHlvdXIgZ2F0ZXdheShzKS5cbiAgICBkb3dubGlua190eF9wb3dlcj0tMVxuXG4gICAgIyBBRFIgaXMgZGlzYWJsZWQuXG4gICAgYWRyX2Rpc2FibGVkPWZhbHNlXG5cbiAgICAjIE1pbmltdW0gZGF0YS1yYXRlLlxuICAgIG1pbl9kcj0wXG5cbiAgICAjIE1heGltdW0gZGF0YS1yYXRlLlxuICAgIG1heF9kcj0zXG5cbiAgICAjIEVuYWJsZWQgdXBsaW5rIGNoYW5uZWxzLlxuICAgICNcbiAgICAjIFVzZSB0aGlzIHdoZW4gb255IGEgc3ViLXNldCBvZiB0aGUgYnkgZGVmYXVsdCBlbmFibGVkIGNoYW5uZWxzIGFyZSBiZWluZ1xuICAgICMgdXNlZC4gRm9yIGV4YW1wbGUgd2hlbiBvbmx5IHVzaW5nIHRoZSBmaXJzdCA4IGNoYW5uZWxzIG9mIHRoZSBVUyBiYW5kLlxuICAgICMgTm90ZTogd2hlbiBsZWZ0IGJsYW5rIC8gZW1wdHkgYXJyYXksIGFsbCBjaGFubmVscyB3aWxsIGJlIGVuYWJsZWQuXG4gICAgZW5hYmxlZF91cGxpbmtfY2hhbm5lbHM9WzQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNjldXG5cblxuICAgICMgUmVqb2luLXJlcXVlc3QgY29uZmlndXJhdGlvbiAoTG9SYVdBTiAxLjEpXG4gICAgW3JlZ2lvbnMubmV0d29yay5yZWpvaW5fcmVxdWVzdF1cblxuICAgICAgIyBSZXF1ZXN0IGRldmljZXMgdG8gcGVyaW9kaWNhbGx5IHNlbmQgcmVqb2luLXJlcXVlc3RzLlxuICAgICAgZW5hYmxlZD1mYWxzZVxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF9jb3VudF9uICsgNClcbiAgICAgICMgdXBsaW5rIG1lc3NhZ2VzLiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gMTUuXG4gICAgICBtYXhfY291bnRfbj0wXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X3RpbWVfbiArIDEwKVxuICAgICAgIyBzZWNvbmRzLiBWYWxpZCB2YWx1ZXMgYXJlIDAgdG8gMTUuXG4gICAgICAjXG4gICAgICAjIDAgID0gcm91Z2hseSAxNyBtaW51dGVzXG4gICAgICAjIDE1ID0gYWJvdXQgMSB5ZWFyXG4gICAgICBtYXhfdGltZV9uPTBcbiAgICBcblxuICAgICMgQ2xhc3MtQiBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLm5ldHdvcmsuY2xhc3NfYl1cblxuICAgICAgIyBQaW5nLXNsb3QgZGF0YS1yYXRlLiBcbiAgICAgIHBpbmdfc2xvdF9kcj04XG5cbiAgICAgICMgUGluZy1zbG90IGZyZXF1ZW5jeSAoSHopXG4gICAgICAjXG4gICAgICAjIHNldCB0aGlzIHRvIDAgdG8gdXNlIHRoZSBkZWZhdWx0IGZyZXF1ZW5jeSBwbGFuIGZvciB0aGUgY29uZmlndXJlZCByZWdpb25cbiAgICAgICMgKHdoaWNoIGNvdWxkIGJlIGZyZXF1ZW5jeSBob3BwaW5nKS5cbiAgICAgIHBpbmdfc2xvdF9mcmVxdWVuY3k9MFxuXCJcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5zZXJ2aWNlTmFtZSA9IFwiY2hpcnBzdGFja1wiXG5maWxlUGF0aCA9IFwiL2NoaXJwc3RhY2svcmVnaW9uX3VzOTE1XzYudG9tbFwiXG5jb250ZW50ID0gXCJcIlwiXG4jIFRoaXMgZmlsZSBjb250YWlucyBhbiBleGFtcGxlIFVTOTE1IGV4YW1wbGUgKGNoYW5uZWxzIDQ4LTU1ICsgNzApLlxuW1tyZWdpb25zXV1cblxuICAjIElEIGlzIGFuIHVzZS1kZWZpbmVkIGlkZW50aWZpZXIgZm9yIHRoaXMgcmVnaW9uLlxuICBpZD1cInVzOTE1XzZcIlxuXG4gICMgRGVzY3JpcHRpb24gaXMgYSBzaG9ydCBkZXNjcmlwdGlvbiBmb3IgdGhpcyByZWdpb24uXG4gIGRlc2NyaXB0aW9uPVwiVVM5MTUgKGNoYW5uZWxzIDQ4LTU1ICsgNzApXCJcblxuICAjIENvbW1vbi1uYW1lIHJlZmVycyB0byB0aGUgY29tbW9uLW5hbWUgb2YgdGhpcyByZWdpb24gYXMgZGVmaW5lZCBieVxuICAjIHRoZSBMb1JhIEFsbGlhbmNlLlxuICBjb21tb25fbmFtZT1cIlVTOTE1XCJcblxuXG4gICMgR2F0ZXdheSBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5nYXRld2F5XVxuXG4gICAgIyBGb3JjZSBnYXRld2F5cyBhcyBwcml2YXRlLlxuICAgICNcbiAgICAjIElmIGVuYWJsZWQsIGdhdGV3YXlzIGNhbiBvbmx5IGJlIHVzZWQgYnkgZGV2aWNlcyB1bmRlciB0aGUgc2FtZSB0ZW5hbnQuXG4gICAgZm9yY2VfZ3dzX3ByaXZhdGU9ZmFsc2VcblxuICAgIFxuICAgICMgR2F0ZXdheSBiYWNrZW5kIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kXVxuXG4gICAgICAjIFRoZSBlbmFibGVkIGJhY2tlbmQgdHlwZS5cbiAgICAgIGVuYWJsZWQ9XCJtcXR0XCJcblxuICAgICAgIyBNUVRUIGNvbmZpZ3VyYXRpb24uXG4gICAgICBbcmVnaW9ucy5nYXRld2F5LmJhY2tlbmQubXF0dF1cblxuICAgICAgICAjIFRvcGljIHByZWZpeC5cbiAgICAgICAgI1xuICAgICAgICAjIFRoZSB0b3BpYyBwcmVmaXggY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHRoZSByZWdpb24gb2YgdGhlIGdhdGV3YXkuXG4gICAgICAgICMgTm90ZSwgdGhlcmUgaXMgbm8gbmVlZCB0byBhZGQgYSB0cmFpbGluZyAnLycgdG8gdGhlIHByZWZpeC4gVGhlIHRyYWlsaW5nXG4gICAgICAgICMgJy8nIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIHByZWZpeCBpZiBpdCBpcyBjb25maWd1cmVkLlxuICAgICAgICB0b3BpY19wcmVmaXg9XCJ1czkxNV82XCJcblxuICAgICAgICAjIE1RVFQgc2VydmVyIChlLmcuIHNjaGVtZTovL2hvc3Q6cG9ydCB3aGVyZSBzY2hlbWUgaXMgdGNwLCBzc2wgb3Igd3MpXG4gICAgICAgIHNlcnZlcj1cInRjcDovL21vc3F1aXR0bzoxODgzXCJcblxuICAgICAgICAjIENvbm5lY3Qgd2l0aCB0aGUgZ2l2ZW4gdXNlcm5hbWUgKG9wdGlvbmFsKVxuICAgICAgICB1c2VybmFtZT1cIlwiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHBhc3N3b3JkIChvcHRpb25hbClcbiAgICAgICAgcGFzc3dvcmQ9XCJcIlxuXG4gICAgICAgICMgUXVhbGl0eSBvZiBzZXJ2aWNlIGxldmVsXG4gICAgICAgICNcbiAgICAgICAgIyAwOiBhdCBtb3N0IG9uY2VcbiAgICAgICAgIyAxOiBhdCBsZWFzdCBvbmNlXG4gICAgICAgICMgMjogZXhhY3RseSBvbmNlXG4gICAgICAgICNcbiAgICAgICAgIyBOb3RlOiBhbiBpbmNyZWFzZSBvZiB0aGlzIHZhbHVlIHdpbGwgZGVjcmVhc2UgdGhlIHBlcmZvcm1hbmNlLlxuICAgICAgICAjIEZvciBtb3JlIGluZm9ybWF0aW9uOiBodHRwczovL3d3dy5oaXZlbXEuY29tL2Jsb2cvbXF0dC1lc3NlbnRpYWxzLXBhcnQtNi1tcXR0LXF1YWxpdHktb2Ytc2VydmljZS1sZXZlbHNcbiAgICAgICAgcW9zPTBcblxuICAgICAgICAjIENsZWFuIHNlc3Npb25cbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgXCJjbGVhbiBzZXNzaW9uXCIgZmxhZyBpbiB0aGUgY29ubmVjdCBtZXNzYWdlIHdoZW4gdGhpcyBjbGllbnRcbiAgICAgICAgIyBjb25uZWN0cyB0byBhbiBNUVRUIGJyb2tlci4gQnkgc2V0dGluZyB0aGlzIGZsYWcgeW91IGFyZSBpbmRpY2F0aW5nXG4gICAgICAgICMgdGhhdCBubyBtZXNzYWdlcyBzYXZlZCBieSB0aGUgYnJva2VyIGZvciB0aGlzIGNsaWVudCBzaG91bGQgYmUgZGVsaXZlcmVkLlxuICAgICAgICBjbGVhbl9zZXNzaW9uPWZhbHNlXG5cbiAgICAgICAgIyBDbGllbnQgSURcbiAgICAgICAgI1xuICAgICAgICAjIFNldCB0aGUgY2xpZW50IGlkIHRvIGJlIHVzZWQgYnkgdGhpcyBjbGllbnQgd2hlbiBjb25uZWN0aW5nIHRvIHRoZSBNUVRUXG4gICAgICAgICMgYnJva2VyLiBBIGNsaWVudCBpZCBtdXN0IGJlIG5vIGxvbmdlciB0aGFuIDIzIGNoYXJhY3RlcnMuIElmIGxlZnQgYmxhbmssXG4gICAgICAgICMgYSByYW5kb20gaWQgd2lsbCBiZSBnZW5lcmF0ZWQgYnkgQ2hpcnBTdGFjay5cbiAgICAgICAgY2xpZW50X2lkPVwiXCJcblxuICAgICAgICAjIEtlZXAgYWxpdmUgaW50ZXJ2YWwuXG4gICAgICAgICNcbiAgICAgICAgIyBUaGlzIGRlZmluZXMgdGhlIG1heGltdW0gdGltZSB0aGF0IHRoYXQgc2hvdWxkIHBhc3Mgd2l0aG91dCBjb21tdW5pY2F0aW9uXG4gICAgICAgICMgYmV0d2VlbiB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIuXG4gICAgICAgIGtlZXBfYWxpdmVfaW50ZXJ2YWw9XCIzMHNcIlxuXG4gICAgICAgICMgQ0EgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgICNcbiAgICAgICAgIyBVc2UgdGhpcyB3aGVuIHNldHRpbmcgdXAgYSBzZWN1cmUgY29ubmVjdGlvbiAod2hlbiBzZXJ2ZXIgdXNlcyBzc2w6Ly8uLi4pXG4gICAgICAgICMgYnV0IHRoZSBjZXJ0aWZpY2F0ZSB1c2VkIGJ5IHRoZSBzZXJ2ZXIgaXMgbm90IHRydXN0ZWQgYnkgYW55IENBIGNlcnRpZmljYXRlXG4gICAgICAgICMgb24gdGhlIHNlcnZlciAoZS5nLiB3aGVuIHNlbGYgZ2VuZXJhdGVkKS5cbiAgICAgICAgY2FfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19jZXJ0PVwiXCJcblxuICAgICAgICAjIFRMUyBrZXkgZmlsZSAob3B0aW9uYWwpXG4gICAgICAgIHRsc19rZXk9XCJcIlxuXG5cbiAgICAjIEdhdGV3YXkgY2hhbm5lbCBjb25maWd1cmF0aW9uLlxuICAgICNcbiAgICAjIE5vdGU6IHRoaXMgY29uZmlndXJhdGlvbiBpcyBvbmx5IHVzZWQgaW4gY2FzZSB0aGUgZ2F0ZXdheSBpcyB1c2luZyB0aGVcbiAgICAjIENoaXJwU3RhY2sgQ29uY2VudHJhdG9yZCBkYWVtb24uIEluIGFueSBvdGhlciBjYXNlLCB0aGlzIGNvbmZpZ3VyYXRpb24gXG4gICAgIyBpcyBpZ25vcmVkLlxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MTE5MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MTIxMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MTIzMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MTI1MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MTI3MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MTI5MDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MTMxMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MTMzMDAwMDBcbiAgICAgIGJhbmR3aWR0aD0xMjUwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs3LCA4LCA5LCAxMF1cblxuICAgIFtbcmVnaW9ucy5nYXRld2F5LmNoYW5uZWxzXV1cbiAgICAgIGZyZXF1ZW5jeT05MTI2MDAwMDBcbiAgICAgIGJhbmR3aWR0aD01MDAwMDBcbiAgICAgIG1vZHVsYXRpb249XCJMT1JBXCJcbiAgICAgIHNwcmVhZGluZ19mYWN0b3JzPVs4XVxuXG5cbiAgIyBSZWdpb24gc3BlY2lmaWMgbmV0d29yayBjb25maWd1cmF0aW9uLlxuICBbcmVnaW9ucy5uZXR3b3JrXVxuICAgIFxuICAgICMgSW5zdGFsbGF0aW9uIG1hcmdpbiAoZEIpIHVzZWQgYnkgdGhlIEFEUiBlbmdpbmUuXG4gICAgI1xuICAgICMgQSBoaWdoZXIgbnVtYmVyIG1lYW5zIHRoYXQgdGhlIG5ldHdvcmstc2VydmVyIHdpbGwga2VlcCBtb3JlIG1hcmdpbixcbiAgICAjIHJlc3VsdGluZyBpbiBhIGxvd2VyIGRhdGEtcmF0ZSBidXQgZGVjcmVhc2luZyB0aGUgY2hhbmNlIHRoYXQgdGhlXG4gICAgIyBkZXZpY2UgZ2V0cyBkaXNjb25uZWN0ZWQgYmVjYXVzZSBpdCBpcyB1bmFibGUgdG8gcmVhY2ggb25lIG9mIHRoZVxuICAgICMgc3Vycm91bmRlZCBnYXRld2F5cy5cbiAgICBpbnN0YWxsYXRpb25fbWFyZ2luPTEwXG5cbiAgICAjIFJYIHdpbmRvdyAoQ2xhc3MtQSkuXG4gICAgI1xuICAgICMgU2V0IHRoaXMgdG86XG4gICAgIyAwOiBSWDEgLyBSWDJcbiAgICAjIDE6IFJYMSBvbmx5XG4gICAgIyAyOiBSWDIgb25seVxuICAgIHJ4X3dpbmRvdz0wXG5cbiAgICAjIFJYMSBkZWxheSAoMSAtIDE1IHNlY29uZHMpLlxuICAgIHJ4MV9kZWxheT0xXG5cbiAgICAjIFJYMSBkYXRhLXJhdGUgb2Zmc2V0XG4gICAgcngxX2RyX29mZnNldD0wXG5cbiAgICAjIFJYMiBkYXRhLXJhdGVcbiAgICByeDJfZHI9OFxuXG4gICAgIyBSWDIgZnJlcXVlbmN5IChIeilcbiAgICByeDJfZnJlcXVlbmN5PTkyMzMwMDAwMFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIFJYMSBkYXRhLXJhdGUgbGVzcyB0aGFuLlxuICAgICNcbiAgICAjIFByZWZlciBSWDIgb3ZlciBSWDEgYmFzZWQgb24gdGhlIFJYMSBkYXRhLXJhdGUuIFdoZW4gdGhlIFJYMSBkYXRhLXJhdGVcbiAgICAjIGlzIHNtYWxsZXIgdGhhbiB0aGUgY29uZmlndXJlZCB2YWx1ZSwgdGhlbiB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbFxuICAgICMgZmlyc3QgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBmb3IgUlgyLCBmYWlsaW5nIHRoYXQgKGUuZy4gdGhlIGdhdGV3YXlcbiAgICAjIGhhcyBhbHJlYWR5IGEgcGF5bG9hZCBzY2hlZHVsZWQgYXQgdGhlIFJYMiB0aW1pbmcpIGl0IHdpbGwgdHJ5IFJYMS5cbiAgICByeDJfcHJlZmVyX29uX3J4MV9kcl9sdD0wXG5cbiAgICAjIFByZWZlciBSWDIgb24gbGluayBidWRnZXQuXG4gICAgI1xuICAgICMgV2hlbiB0aGUgbGluay1idWRnZXQgaXMgYmV0dGVyIGZvciBSWDIgdGhhbiBmb3IgUlgxLCB0aGUgTmV0d29yayBTZXJ2ZXIgd2lsbCBmaXJzdFxuICAgICMgdHJ5IHRvIHNjaGVkdWxlIHRoZSBkb3dubGluayBpbiBSWDIsIGZhaWxpbmcgdGhhdCBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9saW5rX2J1ZGdldD1mYWxzZVxuXG4gICAgIyBEb3dubGluayBUWCBQb3dlciAoZEJtKVxuICAgICNcbiAgICAjIFdoZW4gc2V0IHRvIC0xLCB0aGUgZG93bmxpbmsgVFggUG93ZXIgZnJvbSB0aGUgY29uZmlndXJlZCBiYW5kIHdpbGxcbiAgICAjIGJlIHVzZWQuXG4gICAgI1xuICAgICMgUGxlYXNlIGNvbnN1bHQgdGhlIExvUmFXQU4gUmVnaW9uYWwgUGFyYW1ldGVycyBhbmQgbG9jYWwgcmVndWxhdGlvbnNcbiAgICAjIGZvciB2YWxpZCBhbmQgbGVnYWwgb3B0aW9ucy4gTm90ZSB0aGF0IHRoZSBjb25maWd1cmVkIFRYIFBvd2VyIG11c3QgYmVcbiAgICAjIHN1cHBvcnRlZCBieSB5b3VyIGdhdGV3YXkocykuXG4gICAgZG93bmxpbmtfdHhfcG93ZXI9LTFcblxuICAgICMgQURSIGlzIGRpc2FibGVkLlxuICAgIGFkcl9kaXNhYmxlZD1mYWxzZVxuXG4gICAgIyBNaW5pbXVtIGRhdGEtcmF0ZS5cbiAgICBtaW5fZHI9MFxuXG4gICAgIyBNYXhpbXVtIGRhdGEtcmF0ZS5cbiAgICBtYXhfZHI9M1xuXG4gICAgIyBFbmFibGVkIHVwbGluayBjaGFubmVscy5cbiAgICAjXG4gICAgIyBVc2UgdGhpcyB3aGVuIG9ueSBhIHN1Yi1zZXQgb2YgdGhlIGJ5IGRlZmF1bHQgZW5hYmxlZCBjaGFubmVscyBhcmUgYmVpbmdcbiAgICAjIHVzZWQuIEZvciBleGFtcGxlIHdoZW4gb25seSB1c2luZyB0aGUgZmlyc3QgOCBjaGFubmVscyBvZiB0aGUgVVMgYmFuZC5cbiAgICAjIE5vdGU6IHdoZW4gbGVmdCBibGFuayAvIGVtcHR5IGFycmF5LCBhbGwgY2hhbm5lbHMgd2lsbCBiZSBlbmFibGVkLlxuICAgIGVuYWJsZWRfdXBsaW5rX2NoYW5uZWxzPVs0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDcwXVxuXG5cbiAgICAjIFJlam9pbi1yZXF1ZXN0IGNvbmZpZ3VyYXRpb24gKExvUmFXQU4gMS4xKVxuICAgIFtyZWdpb25zLm5ldHdvcmsucmVqb2luX3JlcXVlc3RdXG5cbiAgICAgICMgUmVxdWVzdCBkZXZpY2VzIHRvIHBlcmlvZGljYWxseSBzZW5kIHJlam9pbi1yZXF1ZXN0cy5cbiAgICAgIGVuYWJsZWQ9ZmFsc2VcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfY291bnRfbiArIDQpXG4gICAgICAjIHVwbGluayBtZXNzYWdlcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgbWF4X2NvdW50X249MFxuXG4gICAgICAjIFRoZSBkZXZpY2UgbXVzdCBzZW5kIGEgcmVqb2luLXJlcXVlc3QgdHlwZSAwIGF0IGxlYXN0IGV2ZXJ5IDJeKG1heF90aW1lX24gKyAxMClcbiAgICAgICMgc2Vjb25kcy4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDE1LlxuICAgICAgI1xuICAgICAgIyAwICA9IHJvdWdobHkgMTcgbWludXRlc1xuICAgICAgIyAxNSA9IGFib3V0IDEgeWVhclxuICAgICAgbWF4X3RpbWVfbj0wXG4gICAgXG5cbiAgICAjIENsYXNzLUIgY29uZmlndXJhdGlvbi5cbiAgICBbcmVnaW9ucy5uZXR3b3JrLmNsYXNzX2JdXG5cbiAgICAgICMgUGluZy1zbG90IGRhdGEtcmF0ZS4gXG4gICAgICBwaW5nX3Nsb3RfZHI9OFxuXG4gICAgICAjIFBpbmctc2xvdCBmcmVxdWVuY3kgKEh6KVxuICAgICAgI1xuICAgICAgIyBzZXQgdGhpcyB0byAwIHRvIHVzZSB0aGUgZGVmYXVsdCBmcmVxdWVuY3kgcGxhbiBmb3IgdGhlIGNvbmZpZ3VyZWQgcmVnaW9uXG4gICAgICAjICh3aGljaCBjb3VsZCBiZSBmcmVxdWVuY3kgaG9wcGluZykuXG4gICAgICBwaW5nX3Nsb3RfZnJlcXVlbmN5PTBcblwiXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuc2VydmljZU5hbWUgPSBcImNoaXJwc3RhY2tcIlxuZmlsZVBhdGggPSBcIi9jaGlycHN0YWNrL3JlZ2lvbl91czkxNV83LnRvbWxcIlxuY29udGVudCA9IFwiXCJcIlxuIyBUaGlzIGZpbGUgY29udGFpbnMgYW4gZXhhbXBsZSBVUzkxNSBleGFtcGxlIChjaGFubmVscyA1Ni02MyArIDcxKS5cbltbcmVnaW9uc11dXG5cbiAgIyBJRCBpcyBhbiB1c2UtZGVmaW5lZCBpZGVudGlmaWVyIGZvciB0aGlzIHJlZ2lvbi5cbiAgaWQ9XCJ1czkxNV83XCJcblxuICAjIERlc2NyaXB0aW9uIGlzIGEgc2hvcnQgZGVzY3JpcHRpb24gZm9yIHRoaXMgcmVnaW9uLlxuICBkZXNjcmlwdGlvbj1cIlVTOTE1IChjaGFubmVscyA1Ni02MyArIDcxKVwiXG5cbiAgIyBDb21tb24tbmFtZSByZWZlcnMgdG8gdGhlIGNvbW1vbi1uYW1lIG9mIHRoaXMgcmVnaW9uIGFzIGRlZmluZWQgYnlcbiAgIyB0aGUgTG9SYSBBbGxpYW5jZS5cbiAgY29tbW9uX25hbWU9XCJVUzkxNVwiXG5cblxuICAjIEdhdGV3YXkgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMuZ2F0ZXdheV1cblxuICAgICMgRm9yY2UgZ2F0ZXdheXMgYXMgcHJpdmF0ZS5cbiAgICAjXG4gICAgIyBJZiBlbmFibGVkLCBnYXRld2F5cyBjYW4gb25seSBiZSB1c2VkIGJ5IGRldmljZXMgdW5kZXIgdGhlIHNhbWUgdGVuYW50LlxuICAgIGZvcmNlX2d3c19wcml2YXRlPWZhbHNlXG5cbiAgICBcbiAgICAjIEdhdGV3YXkgYmFja2VuZCBjb25maWd1cmF0aW9uLlxuICAgIFtyZWdpb25zLmdhdGV3YXkuYmFja2VuZF1cblxuICAgICAgIyBUaGUgZW5hYmxlZCBiYWNrZW5kIHR5cGUuXG4gICAgICBlbmFibGVkPVwibXF0dFwiXG5cbiAgICAgICMgTVFUVCBjb25maWd1cmF0aW9uLlxuICAgICAgW3JlZ2lvbnMuZ2F0ZXdheS5iYWNrZW5kLm1xdHRdXG5cbiAgICAgICAgIyBUb3BpYyBwcmVmaXguXG4gICAgICAgICNcbiAgICAgICAgIyBUaGUgdG9waWMgcHJlZml4IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB0aGUgcmVnaW9uIG9mIHRoZSBnYXRld2F5LlxuICAgICAgICAjIE5vdGUsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYWRkIGEgdHJhaWxpbmcgJy8nIHRvIHRoZSBwcmVmaXguIFRoZSB0cmFpbGluZ1xuICAgICAgICAjICcvJyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBwcmVmaXggaWYgaXQgaXMgY29uZmlndXJlZC5cbiAgICAgICAgdG9waWNfcHJlZml4PVwidXM5MTVfN1wiXG5cbiAgICAgICAgIyBNUVRUIHNlcnZlciAoZS5nLiBzY2hlbWU6Ly9ob3N0OnBvcnQgd2hlcmUgc2NoZW1lIGlzIHRjcCwgc3NsIG9yIHdzKVxuICAgICAgICBzZXJ2ZXI9XCJ0Y3A6Ly9tb3NxdWl0dG86MTg4M1wiXG5cbiAgICAgICAgIyBDb25uZWN0IHdpdGggdGhlIGdpdmVuIHVzZXJuYW1lIChvcHRpb25hbClcbiAgICAgICAgdXNlcm5hbWU9XCJcIlxuXG4gICAgICAgICMgQ29ubmVjdCB3aXRoIHRoZSBnaXZlbiBwYXNzd29yZCAob3B0aW9uYWwpXG4gICAgICAgIHBhc3N3b3JkPVwiXCJcblxuICAgICAgICAjIFF1YWxpdHkgb2Ygc2VydmljZSBsZXZlbFxuICAgICAgICAjXG4gICAgICAgICMgMDogYXQgbW9zdCBvbmNlXG4gICAgICAgICMgMTogYXQgbGVhc3Qgb25jZVxuICAgICAgICAjIDI6IGV4YWN0bHkgb25jZVxuICAgICAgICAjXG4gICAgICAgICMgTm90ZTogYW4gaW5jcmVhc2Ugb2YgdGhpcyB2YWx1ZSB3aWxsIGRlY3JlYXNlIHRoZSBwZXJmb3JtYW5jZS5cbiAgICAgICAgIyBGb3IgbW9yZSBpbmZvcm1hdGlvbjogaHR0cHM6Ly93d3cuaGl2ZW1xLmNvbS9ibG9nL21xdHQtZXNzZW50aWFscy1wYXJ0LTYtbXF0dC1xdWFsaXR5LW9mLXNlcnZpY2UtbGV2ZWxzXG4gICAgICAgIHFvcz0wXG5cbiAgICAgICAgIyBDbGVhbiBzZXNzaW9uXG4gICAgICAgICNcbiAgICAgICAgIyBTZXQgdGhlIFwiY2xlYW4gc2Vzc2lvblwiIGZsYWcgaW4gdGhlIGNvbm5lY3QgbWVzc2FnZSB3aGVuIHRoaXMgY2xpZW50XG4gICAgICAgICMgY29ubmVjdHMgdG8gYW4gTVFUVCBicm9rZXIuIEJ5IHNldHRpbmcgdGhpcyBmbGFnIHlvdSBhcmUgaW5kaWNhdGluZ1xuICAgICAgICAjIHRoYXQgbm8gbWVzc2FnZXMgc2F2ZWQgYnkgdGhlIGJyb2tlciBmb3IgdGhpcyBjbGllbnQgc2hvdWxkIGJlIGRlbGl2ZXJlZC5cbiAgICAgICAgY2xlYW5fc2Vzc2lvbj1mYWxzZVxuXG4gICAgICAgICMgQ2xpZW50IElEXG4gICAgICAgICNcbiAgICAgICAgIyBTZXQgdGhlIGNsaWVudCBpZCB0byBiZSB1c2VkIGJ5IHRoaXMgY2xpZW50IHdoZW4gY29ubmVjdGluZyB0byB0aGUgTVFUVFxuICAgICAgICAjIGJyb2tlci4gQSBjbGllbnQgaWQgbXVzdCBiZSBubyBsb25nZXIgdGhhbiAyMyBjaGFyYWN0ZXJzLiBJZiBsZWZ0IGJsYW5rLFxuICAgICAgICAjIGEgcmFuZG9tIGlkIHdpbGwgYmUgZ2VuZXJhdGVkIGJ5IENoaXJwU3RhY2suXG4gICAgICAgIGNsaWVudF9pZD1cIlwiXG5cbiAgICAgICAgIyBLZWVwIGFsaXZlIGludGVydmFsLlxuICAgICAgICAjXG4gICAgICAgICMgVGhpcyBkZWZpbmVzIHRoZSBtYXhpbXVtIHRpbWUgdGhhdCB0aGF0IHNob3VsZCBwYXNzIHdpdGhvdXQgY29tbXVuaWNhdGlvblxuICAgICAgICAjIGJldHdlZW4gdGhlIGNsaWVudCBhbmQgc2VydmVyLlxuICAgICAgICBrZWVwX2FsaXZlX2ludGVydmFsPVwiMzBzXCJcblxuICAgICAgICAjIENBIGNlcnRpZmljYXRlIGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICAjXG4gICAgICAgICMgVXNlIHRoaXMgd2hlbiBzZXR0aW5nIHVwIGEgc2VjdXJlIGNvbm5lY3Rpb24gKHdoZW4gc2VydmVyIHVzZXMgc3NsOi8vLi4uKVxuICAgICAgICAjIGJ1dCB0aGUgY2VydGlmaWNhdGUgdXNlZCBieSB0aGUgc2VydmVyIGlzIG5vdCB0cnVzdGVkIGJ5IGFueSBDQSBjZXJ0aWZpY2F0ZVxuICAgICAgICAjIG9uIHRoZSBzZXJ2ZXIgKGUuZy4gd2hlbiBzZWxmIGdlbmVyYXRlZCkuXG4gICAgICAgIGNhX2NlcnQ9XCJcIlxuXG4gICAgICAgICMgVExTIGNlcnRpZmljYXRlIGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICB0bHNfY2VydD1cIlwiXG5cbiAgICAgICAgIyBUTFMga2V5IGZpbGUgKG9wdGlvbmFsKVxuICAgICAgICB0bHNfa2V5PVwiXCJcblxuXG4gICAgIyBHYXRld2F5IGNoYW5uZWwgY29uZmlndXJhdGlvbi5cbiAgICAjXG4gICAgIyBOb3RlOiB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgb25seSB1c2VkIGluIGNhc2UgdGhlIGdhdGV3YXkgaXMgdXNpbmcgdGhlXG4gICAgIyBDaGlycFN0YWNrIENvbmNlbnRyYXRvcmQgZGFlbW9uLiBJbiBhbnkgb3RoZXIgY2FzZSwgdGhpcyBjb25maWd1cmF0aW9uIFxuICAgICMgaXMgaWdub3JlZC5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTEzNTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTBdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTEzNzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTBdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTEzOTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTBdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTE0MTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTBdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTE0MzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTBdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTE0NTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTBdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTE0NzAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTBdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTE0OTAwMDAwXG4gICAgICBiYW5kd2lkdGg9MTI1MDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bNywgOCwgOSwgMTBdXG5cbiAgICBbW3JlZ2lvbnMuZ2F0ZXdheS5jaGFubmVsc11dXG4gICAgICBmcmVxdWVuY3k9OTE0MjAwMDAwXG4gICAgICBiYW5kd2lkdGg9NTAwMDAwXG4gICAgICBtb2R1bGF0aW9uPVwiTE9SQVwiXG4gICAgICBzcHJlYWRpbmdfZmFjdG9ycz1bOF1cblxuXG4gICMgUmVnaW9uIHNwZWNpZmljIG5ldHdvcmsgY29uZmlndXJhdGlvbi5cbiAgW3JlZ2lvbnMubmV0d29ya11cbiAgICBcbiAgICAjIEluc3RhbGxhdGlvbiBtYXJnaW4gKGRCKSB1c2VkIGJ5IHRoZSBBRFIgZW5naW5lLlxuICAgICNcbiAgICAjIEEgaGlnaGVyIG51bWJlciBtZWFucyB0aGF0IHRoZSBuZXR3b3JrLXNlcnZlciB3aWxsIGtlZXAgbW9yZSBtYXJnaW4sXG4gICAgIyByZXN1bHRpbmcgaW4gYSBsb3dlciBkYXRhLXJhdGUgYnV0IGRlY3JlYXNpbmcgdGhlIGNoYW5jZSB0aGF0IHRoZVxuICAgICMgZGV2aWNlIGdldHMgZGlzY29ubmVjdGVkIGJlY2F1c2UgaXQgaXMgdW5hYmxlIHRvIHJlYWNoIG9uZSBvZiB0aGVcbiAgICAjIHN1cnJvdW5kZWQgZ2F0ZXdheXMuXG4gICAgaW5zdGFsbGF0aW9uX21hcmdpbj0xMFxuXG4gICAgIyBSWCB3aW5kb3cgKENsYXNzLUEpLlxuICAgICNcbiAgICAjIFNldCB0aGlzIHRvOlxuICAgICMgMDogUlgxIC8gUlgyXG4gICAgIyAxOiBSWDEgb25seVxuICAgICMgMjogUlgyIG9ubHlcbiAgICByeF93aW5kb3c9MFxuXG4gICAgIyBSWDEgZGVsYXkgKDEgLSAxNSBzZWNvbmRzKS5cbiAgICByeDFfZGVsYXk9MVxuXG4gICAgIyBSWDEgZGF0YS1yYXRlIG9mZnNldFxuICAgIHJ4MV9kcl9vZmZzZXQ9MFxuXG4gICAgIyBSWDIgZGF0YS1yYXRlXG4gICAgcngyX2RyPThcblxuICAgICMgUlgyIGZyZXF1ZW5jeSAoSHopXG4gICAgcngyX2ZyZXF1ZW5jeT05MjMzMDAwMDBcblxuICAgICMgUHJlZmVyIFJYMiBvbiBSWDEgZGF0YS1yYXRlIGxlc3MgdGhhbi5cbiAgICAjXG4gICAgIyBQcmVmZXIgUlgyIG92ZXIgUlgxIGJhc2VkIG9uIHRoZSBSWDEgZGF0YS1yYXRlLiBXaGVuIHRoZSBSWDEgZGF0YS1yYXRlXG4gICAgIyBpcyBzbWFsbGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgdmFsdWUsIHRoZW4gdGhlIE5ldHdvcmsgU2VydmVyIHdpbGxcbiAgICAjIGZpcnN0IHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgZm9yIFJYMiwgZmFpbGluZyB0aGF0IChlLmcuIHRoZSBnYXRld2F5XG4gICAgIyBoYXMgYWxyZWFkeSBhIHBheWxvYWQgc2NoZWR1bGVkIGF0IHRoZSBSWDIgdGltaW5nKSBpdCB3aWxsIHRyeSBSWDEuXG4gICAgcngyX3ByZWZlcl9vbl9yeDFfZHJfbHQ9MFxuXG4gICAgIyBQcmVmZXIgUlgyIG9uIGxpbmsgYnVkZ2V0LlxuICAgICNcbiAgICAjIFdoZW4gdGhlIGxpbmstYnVkZ2V0IGlzIGJldHRlciBmb3IgUlgyIHRoYW4gZm9yIFJYMSwgdGhlIE5ldHdvcmsgU2VydmVyIHdpbGwgZmlyc3RcbiAgICAjIHRyeSB0byBzY2hlZHVsZSB0aGUgZG93bmxpbmsgaW4gUlgyLCBmYWlsaW5nIHRoYXQgaXQgd2lsbCB0cnkgUlgxLlxuICAgIHJ4Ml9wcmVmZXJfb25fbGlua19idWRnZXQ9ZmFsc2VcblxuICAgICMgRG93bmxpbmsgVFggUG93ZXIgKGRCbSlcbiAgICAjXG4gICAgIyBXaGVuIHNldCB0byAtMSwgdGhlIGRvd25saW5rIFRYIFBvd2VyIGZyb20gdGhlIGNvbmZpZ3VyZWQgYmFuZCB3aWxsXG4gICAgIyBiZSB1c2VkLlxuICAgICNcbiAgICAjIFBsZWFzZSBjb25zdWx0IHRoZSBMb1JhV0FOIFJlZ2lvbmFsIFBhcmFtZXRlcnMgYW5kIGxvY2FsIHJlZ3VsYXRpb25zXG4gICAgIyBmb3IgdmFsaWQgYW5kIGxlZ2FsIG9wdGlvbnMuIE5vdGUgdGhhdCB0aGUgY29uZmlndXJlZCBUWCBQb3dlciBtdXN0IGJlXG4gICAgIyBzdXBwb3J0ZWQgYnkgeW91ciBnYXRld2F5KHMpLlxuICAgIGRvd25saW5rX3R4X3Bvd2VyPS0xXG5cbiAgICAjIEFEUiBpcyBkaXNhYmxlZC5cbiAgICBhZHJfZGlzYWJsZWQ9ZmFsc2VcblxuICAgICMgTWluaW11bSBkYXRhLXJhdGUuXG4gICAgbWluX2RyPTBcblxuICAgICMgTWF4aW11bSBkYXRhLXJhdGUuXG4gICAgbWF4X2RyPTNcblxuICAgICMgRW5hYmxlZCB1cGxpbmsgY2hhbm5lbHMuXG4gICAgI1xuICAgICMgVXNlIHRoaXMgd2hlbiBvbnkgYSBzdWItc2V0IG9mIHRoZSBieSBkZWZhdWx0IGVuYWJsZWQgY2hhbm5lbHMgYXJlIGJlaW5nXG4gICAgIyB1c2VkLiBGb3IgZXhhbXBsZSB3aGVuIG9ubHkgdXNpbmcgdGhlIGZpcnN0IDggY2hhbm5lbHMgb2YgdGhlIFVTIGJhbmQuXG4gICAgIyBOb3RlOiB3aGVuIGxlZnQgYmxhbmsgLyBlbXB0eSBhcnJheSwgYWxsIGNoYW5uZWxzIHdpbGwgYmUgZW5hYmxlZC5cbiAgICBlbmFibGVkX3VwbGlua19jaGFubmVscz1bNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLCA3MV1cblxuXG4gICAgIyBSZWpvaW4tcmVxdWVzdCBjb25maWd1cmF0aW9uIChMb1JhV0FOIDEuMSlcbiAgICBbcmVnaW9ucy5uZXR3b3JrLnJlam9pbl9yZXF1ZXN0XVxuXG4gICAgICAjIFJlcXVlc3QgZGV2aWNlcyB0byBwZXJpb2RpY2FsbHkgc2VuZCByZWpvaW4tcmVxdWVzdHMuXG4gICAgICBlbmFibGVkPWZhbHNlXG5cbiAgICAgICMgVGhlIGRldmljZSBtdXN0IHNlbmQgYSByZWpvaW4tcmVxdWVzdCB0eXBlIDAgYXQgbGVhc3QgZXZlcnkgMl4obWF4X2NvdW50X24gKyA0KVxuICAgICAgIyB1cGxpbmsgbWVzc2FnZXMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgIG1heF9jb3VudF9uPTBcblxuICAgICAgIyBUaGUgZGV2aWNlIG11c3Qgc2VuZCBhIHJlam9pbi1yZXF1ZXN0IHR5cGUgMCBhdCBsZWFzdCBldmVyeSAyXihtYXhfdGltZV9uICsgMTApXG4gICAgICAjIHNlY29uZHMuIFZhbGlkIHZhbHVlcyBhcmUgMCB0byAxNS5cbiAgICAgICNcbiAgICAgICMgMCAgPSByb3VnaGx5IDE3IG1pbnV0ZXNcbiAgICAgICMgMTUgPSBhYm91dCAxIHllYXJcbiAgICAgIG1heF90aW1lX249MFxuICAgIFxuXG4gICAgIyBDbGFzcy1CIGNvbmZpZ3VyYXRpb24uXG4gICAgW3JlZ2lvbnMubmV0d29yay5jbGFzc19iXVxuXG4gICAgICAjIFBpbmctc2xvdCBkYXRhLXJhdGUuIFxuICAgICAgcGluZ19zbG90X2RyPThcblxuICAgICAgIyBQaW5nLXNsb3QgZnJlcXVlbmN5IChIeilcbiAgICAgICNcbiAgICAgICMgc2V0IHRoaXMgdG8gMCB0byB1c2UgdGhlIGRlZmF1bHQgZnJlcXVlbmN5IHBsYW4gZm9yIHRoZSBjb25maWd1cmVkIHJlZ2lvblxuICAgICAgIyAod2hpY2ggY291bGQgYmUgZnJlcXVlbmN5IGhvcHBpbmcpLlxuICAgICAgcGluZ19zbG90X2ZyZXF1ZW5jeT0wXG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbnNlcnZpY2VOYW1lID0gXCJjaGlycHN0YWNrLWdhdGV3YXktYnJpZGdlXCJcbmZpbGVQYXRoID0gXCIvY2hpcnBzdGFjay1nYXRld2F5LWJyaWRnZS9jaGlycHN0YWNrLWdhdGV3YXktYnJpZGdlLnRvbWxcIlxuY29udGVudCA9IFwiXCJcIlxuIyBTZWUgaHR0cHM6Ly93d3cuY2hpcnBzdGFjay5pby9nYXRld2F5LWJyaWRnZS9pbnN0YWxsL2NvbmZpZy8gZm9yIGEgZnVsbFxuIyBjb25maWd1cmF0aW9uIGV4YW1wbGUgYW5kIGRvY3VtZW50YXRpb24uXG5cbltpbnRlZ3JhdGlvbi5tcXR0LmF1dGguZ2VuZXJpY11cbnNlcnZlcnM9W1widGNwOi8vbW9zcXVpdHRvOjE4ODNcIl1cbnVzZXJuYW1lPVwiXCJcbnBhc3N3b3JkPVwiXCJcblwiXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuc2VydmljZU5hbWUgPSBcImNoaXJwc3RhY2stZ2F0ZXdheS1icmlkZ2UtYmFzaWNzdGF0aW9uXCJcbmZpbGVQYXRoID0gXCIvY2hpcnBzdGFjay1nYXRld2F5LWJyaWRnZS9jaGlycHN0YWNrLWdhdGV3YXktYnJpZGdlLWJhc2ljc3RhdGlvbi1ldTg2OC50b21sXCJcbmNvbnRlbnQgPSBcIlwiXCJcbiMgU2VlIGh0dHBzOi8vd3d3LmNoaXJwc3RhY2suaW8vZ2F0ZXdheS1icmlkZ2UvaW5zdGFsbC9jb25maWcvIGZvciBhIGZ1bGxcbiMgY29uZmlndXJhdGlvbiBleGFtcGxlIGFuZCBkb2N1bWVudGF0aW9uLlxuXG5baW50ZWdyYXRpb24ubXF0dC5hdXRoLmdlbmVyaWNdXG5zZXJ2ZXJzPVtcInRjcDovL21vc3F1aXR0bzoxODgzXCJdXG51c2VybmFtZT1cIlwiXG5wYXNzd29yZD1cIlwiXG5cbltpbnRlZ3JhdGlvbi5tcXR0XVxuZXZlbnRfdG9waWNfdGVtcGxhdGU9XCJldTg2OC9nYXRld2F5L3t7IC5HYXRld2F5SUQgfX0vZXZlbnQve3sgLkV2ZW50VHlwZSB9fVwiXG5zdGF0ZV90b3BpY190ZW1wbGF0ZT1cImV1ODY4L2dhdGV3YXkve3sgLkdhdGV3YXlJRCB9fS9zdGF0ZS97eyAuU3RhdGVUeXBlIH19XCJcbmNvbW1hbmRfdG9waWNfdGVtcGxhdGU9XCJldTg2OC9nYXRld2F5L3t7IC5HYXRld2F5SUQgfX0vY29tbWFuZC8jXCJcblxuW2JhY2tlbmRdXG50eXBlPVwiYmFzaWNfc3RhdGlvblwiXG5cbiAgW2JhY2tlbmQuYmFzaWNfc3RhdGlvbl1cbiAgYmluZD1cIjozMDAxXCJcbiAgdGxzX2NlcnQ9XCJcIlxuICB0bHNfa2V5PVwiXCJcbiAgY2FfY2VydD1cIlwiXG5cbiAgcmVnaW9uPVwiRVU4NjhcIlxuICBmcmVxdWVuY3lfbWluPTg2MzAwMDAwMFxuICBmcmVxdWVuY3lfbWF4PTg3MDAwMDAwMFxuXG5cbiAgW1tiYWNrZW5kLmJhc2ljX3N0YXRpb24uY29uY2VudHJhdG9yc11dXG5cbiAgICBbYmFja2VuZC5iYXNpY19zdGF0aW9uLmNvbmNlbnRyYXRvcnMubXVsdGlfc2ZdXG4gICAgZnJlcXVlbmNpZXM9W1xuICAgICAgODY4MTAwMDAwLFxuICAgICAgODY4MzAwMDAwLFxuICAgICAgODY4NTAwMDAwLFxuICAgICAgODY3MTAwMDAwLFxuICAgICAgODY3MzAwMDAwLFxuICAgICAgODY3NTAwMDAwLFxuICAgICAgODY3NzAwMDAwLFxuICAgICAgODY3OTAwMDAwLFxuICAgIF1cbiAgXG4gICAgW2JhY2tlbmQuYmFzaWNfc3RhdGlvbi5jb25jZW50cmF0b3JzLmxvcmFfc3RkXVxuICAgIGZyZXF1ZW5jeT04NjgzMDAwMDBcbiAgICBiYW5kd2lkdGg9MjUwMDAwXG4gICAgc3ByZWFkaW5nX2ZhY3Rvcj03XG4gIFxuICAgIFtiYWNrZW5kLmJhc2ljX3N0YXRpb24uY29uY2VudHJhdG9ycy5mc2tdXG4gICAgZnJlcXVlbmN5PTg2ODgwMDAwMFxuXCJcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5zZXJ2aWNlTmFtZSA9IFwibW9zcXVpdHRvXCJcbmZpbGVQYXRoID0gXCIvbW9zcXVpdHRvL2NvbmZpZy9tb3NxdWl0dG8uY29uZlwiXG5jb250ZW50ID0gXCJcIlwiXG5saXN0ZW5lciAxODgzXG5hbGxvd19hbm9ueW1vdXMgdHJ1ZVxuXCJcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5zZXJ2aWNlTmFtZSA9IFwicG9zdGdyZXNcIlxuZmlsZVBhdGggPSBcIi9wb3N0Z3Jlc3FsL2luaXRkYi8wMDEtY2hpcnBzdGFja19leHRlbnNpb25zLnNoXCJcbmNvbnRlbnQgPSBcIlwiXCJcbiMhL2Jpbi9iYXNoXG5zZXQgLWVcblxucHNxbCAtdiBPTl9FUlJPUl9TVE9QPTEgLS11c2VybmFtZSBcIiRQT1NUR1JFU19VU0VSXCIgLS1kYm5hbWU9XCIkUE9TVEdSRVNfREJcIiA8PC1FT1NRTFxuICAgIGNyZWF0ZSBleHRlbnNpb24gcGdfdHJnbTtcbiAgICBjcmVhdGUgZXh0ZW5zaW9uIGhzdG9yZTtcbkVPU1FMXG5cIlwiXCIiCn0=

Configuration

The exact Docker Compose and template configuration this template deploys.

Related Templates

Self-host ChirpStack in minutes

Dokploy is a free, open source deployment platform. Deploy ChirpStack and 499+ other templates on your own infrastructure with a single click.