Name: series-workflowx9x9h Phase: Succeeded StartedAt: 2026-09-01 21:27:33 +0000 UTC FinishedAt: 2026-09-02 01:55:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[0] Phase: Succeeded StartedAt: 2026-09-01 21:27:33 +0000 UTC FinishedAt: 2026-09-01 22:16:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[0].run-triage Phase: Succeeded StartedAt: 2026-09-01 21:27:33 +0000 UTC FinishedAt: 2026-09-01 22:16:02 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "3ba13f5e7180c034b0a1ef7e052fb780856b134e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_VENDOR_STMICRO", "STMMAC_ETH", "STMMAC_PLATFORM", "VLAN_8021Q" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "3ba13f5e7180c034b0a1ef7e052fb780856b134e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_VENDOR_STMICRO", "STMMAC_ETH", "STMMAC_PLATFORM", "VLAN_8021Q" ], "series_id": "0273c42b-55b0-4e3f-96e1-1f07e027f8e7" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "stmmac_dvr_probe", "stmmac_pltfr_probe" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDIyOjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9WRU5ET1JfU1RNSUNSTyYjMzQ7LAogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QTEFURk9STSYjMzQ7LAogICAgJiMzNDtWTEFOXzgwMjFRJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3RtbWFjX2R2cl9wcm9iZSYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcGx0ZnJfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIHNvZnR3YXJlLWJhc2VkIFZMQU4gdGFnIHN0cmlwcGluZyAoYHN0bW1hY19yeF92bGFuYCkgZnJvbSB0aGUgc3RtbWFjIG5ldHdvcmsgZHJpdmVyJiMzOTtzIFJYIHBhdGggYW5kIHJlc3RyaWN0cyBhZHZlcnRpc2luZyBgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlhgIHRvIGhhcmR3YXJlIHRoYXQgYWN0dWFsbHkgc3VwcG9ydHMgSFcgVkxBTiBzdHJpcHBpbmcgKGBkd21hY19pc194bWFjYCkuIFxuXG5ObyBuZXcgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBrZXJuZWwtdG8tdXNlciBjb3BpZXMsIHBhZGRpbmcgYnl0ZXMsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgcGF0aHMgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZC4gVGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWx0ZXJzIFZMQU4gaGFuZGxpbmcgaW4gdGhlIHJlY2VpdmUgcGF0aCBvZiB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlci4gSXQgcmVtb3ZlcyBhcnRpZmljaWFsIHNvZnR3YXJlIFZMQU4gc3RyaXBwaW5nIChzdG1tYWNfcnhfdmxhbikgZnJvbSBzdG1tYWNfcnggYW5kIHN0bW1hY19kaXNwYXRjaF9za2JfemMsIGFuZCB1cGRhdGVzIGZlYXR1cmUgYWR2ZXJ0aXNpbmcgZHVyaW5nIGRyaXZlciBwcm9iZSAoX19zdG1tYWNfZHZyX3Byb2JlKSB0byBvbmx5IHNldCBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCB3aGVuIGhhcmR3YXJlIFZMQU4gc3RyaXBwaW5nIGlzIHN1cHBvcnRlZC4gU1RNTUFDIGhhcmR3YXJlIChlLmcuIEFsbHdpbm5lciBzdW44aSBFTUFDKSBpcyBzdXBwb3J0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgc28gdGhlc2UgY2hhbmdlcyBhZmZlY3QgcmVhY2hhYmxlIGtlcm5lbCBuZXR3b3JrIGRhdGEgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkYWJlOWNhZmI4NDllNDNlMWUwMWNiM2I1ZWM3NTU2OGE5ODkxNDc4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMSAyMjoxMzo0MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggYjJiN2QwMjQyZGQzYy4uMmUzYjBjZjEwZDY2NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC01MDIxLDI0ICYjNDM7NTAyMSw2IEBAIHN0YXRpYyBuZXRkZXZfZmVhdHVyZXNfdCBzdG1tYWNfZmVhdHVyZXNfY2hlY2soc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiB2bGFuX2ZlYXR1cmVzX2NoZWNrKHNrYiwgZmVhdHVyZXMpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBzdG1tYWNfcnhfdmxhbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLXtcbi1cdHN0cnVjdCB2bGFuX2V0aGhkciAqdmV0aCA9IHNrYl92bGFuX2V0aF9oZHIoc2tiKTtcbi1cdF9fYmUxNiB2bGFuX3Byb3RvID0gdmV0aC1cdTAwM2VoX3ZsYW5fcHJvdG87XG4tXHR1MTYgdmxhbmlkO1xuLVxuLVx0aWYgKCh2bGFuX3Byb3RvID09IGh0b25zKEVUSF9QXzgwMjFRKSBcdTAwMjZcdTAwMjZcbi1cdCAgICAgZGV2LVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCkgfHxcbi1cdCAgICAodmxhbl9wcm90byA9PSBodG9ucyhFVEhfUF84MDIxQUQpIFx1MDAyNlx1MDAyNlxuLVx0ICAgICBkZXYtXHUwMDNlZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9TVEFHX1JYKSkge1xuLVx0XHQvKiBwb3AgdGhlIHZsYW4gdGFnICovXG4tXHRcdHZsYW5pZCA9IG50b2hzKHZldGgtXHUwMDNlaF92bGFuX1RDSSk7XG4tXHRcdG1lbW1vdmUoc2tiLVx1MDAzZWRhdGEgJiM0MzsgVkxBTl9ITEVOLCB2ZXRoLCBFVEhfQUxFTiAqIDIpO1xuLVx0XHRza2JfcHVsbChza2IsIFZMQU5fSExFTik7XG4tXHRcdF9fdmxhbl9od2FjY2VsX3B1dF90YWcoc2tiLCB2bGFuX3Byb3RvLCB2bGFuaWQpO1xuLVx0fVxuLX1cbi1cbiAvKipcbiAgKiBzdG1tYWNfcnhfcmVmaWxsIC0gcmVmaWxsIHVzZWQgc2tiIHByZWFsbG9jYXRlZCBidWZmZXJzXG4gICogQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZVxuQEAgLTU0MDcsOSAmIzQzOzUzODksNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZGlzcGF0Y2hfc2tiX3pjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlLFxuIFx0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlaHdfdmxhbl9lbilcbiBcdFx0LyogTUFDIGxldmVsIHN0cmlwcGluZy4gKi9cbiBcdFx0c3RtbWFjX3J4X2h3X3ZsYW4ocHJpdiwgcHJpdi1cdTAwM2VodywgcCwgc2tiKTtcbi1cdGVsc2Vcbi1cdFx0LyogRHJpdmVyIGxldmVsIHN0cmlwcGluZy4gKi9cbi1cdFx0c3RtbWFjX3J4X3ZsYW4ocHJpdi1cdTAwM2VkZXYsIHNrYik7XG4mIzQzO1xuIFx0c2tiLVx1MDAzZXByb3RvY29sID0gZXRoX3R5cGVfdHJhbnMoc2tiLCBwcml2LVx1MDAzZWRldik7XG4gXG4gXHRpZiAodW5saWtlbHkoIWNvZSkgfHwgIXN0bW1hY19oYXNfaXBfZXRoZXJ0eXBlKHNrYikpXG5AQCAtNTkwMSw5ICYjNDM7NTg4MSw2IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3J4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgaW50IGxpbWl0LCB1MzIgcXVldWUpXG4gXHRcdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZWh3X3ZsYW5fZW4pXG4gXHRcdFx0LyogTUFDIGxldmVsIHN0cmlwcGluZy4gKi9cbiBcdFx0XHRzdG1tYWNfcnhfaHdfdmxhbihwcml2LCBwcml2LVx1MDAzZWh3LCBwLCBza2IpO1xuLVx0XHRlbHNlXG4tXHRcdFx0LyogRHJpdmVyIGxldmVsIHN0cmlwcGluZy4gKi9cbi1cdFx0XHRzdG1tYWNfcnhfdmxhbihwcml2LVx1MDAzZWRldiwgc2tiKTtcbiBcbiBcdFx0c2tiLVx1MDAzZXByb3RvY29sID0gZXRoX3R5cGVfdHJhbnMoc2tiLCBwcml2LVx1MDAzZWRldik7XG4gXG5AQCAtNzk2NCw5ICYjNDM7Nzk0MSw4IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbiBcdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gbmRldi1cdTAwM2Vod19mZWF0dXJlcyB8IE5FVElGX0ZfSElHSERNQTtcbiBcdG5kZXYtXHUwMDNld2F0Y2hkb2dfdGltZW8gPSBtc2Vjc190b19qaWZmaWVzKHdhdGNoZG9nKTtcbiAjaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURcbi1cdC8qIEJvdGggbWFjMTAwIGFuZCBnbWFjIHN1cHBvcnQgcmVjZWl2ZSBWTEFOIHRhZyBkZXRlY3Rpb24gKi9cbi1cdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfUlggfCBORVRJRl9GX0hXX1ZMQU5fU1RBR19SWDtcbiBcdGlmIChkd21hY19pc194bWFjKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUpKSB7XG4mIzQzO1x0XHRuZGV2LVx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYO1xuIFx0XHRuZGV2LVx1MDAzZWh3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYO1xuIFx0XHRwcml2LVx1MDAzZWh3LVx1MDAzZWh3X3ZsYW5fZW4gPSB0cnVlO1xuIFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDIyOjEzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9WRU5ET1JfU1RNSUNSTyYjMzQ7LAogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QTEFURk9STSYjMzQ7LAogICAgJiMzNDtWTEFOXzgwMjFRJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3RtbWFjX2R2cl9wcm9iZSYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcGx0ZnJfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWx0ZXJzIFZMQU4gaGFuZGxpbmcgaW4gdGhlIHJlY2VpdmUgcGF0aCBvZiB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlci4gSXQgcmVtb3ZlcyBhcnRpZmljaWFsIHNvZnR3YXJlIFZMQU4gc3RyaXBwaW5nIChzdG1tYWNfcnhfdmxhbikgZnJvbSBzdG1tYWNfcnggYW5kIHN0bW1hY19kaXNwYXRjaF9za2JfemMsIGFuZCB1cGRhdGVzIGZlYXR1cmUgYWR2ZXJ0aXNpbmcgZHVyaW5nIGRyaXZlciBwcm9iZSAoX19zdG1tYWNfZHZyX3Byb2JlKSB0byBvbmx5IHNldCBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCB3aGVuIGhhcmR3YXJlIFZMQU4gc3RyaXBwaW5nIGlzIHN1cHBvcnRlZC4gU1RNTUFDIGhhcmR3YXJlIChlLmcuIEFsbHdpbm5lciBzdW44aSBFTUFDKSBpcyBzdXBwb3J0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgc28gdGhlc2UgY2hhbmdlcyBhZmZlY3QgcmVhY2hhYmxlIGtlcm5lbCBuZXR3b3JrIGRhdGEgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkYWJlOWNhZmI4NDllNDNlMWUwMWNiM2I1ZWM3NTU2OGE5ODkxNDc4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgMSAyMjoxMzo0MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCmluZGV4IGIyYjdkMDI0MmRkM2MuLjJlM2IwY2YxMGQ2NjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwpAQCAtNTAyMSwyNCAmIzQzOzUwMjEsNiBAQCBzdGF0aWMgbmV0ZGV2X2ZlYXR1cmVzX3Qgc3RtbWFjX2ZlYXR1cmVzX2NoZWNrKHN0cnVjdCBza19idWZmICpza2IsCiAJcmV0dXJuIHZsYW5fZmVhdHVyZXNfY2hlY2soc2tiLCBmZWF0dXJlcyk7CiB9CiAKLXN0YXRpYyB2b2lkIHN0bW1hY19yeF92bGFuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpCi17Ci0Jc3RydWN0IHZsYW5fZXRoaGRyICp2ZXRoID0gc2tiX3ZsYW5fZXRoX2hkcihza2IpOwotCV9fYmUxNiB2bGFuX3Byb3RvID0gdmV0aC0mZ3Q7aF92bGFuX3Byb3RvOwotCXUxNiB2bGFuaWQ7Ci0KLQlpZiAoKHZsYW5fcHJvdG8gPT0gaHRvbnMoRVRIX1BfODAyMVEpICZhbXA7JmFtcDsKLQkgICAgIGRldi0mZ3Q7ZmVhdHVyZXMgJmFtcDsgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlgpIHx8Ci0JICAgICh2bGFuX3Byb3RvID09IGh0b25zKEVUSF9QXzgwMjFBRCkgJmFtcDsmYW1wOwotCSAgICAgZGV2LSZndDtmZWF0dXJlcyAmYW1wOyBORVRJRl9GX0hXX1ZMQU5fU1RBR19SWCkpIHsKLQkJLyogcG9wIHRoZSB2bGFuIHRhZyAqLwotCQl2bGFuaWQgPSBudG9ocyh2ZXRoLSZndDtoX3ZsYW5fVENJKTsKLQkJbWVtbW92ZShza2ItJmd0O2RhdGEgJiM0MzsgVkxBTl9ITEVOLCB2ZXRoLCBFVEhfQUxFTiAqIDIpOwotCQlza2JfcHVsbChza2IsIFZMQU5fSExFTik7Ci0JCV9fdmxhbl9od2FjY2VsX3B1dF90YWcoc2tiLCB2bGFuX3Byb3RvLCB2bGFuaWQpOwotCX0KLX0KLQogLyoqCiAgKiBzdG1tYWNfcnhfcmVmaWxsIC0gcmVmaWxsIHVzZWQgc2tiIHByZWFsbG9jYXRlZCBidWZmZXJzCiAgKiBAcHJpdjogZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlCkBAIC01NDA3LDkgJiM0Mzs1Mzg5LDcgQEAgc3RhdGljIHZvaWQgc3RtbWFjX2Rpc3BhdGNoX3NrYl96YyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSwKIAlpZiAocHJpdi0mZ3Q7aHctJmd0O2h3X3ZsYW5fZW4pCiAJCS8qIE1BQyBsZXZlbCBzdHJpcHBpbmcuICovCiAJCXN0bW1hY19yeF9od192bGFuKHByaXYsIHByaXYtJmd0O2h3LCBwLCBza2IpOwotCWVsc2UKLQkJLyogRHJpdmVyIGxldmVsIHN0cmlwcGluZy4gKi8KLQkJc3RtbWFjX3J4X3ZsYW4ocHJpdi0mZ3Q7ZGV2LCBza2IpOwomIzQzOwogCXNrYi0mZ3Q7cHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIHByaXYtJmd0O2Rldik7CiAKIAlpZiAodW5saWtlbHkoIWNvZSkgfHwgIXN0bW1hY19oYXNfaXBfZXRoZXJ0eXBlKHNrYikpCkBAIC01OTAxLDkgJiM0Mzs1ODgxLDYgQEAgc3RhdGljIGludCBzdG1tYWNfcngoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBpbnQgbGltaXQsIHUzMiBxdWV1ZSkKIAkJaWYgKHByaXYtJmd0O2h3LSZndDtod192bGFuX2VuKQogCQkJLyogTUFDIGxldmVsIHN0cmlwcGluZy4gKi8KIAkJCXN0bW1hY19yeF9od192bGFuKHByaXYsIHByaXYtJmd0O2h3LCBwLCBza2IpOwotCQllbHNlCi0JCQkvKiBEcml2ZXIgbGV2ZWwgc3RyaXBwaW5nLiAqLwotCQkJc3RtbWFjX3J4X3ZsYW4ocHJpdi0mZ3Q7ZGV2LCBza2IpOwogCiAJCXNrYi0mZ3Q7cHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIHByaXYtJmd0O2Rldik7CiAKQEAgLTc5NjQsOSAmIzQzOzc5NDEsOCBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsCiAJbmRldi0mZ3Q7ZmVhdHVyZXMgfD0gbmRldi0mZ3Q7aHdfZmVhdHVyZXMgfCBORVRJRl9GX0hJR0hETUE7CiAJbmRldi0mZ3Q7d2F0Y2hkb2dfdGltZW8gPSBtc2Vjc190b19qaWZmaWVzKHdhdGNoZG9nKTsKICNpZmRlZiBTVE1NQUNfVkxBTl9UQUdfVVNFRAotCS8qIEJvdGggbWFjMTAwIGFuZCBnbWFjIHN1cHBvcnQgcmVjZWl2ZSBWTEFOIHRhZyBkZXRlY3Rpb24gKi8KLQluZGV2LSZndDtmZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCB8IE5FVElGX0ZfSFdfVkxBTl9TVEFHX1JYOwogCWlmIChkd21hY19pc194bWFjKHByaXYtJmd0O3BsYXQtJmd0O2NvcmVfdHlwZSkpIHsKJiM0MzsJCW5kZXYtJmd0O2ZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYOwogCQluZGV2LSZndDtod19mZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWDsKIAkJcHJpdi0mZ3Q7aHctJmd0O2h3X3ZsYW5fZW4gPSB0cnVlOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk1MQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDI4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBXb3J0aGluZXNzKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIHBhdGNoIG1vZGlmaWVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2hhdCYjMzk7cyBgc3RtbWFjYD8mIzM0OyBJcyB0aGlzIHNvbWV0aGluZyBJIGNhbiBldmVuIHRvdWNoIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8gSXMgaXQganVzdCBhIHBoeXNpY2FsIFNvQyB0aGluZywgc29tZSBkZWRpY2F0ZWQgaGFyZHdhcmU/IE9yIGlzIHRoZXJlIGFuIGVtdWxhdGlvbiBsYXllciwgb3IgY2FuIEkgcmVhY2ggaXQgdmlhIHN5emthbGxlcj8KCkhvbGQgb24uLi4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoZSBydWxlLiBUaGUgY3JpdGVyaWEgZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIGltcG9ydGFudCBoZXJlLiBJdCYjMzk7cyBhYm91dCBjb2RlIHBhdGhzIHRoYXQgYXJlIGluYWNjZXNzaWJsZSBpbiB0aGVzZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2hlbiB0aGUgc29mdHdhcmUgZW11bGF0ZXMgaGFyZHdhcmUsIGxpa2Ugd2l0aCBVU0IgZ2FkZ2V0IG9yIG1hYzgwMjExX2h3c2ltLiBJdCBhbHNvIGVsaW1pbmF0ZXMgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgUENJZSBjYXJkcywgc3VjaCBhcyB2ZW5kb3Itc3BlY2lmaWMgc3dpdGNoL1NtYXJ0TklDL0dQVSBkcml2ZXJzIChtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkuCgpUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpcywgZG9lcyBRRU1VICplbXVsYXRlKiBgc3RtbWFjYD8gT3IgaXMgYHN0bW1hY2AgYSBwbGF0Zm9ybSBkcml2ZXIsIGEgUENJIGRyaXZlciBmb3IgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGhhcmR3YXJlPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgdW5kZXIgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2AgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNT0RVTEVfREVWSUNFX1RBQkxFfHBjaV9yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9MTE5PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGFuYXJpb25fZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTIyLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6MTIzOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGFuYXJpb25fZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEyNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTM1Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkd2NfZXRoX2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNTgtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzU5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGR3Y19ldGhfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNjAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jPTM1MD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBlaWM3NzAwX2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTM1OS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjM2MDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBlaWM3NzAwX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0zNjEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jPTUyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGR3bWFjX2dlbmVyaWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNjYtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo2NzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkd21hY19nZW5lcmljX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy02OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0zODQ9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaW14X2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzg5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozOTA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaW14X2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTM5MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM9MjYyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGluZ2VuaWNfbWFjX29mX21hdGNoZXNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMjY5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM6MjcwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGluZ2VuaWNfbWFjX29mX21hdGNoZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTI3MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaW50ZWxfZXRoX3BsYXRfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMzktfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzo0MDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpbnRlbF9ldGhfcGxhdF9tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtNDEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDE0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjE0MTU6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGludGVsX2V0aF9wY2lfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDE2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYz00OTE9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaXBxODA2eF9nbWFjX2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTQ5NC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jOjQ5NTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpcHE4MDZ4X2dtYWNfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTQ5Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTU5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbG9vbmdzb25fZHdtYWNfaWRfdGFibGVbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYwMS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo2MDI6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGxvb25nc29uX2R3bWFjX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNjAzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jPTIxNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBsczF4X2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjI2LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYzoyMjc6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbHMxeF9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYy0yMjgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jPTcxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGxwYzE4eHhfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNzQtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYzo3NTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBscGMxOHh4X2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy03Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jPTY2Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtZWRpYXRla19kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjY5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYzo2NzA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbWVkaWF0ZWtfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NzEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYz03Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtZXNvbjZfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTc5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jOjgwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1lc29uNl9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTgxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYz00ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWVzb244Yl9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy01MDQtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYzo1MDU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbWVzb244Yl9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNTA2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTM2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM3MC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzcxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBkd21hY19tb3RvcmNvbW1fcGNpX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM3Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM9MTE4PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG52dF9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYy0xMjEtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYzoxMjI6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbnZ0X2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYy0xMjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYz04MDA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcWNvbV9ldGhxb3NfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTgwNi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo4MDc6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcWNvbV9ldGhxb3NfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy04MDgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jPTIxNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCByZW5lc2FzX2diZXRoX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTIyMS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjIyMjpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCByZW5lc2FzX2diZXRoX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0yMjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYz0xNjE2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJrX2dtYWNfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE2MzQtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM6MTYzNTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBya19nbWFjX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTYzNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM9NzU9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcnpuMV9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy03OC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjc5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJ6bjFfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTgwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jPTIxNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzMzJfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0yMTktfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjIyMDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzMzJfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMjIxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYz02NzM9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc29jZnBnYV9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy02NzgtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzo2Nzk6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc29jZnBnYV9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjgwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jPTcyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHNvcGhnb19kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTc2LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo3NzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzb3BoZ29fZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYz0yMTA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3BhY2VtaXRfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIxMy19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYzoyMTQ6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3BhY2VtaXRfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz0xNjA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3RhcmZpdmVfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE2NC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzoxNjU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3RhcmZpdmVfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNjYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM9Mjk2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN0aV9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTI5OS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM6MzAwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN0aV9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYy0zMDEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz02NjI9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3RtMzJfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTY2OC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo2Njk6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3RtMzJfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy02NzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM9MTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjU1aV9nbWFjMjAwX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMtMTQ0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYzoxNDU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3VuNTVpX2dtYWMyMDBfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMtMTQ2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTI2OD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW44aV9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTI4Mi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjgzOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN1bjhpX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTI4NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jPTE1MD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW43aV9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmMtMTUzLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jOjE1NDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdW43aV9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jLTE1NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTM5Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB0ZWdyYV9tZ2JlX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy00MDAtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6NDAxOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHRlZ3JhX21nYmVfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy00MDItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYz0yNjc9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdGhlYWRfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jLTI3MC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYzoyNzE6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdGhlYWRfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYy0yNzItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYz0yNTU9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdmlzY29udGlfZXRoX2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yNTgtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjU5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHZpc2NvbnRpX2V0aF9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTI2MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjAzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjA5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxMDpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkyNwoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDQ1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgc3RtbWFjYCBEcml2ZXImIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gYHN0bW1hY2AsIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyBkcml2ZXIsIGlzIGEgY3JpdGljYWwgY29tcG9uZW50IGFjcm9zcyBhIHdpZGUgYXJyYXkgb2YgZW1iZWRkZWQgcGxhdGZvcm1zIOKAkyBBbGx3aW5uZXIsIEFtbG9naWMsIFJvY2tjaGlwLCBTVE0zMiwgdGhlIHdvcmtzLiBUaGUgcXVlc3Rpb24gdGhhdCBpbW1lZGlhdGVseSBqdW1wcyB0byBtaW5kIGlzLCBkb2VzIFFFTVUgYWN0dWFsbHkgKmVtdWxhdGUqIGBzdG1tYWNgPyBTcGVjaWZpY2FsbHksIGFyZSB0aGVyZSBhbnkgUUVNVSBtYWNoaW5lIG1vZGVscyB0aGF0IGV4cG9zZSBhIHZpcnR1YWxpemVkIGR3bWFjIG9yIHN0bW1hYyBkZXZpY2U/IEkgbmVlZCB0byBjbGFyaWZ5IHRoaXMuCgpJJiMzOTttIHRoaW5raW5nLCBhcmUgdGhlcmUgcGFydGljdWxhciBBUk0tYmFzZWQgbWFjaGluZXMsIGxpa2UgU1RNMzIgb3IgQWxsd2lubmVyLCB0aGF0IFFFTVUgbWlnaHQgYmUgYWJsZSB0byBlbXVsYXRlPyBUaGUga2V5IGlzIHdoZXRoZXIgc3RhbmRhcmQgUUVNVSAvIEdDRSBmdXp6aW5nLCBzdWNoIGFzIHN5emthbGxlciBvbiB4ODYvYXJtNjQsIGFjdHVhbGx5IHV0aWxpemVzIGBzdG1tYWNgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBmb2N1cy4KCk5vdywgbGV0IG1lIGdvIGJhY2sgb3ZlciB0aGUgZ3VpZGVsaW5lcy4gV2UgbmVlZCB0byBiZSBjYXJlZnVsIG5vdCB0byB3YXN0ZSByZXNvdXJjZXMgb24gcGF0Y2hlcyB0aGF0IGRvbiYjMzk7dCBpbmNyZWFzZSBmdXp6aW5nIHBvdGVudGlhbC4gVGhlIGd1aWRlbGluZXMgY2xlYXJseSBzdGF0ZSB0aGF0IHdlIHNob3VsZCBkaXNjYXJkIHBhdGNoZXMgdGhhdCBtb2RpZnkgZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgb3IgY29tbWVudHMuIENvc21ldGljIGNoYW5nZXMsIGxpa2UgYWRkZWQgbG9nZ2luZyBvciB0cmFjZXBvaW50cywgYXJlIGFsc28gbm90IGZydWl0ZnVsLiBBbHNvLCBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvbiYjMzk7dCBhZmZlY3QgY29kZSBleGVjdXRpb24sIG9yIGNoYW5nZXMgdGhhdCBhZmZlY3QgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYXJlIHVzZWxlc3MuIFdlIGFsc28gd2FudCB0byBzdGVlciBjbGVhciBvZiB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyAoUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFVzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGNhbiYjMzk7dCBiZSBlbXVsYXRlZCkuIFNpbWlsYXJseSwgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyBsaWtlIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIGFyZSBub3Qgd29ydGggZnV6emluZy4KCk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBQQ0kgSURzIHdpdGhpbiB0aGUgYHN0bW1hY19wY2kuY2AsIGBkd21hYy1pbnRlbC5jYCwgYGR3bWFjLWxvb25nc29uLmNgLCBhbmQgYGR3bWFjLW1vdG9yY29tbS5jYCBzb3VyY2UgZmlsZXMuIFRoaXMgd2lsbCBwcm92aWRlIHZhbHVhYmxlIGluc2lnaHQgaW50byB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgdGhlIGRyaXZlciBzdXBwb3J0cyBhbmQgd2hldGhlciB0aGV5JiMzOTtyZSBzdWl0YWJsZSBmb3IgZW11bGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDIyOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxODA6XHRcdHBsYXQtXHUwMDNlc3VzcGVuZCA9IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kO1xuIDE4MTpcdFx0cGxhdC1cdTAwM2VyZXN1bWUgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lO1xuIDE4MjpcdFxuIDE4MzpcdFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXQsIFx1MDAyNnJlcyk7XG4gMTg0Olx0fVxuIDE4NTpcdFxuIDE4NjpcdC8qKlxuIDE4NzpcdCAqIHN0bW1hY19wY2lfcmVtb3ZlXG4gMTg4Olx0ICpcbiAxODk6XHQgKiBAcGRldjogcGxhdGZvcm0gZGV2aWNlIHBvaW50ZXJcbiAxOTA6XHQgKiBEZXNjcmlwdGlvbjogdGhpcyBmdW5jdGlvbiBjYWxscyB0aGUgbWFpbiB0byBmcmVlIHRoZSBuZXQgcmVzb3VyY2VzLlxuIDE5MTpcdCAqL1xuIDE5MjpcdHN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIDE5MzpcdHtcbiAxOTQ6XHRcdHN0bW1hY19kdnJfcmVtb3ZlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiAxOTU6XHR9XG4gMTk2Olx0XG4gMTk3Olx0Lyogc3ludGhldGljIElELCBubyBvZmZpY2lhbCB2ZW5kb3IgKi9cbiAxOTg6XHQjZGVmaW5lIFBDSV9WRU5ET1JfSURfU1RNTUFDXHRcdDB4MDcwMFxuIDE5OTpcdFxuIDIwMDpcdCNkZWZpbmUgUENJX0RFVklDRV9JRF9TVE1NQUNfU1RNTUFDXHRcdDB4MTEwOFxuIDIwMTpcdCNkZWZpbmUgUENJX0RFVklDRV9JRF9TWU5PUFNZU19HTUFDNV9JRFx0XHQweDcxMDJcbiAyMDI6XHRcbiAyMDM6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XG4gMjA0Olx0XHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuIDIwNTpcdFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNSUNSTywgTUFDLCBcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXG4gMjA2Olx0XHR7IFBDSV9ERVZJQ0VfREFUQShTWU5PUFNZUywgR01BQzVfSUQsIFx1MDAyNnNucHNfZ21hYzVfcGNpX2luZm8pIH0sXG4gMjA3Olx0XHR7fVxuIDIwODpcdH07XG4gMjA5Olx0XG4gMjEwOlx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHN0bW1hY19pZF90YWJsZSk7XG4gMjExOlx0XG4gMjEyOlx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xuIDIxMzpcdFx0Lm5hbWUgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcbiAyMTQ6XHRcdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcbiAyMTU6XHRcdC5wcm9iZSA9IHN0bW1hY19wY2lfcHJvYmUsXG4gMjE2Olx0XHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXG4gMjE3Olx0XHQuZHJpdmVyICAgICAgICAgPSB7XG4gMjE4Olx0XHRcdC5wbSAgICAgPSBcdTAwMjZzdG1tYWNfc2ltcGxlX3BtX29wcyxcbiAyMTk6XHRcdH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1NjEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBRRU1VJiMzOTtzIEV0aGVybmV0IEVtdWxhdGlvbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gY2xhcmlmeSBzb21ldGhpbmcgcXVpY2tseS4gRG9lcyBRRU1VIGFjdHVhbGx5IGVtdWxhdGUgKmFueSogU1RNTUFDIG9yIERXTUFDLWJhc2VkIEV0aGVybmV0IGRldmljZT8gSSBzZWVtIHRvIHJlY2FsbCB0aGF0IGJlaW5nIGEgcG90ZW50aWFsIGFyZWEgd2hlcmUgdGhlcmUgd2VyZSBnYXBzLgoKUmlnaHQsIGxldCBtZSBkaWcgYSBiaXQgZGVlcGVyLiBTcGVjaWZpY2FsbHksIHdoZW4gSSBsb29rIGF0IHRoZSBgYWxsd2lubmVyLWExMGAgYm9hcmQgY29uZmlndXJhdGlvbiBpbiBRRU1VLCBkb2VzIGl0IHVzZSB0aGUgYGFsbHdpbm5lci1lbWFjYCBvciB0aGUgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBkZXZpY2U/IEkgbmVlZCB0byBrbm93IHdoaWNoIG9uZSB0byBpbnZlc3RpZ2F0ZS4KCkFoLCB5ZXMhIFRoZSBRRU1VIGBhbGx3aW5uZXItc3VuOGktZW1hY2AgaXMgd2hhdCBzZWVtcyB0byBiZSBpbiBwbGF5LiBJIGNhbiBzZWUgdGhlIGBody9uZXQvYWxsd2lubmVyLXN1bjhpLWVtYWMuY2AgZmlsZS4gVGhpcyBpcyBwcm9taXNpbmcuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGRvZXMgdGhlIGBhbGx3aW5uZXItc3VuOGktZW1hY2AgZGV2aWNlIGluIFFFTVUgYWN0dWFsbHkgKnVzZSogYSBEV01BQyBkcml2ZXIgbGlrZSBgZHdtYWMtc3VuOGkuY2AsIG9yIGlzIGl0IGltcGxlbWVudGluZyBpdHMgb3duLCBwb3RlbnRpYWxseSBzaW1wbGlmaWVkLCBlbXVsYXRpb24/IFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZmlkZWxpdHkgb2YgdGhlIG5ldHdvcmsgZW11bGF0aW9uLgoKT2theSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBrZXJuZWwgc291cmNlIHRvIHNlZSB3aGljaCBkcml2ZXIgbWF0Y2hlcyB0aGUgZGV2aWNlLiBJIG5lZWQgdG8gY2hlY2sgd2hhdCB0aGUga2VybmVsIHVzZXMgZm9yIGBzdW44aSBlbWFjYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthbGx3aW5uZXIuKmVtYWN8YWxsd2lubmVyLHN1bjhpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYz0yMjE0PXN0YXRpYyBpbnQgbWNwMjUxeGZkX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMzMwLVx0ICpcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM6MjMzMTpcdCAqIDI1MThcdDIwIE1Ielx0YWxsd2lubmVyLHN1bjhpLWgzXHRhbGx3aW5uZXIsc3VuOGktaDMtc3BpXHQgODMzMzMzMyBIelx0IDgzLjMzJVx0NjAwMDAwMDAwIEh6XHRhc3NpZ25lZC1jbG9ja3MgPSBcdTAwM2NcdTAwMjZjY3UgQ0xLX1NQSXhcdTAwM2VcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM6MjMzMjpcdCAqIDI1MThcdDQwIE1Ielx0YWxsd2lubmVyLHN1bjhpLWgzXHRhbGx3aW5uZXIsc3VuOGktaDMtc3BpXHQxNjY2NjY2NyBIelx0IDgzLjMzJVx0NjAwMDAwMDAwIEh6XHRhc3NpZ25lZC1jbG9ja3MgPSBcdTAwM2NcdTAwMjZjY3UgQ0xLX1NQSXhcdTAwM2VcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmMtMjMzMy1cdCAqIDI1MTdcdDQwIE1Ielx0YXRtZWwsc2FtYTVkMjdcdFx0YXRtZWwsYXQ5MXJtOTIwMC1zcGlcdDE2NDAwMDAwIEh6XHQgODIuMDAlXHQgODIwMDAwMDAgSHpcdGRlZmF1bHRcbi0tXG5kcml2ZXJzL25ldC9jYW4vc3VuNGlfY2FuLmM9NzkyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjRpY2FuX29mX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3N1bjRpX2Nhbi5jLTc5OS1cdH0sIHtcbmRyaXZlcnMvbmV0L2Nhbi9zdW40aV9jYW4uYzo4MDA6XHRcdC5jb21wYXRpYmxlID0gXCYjMzQ7YWxsd2lubmVyLHN1bjhpLXI0MC1jYW5cJiMzNDssXG5kcml2ZXJzL25ldC9jYW4vc3VuNGlfY2FuLmMtODAxLVx0XHQuZGF0YSA9IFx1MDAyNnN1bjRpY2FuX3F1aXJrc19yNDBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jPTExMjk9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZW1hY19vZl9tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYzoxMTMwOlx0ey5jb21wYXRpYmxlID0gXCYjMzQ7YWxsd2lubmVyLHN1bjRpLWExMC1lbWFjXCYjMzQ7LH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jLTExMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jLTExMzItXHQvKiBEZXByZWNhdGVkICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jOjExMzM6XHR7LmNvbXBhdGlibGUgPSBcJiMzNDthbGx3aW5uZXIsc3VuNGktZW1hY1wmIzM0Oyx9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYy0xMTM0LVx0e30sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz03NjM9c3RhdGljIGludCBnZXRfZXBoeV9ub2RlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy03NzYtXHRtZGlvX2ludGVybmFsID0gb2ZfZ2V0X2NvbXBhdGlibGVfY2hpbGQobWRpb19tdXgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjc3NzpcdFx0XHRcdFx0XHRcJiMzNDthbGx3aW5uZXIsc3VuOGktaDMtbWRpby1pbnRlcm5hbFwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTc3OC1cdG9mX25vZGVfcHV0KG1kaW9fbXV4KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jPTEyNjg9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3VuOGlfZHdtYWNfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTI2OTpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDthbGx3aW5uZXIsc3VuOGktaDMtZW1hY1wmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTI3MC1cdFx0LmRhdGEgPSBcdTAwMjZlbWFjX3ZhcmlhbnRfaDMgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTI3MTpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDthbGx3aW5uZXIsc3VuOGktdjNzLWVtYWNcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyNzItXHRcdC5kYXRhID0gXHUwMDI2ZW1hY192YXJpYW50X3YzcyB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjczOlx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O2FsbHdpbm5lcixzdW44aS1hODN0LWVtYWNcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyNzQtXHRcdC5kYXRhID0gXHUwMDI2ZW1hY192YXJpYW50X2E4M3QgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTI3NTpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDthbGx3aW5uZXIsc3VuOGktcjQwLWdtYWNcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyNzYtXHRcdC5kYXRhID0gXHUwMDI2ZW1hY192YXJpYW50X3I0MCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjc3Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O2FsbHdpbm5lcixzdW41MGktYTY0LWVtYWNcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyNzgtXHRcdC5kYXRhID0gXHUwMDI2ZW1hY192YXJpYW50X2E2NCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjc5Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O2FsbHdpbm5lcixzdW41MGktaDYtZW1hY1wmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTI4MC1cdFx0LmRhdGEgPSBcdTAwMjZlbWFjX3ZhcmlhbnRfaDYgfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjU3OQoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDE0MjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgc3RtbWFjYCBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIFFFTVUgaGFzIHNvbWUgcmVsZXZhbnQgaGFyZHdhcmUgbW9kZWxzLCBzcGVjaWZpY2FsbHkgYGFsbHdpbm5lci1oM2Agd2l0aCBpdHMgYGFsbHdpbm5lci1zdW44aS1lbWFjYCAod2hpY2ggc2VlbXMgdG8gdXNlIGEgYCYjMzQ7YWxsd2lubmVyLHN1bjhpLWgzLWVtYWMmIzM0O2AgZGV2aWNlIHRyZWUgZW50cnkpIGFuZCB0aGUgYGFsbHdpbm5lci1hNjRgIChQaW5lNjQpLiBUaGVyZSYjMzk7cyBhbHNvIFNUTTMyIFNvQ3MgZW11bGF0ZWQgd2l0aGluIFFFTVUsIGxpa2UgdGhlIHN0bTMyZjQwNSwgc3RtMzJmMjA1LCBhbmQgc3RtMzJtcDE1NywgZXRjLiBUaGlzIGlzIHVzZWZ1bCEgTm93LCB0aGUgcXVlc3Rpb24gaXMsIGNhbiBTeXprYWxsZXIgZWZmZWN0aXZlbHkgZnV6eiB0aGUgYHN0bW1hY2AgZHJpdmVyPyBJcyB0aGlzIGV2ZW4gYSB2aWFibGUgdGFyZ2V0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cz8gSG1tLCBJIG5lZWQgdG8gY2hlY2sgaWYgYHN0bW1hY2AgaXMgYW4gYWN0dWFsIEV0aGVybmV0IE1BQyBkcml2ZXIgcmF0aGVyIHRoYW4gc29tZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2ggb3IgU21hcnROSUMgY29tcG9uZW50LiBZZXMsIGl0IGlzIGFuIGV0aGVybmV0IE1BQyBkcml2ZXIuCgpSaWdodCwgc28gbGV0JiMzOTtzIGdldCBiYWNrIG9uIHRyYWNrLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoYXQgc3BlY2lmaWMgcGF0Y2ggYW5kIHJldmlld2luZyBpdHMgY2hhbmdlcy4gSSBzZWUgdGhlIGNvbW1pdCBoYXMgdGhlIElEIGBkYWJlOWNhZmI4NDllNDNlMWUwMWNiM2I1ZWM3NTU2OGE5ODkxNDc4YCBhbmQgaXQgd2FzIGFwcGxpZWQgYnkgc3l6LWNsdXN0ZXIuIEkmIzM5O20gaW50ZXJlc3RlZCBpbiB0aGUgZGlmZiB0byB0aGUgYHN0bW1hY19tYWluLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBub3RpbmcgdGhhdCB0aGUgYHN0bW1hY19yeF92bGFuYCBmdW5jdGlvbiwgd2hpY2ggaGFuZGxlZCBWTEFOIHRhZyBzdHJpcHBpbmcgYXQgdGhlIGRyaXZlciBsZXZlbCwgaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIG9yaWdpbmFsIGNvZGUgaGFzIHR3byBzY2VuYXJpb3MgZm9yIFZMQU4gdGFnIGhhbmRsaW5nLiBPbmUgYXQgTUFDIGxldmVsIHVzaW5nIGBzdG1tYWNfcnhfaHdfdmxhbmAgYW5kIGFub3RoZXIgYXQgZHJpdmVyIGxldmVsIHZpYSBgc3RtbWFjX3J4X3ZsYW5gIGZ1bmN0aW9uLiBOb3csIGl0IGFwcGVhcnMgdGhhdCB0aGUgZHJpdmVyLWxldmVsIHN0cmlwcGluZyBoYXMgYmVlbiBjb21wbGV0ZWx5IHJlbW92ZWQgaW4gdGhlIHBhdGNoLiBJJiMzOTttIHNlZWluZyB0aGF0IHRoZSBjb2RlIG5vdyBoYXMgYSBjb25kaXRpb25hbCB0byBoYW5kbGUgaGFyZHdhcmUgVkxBTiBvZmZsb2FkLCBieSBjb25kaXRpb25hbGx5IHVzaW5nIGBzdG1tYWNfcnhfaHdfdmxhbmAuIFRoZSBgc3RtbWFjX3J4X3ZsYW5gIGZ1bmN0aW9uIChhdCBsaW5lIDUwMjEpIGlzIG5vIGxvbmdlciBiZWluZyBjYWxsZWQuIExpbmVzIDU5MDEgYW5kIDU0MDcgaGF2ZSBiZWVuIGNoYW5nZWQgYXMgd2VsbCwgd2hlcmUgdGhlIGNhbGwgdG8gYHN0bW1hY19yeF92bGFuYCB3YXMuIEkgc2hvdWxkIHJlYWQgYXJvdW5kIGxpbmUgNzk2NCBhbmQgdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGNoYW5nZWQgdGhlcmUuIEFoLCB5ZXMsIGluIGBfX3N0bW1hY19kdnJfcHJvYmVgLCB0aGUgYE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYYCBhbmQgYE5FVElGX0ZfSFdfVkxBTl9TVEFHX1JYYCBmZWF0dXJlcyBhcmUgYWRkZWQgdG8gYG5kZXYtJmd0O2ZlYXR1cmVzYCwgYnV0IHRoZXkgc2VlbSB0byBiZSBjb25kaXRpb25lZCBvbiBgZHdtYWNfaXNfeG1hYyhwcml2LSZndDtwbGF0LSZndDtjb3JlX3R5cGUpYC4gSWYgdGhpcyBpcyBjb3JyZWN0LCB0aGVuIHBlcmhhcHMgdGhlIG9yaWdpbmFsIGNvZGUgd2FzIG1ha2luZyB0aGUgVkxBTiBwcm9jZXNzaW5nIGNvbmRpdGlvbmFsLCBhbmQgdGhlIHBhdGNoIGhhcyBjaGFuZ2VkIGhvdyBmZWF0dXJlcyBhcmUgZW5hYmxlZC4gTm93IHRoZSBjb2RlIG9ubHkgc3VwcG9ydHMgYE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYYCBhbmQgbm90IGBORVRJRl9GX0hXX1ZMQU5fU1RBR19SWGAuIFNvIHRoaXMgcGF0Y2ggZm9jdXNlcyBvbiBoYXJkd2FyZSBWTEFOIG9mZmxvYWQuIEkgc2hvdWxkIGZpZ3VyZSBvdXQgaG93IHRoaXMgYWZmZWN0cyB0aGUgZnV6emluZyBwb3RlbnRpYWwuIEl0IHNlZW1zIGxpa2UgdGhlIHBhdGNoIHNpbXBsaWZpZXMgdGhlIGRyaXZlciBieSByZW1vdmluZyBzb2Z0d2FyZSBWTEFOIGhhbmRsaW5nIGFuZCByZWx5aW5nIHNvbGVseSBvbiBoYXJkd2FyZSBWTEFOIG9mZmxvYWQuIFRoaXMgY291bGQgZWl0aGVyIG1ha2UgaXQgZWFzaWVyIG9yIGhhcmRlciB0byBmdXp6LCBkZXBlbmRpbmcgb24gaG93IHN5emthbGxlciBjYW4gaW50ZXJhY3Qgd2l0aCBhbmQgdHJpZ2dlciB0aGUgaGFyZHdhcmUgZmVhdHVyZXMuIFRoaXMgaXMgc29tZXRoaW5nIEkgbmVlZCB0byBldmFsdWF0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzk1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs3OTUwOlx0XHRcdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfRklMVEVSO1xuNzk1MTpcdFx0XHRuZGV2LVx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9TVEFHX0ZJTFRFUjtcbjc5NTI6XHRcdH1cbjc5NTM6XHRcdGlmIChwcml2LVx1MDAzZWRtYV9jYXAudmxpbnMpXG43OTU0Olx0XHRcdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfVFg7XG43OTU1Olx0I2VuZGlmXG43OTU2Olx0XHRwcml2LVx1MDAzZW1zZ19lbmFibGUgPSBuZXRpZl9tc2dfaW5pdChkZWJ1ZywgZGVmYXVsdF9tc2dfbGV2ZWwpO1xuNzk1NzpcdFxuNzk1ODpcdFx0cHJpdi1cdTAwM2V4c3RhdHMudGhyZXNob2xkID0gdGM7XG43OTU5Olx0XG43OTYwOlx0XHQvKiBJbml0aWFsaXplIFJTUyAqL1xuNzk2MTpcdFx0cnhxID0gcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXJ4X3F1ZXVlc190b191c2U7XG43OTYyOlx0XHRuZXRkZXZfcnNzX2tleV9maWxsKHByaXYtXHUwMDNlcnNzLmtleSwgc2l6ZW9mKHByaXYtXHUwMDNlcnNzLmtleSkpO1xuNzk2MzpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShwcml2LVx1MDAzZXJzcy50YWJsZSk7IGkmIzQzOyYjNDM7KVxuNzk2NDpcdFx0XHRwcml2LVx1MDAzZXJzcy50YWJsZVtpXSA9IGV0aHRvb2xfcnhmaF9pbmRpcl9kZWZhdWx0KGksIHJ4cSk7XG43OTY1Olx0XG43OTY2Olx0XHRpZiAocHJpdi1cdTAwM2VkbWFfY2FwLnJzc2VuIFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnNzX2VuKVxuNzk2NzpcdFx0XHRuZGV2LVx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfUlhIQVNIO1xuNzk2ODpcdFxuNzk2OTpcdFx0bmRldi1cdTAwM2V2bGFuX2ZlYXR1cmVzIHw9IG5kZXYtXHUwMDNlZmVhdHVyZXM7XG43OTcwOlx0XG43OTcxOlx0XHQvKiBNVFUgcmFuZ2U6IDQ2IC0gaHctc3BlY2lmaWMgbWF4ICovXG43OTcyOlx0XHRuZGV2LVx1MDAzZW1pbl9tdHUgPSBFVEhfWkxFTiAtIEVUSF9ITEVOO1xuNzk3MzpcdFxuNzk3NDpcdFx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcbjc5NzU6XHRcdFx0bmRldi1cdTAwM2VtYXhfbXR1ID0gWEdNQUNfSlVNQk9fTEVOO1xuNzk3NjpcdFx0ZWxzZSBpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWVuaF9kZXNjIHx8IHByaXYtXHUwMDNlc3lub3BzeXNfaWQgXHUwMDNlPSBEV01BQ19DT1JFXzRfMDApXG43OTc3Olx0XHRcdG5kZXYtXHUwMDNlbWF4X210dSA9IEpVTUJPX0xFTjtcbjc5Nzg6XHRcdGVsc2Vcbjc5Nzk6XHRcdFx0bmRldi1cdTAwM2VtYXhfbXR1ID0gU0tCX01BWF9IRUFEKE5FVF9TS0JfUEFEICYjNDM7IE5FVF9JUF9BTElHTik7XG43OTgwOlx0XG43OTgxOlx0XHQvKiBXYXJuIGlmIHRoZSBwbGF0Zm9ybSYjMzk7cyBtYXhtdHUgaXMgc21hbGxlciB0aGFuIHRoZSBtaW5pbXVtIE1UVSxcbjc5ODI6XHRcdCAqIG90aGVyd2lzZSBjbGFtcCB0aGUgbWF4aW11bSBNVFUgYWJvdmUgdG8gdGhlIHBsYXRmb3JtJiMzOTtzIG1heG10dS5cbjc5ODM6XHRcdCAqL1xuNzk4NDpcdFx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtYXhtdHUgXHUwMDNjIG5kZXYtXHUwMDNlbWluX210dSlcbjc5ODU6XHRcdFx0ZGV2X3dhcm4ocHJpdi1cdTAwM2VkZXZpY2UsXG43OTg2Olx0XHRcdFx0IFwmIzM0OyVzOiB3YXJuaW5nOiBtYXhtdHUgaGF2aW5nIGludmFsaWQgdmFsdWUgKCVkKVxcblwmIzM0Oyxcbjc5ODc6XHRcdFx0XHQgX19mdW5jX18sIHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtYXhtdHUpO1xuNzk4ODpcdFx0ZWxzZSBpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZW1heG10dSBcdTAwM2MgbmRldi1cdTAwM2VtYXhfbXR1KVxuNzk4OTpcdFx0XHRuZGV2LVx1MDAzZW1heF9tdHUgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlbWF4bXR1O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTYwOQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDU1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWNlbnQgUGF0Y2g6IFZMQU4gVGFnZ2luZyBhbmQgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0JiMzOTtzIHRoZSBjb250ZXh0PyBXaGF0IHdhcyB0aGUgY29tbWl0IG1lc3NhZ2UsIHRoZSBgZ2l0IGxvZ2AsIG9yIHRoZSBwdXJwb3NlIG9mIHRoaXMgY2hhbmdlPyBTcGVjaWZpY2FsbHksIEkmIzM5O20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQgd2h5IGBzdG1tYWNgIHJlbW92ZWQgYHN0bW1hY19yeF92bGFuYC4gTm93LCBpbiB0aGUgY29udGV4dCBvZiB0aGUgTGludXgga2VybmVsIG5ldHdvcmtpbmcsIEkgcmVtZW1iZXIgdGhlIGdlbmVyYWwgcnVsZTogZHJpdmVycyAqc2hvdWxkbiYjMzk7dCogYmUgZG9pbmcgc29mdHdhcmUgVkxBTiB0YWcgc3RyaXBwaW5nIGFuZCB0aGVuIGZha2luZyBgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlhgIG9yIGBfX3ZsYW5faHdhY2NlbF9wdXRfdGFnYCB3aGVuIHRoZSBoYXJkd2FyZSBpdHNlbGYgKmRpZG4mIzM5O3QqIHN0cmlwIHRoZSBWTEFOIHRhZ3MuIEl0JiMzOTtzIHJlZHVuZGFudCBhbmQgaW5jb3JyZWN0IHRvIGRvIHNvZnR3YXJlIFZMQU4gc3RyaXBwaW5nIGluIHRoZSBkcml2ZXIgUlggcGF0aC4gVGhpcyBoYXMgYmVlbiByZW1vdmVkIGluIHZhcmlvdXMgZXRoZXJuZXQgZHJpdmVycyBiZWNhdXNlIHRoZSBuZXR3b3JrIGNvcmUgaGFuZGxlcyB1bnRhZ2dlZCBWTEFOIHBhY2tldHMgb3IgYmVjYXVzZSBgX192bGFuX2h3YWNjZWxfcHV0X3RhZ2Agd2l0aG91dCB0cnVlIEhXIHN0cmlwcGluZyB3YXMgZWZmZWN0aXZlbHkgYSBkZWNlcHRpb24gYWJvdXQgaGFyZHdhcmUgYWNjZWxlcmF0aW9uLiBUaGlzIGFsc28gcmVtaW5kcyBtZSB0aGF0IGZvciBgZHdtYWNfaXNfeG1hY2AsIEhXIFZMQU4gQ1RBRyBSWCBzdHJpcHBpbmcgaXMgb25seSBzdXBwb3J0ZWQgaWYgeG1hYy4KCk5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCBmdXp6aW5nLiBJcyB0aGlzIHBhdGNoIHNvbWV0aGluZyB0aGF0ICpzaG91bGQqIGJlIG1hcmtlZCBgV29ydGhGdXp6aW5nPXRydWVgPyBMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgY3JpdGVyaWEuIEZpcnN0LCBpcyBpdCBkb2N1bWVudGF0aW9uLCBgS2NvbmZpZ2AsIG9yIGNvbW1lbnRzPyBOby4gTmV4dCwgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBsaWtlIGxvZ2dpbmcgb3IgdHJhY2Vwb2ludHM/IE5vLiBIb3cgYWJvdXQgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24mIzM5O3QgYWZmZWN0IGV4ZWN1dGlvbj8gTm9wZS4gRmluYWxseSwgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVT8gSG1tLCB0aGF0JiMzOTtzIHRoZSBpbnRlcmVzdGluZyBvbmUgaGVyZS4KCkNhbiBgc3RtbWFjYCAqYWN0dWFsbHkqIHJ1biBpbiBRRU1VPyBJIG5lZWQgdG8gY2hlY2suIExldCYjMzk7cyBzZWUgd2hpY2ggUUVNVSB0YXJnZXRzIHN1cHBvcnQgYHN0bW1hY2Agb3IgYGR3bWFjYC4gSSBrbm93IHRoYXQ6CgoqICAgYGFsbHdpbm5lci1oM2AgKGUuZy4sIGBvcmFuZ2VwaS1wY2AgaW4gYHFlbXUtc3lzdGVtLWFybWApIHVzZXMgYGFsbHdpbm5lci1zdW44aS1lbWFjYCwgd2hpY2ggYmluZHMgdG8gYGR3bWFjLXN1bjhpLmNgIChwYXJ0IG9mIHRoZSBTVE1NQUMgZHJpdmVyIHN1YnN5c3RlbSBgQ09ORklHX0RXTUFDX1NVTjhJYCwgd2hpY2ggc2VsZWN0cyBgU1RNTUFDX0VUSGApLgoqICAgSW50ZWwgUXVhcmssIEVsa2hhcnQgTGFrZSwgQWxkZXIgTGFrZSwgYW5kIHNpbWlsYXIgUENJZSBgZHdtYWNgIGRldmljZXMgKGBkd21hYy1pbnRlbC5jYCwgYHN0bW1hY19wY2kuY2ApIGFyZSByZWxldmFudC4KKiAgIExvb25nc29uIChgZHdtYWMtbG9vbmdzb24uY2Agb24gbG9vbmdhcmNoIC8gbWlwcyBsb29uZ3NvbiBtYWNoaW5lcykuCiogICBTVE0zMiAoYGR3bWFjLXN0bTMyLmNgIG9uIFNUTTMyIGJvYXJkcyBpbiBRRU1VKS4KKiAgIEdlbmVyaWMgRFdNQUMgcGxhdGZvcm0gb3IgUENJIGRldmljZXMgYXJlIHByb2JhYmx5IGFsc28gaW4gcGxheS4KCk9rYXksIHRoYXQmIzM5O3MgaGVscGZ1bC4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBpcyB3aGV0aGVyIFNUTU1BQyBpcyByZWFjaGFibGUgaW4gc3l6a2FsbGVyIG9yIHZpcnR1YWxpemVkIGZ1enppbmcuIEkgbmVlZCB0byBjaGVjayB0aGUgYEtjb25maWdgIGZvciBgU1RNTUFDYCBhbmQgZW5zdXJlIHRoYXQgaXQmIzM5O3MgZW5hYmxlZCBpbiBlbm91Z2ggY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDIyOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTVE1NQUNfRVRIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY5NjQKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkV4YW1pbmluZyB0aGUgU1RNTUFDIEtjb25maWcqKgoKT2theSwgdGltZSB0byBkaXZlIGluLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFNUTU1BQyBkcml2ZXIuIFRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgZmlsZSBpcyB0aGUgb2J2aW91cyBwbGFjZSB0byBzdGFydC4gSXQgY29udGFpbnMgYWxsIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBzZXR0aW5ncyByZWxhdGVkIHRvIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGRyaXZlci4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHZhcmlvdXMgZmVhdHVyZXMgYXJlIGV4cG9zZWQsIHdoYXQgZGVwZW5kZW5jaWVzIGV4aXN0IGJldHdlZW4gdGhlbSwgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgdW5kZXJseWluZyBoYXJkd2FyZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGludGVyZXN0ZWQgaW4gW21lbnRpb24geW91ciBzcGVjaWZpYyBhcmVhIG9mIGludGVyZXN0LCBlLmcuLCBETUEgc2V0dGluZ3MsIHBvd2VyIG1hbmFnZW1lbnQsIHNwZWNpZmljIFBIWSBzdXBwb3J0LCBvciBzb21lIHBhcnRpY3VsYXIgZmVhdHVyZV0uIEkmIzM5O2xsIG5lZWQgdG8gcXVpY2tseSBzY2FuIHRoZSBvcHRpb25zLCB0aGVpciBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgZGVmYXVsdCB2YWx1ZXMgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb2YgdGhlIGNvbmZpZ3VyYWJpbGl0eS4gSSYjMzk7bSBsb29raW5nIGZvciBhbnl0aGluZyB1bnVzdWFsIG9yIGFueXRoaW5nIHRoYXQgbWlnaHQgaW1wYWN0IFt5b3VyIHNwZWNpZmljIGFyZWEgb2YgaW50ZXJlc3RdIGFuZCBob3cgdGhlIGRldmljZSB3aWxsIHBlcmZvcm0gd2l0aCBpdC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSB0aGUgZm91bmRhdGlvbiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpcyBjdXJyZW50bHkgY29uZmlndXJlZCBhbmQgd2hlcmUgbW9kaWZpY2F0aW9ucyBtaWdodCBiZSBwb3NzaWJsZSBvciByZXF1aXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFNUTU1BQ19FVEhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IEhBU19ETUFcbiAgIDU6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgIDY6XHRcdGRlcGVuZHMgb24gRVRIVE9PTF9ORVRMSU5LXG4gICA3Olx0XHRzZWxlY3QgTUlJXG4gICA4Olx0XHRzZWxlY3QgUENTX1hQQ1NcbiAgIDk6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgMTA6XHRcdHNlbGVjdCBQSFlMSU5LXG4gIDExOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMTI6XHRcdHNlbGVjdCBSRVNFVF9DT05UUk9MTEVSXG4gIDEzOlx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAgMTQ6XHRcdGhlbHBcbiAgMTU6XHRcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIGZvciB0aGUgRXRoZXJuZXQgSVBzIGJ1aWx0IGFyb3VuZCBhXG4gIDE2Olx0XHQgIFN5bm9wc3lzIElQIENvcmUuXG4gIDE3Olx0XG4gIDE4Olx0aWYgU1RNTUFDX0VUSFxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXG4gIDIxOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcJiMzNDtcbiAgMjI6XHRcdGRlcGVuZHMgb24gSU5FVFxuICAyMzpcdFx0ZGVmYXVsdCBuXG4gIDI0Olx0XHRoZWxwXG4gIDI1Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzIHVzaW5nIGV0aHRvb2wuIEVuYWJsZSB0aGlzXG4gIDI2Olx0XHQgIGZlYXR1cmUgaWYgeW91IGFyZSBmYWNpbmcgcHJvYmxlbXMgd2l0aCB5b3VyIEhXIGFuZCBzdWJtaXQgdGhlIHRlc3RcbiAgMjc6XHRcdCAgcmVzdWx0cyB0byB0aGUgbmV0ZGV2IE1haWxpbmcgTGlzdC5cbiAgMjg6XHRcbiAgMjk6XHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXG4gIDMwOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUGxhdGZvcm0gYnVzIHN1cHBvcnRcJiMzNDtcbiAgMzE6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gIDMyOlx0XHRkZWZhdWx0IHlcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG4gIDM1Olx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciB1c2VkIG9uIHNldmVyYWwgU29DczpcbiAgMzY6XHRcdCAgU1RpLCBBbGx3aW5uZXIsIEFtbG9naWMgTWVzb24sIEFsdGVyYSBTT0NGUEdBLlxuICAzNzpcdFxuICAzODpcdFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuICAzOTpcdFxuICA0MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA0MTpcdFxuICA0MjpcdGlmIFNUTU1BQ19QTEFURk9STVxuICA0MzpcdFxuICA0NDpcdGNvbmZpZyBEV01BQ19EV0NfUU9TX0VUSFxuICA0NTpcdFx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3Igc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlwmIzM0O1xuICA0NjpcdFx0c2VsZWN0IENSQzMyXG4gIDQ3Olx0XHRzZWxlY3QgTUlJXG4gIDQ4Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gIDQ5Olx0XHRoZWxwXG4gIDUwOlx0XHQgIFN1cHBvcnQgZm9yIGNoaXBzIHVzaW5nIHRoZSBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXG4gIDUxOlx0XG4gIDUyOlx0Y29uZmlnIERXTUFDX0dFTkVSSUNcbiAgNTM6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgZHJpdmVyIGZvciBEV01BQ1wmIzM0O1xuICA1NDpcdFx0ZGVmYXVsdCBTVE1NQUNfUExBVEZPUk1cbiAgNTU6XHRcdGhlbHBcbiAgNTY6XHRcdCAgR2VuZXJpYyBEV01BQyBkcml2ZXIgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbiYjMzk7dCByZXF1aXJlIGFueVxuICA1NzpcdFx0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXG4gIDU4Olx0XHQgIGRhdGEgZm9yIHNldHVwLlxuICA1OTpcdFxuICA2MDpcdGNvbmZpZyBEV01BQ19BTkFSSU9OXG4gIDYxOlx0XHR0cmlzdGF0ZSBcJiMzNDtBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgc3VwcG9ydFwmIzM0O1xuICA2MjpcdFx0ZGVmYXVsdCBBUkNcbiAgNjM6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkMgfHwgQ09NUElMRV9URVNUKVxuICA2NDpcdFx0aGVscFxuICA2NTpcdFx0ICBTdXBwb3J0IGZvciBBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgRXRoZXJuZXQgY29udHJvbGxlci5cbiAgNjY6XHRcbiAgNjc6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbmFyaW9uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuICA2ODpcdFxuICA2OTpcdGNvbmZpZyBEV01BQ19FSUM3NzAwXG4gIDcwOlx0XHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IGZvciBFc3dpbiBlaWM3NzAwIGV0aGVybmV0IGRyaXZlclwmIzM0O1xuICA3MTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgSEFTX0RNQSBcdTAwMjZcdTAwMjYgQVJDSF9FU1dJTiB8fCBDT01QSUxFX1RFU1RcbiAgNzI6XHRcdGhlbHBcbiAgNzM6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEVzd2luIEVJQzc3MDAgRXRoZXJuZXQgY29udHJvbGxlcixcbiAgNzQ6XHRcdCAgd2hpY2ggaW50ZWdyYXRlcyBTeW5vcHN5cyBEZXNpZ25XYXJlIFFvUyBmZWF0dXJlcy4gSXQgZW5hYmxlc1xuICA3NTpcdFx0ICBoaWdoLXNwZWVkIG5ldHdvcmtpbmcgd2l0aCBETUEgYWNjZWxlcmF0aW9uIGFuZCBpcyBvcHRpbWl6ZWRcbiAgNzY6XHRcdCAgZm9yIGVtYmVkZGVkIHN5c3RlbXMuXG4gIDc3Olx0XG4gIDc4Olx0Y29uZmlnIERXTUFDX0lOR0VOSUNcbiAgNzk6XHRcdHRyaXN0YXRlIFwmIzM0O0luZ2VuaWMgTUFDIHN1cHBvcnRcJiMzNDtcbiAgODA6XHRcdGRlZmF1bHQgTUFDSF9JTkdFTklDXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDIyOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MzU1CgkJCQkJCQlvdXRwdXQ6IDU2CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIEtjb25maWcgZm9yIFBDSSAmYW1wOyBDb25maWd1cmF0aW9uIFJlYWRpbmVzcyoqCgpBbHJpZ2h0LCBiZWZvcmUgd2UgZGl2ZSB0b28gZGVlcCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG9idmlvdXMgZ290Y2hhcyBpbiB0aGUgS2NvbmZpZyBmaWxlcy4gTXkgaW5zdGluY3QgdGVsbHMgbWUgdGhhdCB3ZSYjMzk7cmUgbGlrZWx5IGdvaW5nIHRvIGJlIGludGVyYWN0aW5nIHdpdGggUENJIGRldmljZXMgYXQgc29tZSBwb2ludCBkdXJpbmcgdGhlIHByb2plY3QsIHNvIGl0JiMzOTtzIHByb2JhYmx5IGJlc3QgdG8gdGFrZSBhIG1vbWVudCBhbmQgcmV2aWV3IGFsbCBQQ0ktcmVsYXRlZCBLY29uZmlnIG9wdGlvbnMuIEkgd2FudCB0byBxdWlja2x5IHNjYW4gZm9yIG9idmlvdXMgdGhpbmdzIHRoYXQgbWlnaHQgYmUgZW5hYmxlZCBvciBkaXNhYmxlZCBieSBkZWZhdWx0IHRoYXQgY291bGQgcG90ZW50aWFsbHkgdHJpcCB1cyB1cCBsYXRlci4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBsb29rIGZvciB0aGUgUENJIHN1cHBvcnQgb3B0aW9ucyBhbmQgZW5zdXJlIHRoYXQgdGhleSBhcmUgZW5hYmxlZCBmb3IgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIGFuZCB0aGF0IGFsbCB0aGUgbmVjZXNzYXJ5IHN1cHBvcnRpbmcgb3B0aW9ucyAobGlrZSBpbnRlcnJ1cHQgaGFuZGxpbmcsIERNQSwgZXRjLikgYXJlIHByZXNlbnQgYW5kIGNvbmZpZ3VyZWQgYXMgZXhwZWN0ZWQuIEkmIzM5O20gYWxzbyBob3BpbmcgdGhlcmUgYXJlbiYjMzk7dCBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIGNhdXNlIGEgaGVhZGFjaGUgZG93biB0aGUgbGluZS4gSXQmIzM5O3MgYmVzdCB0byBpcm9uIG91dCBhbnkga2lua3MgaW4gdGhlIGNvbmZpZyBiZWZvcmUgd2Ugd2FzdGUgdGltZSBjaGFzaW5nIGRvd24ga2VybmVsIGJ1Z3MgdGhhdCBhcmUgYWN0dWFsbHkganVzdCBzaW1wbGUgY29uZmlndXJhdGlvbiBvdmVyc2lnaHRzLiBUaGlzIHF1aWNrIEtjb25maWcgYXVkaXQgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIHRvIHdvcmsgZnJvbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQ19QQ0l8Y29uZmlnIERXTUFDX0lOVEVMfGNvbmZpZyBEV01BQ19TVU44SSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjc3PWNvbmZpZyBEV01BQ19TVU5YSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyODg6Y29uZmlnIERXTUFDX1NVTjhJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4OS1cdHRyaXN0YXRlIFwmIzM0O0FsbHdpbm5lciBzdW44aSBHTUFDIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMyMj1jb25maWcgRFdNQUNfSU1YOFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMzQ6Y29uZmlnIERXTUFDX0lOVEVMX1BMQVRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzM1LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgZHdtYWMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzczPWNvbmZpZyBTVE1NQUNfTElCUENJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM3ODpjb25maWcgRFdNQUNfSU5URUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc5LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgR01BQyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA4LVx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBDSSBidXMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTE0MgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDExNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWTEFOIEhhbmRsaW5nIGluIHN0bW1hY19tYWluLmMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBuYXR1cmUgb2YgdGhlc2UgbW9kaWZpZWQgZnVuY3Rpb25zLiBBcmUgd2UgZGVhbGluZyB3aXRoIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLCBlbnRyeSBwb2ludHMsIG9yIHBvc3NpYmx5IHByb2JlIGZ1bmN0aW9ucz8gU2luY2UgSSBzZWUgYSBwYXRjaCBoZXJlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQmIzM5O3MgY2hhbmdlZCBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZS4KCkxvb2tpbmcgYXQgdGhlIHBhdGNoIGl0c2VsZiwgdGhlIG1haW4gZm9jdXMgaXMgYXJvdW5kIFZMQU4gaGFuZGxpbmcgaW4gdGhlIHN0bW1hYyBkcml2ZXIuIFNwZWNpZmljYWxseSwgdGhlIGBzdG1tYWNfcnhfdmxhbmAgZnVuY3Rpb24sIHdoaWNoIHNlZW1zIHRvIGhhbmRsZSBkcml2ZXItbGV2ZWwgVkxBTiBzdHJpcHBpbmcsIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSBjYWxscyB0byB0aGF0IGZ1bmN0aW9uIGluIGBzdG1tYWNfZGlzcGF0Y2hfc2tiX3pjYCBhbmQgYHN0bW1hY19yeGAgYXJlIGFsc28gZ29uZS4gSW5zdGVhZCwgdGhlcmUgYXBwZWFycyB0byBiZSBhIGNvbmRpdGlvbmFsIGNoZWNrIGJhc2VkIG9uIGBwcml2LSZndDtody0mZ3Q7aHdfdmxhbl9lbmAgdGhhdCBub3cgZGlyZWN0bHkgY2FsbHMgYHN0bW1hY19yeF9od192bGFuYC4KClRoaXMgc3VnZ2VzdHMgdGhlIGludGVudGlvbiBpcyB0byBtb3ZlIFZMQU4gc3RyaXBwaW5nIHRvIGhhcmR3YXJlIHdoZW5ldmVyIHBvc3NpYmxlLiAgVGhlIGNoYW5nZSBhbHNvIHRvdWNoZXMgdGhlIHByb2JlIGZ1bmN0aW9uLCBgX19zdG1tYWNfZHZyX3Byb2JlYC4gSW4gdGhhdCBmdW5jdGlvbiBJIHNlZSBzb21lIGFkanVzdG1lbnRzIHRvIGZlYXR1cmUgZmxhZ3MuIE5vdGFibHksIHRoZXJlJiMzOTtzIGEgY29uZGl0aW9uYWwgc2V0dGluZyBvZiBgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlhgLiAgSXQgc2VlbXMgdGhhdCBpZiB0aGUgY29yZSB0eXBlIGlzICYjMzQ7eG1hYyYjMzQ7LCB0aGVuIHRoZSBgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlhgIGFuZCBgcHJpdi0mZ3Q7aHctJmd0O2h3X3ZsYW5fZW5gIGFyZSBzZXQuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGUgaHdfdmxhbl9lbiBmbGFnIGlzIGNvbnRyb2xsZWQgYXMgdGhpcyBzZWVtcyBrZXkgdG8gY29udHJvbGxpbmcgdGhlIGZlYXR1cmUuCgpOb3csIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIGNhbGwgc2l0ZXMgZm9yIGBfX3N0bW1hY19kdnJfcHJvYmVgLiBUaGlzIHNob3VsZCBnaXZlIG1lIGNvbnRleHQgb24gd2hlbiBWTEFOIHN0cmlwcGluZyBpcyBlbmFibGVkLiBJIGFsc28gbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGVudHJ5IHBvaW50cyBpbiBgc3RtbWFjX21haW4uY2AgYmVzaWRlcyB0aGlzIHByb2JlIGZ1bmN0aW9uIHRoYXQgSSBzaG91bGQgYmUgYXdhcmUgb2YuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDIyOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19kdnJfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI4Mz1zdGF0aWMgaW50IGR3Y19ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzMwOlx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMzEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYz00Mj1zdGF0aWMgaW50IGludGVsX2V0aF9wbGF0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTExNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxMTg6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTE5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyNjM9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM0MTpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXQsIFx1MDAyNnJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzNDItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jPTM3ND1zdGF0aWMgaW50IGlwcTgwNnhfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00ODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM6NDgzOlx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00ODQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00OTg9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1NjI6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NjMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYz00Mj1zdGF0aWMgaW50IGxwYzE4eHhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM6Njg6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTY5LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jPTU5OT1zdGF0aWMgaW50IG1lZGlhdGVrX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjY0MjpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjQzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jPTQ3PXN0YXRpYyBpbnQgbWVzb242X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy03Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6NzM6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy03NC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jPTM4Mj1zdGF0aWMgaW50IG1lc29uOGJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNDYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jOjQ2NDpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNDY1LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yOTM9c3RhdGljIGludCBtb3RvcmNvbW1fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNTk6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2MC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jPTQ4PXN0YXRpYyBpbnQgcnpuMV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy02Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzo2ODpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNjktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jPTM1PXN0YXRpYyBpbnQgc29waGdvX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo2NTpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNjYtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM9MTQ3PXN0YXRpYyBpbnQgc3BhY2VtaXRfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM6MjA3Olx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIwOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz05MD1zdGF0aWMgaW50IHN0YXJmaXZlX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jOjE1MzpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE1NC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz01MjU9c3RhdGljIGludCBzdG0zMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo1Nzk6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTU4MC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMTA1PXN0YXRpYyBpbnQgc3VuOGlfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyMDI6XHQvKiB0aGUgTUFDIGlzIHJ1bnRpbWUgc3VzcGVuZGVkIGFmdGVyIHN0bW1hY19kdnJfcHJvYmUoKSwgc28gd2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwMy1cdCAqIG5lZWQgdG8gZW5zdXJlIHRoZSBNQUMgcmVzdW1lIGJhY2sgYmVmb3JlIG90aGVyIG9wZXJhdGlvbnMgc3VjaFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwOC1cdC8qIFRoZSBtdXggbXVzdCBiZSByZWdpc3RlcmVkIGFmdGVyIHBhcmVudCBNRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyMDk6XHQgKiBzbyBhZnRlciBzdG1tYWNfZHZyX3Byb2JlKClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIxMC1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM9MjE0PXN0YXRpYyBpbnQgdGVncmFfbWdiZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYzozNzY6XHRlcnIgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zNzctXHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM9MjA1PXN0YXRpYyBpbnQgdmlzY29udGlfZXRoX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jOjIzNzpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmMtMjM4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00MTM9dm9pZCBzdG1tYWNfZHZyX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg6NDE0OmludCBzdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQxNS1cdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Nzc2NT1FWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGxhdF9kYXRfYWxsb2MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NzY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NzY3OnN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzc2OC1cdFx0XHQgICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA2OC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODA2OTogKiBzdG1tYWNfZHZyX3Byb2JlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwNzAtICogQGRldjogZGV2aWNlIHBvaW50ZXJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwNzctICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgwNzg6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MDc5LVx0XHQgICAgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpyZXMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MDg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MDg5Olx0cmV0ID0gX19zdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIHJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwOTAtXHRpZiAocmV0IFx1MDAyNlx1MDAyNiBwbGF0X2RhdC1cdTAwM2VleGl0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA5NC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgwOTU6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX2R2cl9wcm9iZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwOTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTExOD1zdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODM6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODQtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTg0OD1pbnQgc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6ODU3Olx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXQsIHJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NTgtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDg1OQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipBbmFseXppbmcgYHN0bW1hY19tYWluLmNgIGZvciBFbnRyeSBQb2ludHMgYW5kIER5bmFtaWMgQmVoYXZpb3IqKgoKQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGBzdG1tYWNfbWFpbi5jYCBmaWxlLiBHaXZlbiBteSBleHBlcnRpc2UsIEkgc3VzcGVjdCB0aGlzIGlzIGEgY3JpdGljYWwgY29tcG9uZW50IG9mIHRoZSBTVE1NQUMgZHJpdmVyLiBJIHdhbnQgdG8gcXVpY2tseSBpZGVudGlmeSBpdHMga2V5IGVudHJ5IHBvaW50cyBhbmQgdW5kZXJzdGFuZCB3aGF0IHBhcnRzIG9mIHRoaXMgY29kZSBtaWdodCBpbnRlcmFjdCBkeW5hbWljYWxseSB3aXRoIG90aGVyIG1vZHVsZXMgb3IgdGhlIGtlcm5lbCBhdCBydW50aW1lLiBNeSBwcmltYXJ5IHRob3VnaHQgcHJvY2VzcyBpbnZvbHZlcyBhIHRhcmdldGVkIGludmVzdGlnYXRpb24gdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGdvaW5nIG9uIGF0IHRoZSBoaWdoIGxldmVsLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGhlcmUgYmVzaWRlcyB0aGUgc3RhdGljIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBwcmV2aW91c2x5IHBvaW50ZWQgb3V0LiBJIGtub3cgdGhhdCBsb29raW5nIGZvciBgRVhQT1JUX1NZTUJPTGAgaXMgdGhlIGNsYXNzaWMgd2F5IHRvIGRvIGl0LiBMZXQgbWUgc2VlIHdoZXJlIHRoZSBjb2RlIGNhbiBnbyBmcm9tIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDIyOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKnN0bW1hYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xOTU9aW50IHN0bW1hY19zZXRfY2xrX3R4X3JhdGUodm9pZCAqYnNwX3ByaXYsIHN0cnVjdCBjbGsgKmNsa190eF9pLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjA4LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjA5OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19zZXRfY2xrX3R4X3JhdGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMTc9dm9pZCBzdG1tYWNfYXhpX2JsZW5fdG9fbWFzayh1MzIgKnJlZ3ZhbCwgY29uc3QgdTMyICpibGVuLCBzaXplX3QgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQ2LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjQ3OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19heGlfYmxlbl90b19tYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQ4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MzE5NT1pbnQgc3RtbWFjX2dldF9waHlfaW50Zl9zZWwocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTMyMTAtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzozMjExOkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19nZXRfcGh5X2ludGZfc2VsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzIxMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc3MzE9c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpzdG1tYWNfcGxhdF9kYXRfYWxsb2Moc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzc2NC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc3NjU6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3BsYXRfZGF0X2FsbG9jKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzc2Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgwNzg9aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA5NC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgwOTU6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX2R2cl9wcm9iZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwOTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz04MTAzPXZvaWQgc3RtbWFjX2R2cl9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEzNi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMzc6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX2R2cl9yZW1vdmUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTM4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9ODE0Nj1pbnQgc3RtbWFjX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODE5Ny19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxOTg6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3N1c3BlbmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTk5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9ODI0Mj1pbnQgc3RtbWFjX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzI4LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODMyOTpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcmVzdW1lKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODMzMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgzMzI9REVGSU5FX1NJTVBMRV9ERVZfUE1fT1BTKHN0bW1hY19zaW1wbGVfcG1fb3BzLCBzdG1tYWNfc3VzcGVuZCwgc3RtbWFjX3Jlc3VtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgzMzM6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3NpbXBsZV9wbV9vcHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzM0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjUyMgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIGBzdG1tYWNfbWFpbi5jYCBhbmQgSXRzIE5ldHdvcmsgRGV2aWNlIE9wZXJhdGlvbnMqKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhpcyBgc3RtbWFjYCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyBpbnRlcmFjdGluZyB3aXRoIHRoZSBuZXR3b3JrIGRldmljZS4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBjcnVjaWFsIHBpZWNlOiB0aGUgYG5ldF9kZXZpY2Vfb3BzYCBzdHJ1Y3R1cmUuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBzcGVjaWZpY2FsbHkgd2l0aGluIGBzdG1tYWNfbWFpbi5jYCBiZWNhdXNlIHRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB0aGUgY29yZSBkZXZpY2Ugc2V0dXAgYW5kIG9wZXJhdGlvbiBmdW5jdGlvbnMgYXJlIGRlZmluZWQsIHJpZ2h0PyBJIHdhbnQgdG8gc2VlIHdoaWNoIGZ1bmN0aW9ucyBpdCYjMzk7cyBpbXBsZW1lbnRpbmcsIGhvdyBpdCYjMzk7cyBoYW5kbGluZyB0aGUgdXN1YWwgc3VzcGVjdHM6IGluaXRpYWxpemF0aW9uLCB0cmFuc21pc3Npb24sIHJlY2VwdGlvbiwgYW5kIGxpbmsgc3RhdGUuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHN0YW5kYXJkIHN0dWZmIGxpa2UgYG5kb19vcGVuYCwgYG5kb19zdG9wYCwgYG5kb19zdGFydF94bWl0YCwgYW5kIGBuZG9fZ2V0X3N0YXRzNjRgIGluIHRoZXJlLCBidXQgSSYjMzk7bSBhbHNvIGN1cmlvdXMgYWJvdXQgYW55IHN0bW1hYy1zcGVjaWZpYyBleHRlbnNpb25zIG9yIGN1c3RvbSBob29rcy4gR290dGEgc2VlIGhvdyB0aGV5JiMzOTt2ZSBoYW5kbGVkIERNQSBjb25maWd1cmF0aW9uLCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFuZCBidWZmZXIgbWFuYWdlbWVudCwgYWxsIHRocm91Z2ggdGhhdCBvcGVyYXRpb25zIHN0cnVjdHVyZS4gUmlnaHQsIGxldCYjMzk7cyBvcGVuIHRoYXQgZmlsZSBhbmQgZ2V0IHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfbmV0ZGV2X29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTYwPXN0YXRpYyB2b2lkIHN0bW1hY192bGFuX3Jlc3RvcmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE2Mi0jaWZkZWYgQ09ORklHX0RFQlVHX0ZTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE2MzpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHN0bW1hY19uZXRkZXZfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNjQtc3RhdGljIHZvaWQgc3RtbWFjX2luaXRfZnMoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02NzEyPXN0YXRpYyBpbnQgc3RtbWFjX2RldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY3MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY3MTg6XHRpZiAoZGV2LVx1MDAzZW5ldGRldl9vcHMgIT0gXHUwMDI2c3RtbWFjX25ldGRldl9vcHMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY3MTktXHRcdGdvdG8gZG9uZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcyMjg9c3RhdGljIHZvaWQgc3RtbWFjX2dldF9zdGF0czY0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCAqc3RhdHMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MjgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MjgxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgc3RtbWFjX25ldGRldl9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcyODItXHQubmRvX29wZW4gPSBzdG1tYWNfb3Blbixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc3Njc9c3RhdGljIGludCBfX3N0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzg4MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6Nzg4MjpcdG5kZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNnN0bW1hY19uZXRkZXZfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03ODgzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzQ5MgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDMxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNUTU1BQyBWTEFOIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaCBjb25jZXJuaW5nIHRoZSBOZXR3b3JrIERldmljZSAobmRldikgb3BlcmF0aW9ucyB3aXRoaW4gdGhlIHN0bW1hYyBkcml2ZXIuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGNoYW5nZXMgcmVsYXRlZCB0byBWTEFOIGhhbmRsaW5nLiBGaXJzdCwgaXQgbG9va3MgbGlrZSBgc3RtbWFjX3J4X3ZsYW5gIGhhcyBiZWVuIGNvbXBsZXRlbHkgcmVtb3ZlZC4gVGhhdCYjMzk7cyBhIHNpZ25pZmljYW50IHNoaWZ0LiBDb25zZXF1ZW50bHksIHRoZSBjYWxscyB0byBgc3RtbWFjX3J4X3ZsYW5gIHdpdGhpbiBgc3RtbWFjX2Rpc3BhdGNoX3NrYl96Y2AgYW5kIGBzdG1tYWNfcnhgIGFyZSBhbHNvIGdvbmUuCgpOb3csIGxldCYjMzk7cyBzY3J1dGluaXplIGBfX3N0bW1hY19kdnJfcHJvYmVgLiBBaCwgaGVyZSYjMzk7cyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBUaGUgb3JpZ2luYWwgY29kZSBibG9jaywgY29tbWVudGVkIG91dCwgc2VlbXMgdG8gaGF2ZSBiZWVuIHJlbGF0ZWQgdG8gZW5hYmxpbmcgaGFyZHdhcmUgVkxBTiB0YWcgZGV0ZWN0aW9uLiBUaGUgY29uZGl0aW9uYWwgYCNpZmRlZiBTVE1NQUNfVkxBTl9UQUdfVVNFRGAgaXMgZ29uZSwgYnV0IHRoZSBpbnRlbnQgcmVtYWlucy4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggbm93IGNvbmRpdGlvbmFsbHkgc2V0cyBgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlhgIGJhc2VkIG9uIHRoZSBgZHdtYWNfaXNfeG1hY2AgY2hlY2suIEFuZCB0aGUgY29ycmVzcG9uZGluZyBgaHdfZmVhdHVyZXNgIGlzIGFkanVzdGVkLCBhbmQgYHByaXYtJmd0O2h3LSZndDtod192bGFuX2VuYCBpcyBzZXQgdG8gdHJ1ZS4gTXkgaW50ZXJwcmV0YXRpb24gaXMgdGhhdCB0aGUgZHJpdmVyIGlzIG5vdyBvbmx5IGVuYWJsaW5nIENUQUcgKEN1c3RvbWVyIFRhZykgVkxBTiBzdXBwb3J0LCBsaWtlbHkgcmVtb3Zpbmcgc3VwcG9ydCBmb3IgU1RBRyAoU2VydmljZSBUYWcpIFZMQU4sIGF0IGxlYXN0IGV4cGxpY2l0bHkgdGhyb3VnaCB0aGlzIGNvZGUgcGF0aC4KClRvIGdldCB0aGUgY29tcGxldGUgcGljdHVyZSBvZiB0aGlzIFZMQU4gY2hhbmdlLCBJIG5lZWQgdG8gY2hlY2sgdGhlIFNUTU1BQyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gcmV2aWV3IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCBhbmQgY3Jvc3MtcmVmZXJlbmNlIHRoYXQgd2l0aCB0aGUgYnJvYWRlciBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWdgIGFuZCBgZHJpdmVycy9uZXQvS2NvbmZpZ2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVlbiBlbmFibGVkIG9yIGRpc2FibGVkIGJ5IHRoaXMgcGF0Y2ggaW4gdGVybXMgb2YgdGhlIHVuZGVybHlpbmcgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBTVE1NQUMgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzb3VyY2UuKnN0bW1hYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vS2NvbmZpZz0xOT1pZiBORVRfVkVORE9SX1NUTUlDUk9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vS2NvbmZpZy0yMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vS2NvbmZpZzoyMTpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9LY29uZmlnLTIyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYz05Mz1zdGF0aWMgaW50IGFuYXJpb25fZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtOTctXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjk4Olx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy05OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMDA6XHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMDEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9OTY9c3RhdGljIGludCBkd2NfcW9zX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTk3LVx0XHRcdCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzo5ODpcdFx0XHQgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnN0bW1hY19yZXMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTk5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI4Mz1zdGF0aWMgaW50IGR3Y19ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI4Ni1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI4NzpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI4OC1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jPTE2Nz1zdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTcwLVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzoxNzE6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTE3Mi1cdHN0cnVjdCBlaWM3NzAwX3Fvc19wcml2ICpkd2NfcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjE3NjpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTE3Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jPTE5PXN0YXRpYyBpbnQgZHdtYWNfZ2VuZXJpY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy0yMS1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6MjI6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTIzLVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy0yNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzoyNTpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTI2LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0yOTM9c3RhdGljIGludCBpbXhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yOTUtXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6Mjk2Olx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI5Ny1cdHN0cnVjdCBpbXhfcHJpdl9kYXRhICpkd21hYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zMDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozMDE6XHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTMwMi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jPTE1ND1zdGF0aWMgaW50IGluZ2VuaWNfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTE1Ni1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM6MTU3Olx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0xNTgtXHRzdHJ1Y3QgaW5nZW5pY19tYWMgKm1hYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMTYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jOjE2MzpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTE2NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jPTQyPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BsYXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtNDQtXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjQ1Olx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy00Ni1cdHN0cnVjdCBpbnRlbF9kd21hYyAqZHdtYWM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjUwOlx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtNTEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYz0zNzQ9c3RhdGljIGludCBpcHE4MDZ4X2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtMzc2LVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzozNzc6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTM3OC1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy0zODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM6MzgzOlx0dmFsID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtMzg0LVx0aWYgKHZhbClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYz0xNTg9c3RhdGljIGludCBsczF4X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMTYwLVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jOjE2MTpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYy0xNjItXHRjb25zdCBzdHJ1Y3QgbHMxeF9kYXRhICpkYXRhO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jLTE2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jOjE2NzpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMTY4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM9NDI9c3RhdGljIGludCBscGMxOHh4X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTQ0LVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYzo0NTpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNDYtXHRzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jOjQ5Olx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNTAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM9NTk5PXN0YXRpYyBpbnQgbWVkaWF0ZWtfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTYwMi1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjYwMzpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTYwNC1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02MjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjYyNzpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02MjgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM9NDc9c3RhdGljIGludCBtZXNvbjZfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTQ5LVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6NTA6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy01MS1cdHN0cnVjdCBtZXNvbl9kd21hYyAqZHdtYWM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy01My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6NTQ6XHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmMtNTUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYz0zODI9c3RhdGljIGludCBtZXNvbjhiX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTM4NC1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM6Mzg1Olx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy0zODYtXHRzdHJ1Y3QgbWVzb244Yl9kd21hYyAqZHdtYWM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTM4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYzozODk6XHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy0zOTAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYz04Mj1zdGF0aWMgaW50IG52dF9nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTg0LVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYzo4NTpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtODYtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM6OTA6XHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYy05MS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYz02ODQ9c3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNjg4LVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6Njg5Olx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNjkwLVx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy02OTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jOjY5NDpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy02OTUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz0xMzE9c3RhdGljIGludCByZW5lc2FzX2diZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTEzNC1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM6MTM1Olx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0xMzYtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMTQwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjE0MTpcdGVyciA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTE0Mi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYz0xNTY4PXN0YXRpYyBpbnQgcmtfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTU3MC1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jOjE1NzE6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xNTcyLVx0Y29uc3Qgc3RydWN0IHJrX2dtYWNfb3BzICpkYXRhO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTU4MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM6MTU4MTpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xNTgyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM9NDg9c3RhdGljIGludCByem4xX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTUwLVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzo1MTpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNTItXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM6NTU6XHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy01Ni1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jPTU5Nj1zdGF0aWMgaW50IHNvY2ZwZ2FfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNTk4LVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzo1OTk6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTYwMC1cdHN0cnVjdCBkZXZpY2VcdFx0KmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy02MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM6NjExOlx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjEyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYz0xOT1zdGF0aWMgaW50IHNvcGhnb19zZzIwNDRfZHdtYWNfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtMjAtXHRcdFx0XHQgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jOjIxOlx0XHRcdFx0ICAgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpzdG1tYWNfcmVzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtMjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jPTM1PXN0YXRpYyBpbnQgc29waGdvX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtMzgtXHRjb25zdCBzdHJ1Y3Qgc29waGdvX2R3bWFjX2RhdGEgKmRhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzozOTpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy00MC1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM6NDM6XHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTQ0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jPTEwMj1zdGF0aWMgaW50IHNwYWNlbWl0X2R3bWFjX3VwZGF0ZV9pcnFfY29uZmlnKHN0cnVjdCBzcGFjbWl0X2R3bWFjICpkd21hYyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM6MTAzOlx0XHRcdFx0XHQgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnN0bW1hY19yZXMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTEwNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYz0xNDc9c3RhdGljIGludCBzcGFjZW1pdF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMTQ5LVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM6MTUwOlx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMTUxLVx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0xNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jOjE2MDpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0xNjEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmM9OTA9c3RhdGljIGludCBzdGFyZml2ZV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtOTItXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzo5MzpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTk0LVx0c3RydWN0IHN0YXJmaXZlX2R3bWFjICpkd21hYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzo5ODpcdGVyciA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy05OS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM9MjQ5PXN0YXRpYyBpbnQgc3RpX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMjUyLVx0Y29uc3Qgc3RydWN0IHN0aV9kd21hY19vZl9kYXRhICpkYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM6MjUzOlx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTI1NC1cdHN0cnVjdCBzdGlfZHdtYWMgKmR3bWFjO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTI2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jOjI2MzpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMjY0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jPTUyNT1zdGF0aWMgaW50IHN0bTMyX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01MjctXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo1Mjg6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01MjktXHRzdHJ1Y3Qgc3RtMzJfZHdtYWMgKmR3bWFjO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo1MzM6XHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTM0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYz0xMDU9c3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTEwNy1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYzoxMDg6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMtMTA5LVx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMtMTEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM6MTEzOlx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xMTQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTEwNT1zdGF0aWMgaW50IHN1bjhpX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMTA3LVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTEwODpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTExMDktXHRzdHJ1Y3Qgc3VueGlfcHJpdl9kYXRhICpnbWFjO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTExNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTExNjpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMTE3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jPTk5PXN0YXRpYyBpbnQgc3VuN2lfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmMtMTAxLVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmM6MTAyOlx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmMtMTAzLVx0c3RydWN0IHN1bnhpX3ByaXZfZGF0YSAqZ21hYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jLTEwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmM6MTA3Olx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jLTEwOC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYz0yMTY9c3RhdGljIGludCB0aGVhZF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYy0yMTcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYzoyMTg6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYy0yMTktXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYy0yMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jOjIyNTpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYy0yMjYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM9MjA1PXN0YXRpYyBpbnQgdmlzY29udGlfZXRoX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMDctXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYzoyMDg6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMDktXHRzdHJ1Y3QgdmlzY29udGlfZXRoICpkd21hYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTIxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjEyOlx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTIxMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMTE2PXN0YXRpYyB2b2lkIHN0bW1hY19mcmVlX3R4X3NrYnVmcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTMwLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMTMxOnN0YXRpYyB2b2lkIF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTMyLVx0XHRcdFx0XHQgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMTY2OnN0YXRpYyB2b2lkIGZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE2Ny1cdFx0XHRcdCAgICAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxODItICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIxODM6c3RhdGljIHZvaWQgX19mcmVlX2RtYV90eF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxODQtXHRcdFx0XHRcdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyMDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIyMTA6c3RhdGljIHZvaWQgZnJlZV9kbWFfdHhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMjExLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjIzMC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjIzMTpzdGF0aWMgaW50IF9fYWxsb2NfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjIzMi1cdFx0XHRcdFx0IHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjMwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjMwNTpzdGF0aWMgaW50IGFsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIzMDYtXHRcdFx0XHQgICAgICAgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMzM2LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMzM3OnN0YXRpYyBpbnQgX19hbGxvY19kbWFfdHhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMzM4LVx0XHRcdFx0XHQgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMzczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMzc0OnN0YXRpYyBpbnQgYWxsb2NfZG1hX3R4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjM3NS1cdFx0XHRcdCAgICAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI0MDMtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI0MDQ6c3RhdGljIGludCBhbGxvY19kbWFfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNDA1LVx0XHRcdFx0ICAgIHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQyMi0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjQyMzpzdGF0aWMgdm9pZCBmcmVlX2RtYV9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI0MjQtXHRcdFx0XHQgICAgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9NzMyPWludCBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6NzMzOlx0XHRcdFx0ICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqc3RtbWFjX3JlcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTczNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmg9MjA9aW50IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaDoyMTpcdFx0XHRcdCAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmgtMjItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDIyOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NDM0CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYFNUTU1BQ19WTEFOX1RBR19VU0VEYCoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gYFNUTU1BQ19WTEFOX1RBR19VU0VEYC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8ga25vdyBwcmVjaXNlbHkgd2hhdCB0aGlzIG1hY3JvIHJlcHJlc2VudHMuIEl0cyBkZWZpbml0aW9uIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgd2l0aGluIHRoZSBTVE1NQUMgZHJpdmVyJiMzOTtzIFZMQU4gdGFnZ2luZyBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHBpbnBvaW50IHdoZXJlIGl0JiMzOTtzIGRlZmluZWQgd2l0aGluIHRoZSByZWxldmFudCBzb3VyY2UgY29kZS4gTGV0JiMzOTtzIHRyYWNlIGl0IGJhY2sgYW5kIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGdvaW5nIG9uLiBUaGlzIHdpbGwgdGVsbCBtZSB3aGV0aGVyIHRoaXMgaXMgZW5hYmxpbmcsIGRpc2FibGluZyBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseS4gTm8gcG9pbnQgc3BlY3VsYXRpbmcgd2l0aG91dCB0aGUgZGVmaW5pdGlvbiB0byBndWlkZSBteSB0aGlua2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7U1RNTUFDX1ZMQU5fVEFHX1VTRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yMC0jaWYgSVNfRU5BQkxFRChDT05GSUdfVkxBTl84MDIxUSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjIxOiNkZWZpbmUgU1RNTUFDX1ZMQU5fVEFHX1VTRURcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTIyLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2lmX3ZsYW4uaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmM9NDA9c3RhdGljIHZvaWQgZHdtYWMxMDAwX2NvcmVfaW5pdChzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jLTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYzo2MDojaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtNjEtXHQvKiBUYWcgZGV0ZWN0aW9uIHdpdGhvdXQgZmlsdGVyaW5nICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDBfY29yZS5jPTIyPXN0YXRpYyB2b2lkIGR3bWFjMTAwX2NvcmVfaW5pdChzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMF9jb3JlLmMtMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMF9jb3JlLmM6MzI6I2lmZGVmIFNUTU1BQ19WTEFOX1RBR19VU0VEXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMF9jb3JlLmMtMzMtXHR3cml0ZWwoRVRIX1BfODAyMVEsIGlvYWRkciAmIzQzOyBNQUNfVkxBTjEpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2VuaF9kZXNjLmM9MTU9c3RhdGljIGludCBlbmhfZGVzY19nZXRfdHhfc3RhdHVzKHN0cnVjdCBzdG1tYWNfZXh0cmFfc3RhdHMgKngsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZW5oX2Rlc2MuYy03MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2VuaF9kZXNjLmM6NzE6I2lmZGVmIFNUTU1BQ19WTEFOX1RBR19VU0VEXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9lbmhfZGVzYy5jLTcyLVx0aWYgKHRkZXMwIFx1MDAyNiBFVERFUzBfVkxBTl9GUkFNRSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9lbmhfZGVzYy5jPTE3Nj1zdGF0aWMgaW50IGVuaF9kZXNjX2dldF9yeF9zdGF0dXMoc3RydWN0IHN0bW1hY19leHRyYV9zdGF0cyAqeCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9lbmhfZGVzYy5jLTIzOC1cdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2VuaF9kZXNjLmM6MjM5OiNpZmRlZiBTVE1NQUNfVkxBTl9UQUdfVVNFRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZW5oX2Rlc2MuYy0yNDAtXHRpZiAocmRlczAgXHUwMDI2IFJERVMwX1ZMQU5fVEFHKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL25vcm1fZGVzYy5jPTYyPXN0YXRpYyBpbnQgbmRlc2NfZ2V0X3J4X3N0YXR1cyhzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzICp4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL25vcm1fZGVzYy5jLTEwMy1cdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL25vcm1fZGVzYy5jOjEwNDojaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL25vcm1fZGVzYy5jLTEwNS1cdGlmIChyZGVzMCBcdTAwMjYgUkRFUzBfVkxBTl9UQUcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NzY3PXN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc5NDItXHRuZGV2LVx1MDAzZXdhdGNoZG9nX3RpbWVvID0gbXNlY3NfdG9famlmZmllcyh3YXRjaGRvZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc5NDM6I2lmZGVmIFNUTU1BQ19WTEFOX1RBR19VU0VEXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc5NDQtXHRpZiAoZHdtYWNfaXNfeG1hYyhwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTc0NwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNUTU1BQyBWTEFOIFRhZ2dpbmcgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBpZiBgQ09ORklHX1ZMQU5fODAyMVFgIGlzIGVuYWJsZWQsIHRoZW4gYFNUTU1BQ19WTEFOX1RBR19VU0VEYCBpcyBhdXRvbWF0aWNhbGx5IGRlZmluZWQuIE1ha2VzIHNlbnNlLiBOb3csIGxldCYjMzk7cyB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzIGZvciBgU1RNTUFDX0VUSGAgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIGZpdHMgaW50byB0aGUgYnJvYWRlciBuZXR3b3JrIGRyaXZlciBzdHJ1Y3R1cmUuIFJpZ2h0LCBzdGFydGluZyB3aXRoIHRoZSBwYXJlbnQgbWVudXM6IGBORVRERVZJQ0VTYCB1bmRlciBgZHJpdmVycy9uZXQvS2NvbmZpZ2AsIHRoZW4gYEVUSEVSTkVUYCB1bmRlciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvS2NvbmZpZ2AsIGFuZCB0aGVuIHNwZWNpZmljYWxseSwgYE5FVF9WRU5ET1JfU1RNSUNST2AgaW4gdGhlIGBzdG1pY3JvYCBzdWJkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdGhlIFN0bWljcm8gc3BlY2lmaWMgcGFydC4KCkZyb20gdGhlcmUgd2UgZ2V0IHRvIGBTVE1NQUNfRVRIYCBpdHNlbGYsIHdoaWNoLCBhcyBJIHN1c3BlY3RlZCwgaXMgaW4gdGhlIGBzdG1tYWNgIHN1Yi1tZW51LiAgTmF0dXJhbGx5LCB3ZSYjMzk7bGwgc2VlIGBTVE1NQUNfUExBVEZPUk1gLCBgU1RNTUFDX1BDSWAsIGFuZCBzaW1pbGFyIG9wdGlvbnMgZGVwZW5kZW50IG9uIHRoZSBoYXJkd2FyZS4gQW5kIG9mIGNvdXJzZSwgdGhlIFZMQU4gc3VwcG9ydCBoaW5nZXMgb24gYFZMQU5fODAyMVFgLiBHb3QgaXQuIE5vdyBJJiMzOTtsbCBkcmlsbCBkb3duIGludG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vS2NvbmZpZ2AgdG8gY29uZmlybSB0aGVzZSBkZXBlbmRlbmNpZXMgYW5kIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgdGhlc2UgVkxBTiBjb25maWd1cmF0aW9ucyBhcmUgaGFuZGxlZCBpbiB0aGUgU3RtaWNybyBFdGhlcm5ldCBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDIyOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgU1RNaWNyb2VsZWN0cm9uaWNzIGRldmljZSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBORVRfVkVORE9SX1NUTUlDUk9cbiAgIDc6XHRcdGJvb2wgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIGRldmljZXNcJiMzNDtcbiAgIDg6XHRcdGRlZmF1bHQgeVxuICAgOTpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBiYXNlZCBvbiBTeW5vcHN5cyBFdGhlcm5ldCBJUFxuICAxMjpcdFx0ICBDb3Jlcywgc2F5IFkuXG4gIDEzOlx0XG4gIDE0Olx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAxNTpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsXG4gIDE2Olx0XHQgIHRoZSBxdWVzdGlvbnMgYWJvdXQgU1RNaWNyb2VsZWN0cm9uaWNzIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsXG4gIDE3Olx0XHQgIGJlIGFza2VkIGZvciB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXG4gIDE4Olx0XG4gIDE5Olx0aWYgTkVUX1ZFTkRPUl9TVE1JQ1JPXG4gIDIwOlx0XG4gIDIxOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcJiMzNDtcbiAgMjI6XHRcbiAgMjM6XHRlbmRpZiAjIE5FVF9WRU5ET1JfU1RNSUNST1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDU2MQoJCQkJCQkJb3V0cHV0OiAyMTkKCQkJCQkJCXRob3VnaHRzOiA1MjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBGb2N1czogU1RNTUFDIEV0aGVybmV0IERyaXZlciAtIFZMQU4gSGFuZGxpbmcqKgoKT2theSwgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgYmVzdCBmdW5jdGlvbnMgdG8gdGFyZ2V0IGZvciBmdXp6aW5nIHRoaXMgU1RNTUFDIGRyaXZlciBwYXRjaC4gVGhlIHBhdGNoIHJlbW92ZXMgdGhlIHN0YXRpYyBgc3RtbWFjX3J4X3ZsYW5gIGZ1bmN0aW9uLCB3aGljaCB3YXMgdXNlZCBmb3IgVkxBTiBzdHJpcHBpbmcsIGFuZCB0aGUgY2FsbGVycyBhcmUgbm93IGBzdG1tYWNfZGlzcGF0Y2hfc2tiX3pjYCBhbmQgYHN0bW1hY19yeGAg4oCTIGJvdGggaW4gYHN0bW1hY19tYWluLmNgLiBBbHNvLCBgX19zdG1tYWNfZHZyX3Byb2JlYCBpbiB0aGUgc2FtZSBmaWxlIGlzIGNhbGxlZCBieSBgc3RtbWFjX2R2cl9wcm9iZWAuIFNpbmNlIGBzdG1tYWNfZHZyX3Byb2JlYCBpcyBhIG5vbi1zdGF0aWMgZW50cnkgcG9pbnQsIGFuZCBvdGhlciBjb21tb24gbmV0ZGV2IG9wcyBzdWNoIGFzIGBzdG1tYWNfb3BlbmAsIGBzdG1tYWNfcmVsZWFzZWAsIGFuZCBgc3RtbWFjX3htaXRgLCBtaWdodCBiZSByZWxldmFudC4KCk5vdywgbGV0JiMzOTtzIGNvbmZpcm0gdGhlIGZvY3VzIHN5bWJvbHMuIGBzdG1tYWNfZHZyX3Byb2JlYCBpcyBleHBvcnRlZCBhbmQgbm9uLXN0YXRpYywgc28gdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBzaG91bGQgYWxzbyBjaGVjayBgc3RtbWFjX3BsdGZyX3Byb2JlYCwgaW4gYHN0bW1hY19wbGF0Zm9ybS5jYCwgYXMgYW4gYWRkaXRpb25hbCB0YXJnZXQuCgpTbywgSSYjMzk7bSB0aGlua2luZzoKCiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlLCBkZWZpbml0ZWx5LiBUaGlzIHBhdGNoIHRvdWNoZXMgVkxBTiBoYW5kbGluZywgYW5kIHRoZSBTVE1NQUMgY29udHJvbGxlcnMgYXJlIGtub3duIHRvIGJlIGVtdWxhdGVkIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBUaGlzIHdpbGwgYmUgcmVhY2hhYmxlIGluIHRoZSBmdXp6ZXIuCiogICAqKkZvY3VzU3ltYm9sczoqKiBJJiMzOTttIGxlYW5pbmcgdG93YXJkIGluY2x1ZGluZyBib3RoIGBzdG1tYWNfZHZyX3Byb2JlYCBhbmQgYHN0bW1hY19wbHRmcl9wcm9iZWAsIG9yIG1heWJlIGp1c3QgYHN0bW1hY19kdnJfcHJvYmVgIGFuZCBzZWUgaWYgdGhlIGFuYWx5c2lzIGV4cGFuZHMgb3V0IGZyb20gdGhlcmUuCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVzZSBjb25maWdzIGFyZSBlbmFibGVkOiBgTkVUX1ZFTkRPUl9TVE1JQ1JPYCwgYFNUTU1BQ19FVEhgLCBgU1RNTUFDX1BMQVRGT1JNYCwgYW5kIGBWTEFOXzgwMjFRYC4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBteSByZWFzb25pbmcgaGVyZS4gVGhlIHBhdGNoIGlzIGFib3V0IFZMQU4gaGFuZGxpbmcgaW4gdGhlIFJYIHBhdGgsIHNwZWNpZmljYWxseSByZW1vdmluZyB0aGUgZHJpdmVyLWxldmVsIHN0cmlwcGluZywgbWFraW5nIGl0IGRlcGVuZGVudCBvbiBoYXJkd2FyZSBjYXBhYmlsaXR5IHZpYSBgZHdtYWNfaXNfeG1hY2AuIFRoZSBTVE1NQUMgY29udHJvbGxlcnMgYXJlIGVtdWxhdGVkLCBzbyB0aGlzIGlzIGRlZmluaXRlbHkgcmVsZXZhbnQgZm9yIGZ1enppbmcsIGFuZCBmdW5jdGlvbmFsLgoKQWxyaWdodCwgSSYjMzk7dmUgZ290IHRoZSBjb25maWdzIHN0cmFpZ2h0LiBOb3csIEkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1ZFTkRPUl9TVE1JQ1JPJiMzNDssCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BMQVRGT1JNJiMzNDssCiAgICAmIzM0O1ZMQU5fODAyMVEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfZHZyX3Byb2JlJiMzNDssCiAgICAmIzM0O3N0bW1hY19wbHRmcl9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhbHRlcnMgVkxBTiBoYW5kbGluZyBpbiB0aGUgcmVjZWl2ZSBwYXRoIG9mIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBJdCByZW1vdmVzIGFydGlmaWNpYWwgc29mdHdhcmUgVkxBTiBzdHJpcHBpbmcgKHN0bW1hY19yeF92bGFuKSBmcm9tIHN0bW1hY19yeCBhbmQgc3RtbWFjX2Rpc3BhdGNoX3NrYl96YywgYW5kIHVwZGF0ZXMgZmVhdHVyZSBhZHZlcnRpc2luZyBkdXJpbmcgZHJpdmVyIHByb2JlIChfX3N0bW1hY19kdnJfcHJvYmUpIHRvIG9ubHkgc2V0IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYIHdoZW4gaGFyZHdhcmUgVkxBTiBzdHJpcHBpbmcgaXMgc3VwcG9ydGVkLiBTVE1NQUMgaGFyZHdhcmUgKGUuZy4gQWxsd2lubmVyIHN1bjhpIEVNQUMpIGlzIHN1cHBvcnRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBzbyB0aGVzZSBjaGFuZ2VzIGFmZmVjdCByZWFjaGFibGUga2VybmVsIG5ldHdvcmsgZGF0YSBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1ZFTkRPUl9TVE1JQ1JPJiMzNDssCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BMQVRGT1JNJiMzNDssCiAgICAmIzM0O1ZMQU5fODAyMVEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfZHZyX3Byb2JlJiMzNDssCiAgICAmIzM0O3N0bW1hY19wbHRmcl9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhbHRlcnMgVkxBTiBoYW5kbGluZyBpbiB0aGUgcmVjZWl2ZSBwYXRoIG9mIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBJdCByZW1vdmVzIGFydGlmaWNpYWwgc29mdHdhcmUgVkxBTiBzdHJpcHBpbmcgKHN0bW1hY19yeF92bGFuKSBmcm9tIHN0bW1hY19yeCBhbmQgc3RtbWFjX2Rpc3BhdGNoX3NrYl96YywgYW5kIHVwZGF0ZXMgZmVhdHVyZSBhZHZlcnRpc2luZyBkdXJpbmcgZHJpdmVyIHByb2JlIChfX3N0bW1hY19kdnJfcHJvYmUpIHRvIG9ubHkgc2V0IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYIHdoZW4gaGFyZHdhcmUgVkxBTiBzdHJpcHBpbmcgaXMgc3VwcG9ydGVkLiBTVE1NQUMgaGFyZHdhcmUgKGUuZy4gQWxsd2lubmVyIHN1bjhpIEVNQUMpIGlzIHN1cHBvcnRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBzbyB0aGVzZSBjaGFuZ2VzIGFmZmVjdCByZWFjaGFibGUga2VybmVsIG5ldHdvcmsgZGF0YSBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgc29mdHdhcmUtYmFzZWQgVkxBTiB0YWcgc3RyaXBwaW5nIChgc3RtbWFjX3J4X3ZsYW5gKSBmcm9tIHRoZSBzdG1tYWMgbmV0d29yayBkcml2ZXImIzM5O3MgUlggcGF0aCBhbmQgcmVzdHJpY3RzIGFkdmVydGlzaW5nIGBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWGAgdG8gaGFyZHdhcmUgdGhhdCBhY3R1YWxseSBzdXBwb3J0cyBIVyBWTEFOIHN0cmlwcGluZyAoYGR3bWFjX2lzX3htYWNgKS4gXG5cbk5vIG5ldyBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGtlcm5lbC10by11c2VyIGNvcGllcywgcGFkZGluZyBieXRlcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCBwYXRocyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIHRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkYWJlOWNhZmI4NDllNDNlMWUwMWNiM2I1ZWM3NTU2OGE5ODkxNDc4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgMSAyMjoxMzo0MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCmluZGV4IGIyYjdkMDI0MmRkM2MuLjJlM2IwY2YxMGQ2NjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwpAQCAtNTAyMSwyNCAmIzQzOzUwMjEsNiBAQCBzdGF0aWMgbmV0ZGV2X2ZlYXR1cmVzX3Qgc3RtbWFjX2ZlYXR1cmVzX2NoZWNrKHN0cnVjdCBza19idWZmICpza2IsCiAJcmV0dXJuIHZsYW5fZmVhdHVyZXNfY2hlY2soc2tiLCBmZWF0dXJlcyk7CiB9CiAKLXN0YXRpYyB2b2lkIHN0bW1hY19yeF92bGFuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpCi17Ci0Jc3RydWN0IHZsYW5fZXRoaGRyICp2ZXRoID0gc2tiX3ZsYW5fZXRoX2hkcihza2IpOwotCV9fYmUxNiB2bGFuX3Byb3RvID0gdmV0aC0mZ3Q7aF92bGFuX3Byb3RvOwotCXUxNiB2bGFuaWQ7Ci0KLQlpZiAoKHZsYW5fcHJvdG8gPT0gaHRvbnMoRVRIX1BfODAyMVEpICZhbXA7JmFtcDsKLQkgICAgIGRldi0mZ3Q7ZmVhdHVyZXMgJmFtcDsgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlgpIHx8Ci0JICAgICh2bGFuX3Byb3RvID09IGh0b25zKEVUSF9QXzgwMjFBRCkgJmFtcDsmYW1wOwotCSAgICAgZGV2LSZndDtmZWF0dXJlcyAmYW1wOyBORVRJRl9GX0hXX1ZMQU5fU1RBR19SWCkpIHsKLQkJLyogcG9wIHRoZSB2bGFuIHRhZyAqLwotCQl2bGFuaWQgPSBudG9ocyh2ZXRoLSZndDtoX3ZsYW5fVENJKTsKLQkJbWVtbW92ZShza2ItJmd0O2RhdGEgJiM0MzsgVkxBTl9ITEVOLCB2ZXRoLCBFVEhfQUxFTiAqIDIpOwotCQlza2JfcHVsbChza2IsIFZMQU5fSExFTik7Ci0JCV9fdmxhbl9od2FjY2VsX3B1dF90YWcoc2tiLCB2bGFuX3Byb3RvLCB2bGFuaWQpOwotCX0KLX0KLQogLyoqCiAgKiBzdG1tYWNfcnhfcmVmaWxsIC0gcmVmaWxsIHVzZWQgc2tiIHByZWFsbG9jYXRlZCBidWZmZXJzCiAgKiBAcHJpdjogZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlCkBAIC01NDA3LDkgJiM0Mzs1Mzg5LDcgQEAgc3RhdGljIHZvaWQgc3RtbWFjX2Rpc3BhdGNoX3NrYl96YyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSwKIAlpZiAocHJpdi0mZ3Q7aHctJmd0O2h3X3ZsYW5fZW4pCiAJCS8qIE1BQyBsZXZlbCBzdHJpcHBpbmcuICovCiAJCXN0bW1hY19yeF9od192bGFuKHByaXYsIHByaXYtJmd0O2h3LCBwLCBza2IpOwotCWVsc2UKLQkJLyogRHJpdmVyIGxldmVsIHN0cmlwcGluZy4gKi8KLQkJc3RtbWFjX3J4X3ZsYW4ocHJpdi0mZ3Q7ZGV2LCBza2IpOwomIzQzOwogCXNrYi0mZ3Q7cHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIHByaXYtJmd0O2Rldik7CiAKIAlpZiAodW5saWtlbHkoIWNvZSkgfHwgIXN0bW1hY19oYXNfaXBfZXRoZXJ0eXBlKHNrYikpCkBAIC01OTAxLDkgJiM0Mzs1ODgxLDYgQEAgc3RhdGljIGludCBzdG1tYWNfcngoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBpbnQgbGltaXQsIHUzMiBxdWV1ZSkKIAkJaWYgKHByaXYtJmd0O2h3LSZndDtod192bGFuX2VuKQogCQkJLyogTUFDIGxldmVsIHN0cmlwcGluZy4gKi8KIAkJCXN0bW1hY19yeF9od192bGFuKHByaXYsIHByaXYtJmd0O2h3LCBwLCBza2IpOwotCQllbHNlCi0JCQkvKiBEcml2ZXIgbGV2ZWwgc3RyaXBwaW5nLiAqLwotCQkJc3RtbWFjX3J4X3ZsYW4ocHJpdi0mZ3Q7ZGV2LCBza2IpOwogCiAJCXNrYi0mZ3Q7cHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIHByaXYtJmd0O2Rldik7CiAKQEAgLTc5NjQsOSAmIzQzOzc5NDEsOCBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsCiAJbmRldi0mZ3Q7ZmVhdHVyZXMgfD0gbmRldi0mZ3Q7aHdfZmVhdHVyZXMgfCBORVRJRl9GX0hJR0hETUE7CiAJbmRldi0mZ3Q7d2F0Y2hkb2dfdGltZW8gPSBtc2Vjc190b19qaWZmaWVzKHdhdGNoZG9nKTsKICNpZmRlZiBTVE1NQUNfVkxBTl9UQUdfVVNFRAotCS8qIEJvdGggbWFjMTAwIGFuZCBnbWFjIHN1cHBvcnQgcmVjZWl2ZSBWTEFOIHRhZyBkZXRlY3Rpb24gKi8KLQluZGV2LSZndDtmZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCB8IE5FVElGX0ZfSFdfVkxBTl9TVEFHX1JYOwogCWlmIChkd21hY19pc194bWFjKHByaXYtJmd0O3BsYXQtJmd0O2NvcmVfdHlwZSkpIHsKJiM0MzsJCW5kZXYtJmd0O2ZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYOwogCQluZGV2LSZndDtod19mZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWDsKIAkJcHJpdi0mZ3Q7aHctJmd0O2h3X3ZsYW5fZW4gPSB0cnVlOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDIyOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NDgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gRnV6emluZyBTZXNzaW9uIEV2YWx1YXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBwYXRjaCBzZXJpZXMgd2FycmFudHMgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiBMZXQmIzM5O3MgZGlnIGluLiBGaXJzdCwgSSYjMzk7bGwgYW5hbHl6ZSB0aGUgY2hhbmdlcyB0aGVtc2VsdmVzLCB0aGVuIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LgoKVGhlIHBhdGNoIHRvdWNoZXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLiBBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIHJlbW92ZWQgdGhlIGBzdG1tYWNfcnhfdmxhbmAgZnVuY3Rpb24sIHdoaWNoIGhhbmRsZWQgVkxBTiBzdHJpcHBpbmcgYXQgdGhlIGRyaXZlciBsZXZlbC4gVGhhdCBmdW5jdGlvbiBkaWQgdGhpbmdzIGxpa2UgcG9wcGluZyBWTEFOIHRhZ3MsIGBtZW1tb3ZlYCwgYHNrYl9wdWxsYCwgYW5kIGNhbGxpbmcgYF9fdmxhbl9od2FjY2VsX3B1dF90YWdgLiBJdCBhcHBlYXJzIHRoZXkmIzM5O3ZlIGFsc28gcmVtb3ZlZCB0aGUgZmFsbGJhY2sgY2FsbCB0byBgc3RtbWFjX3J4X3ZsYW5gIGZyb20gYHN0bW1hY19kaXNwYXRjaF9za2JfemNgIGFuZCBgc3RtbWFjX3J4YCB3aGVuIGhhcmR3YXJlIFZMQU4gc3VwcG9ydCBpc24mIzM5O3QgZW5hYmxlZCAoYCFwcml2LSZndDtody0mZ3Q7aHdfdmxhbl9lbmApLiBBbmQsIGluIGBfX3N0bW1hY19kdnJfcHJvYmVgLCB0aGV5JiMzOTtyZSBubyBsb25nZXIgZW5hYmxpbmcgYE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYIHwgTkVUSUZfRl9IV19WTEFOX1NUQUdfUlhgIHVuaXZlcnNhbGx5LCBvbmx5IG9uIFhNQUMgdmFyaWFudHMgKGBkd21hY19pc194bWFjYCkgd2hlcmUgaGFyZHdhcmUgc3RyaXBwaW5nIGlzIGFjdHVhbGx5IHN1cHBvcnRlZC4KCk5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzICp3aHkqIHRoZXkgcmVtb3ZlZCBgc3RtbWFjX3J4X3ZsYW5gIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgd2hldGhlciBpdHMgcmVtb3ZhbCBpbnRyb2R1Y2VzIGFueSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHN0bW1hY19yeF92bGFuYCB3YXMgZG9pbmcgYW5kIHdoZXRoZXIgdGhlc2UgY2hhbmdlcyBmdW5kYW1lbnRhbGx5IGFsdGVyIHRoZSBoYW5kbGluZyBvZiBWTEFOLXRhZ2dlZCBwYWNrZXRzLiBUaW1lIHRvIGdvIGNoZWNrIHRoYXQgY29kZSBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AgZGlyZWN0bHkuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfcnhfdmxhbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcxNgoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpczoKCioqQW5hbHl6aW5nIHRoZSBTVE1NQUMgVkxBTiBSZW1vdmFsKioKCk9rYXksIHNvIHRoZSBwYXRjaCByZW1vdmluZyBgc3RtbWFjX3J4X3ZsYW5gIGhhcyBhbHJlYWR5IG1hZGUgaXRzIHdheSBpbnRvIHRoZSB0cmVlLiBUaGF0JiMzOTtzIGdvb2Q7IGl0IHNpbXBsaWZpZXMgdGhpbmdzIGEgYml0LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyByZW1vdmFsIGluIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhlIFNUTU1BQyBkcml2ZXIuIEkgc2hvdWxkIHByb2JhYmx5IGZvY3VzIG9uIGhvdyB0aGUgVkxBTiBoYW5kbGluZyBpcyBub3cgbWFuYWdlZC4KCkxldCYjMzk7cyBkaXZlIGludG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHdvdWxkIGJlIGFyb3VuZCB0aGUgYXJlYXMgd2hlcmUgVkxBTiBmcmFtZXMgd2VyZSBwcmV2aW91c2x5IHByb2Nlc3NlZC4gU3BlY2lmaWNhbGx5LCB0aGUgdmljaW5pdHkgb2YgbGluZSA1NDAwIGFuZCBhZ2FpbiBhdCBsaW5lIDU5MDAgYXJlIGxpa2VseSBob3RzcG90cy4gSSYjMzk7bGwgc3RhcnQgdGhlcmUsIGFuZCByZWFkIGFyb3VuZCB0aG9zZSBsaW5lcyBmb3IgdGhlIHJlbGV2YW50IGxvZ2ljIGFuZCBkZXRlcm1pbmUgdGhlIG5ldyBmbG93LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9uYWxpdHkgd2FzIHJlbW92ZWQsIHdoYXQgaXQgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgbmV3IGNvbnNpZGVyYXRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBJIGJldCBJIHdpbGwgZmluZCB0aGUgbG9naWMgaXMgbm93IGhhbmRsZWQgaW5saW5lIHdpdGhpbiB0aGUgcmVjZWl2ZSBwYXRoLCBvciBwZXJoYXBzIGRlbGVnYXRlZCB0byBhIGRpZmZlcmVudCBmdW5jdGlvbi4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGltcGFjdCBvbiBleGlzdGluZyBjb25maWd1cmF0aW9ucyBhbmQgcG90ZW50aWFsIHBlcmZvcm1hbmNlIG9yIHN0YWJpbGl0eSBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MzgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzUzODA6XHRcdHUzMiBoYXNoO1xuNTM4MTpcdFxuNTM4MjpcdFx0c2tiID0gc3RtbWFjX2NvbnN0cnVjdF9za2JfemMoY2gsIHhkcCk7XG41MzgzOlx0XHRpZiAoIXNrYikge1xuNTM4NDpcdFx0XHRwcml2LVx1MDAzZXhzdGF0cy5yeF9kcm9wcGVkJiM0MzsmIzQzOztcbjUzODU6XHRcdFx0cmV0dXJuO1xuNTM4NjpcdFx0fVxuNTM4NzpcdFxuNTM4ODpcdFx0c3RtbWFjX2dldF9yeF9od3RzdGFtcChwcml2LCBwLCBucCwgc2tiKTtcbjUzODk6XHRcdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZWh3X3ZsYW5fZW4pXG41MzkwOlx0XHRcdC8qIE1BQyBsZXZlbCBzdHJpcHBpbmcuICovXG41MzkxOlx0XHRcdHN0bW1hY19yeF9od192bGFuKHByaXYsIHByaXYtXHUwMDNlaHcsIHAsIHNrYik7XG41MzkyOlx0XG41MzkzOlx0XHRza2ItXHUwMDNlcHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIHByaXYtXHUwMDNlZGV2KTtcbjUzOTQ6XHRcbjUzOTU6XHRcdGlmICh1bmxpa2VseSghY29lKSB8fCAhc3RtbWFjX2hhc19pcF9ldGhlcnR5cGUoc2tiKSlcbjUzOTY6XHRcdFx0c2tiX2NoZWNrc3VtX25vbmVfYXNzZXJ0KHNrYik7XG41Mzk3Olx0XHRlbHNlXG41Mzk4Olx0XHRcdHNrYi1cdTAwM2VpcF9zdW1tZWQgPSBDSEVDS1NVTV9VTk5FQ0VTU0FSWTtcbjUzOTk6XHRcbjU0MDA6XHRcdGlmICghc3RtbWFjX2dldF9yeF9oYXNoKHByaXYsIHAsIFx1MDAyNmhhc2gsIFx1MDAyNmhhc2hfdHlwZSkpXG41NDAxOlx0XHRcdHNrYl9zZXRfaGFzaChza2IsIGhhc2gsIGhhc2hfdHlwZSk7XG41NDAyOlx0XG41NDAzOlx0XHRza2JfcmVjb3JkX3J4X3F1ZXVlKHNrYiwgcXVldWUpO1xuNTQwNDpcdFx0bmFwaV9ncm9fcmVjZWl2ZShcdTAwMjZjaC1cdTAwM2VyeHR4X25hcGksIHNrYik7XG41NDA1Olx0XG41NDA2Olx0XHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFx1MDAyNnJ4cV9zdGF0cy1cdTAwM2VuYXBpX3N5bmNwKTtcbjU0MDc6XHRcdHU2NF9zdGF0c19pbmMoXHUwMDI2cnhxX3N0YXRzLVx1MDAzZW5hcGkucnhfcGt0X24pO1xuNTQwODpcdFx0dTY0X3N0YXRzX2FkZChcdTAwMjZyeHFfc3RhdHMtXHUwMDNlbmFwaS5yeF9ieXRlcywgbGVuKTtcbjU0MDk6XHRcdHU2NF9zdGF0c191cGRhdGVfZW5kKFx1MDAyNnJ4cV9zdGF0cy1cdTAwM2VuYXBpX3N5bmNwKTtcbjU0MTA6XHR9XG41NDExOlx0XG41NDEyOlx0c3RhdGljIGJvb2wgc3RtbWFjX3J4X3JlZmlsbF96YyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSwgdTMyIGJ1ZGdldClcbjU0MTM6XHR7XG41NDE0Olx0XHRzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xID0gXHUwMDI2cHJpdi1cdTAwM2VkbWFfY29uZi5yeF9xdWV1ZVtxdWV1ZV07XG41NDE1Olx0XHR1bnNpZ25lZCBpbnQgZW50cnkgPSByeF9xLVx1MDAzZWRpcnR5X3J4O1xuNTQxNjpcdFx0c3RydWN0IGRtYV9kZXNjICpyeF9kZXNjID0gTlVMTDtcbjU0MTc6XHRcdGJvb2wgcmV0ID0gdHJ1ZTtcbjU0MTg6XHRcbjU0MTk6XHRcdGJ1ZGdldCA9IG1pbihidWRnZXQsIHN0bW1hY19yeF9kaXJ0eShwcml2LCBxdWV1ZSkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODMzCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gZGVlcCBpbiBteSBhcmVhIG9mIGV4cGVydGlzZToKCioqU3RyYXRlZ2ljIFJhbmdlIENvbnNpZGVyYXRpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTt2ZSBnb3QgYSBzaXR1YXRpb24gaGVyZSB3aGVyZSB0aGUgYW5hbHlzaXMgaXMgcG9pbnRpbmcgaW4gYSBwYXJ0aWN1bGFyIGRpcmVjdGlvbi4gTXkgaW1tZWRpYXRlIHJlYWN0aW9uIGlzbiYjMzk7dCBqdXN0IHRvIGFjY2VwdCB0aGUgbW9zdCBvYnZpb3VzIGNvbmNsdXNpb24sIHRob3VnaC4gVGhlIGRhdGEgc3VnZ2VzdHMgc29tZXRoaW5nIHdpdGhpbiB0aGUgcGFyYW1ldGVycyB3ZSBoYXZlLCBidXQgSSYjMzk7bSB0aGlua2luZyBzdHJhdGVnaWNhbGx5LiBJIHdhbnQgdG8gYmUgdGhvcm91Z2guIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgZGF0YSBhcm91bmQgdGhlIDU4ODAtNTkxMCByYW5nZSBzcGVjaWZpY2FsbHkuIEl0JiMzOTtzIG5vdCBuZWNlc3NhcmlseSB0aGUgcHJpbWFyeSBmb2N1cywgb3IgdGhlIG1vc3Qgb2J2aW91cyByYW5nZSwgYnV0IGV4cGVyaWVuY2UgdGVsbHMgbWUgaXQmIzM5O3Mgb2Z0ZW4gcHJ1ZGVudCB0byBleHBsb3JlIHRoZXNlIGFkamFjZW50IGFyZWFzIGZvciBwb3RlbnRpYWwgbnVhbmNlcywgc2Vjb25kYXJ5IGVmZmVjdHMsIG9yIGFsdGVybmF0aXZlIGV4cGxhbmF0aW9ucy4gSXQgbWlnaHQgY29uZmlybSB0aGUgcHJpbWFyeSBmaW5kaW5ncywgb3IgdGhyb3cgdXAgYSB3cmlua2xlIHRvIGJlIGV4cGxvcmVkIGZ1cnRoZXIuIEVpdGhlciB3YXksIGl0JiMzOTtzIGEgZ29vZCBjcm9zc2NoZWNrLiBJJiMzOTttIG9wZXJhdGluZyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IGJlaW5nIG1ldGljdWxvdXMgdXAgZnJvbnQgc2F2ZXMgYSBsb3Qgb2YgdGltZSBhbmQgcG90ZW50aWFsIHJld29yayBkb3duIHRoZSBsaW5lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1ODc1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzU4NzU6XHRcdFx0XHRjb250aW51ZTtcbjU4NzY6XHRcbjU4Nzc6XHRcdFx0LyogR290IGVudGlyZSBwYWNrZXQgaW50byBTS0IuIEZpbmlzaCBpdC4gKi9cbjU4Nzg6XHRcbjU4Nzk6XHRcdFx0c3RtbWFjX2dldF9yeF9od3RzdGFtcChwcml2LCBwLCBucCwgc2tiKTtcbjU4ODA6XHRcbjU4ODE6XHRcdFx0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlaHdfdmxhbl9lbilcbjU4ODI6XHRcdFx0XHQvKiBNQUMgbGV2ZWwgc3RyaXBwaW5nLiAqL1xuNTg4MzpcdFx0XHRcdHN0bW1hY19yeF9od192bGFuKHByaXYsIHByaXYtXHUwMDNlaHcsIHAsIHNrYik7XG41ODg0Olx0XG41ODg1Olx0XHRcdHNrYi1cdTAwM2Vwcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgcHJpdi1cdTAwM2VkZXYpO1xuNTg4NjpcdFxuNTg4NzpcdFx0XHRpZiAodW5saWtlbHkoIWNvZSkgfHwgIXN0bW1hY19oYXNfaXBfZXRoZXJ0eXBlKHNrYikgfHxcbjU4ODg6XHRcdFx0ICAgIChzdGF0dXMgXHUwMDI2IGNzdW1fbm9uZSkpXG41ODg5Olx0XHRcdFx0c2tiX2NoZWNrc3VtX25vbmVfYXNzZXJ0KHNrYik7XG41ODkwOlx0XHRcdGVsc2VcbjU4OTE6XHRcdFx0XHRza2ItXHUwMDNlaXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlk7XG41ODkyOlx0XG41ODkzOlx0XHRcdGlmICghc3RtbWFjX2dldF9yeF9oYXNoKHByaXYsIHAsIFx1MDAyNmhhc2gsIFx1MDAyNmhhc2hfdHlwZSkpXG41ODk0Olx0XHRcdFx0c2tiX3NldF9oYXNoKHNrYiwgaGFzaCwgaGFzaF90eXBlKTtcbjU4OTU6XHRcbjU4OTY6XHRcdFx0c2tiX3JlY29yZF9yeF9xdWV1ZShza2IsIHF1ZXVlKTtcbjU4OTc6XHRcdFx0bmFwaV9ncm9fcmVjZWl2ZShcdTAwMjZjaC1cdTAwM2VyeF9uYXBpLCBza2IpO1xuNTg5ODpcdFx0XHRza2IgPSBOVUxMO1xuNTg5OTpcdFxuNTkwMDpcdFx0XHRyeF9wYWNrZXRzJiM0MzsmIzQzOztcbjU5MDE6XHRcdFx0cnhfYnl0ZXMgJiM0Mzs9IGxlbjtcbjU5MDI6XHRcdFx0Y291bnQmIzQzOyYjNDM7O1xuNTkwMzpcdFx0fVxuNTkwNDpcdFxuNTkwNTpcdFx0aWYgKHN0YXR1cyBcdTAwMjYgcnhfbm90X2xzIHx8IHNrYikge1xuNTkwNjpcdFx0XHRyeF9xLVx1MDAzZXN0YXRlX3NhdmVkID0gdHJ1ZTtcbjU5MDc6XHRcdFx0cnhfcS1cdTAwM2VzdGF0ZS5za2IgPSBza2I7XG41OTA4Olx0XHRcdHJ4X3EtXHUwMDNlc3RhdGUuZXJyb3IgPSBlcnJvcjtcbjU5MDk6XHRcdFx0cnhfcS1cdTAwM2VzdGF0ZS5sZW4gPSBsZW47XG41OTEwOlx0XHR9XG41OTExOlx0XG41OTEyOlx0XHRzdG1tYWNfZmluYWxpemVfeGRwX3J4KHByaXYsIHhkcF9zdGF0dXMpO1xuNTkxMzpcdFxuNTkxNDpcdFx0c3RtbWFjX3J4X3JlZmlsbChwcml2LCBxdWV1ZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDIyOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3MzUKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipEaXZpbmcgaW50byB0aGUgU1RNTUFDIERyaXZlciBQcm9iZSoqCgpPa2F5LCB0aW1lIHRvIGdldCB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGBfX3N0bW1hY19kdnJfcHJvYmVgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIEkgc3VzcGVjdCB0aGUgaXNzdWUgbWlnaHQgYmUgbHVya2luZyBzb21ld2hlcmUgYXJvdW5kIGxpbmVzIDc5MzUgdGhyb3VnaCA3OTY1LiBUaGlzIHJhbmdlIGxpa2VseSBjb3ZlcnMgYSBjcml0aWNhbCBzZWN0aW9uIHdpdGhpbiB0aGUgcHJvYmUgcm91dGluZTsgbWF5YmUgYW4gaW5pdGlhbGl6YXRpb24gc3RlcCwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgb3IgZGV2aWNlIGNvbmZpZ3VyYXRpb24uIEdpdmVuIHRoZSB0eXBpY2FsIGZsb3cgb2YgcHJvYmUgZnVuY3Rpb25zIGluIExpbnV4IGtlcm5lbCBkcml2ZXJzLCB0aGF0IGFyZWEgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGRlYnVnZ2luZy4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyB0aGVyZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzkzNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs3OTM1Olx0XHRcdFx0fVxuNzkzNjpcdFxuNzkzNzpcdFx0XHRcdHByaXYtXHUwMDNlZG1hX2NhcC5ob3N0X2RtYV93aWR0aCA9IDMyO1xuNzkzODpcdFx0XHR9XG43OTM5Olx0XHR9XG43OTQwOlx0XG43OTQxOlx0XHRuZGV2LVx1MDAzZWZlYXR1cmVzIHw9IG5kZXYtXHUwMDNlaHdfZmVhdHVyZXMgfCBORVRJRl9GX0hJR0hETUE7XG43OTQyOlx0XHRuZGV2LVx1MDAzZXdhdGNoZG9nX3RpbWVvID0gbXNlY3NfdG9famlmZmllcyh3YXRjaGRvZyk7XG43OTQzOlx0I2lmZGVmIFNUTU1BQ19WTEFOX1RBR19VU0VEXG43OTQ0Olx0XHRpZiAoZHdtYWNfaXNfeG1hYyhwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlKSkge1xuNzk0NTpcdFx0XHRuZGV2LVx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYO1xuNzk0NjpcdFx0XHRuZGV2LVx1MDAzZWh3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYO1xuNzk0NzpcdFx0XHRwcml2LVx1MDAzZWh3LVx1MDAzZWh3X3ZsYW5fZW4gPSB0cnVlO1xuNzk0ODpcdFx0fVxuNzk0OTpcdFx0aWYgKHByaXYtXHUwMDNlZG1hX2NhcC52bGhhc2gpIHtcbjc5NTA6XHRcdFx0bmRldi1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fQ1RBR19GSUxURVI7XG43OTUxOlx0XHRcdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX1NUQUdfRklMVEVSO1xuNzk1MjpcdFx0fVxuNzk1MzpcdFx0aWYgKHByaXYtXHUwMDNlZG1hX2NhcC52bGlucylcbjc5NTQ6XHRcdFx0bmRldi1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fQ1RBR19UWDtcbjc5NTU6XHQjZW5kaWZcbjc5NTY6XHRcdHByaXYtXHUwMDNlbXNnX2VuYWJsZSA9IG5ldGlmX21zZ19pbml0KGRlYnVnLCBkZWZhdWx0X21zZ19sZXZlbCk7XG43OTU3Olx0XG43OTU4Olx0XHRwcml2LVx1MDAzZXhzdGF0cy50aHJlc2hvbGQgPSB0Yztcbjc5NTk6XHRcbjc5NjA6XHRcdC8qIEluaXRpYWxpemUgUlNTICovXG43OTYxOlx0XHRyeHEgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTtcbjc5NjI6XHRcdG5ldGRldl9yc3Nfa2V5X2ZpbGwocHJpdi1cdTAwM2Vyc3Mua2V5LCBzaXplb2YocHJpdi1cdTAwM2Vyc3Mua2V5KSk7XG43OTYzOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHByaXYtXHUwMDNlcnNzLnRhYmxlKTsgaSYjNDM7JiM0MzspXG43OTY0Olx0XHRcdHByaXYtXHUwMDNlcnNzLnRhYmxlW2ldID0gZXRodG9vbF9yeGZoX2luZGlyX2RlZmF1bHQoaSwgcnhxKTtcbjc5NjU6XHRcbjc5NjY6XHRcdGlmIChwcml2LVx1MDAzZWRtYV9jYXAucnNzZW4gXHUwMDI2XHUwMDI2IHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vyc3NfZW4pXG43OTY3Olx0XHRcdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9SWEhBU0g7XG43OTY4Olx0XG43OTY5Olx0XHRuZGV2LVx1MDAzZXZsYW5fZmVhdHVyZXMgfD0gbmRldi1cdTAwM2VmZWF0dXJlcztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYxNwoJCQkJCQkJb3V0cHV0OiAxNDcKCQkJCQkJCXRob3VnaHRzOiAzNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWTEFOIFN0cmlwcGluZyBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoIGZvciB0aGUgc3RtbWFjIGRyaXZlci4gSXQgc2VlbXMgbGlrZSB3ZSYjMzk7cmUgc3RyZWFtbGluaW5nIHRoZSBWTEFOIHJlY2VpdmUgcGF0aC4gVGhlIGdvYWwgaXMgdG8gcmVtb3ZlIHRoZSBzb2Z0d2FyZS1sZXZlbCBWTEFOIHN0cmlwcGluZyBlbXVsYXRpb24sIGBzdG1tYWNfcnhfdmxhbmAsIGFuZCBvbmx5IGVuYWJsZSB0aGUgaGFyZHdhcmUgVkxBTiBzdHJpcHBpbmcgZmxhZywgYE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYYCwgd2hlbiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSAoYGR3bWFjX2lzX3htYWNgKSBhY3R1YWxseSBzdXBwb3J0cyBpdC4KCk5vdywgbXkgaW5pdGlhbCBjb25jZXJuLCBhcyBhbHdheXMsIGlzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBTbywgbGV0JiMzOTtzIHJ1biB0aHJvdWdoIHRoZSB1c3VhbCBjaGVja2xpc3Q6CgoxLiAgKipLZXJuZWwgU3RydWN0dXJlcyB0byBVc2Vyc3BhY2U6KiogRG9lcyB0aGlzIGNoYW5nZSBhbnl0aGluZyB3aGVyZSB3ZSBtaWdodCBleHBvc2UgdW5pbml0aWFsaXplZCBmaWVsZHMgb3IgcGFkZGluZyB0byB1c2Vyc3BhY2U/IE5vLCB0aGF0JiMzOTtzIG5vdCBhIGNvbmNlcm4gaGVyZS4KMi4gICoqQ29uZGl0aW9uYWwgTG9naWMvQnJhbmNoaW5nOioqIERvZXMgdGhlIHBhdGNoIGludHJvZHVjZSBhbnkgbmV3IGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgcmVsaWVzIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHN0cnVjdCBmaWVsZHM/IE5vcGUuCjMuICAqKkNvbXBsZXggRGF0YSBTdHJ1Y3R1cmUgSW5pdGlhbGl6YXRpb246KiogQXJlIHdlIGFsbG9jYXRpbmcgb3IgaW5pdGlhbGl6aW5nIGFueSBuZXcgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZCBsYXRlcj8gTm8gaXNzdWVzIGRldGVjdGVkIGhlcmUgZWl0aGVyLgo0LiAgKipCb3VuZHMgQ2hlY2tzL0J1ZmZlciBBY2Nlc3M6KiogQW55IG1vZGlmaWNhdGlvbiB0byBib3VuZHMgY2hlY2tzIG9yIGxvZ2ljIHRoYXQgbWlnaHQgYWxsb3cgc3Vycm91bmRpbmcgY29kZSB0byByZWFkIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycz8gQWN0dWFsbHksIGl0IHJlbW92ZXMgY29kZSB0aGF0IHdvdWxkIGhhdmUgYmVlbiBhIHBvdGVudGlhbCBzb3VyY2Ugb2YgdGhpcyBpc3N1ZSAoYG1lbW1vdmVgIGFuZCBgc2tiX3B1bGxgIGluIGBzdG1tYWNfcnhfdmxhbmApLiBQYWNrZXRzIHdpdGhvdXQgaGFyZHdhcmUgc3RyaXBwaW5nIHdpbGwgc2ltcGx5IHJldGFpbiB0aGVpciBWTEFOIGhlYWRlciBhbmQgYmUgcHJvY2Vzc2VkIGZ1cnRoZXIgdXAgdGhlIHN0YWNrLCBubyBkcml2ZXIgaW50ZXJ2ZW50aW9uIG5lZWRlZC4KClNvLCBpbiBzaG9ydCwgSSYjMzk7bSBub3Qgc2VlaW5nIGFueSBpbW1lZGlhdGUgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIE5vIEtNU0FOIGlzIG5lY2Vzc2FyeSBmb3IgdGhpcyBjaGFuZ2UuIFRoZSByaXNrIG9mIHN0YW5kYXJkIHRlc3RpbmcgbGlrZSBLQVNBTiBpcyBuZWdsaWdpYmxlLiBLQVNBTiBzaG91bGQgYmUgbW9yZSB0aGFuIGFkZXF1YXRlIHRvIGNhdGNoIGFueSBvdXQtb2YtYm91bmRzLCB1c2UtYWZ0ZXItZnJlZSwgb3Igb3RoZXIgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuCgpJdCYjMzk7cyBhbGwgbG9va2luZyBnb29kLiBJIGFtIGhhcHB5IHdpdGggdGhlIHJlc3VsdHMgb2YgdGhlIHBhdGNoJiMzOTtzIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIHNvZnR3YXJlLWJhc2VkIFZMQU4gdGFnIHN0cmlwcGluZyAoYHN0bW1hY19yeF92bGFuYCkgZnJvbSB0aGUgc3RtbWFjIG5ldHdvcmsgZHJpdmVyJiMzOTtzIFJYIHBhdGggYW5kIHJlc3RyaWN0cyBhZHZlcnRpc2luZyBgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlhgIHRvIGhhcmR3YXJlIHRoYXQgYWN0dWFsbHkgc3VwcG9ydHMgSFcgVkxBTiBzdHJpcHBpbmcgKGBkd21hY19pc194bWFjYCkuIFxuXG5ObyBuZXcgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBrZXJuZWwtdG8tdXNlciBjb3BpZXMsIHBhZGRpbmcgYnl0ZXMsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgcGF0aHMgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZC4gVGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgc29mdHdhcmUtYmFzZWQgVkxBTiB0YWcgc3RyaXBwaW5nIChgc3RtbWFjX3J4X3ZsYW5gKSBmcm9tIHRoZSBzdG1tYWMgbmV0d29yayBkcml2ZXImIzM5O3MgUlggcGF0aCBhbmQgcmVzdHJpY3RzIGFkdmVydGlzaW5nIGBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWGAgdG8gaGFyZHdhcmUgdGhhdCBhY3R1YWxseSBzdXBwb3J0cyBIVyBWTEFOIHN0cmlwcGluZyAoYGR3bWFjX2lzX3htYWNgKS4gXG5cbk5vIG5ldyBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGtlcm5lbC10by11c2VyIGNvcGllcywgcGFkZGluZyBieXRlcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCBwYXRocyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIHRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxMzo0Mi41OTE2Mjc5NjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTc3OTQyMzcwOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1ZFTkRPUl9TVE1JQ1JPXCIsXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUExBVEZPUk1cIixcbiAgICBcIlZMQU5fODAyMVFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfZHZyX3Byb2JlXCIsXG4gICAgXCJzdG1tYWNfcGx0ZnJfcHJvYmVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgc29mdHdhcmUtYmFzZWQgVkxBTiB0YWcgc3RyaXBwaW5nIChgc3RtbWFjX3J4X3ZsYW5gKSBmcm9tIHRoZSBzdG1tYWMgbmV0d29yayBkcml2ZXIncyBSWCBwYXRoIGFuZCByZXN0cmljdHMgYWR2ZXJ0aXNpbmcgYE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYYCB0byBoYXJkd2FyZSB0aGF0IGFjdHVhbGx5IHN1cHBvcnRzIEhXIFZMQU4gc3RyaXBwaW5nIChgZHdtYWNfaXNfeG1hY2ApLiBcXG5cXG5ObyBuZXcgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBrZXJuZWwtdG8tdXNlciBjb3BpZXMsIHBhZGRpbmcgYnl0ZXMsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgcGF0aHMgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZC4gVGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhbHRlcnMgVkxBTiBoYW5kbGluZyBpbiB0aGUgcmVjZWl2ZSBwYXRoIG9mIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBJdCByZW1vdmVzIGFydGlmaWNpYWwgc29mdHdhcmUgVkxBTiBzdHJpcHBpbmcgKHN0bW1hY19yeF92bGFuKSBmcm9tIHN0bW1hY19yeCBhbmQgc3RtbWFjX2Rpc3BhdGNoX3NrYl96YywgYW5kIHVwZGF0ZXMgZmVhdHVyZSBhZHZlcnRpc2luZyBkdXJpbmcgZHJpdmVyIHByb2JlIChfX3N0bW1hY19kdnJfcHJvYmUpIHRvIG9ubHkgc2V0IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYIHdoZW4gaGFyZHdhcmUgVkxBTiBzdHJpcHBpbmcgaXMgc3VwcG9ydGVkLiBTVE1NQUMgaGFyZHdhcmUgKGUuZy4gQWxsd2lubmVyIHN1bjhpIEVNQUMpIGlzIHN1cHBvcnRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBzbyB0aGVzZSBjaGFuZ2VzIGFmZmVjdCByZWFjaGFibGUga2VybmVsIG5ldHdvcmsgZGF0YSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTM6NDIuNTkxNjM1ODQ3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQyNzk0ODM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZGFiZTljYWZiODQ5ZTQzZTFlMDFjYjNiNWVjNzU1NjhhOTg5MTQ3OFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIFNlcCAxIDIyOjEzOjQwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuaW5kZXggYjJiN2QwMjQyZGQzYy4uMmUzYjBjZjEwZDY2NyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbkBAIC01MDIxLDI0ICs1MDIxLDYgQEAgc3RhdGljIG5ldGRldl9mZWF0dXJlc190IHN0bW1hY19mZWF0dXJlc19jaGVjayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRyZXR1cm4gdmxhbl9mZWF0dXJlc19jaGVjayhza2IsIGZlYXR1cmVzKTtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgc3RtbWFjX3J4X3ZsYW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4te1xcbi1cXHRzdHJ1Y3Qgdmxhbl9ldGhoZHIgKnZldGggPSBza2Jfdmxhbl9ldGhfaGRyKHNrYik7XFxuLVxcdF9fYmUxNiB2bGFuX3Byb3RvID0gdmV0aC1cXHUwMDNlaF92bGFuX3Byb3RvO1xcbi1cXHR1MTYgdmxhbmlkO1xcbi1cXG4tXFx0aWYgKCh2bGFuX3Byb3RvID09IGh0b25zKEVUSF9QXzgwMjFRKSBcXHUwMDI2XFx1MDAyNlxcbi1cXHQgICAgIGRldi1cXHUwMDNlZmVhdHVyZXMgXFx1MDAyNiBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCkgfHxcXG4tXFx0ICAgICh2bGFuX3Byb3RvID09IGh0b25zKEVUSF9QXzgwMjFBRCkgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgICBkZXYtXFx1MDAzZWZlYXR1cmVzIFxcdTAwMjYgTkVUSUZfRl9IV19WTEFOX1NUQUdfUlgpKSB7XFxuLVxcdFxcdC8qIHBvcCB0aGUgdmxhbiB0YWcgKi9cXG4tXFx0XFx0dmxhbmlkID0gbnRvaHModmV0aC1cXHUwMDNlaF92bGFuX1RDSSk7XFxuLVxcdFxcdG1lbW1vdmUoc2tiLVxcdTAwM2VkYXRhICsgVkxBTl9ITEVOLCB2ZXRoLCBFVEhfQUxFTiAqIDIpO1xcbi1cXHRcXHRza2JfcHVsbChza2IsIFZMQU5fSExFTik7XFxuLVxcdFxcdF9fdmxhbl9od2FjY2VsX3B1dF90YWcoc2tiLCB2bGFuX3Byb3RvLCB2bGFuaWQpO1xcbi1cXHR9XFxuLX1cXG4tXFxuIC8qKlxcbiAgKiBzdG1tYWNfcnhfcmVmaWxsIC0gcmVmaWxsIHVzZWQgc2tiIHByZWFsbG9jYXRlZCBidWZmZXJzXFxuICAqIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG5AQCAtNTQwNyw5ICs1Mzg5LDcgQEAgc3RhdGljIHZvaWQgc3RtbWFjX2Rpc3BhdGNoX3NrYl96YyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSxcXG4gXFx0aWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2Vod192bGFuX2VuKVxcbiBcXHRcXHQvKiBNQUMgbGV2ZWwgc3RyaXBwaW5nLiAqL1xcbiBcXHRcXHRzdG1tYWNfcnhfaHdfdmxhbihwcml2LCBwcml2LVxcdTAwM2VodywgcCwgc2tiKTtcXG4tXFx0ZWxzZVxcbi1cXHRcXHQvKiBEcml2ZXIgbGV2ZWwgc3RyaXBwaW5nLiAqL1xcbi1cXHRcXHRzdG1tYWNfcnhfdmxhbihwcml2LVxcdTAwM2VkZXYsIHNrYik7XFxuK1xcbiBcXHRza2ItXFx1MDAzZXByb3RvY29sID0gZXRoX3R5cGVfdHJhbnMoc2tiLCBwcml2LVxcdTAwM2VkZXYpO1xcbiBcXG4gXFx0aWYgKHVubGlrZWx5KCFjb2UpIHx8ICFzdG1tYWNfaGFzX2lwX2V0aGVydHlwZShza2IpKVxcbkBAIC01OTAxLDkgKzU4ODEsNiBAQCBzdGF0aWMgaW50IHN0bW1hY19yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGludCBsaW1pdCwgdTMyIHF1ZXVlKVxcbiBcXHRcXHRpZiAocHJpdi1cXHUwMDNlaHctXFx1MDAzZWh3X3ZsYW5fZW4pXFxuIFxcdFxcdFxcdC8qIE1BQyBsZXZlbCBzdHJpcHBpbmcuICovXFxuIFxcdFxcdFxcdHN0bW1hY19yeF9od192bGFuKHByaXYsIHByaXYtXFx1MDAzZWh3LCBwLCBza2IpO1xcbi1cXHRcXHRlbHNlXFxuLVxcdFxcdFxcdC8qIERyaXZlciBsZXZlbCBzdHJpcHBpbmcuICovXFxuLVxcdFxcdFxcdHN0bW1hY19yeF92bGFuKHByaXYtXFx1MDAzZWRldiwgc2tiKTtcXG4gXFxuIFxcdFxcdHNrYi1cXHUwMDNlcHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIHByaXYtXFx1MDAzZWRldik7XFxuIFxcbkBAIC03OTY0LDkgKzc5NDEsOCBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuIFxcdG5kZXYtXFx1MDAzZWZlYXR1cmVzIHw9IG5kZXYtXFx1MDAzZWh3X2ZlYXR1cmVzIHwgTkVUSUZfRl9ISUdIRE1BO1xcbiBcXHRuZGV2LVxcdTAwM2V3YXRjaGRvZ190aW1lbyA9IG1zZWNzX3RvX2ppZmZpZXMod2F0Y2hkb2cpO1xcbiAjaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURcXG4tXFx0LyogQm90aCBtYWMxMDAgYW5kIGdtYWMgc3VwcG9ydCByZWNlaXZlIFZMQU4gdGFnIGRldGVjdGlvbiAqL1xcbi1cXHRuZGV2LVxcdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCB8IE5FVElGX0ZfSFdfVkxBTl9TVEFHX1JYO1xcbiBcXHRpZiAoZHdtYWNfaXNfeG1hYyhwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUpKSB7XFxuK1xcdFxcdG5kZXYtXFx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYO1xcbiBcXHRcXHRuZGV2LVxcdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWDtcXG4gXFx0XFx0cHJpdi1cXHUwMDNlaHctXFx1MDAzZWh3X3ZsYW5fZW4gPSB0cnVlO1xcbiBcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDIyOjEzOjQzLjkzNTEzMjI1NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6ODk5MDAwMzk4MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1ZFTkRPUl9TVE1JQ1JPXCIsXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUExBVEZPUk1cIixcbiAgICBcIlZMQU5fODAyMVFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfZHZyX3Byb2JlXCIsXG4gICAgXCJzdG1tYWNfcGx0ZnJfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhbHRlcnMgVkxBTiBoYW5kbGluZyBpbiB0aGUgcmVjZWl2ZSBwYXRoIG9mIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBJdCByZW1vdmVzIGFydGlmaWNpYWwgc29mdHdhcmUgVkxBTiBzdHJpcHBpbmcgKHN0bW1hY19yeF92bGFuKSBmcm9tIHN0bW1hY19yeCBhbmQgc3RtbWFjX2Rpc3BhdGNoX3NrYl96YywgYW5kIHVwZGF0ZXMgZmVhdHVyZSBhZHZlcnRpc2luZyBkdXJpbmcgZHJpdmVyIHByb2JlIChfX3N0bW1hY19kdnJfcHJvYmUpIHRvIG9ubHkgc2V0IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYIHdoZW4gaGFyZHdhcmUgVkxBTiBzdHJpcHBpbmcgaXMgc3VwcG9ydGVkLiBTVE1NQUMgaGFyZHdhcmUgKGUuZy4gQWxsd2lubmVyIHN1bjhpIEVNQUMpIGlzIHN1cHBvcnRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBzbyB0aGVzZSBjaGFuZ2VzIGFmZmVjdCByZWFjaGFibGUga2VybmVsIG5ldHdvcmsgZGF0YSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGFiZTljYWZiODQ5ZTQzZTFlMDFjYjNiNWVjNzU1NjhhOTg5MTQ3OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDEgMjI6MTM6NDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggYjJiN2QwMjQyZGQzYy4uMmUzYjBjZjEwZDY2NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC01MDIxLDI0ICs1MDIxLDYgQEAgc3RhdGljIG5ldGRldl9mZWF0dXJlc190IHN0bW1hY19mZWF0dXJlc19jaGVjayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0cmV0dXJuIHZsYW5fZmVhdHVyZXNfY2hlY2soc2tiLCBmZWF0dXJlcyk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHN0bW1hY19yeF92bGFuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4te1xuLVx0c3RydWN0IHZsYW5fZXRoaGRyICp2ZXRoID0gc2tiX3ZsYW5fZXRoX2hkcihza2IpO1xuLVx0X19iZTE2IHZsYW5fcHJvdG8gPSB2ZXRoLVx1MDAzZWhfdmxhbl9wcm90bztcbi1cdHUxNiB2bGFuaWQ7XG4tXG4tXHRpZiAoKHZsYW5fcHJvdG8gPT0gaHRvbnMoRVRIX1BfODAyMVEpIFx1MDAyNlx1MDAyNlxuLVx0ICAgICBkZXYtXHUwMDNlZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYKSB8fFxuLVx0ICAgICh2bGFuX3Byb3RvID09IGh0b25zKEVUSF9QXzgwMjFBRCkgXHUwMDI2XHUwMDI2XG4tXHQgICAgIGRldi1cdTAwM2VmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9IV19WTEFOX1NUQUdfUlgpKSB7XG4tXHRcdC8qIHBvcCB0aGUgdmxhbiB0YWcgKi9cbi1cdFx0dmxhbmlkID0gbnRvaHModmV0aC1cdTAwM2VoX3ZsYW5fVENJKTtcbi1cdFx0bWVtbW92ZShza2ItXHUwMDNlZGF0YSArIFZMQU5fSExFTiwgdmV0aCwgRVRIX0FMRU4gKiAyKTtcbi1cdFx0c2tiX3B1bGwoc2tiLCBWTEFOX0hMRU4pO1xuLVx0XHRfX3ZsYW5faHdhY2NlbF9wdXRfdGFnKHNrYiwgdmxhbl9wcm90bywgdmxhbmlkKTtcbi1cdH1cbi19XG4tXG4gLyoqXG4gICogc3RtbWFjX3J4X3JlZmlsbCAtIHJlZmlsbCB1c2VkIHNrYiBwcmVhbGxvY2F0ZWQgYnVmZmVyc1xuICAqIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmVcbkBAIC01NDA3LDkgKzUzODksNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZGlzcGF0Y2hfc2tiX3pjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlLFxuIFx0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlaHdfdmxhbl9lbilcbiBcdFx0LyogTUFDIGxldmVsIHN0cmlwcGluZy4gKi9cbiBcdFx0c3RtbWFjX3J4X2h3X3ZsYW4ocHJpdiwgcHJpdi1cdTAwM2VodywgcCwgc2tiKTtcbi1cdGVsc2Vcbi1cdFx0LyogRHJpdmVyIGxldmVsIHN0cmlwcGluZy4gKi9cbi1cdFx0c3RtbWFjX3J4X3ZsYW4ocHJpdi1cdTAwM2VkZXYsIHNrYik7XG4rXG4gXHRza2ItXHUwMDNlcHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIHByaXYtXHUwMDNlZGV2KTtcbiBcbiBcdGlmICh1bmxpa2VseSghY29lKSB8fCAhc3RtbWFjX2hhc19pcF9ldGhlcnR5cGUoc2tiKSlcbkBAIC01OTAxLDkgKzU4ODEsNiBAQCBzdGF0aWMgaW50IHN0bW1hY19yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGludCBsaW1pdCwgdTMyIHF1ZXVlKVxuIFx0XHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2Vod192bGFuX2VuKVxuIFx0XHRcdC8qIE1BQyBsZXZlbCBzdHJpcHBpbmcuICovXG4gXHRcdFx0c3RtbWFjX3J4X2h3X3ZsYW4ocHJpdiwgcHJpdi1cdTAwM2VodywgcCwgc2tiKTtcbi1cdFx0ZWxzZVxuLVx0XHRcdC8qIERyaXZlciBsZXZlbCBzdHJpcHBpbmcuICovXG4tXHRcdFx0c3RtbWFjX3J4X3ZsYW4ocHJpdi1cdTAwM2VkZXYsIHNrYik7XG4gXG4gXHRcdHNrYi1cdTAwM2Vwcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgcHJpdi1cdTAwM2VkZXYpO1xuIFxuQEAgLTc5NjQsOSArNzk0MSw4IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbiBcdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gbmRldi1cdTAwM2Vod19mZWF0dXJlcyB8IE5FVElGX0ZfSElHSERNQTtcbiBcdG5kZXYtXHUwMDNld2F0Y2hkb2dfdGltZW8gPSBtc2Vjc190b19qaWZmaWVzKHdhdGNoZG9nKTtcbiAjaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURcbi1cdC8qIEJvdGggbWFjMTAwIGFuZCBnbWFjIHN1cHBvcnQgcmVjZWl2ZSBWTEFOIHRhZyBkZXRlY3Rpb24gKi9cbi1cdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfUlggfCBORVRJRl9GX0hXX1ZMQU5fU1RBR19SWDtcbiBcdGlmIChkd21hY19pc194bWFjKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUpKSB7XG4rXHRcdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfUlg7XG4gXHRcdG5kZXYtXHUwMDNlaHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfUlg7XG4gXHRcdHByaXYtXHUwMDNlaHctXHUwMDNlaHdfdmxhbl9lbiA9IHRydWU7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxMzo0My45MzUxMzM1NDVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1Mzc4MDk4OTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIFdvcnRoaW5lc3MqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIHBhdGNoIG1vZGlmaWVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hhdCdzIGBzdG1tYWNgP1wiIElzIHRoaXMgc29tZXRoaW5nIEkgY2FuIGV2ZW4gdG91Y2ggaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lPyBJcyBpdCBqdXN0IGEgcGh5c2ljYWwgU29DIHRoaW5nLCBzb21lIGRlZGljYXRlZCBoYXJkd2FyZT8gT3IgaXMgdGhlcmUgYW4gZW11bGF0aW9uIGxheWVyLCBvciBjYW4gSSByZWFjaCBpdCB2aWEgc3l6a2FsbGVyP1xuXG5Ib2xkIG9uLi4uIEkgbmVlZCB0byByZW1lbWJlciB0aGUgcnVsZS4gVGhlIGNyaXRlcmlhIGZvciBgV29ydGhGdXp6aW5nPWZhbHNlYCBpcyBpbXBvcnRhbnQgaGVyZS4gSXQncyBhYm91dCBjb2RlIHBhdGhzIHRoYXQgYXJlIGluYWNjZXNzaWJsZSBpbiB0aGVzZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2hlbiB0aGUgc29mdHdhcmUgZW11bGF0ZXMgaGFyZHdhcmUsIGxpa2Ugd2l0aCBVU0IgZ2FkZ2V0IG9yIG1hYzgwMjExX2h3c2ltLiBJdCBhbHNvIGVsaW1pbmF0ZXMgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgUENJZSBjYXJkcywgc3VjaCBhcyB2ZW5kb3Itc3BlY2lmaWMgc3dpdGNoL1NtYXJ0TklDL0dQVSBkcml2ZXJzIChtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkuXG5cblRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzLCBkb2VzIFFFTVUgKmVtdWxhdGUqIGBzdG1tYWNgPyBPciBpcyBgc3RtbWFjYCBhIHBsYXRmb3JtIGRyaXZlciwgYSBQQ0kgZHJpdmVyIGZvciBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgaGFyZHdhcmU/IEkgbmVlZCB0byBjaGVjayB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSB1bmRlciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTUxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTM6NDkuMzEzMjM0NDM5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4ODk5NTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1PRFVMRV9ERVZJQ0VfVEFCTEV8cGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9MTE5PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGFuYXJpb25fZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMjItfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6MTIzOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGFuYXJpb25fZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMjQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTM1Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkd2NfZXRoX2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM1OC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzU5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGR3Y19ldGhfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzYwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jPTM1MD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBlaWM3NzAwX2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzU5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjM2MDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBlaWM3NzAwX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzYxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jPTUyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGR3bWFjX2dlbmVyaWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy02Ni19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo2NzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkd21hY19nZW5lcmljX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNjgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0zODQ9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaW14X2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zODktfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozOTA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaW14X2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zOTEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM9MjYyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGluZ2VuaWNfbWFjX29mX21hdGNoZXNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yNjktfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM6MjcwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGluZ2VuaWNfbWFjX29mX21hdGNoZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yNzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaW50ZWxfZXRoX3BsYXRfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0zOS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzo0MDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpbnRlbF9ldGhfcGxhdF9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTQxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MTQtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjE0MTU6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGludGVsX2V0aF9wY2lfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTQxNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYz00OTE9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaXBxODA2eF9nbWFjX2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtNDk0LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jOjQ5NTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpcHE4MDZ4X2dtYWNfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00OTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTU5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbG9vbmdzb25fZHdtYWNfaWRfdGFibGVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNjAxLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo2MDI6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGxvb25nc29uX2R3bWFjX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jPTIxNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBsczF4X2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYy0yMjYtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYzoyMjc6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbHMxeF9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjI4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jPTcxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGxwYzE4eHhfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy03NC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYzo3NTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBscGMxOHh4X2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNzYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jPTY2Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtZWRpYXRla19kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYzo2NzA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbWVkaWF0ZWtfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjcxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYz03Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtZXNvbjZfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmMtNzktfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jOjgwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1lc29uNl9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy04MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYz00ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWVzb244Yl9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTUwNC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYzo1MDU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbWVzb244Yl9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTUwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTM2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzcwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzcxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBkd21hY19tb3RvcmNvbW1fcGNpX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNzItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM9MTE4PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG52dF9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTEyMS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYzoxMjI6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbnZ0X2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtMTIzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYz04MDA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcWNvbV9ldGhxb3NfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtODA2LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo4MDc6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcWNvbV9ldGhxb3NfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtODA4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jPTIxNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCByZW5lc2FzX2diZXRoX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjIxLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjIyMjpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCByZW5lc2FzX2diZXRoX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjIzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYz0xNjE2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJrX2dtYWNfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTYzNC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM6MTYzNTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBya19nbWFjX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE2MzYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM9NzU9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcnpuMV9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTc4LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjc5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJ6bjFfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy04MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jPTIxNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzMzJfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIxOS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjIyMDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzMzJfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIyMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYz02NzM9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc29jZnBnYV9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTY3OC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzo2Nzk6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc29jZnBnYV9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTY4MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jPTcyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHNvcGhnb19kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNzYtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo3NzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzb3BoZ29fZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTc4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYz0yMTA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3BhY2VtaXRfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjEzLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYzoyMTQ6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3BhY2VtaXRfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjE1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz0xNjA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3RhcmZpdmVfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTY0LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzoxNjU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3RhcmZpdmVfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTY2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM9Mjk2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN0aV9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMjk5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM6MzAwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN0aV9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMzAxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz02NjI9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3RtMzJfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNjY4LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo2Njk6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3RtMzJfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNjcwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM9MTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjU1aV9nbWFjMjAwX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xNDQtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYzoxNDU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3VuNTVpX2dtYWMyMDBfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTE0Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTI2OD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW44aV9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjgyLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjgzOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN1bjhpX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyODQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jPTE1MD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW43aV9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNTMtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jOjE1NDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdW43aV9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTM5Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB0ZWdyYV9tZ2JlX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTQwMC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6NDAxOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHRlZ3JhX21nYmVfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtNDAyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYz0yNjc9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdGhlYWRfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjcwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYzoyNzE6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdGhlYWRfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjcyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYz0yNTU9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdmlzY29udGlfZXRoX2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTI1OC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjU5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHZpc2NvbnRpX2V0aF9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yNjAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjAzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxMDpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjExLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxMzo0OS4zNjIxMzgwNDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4MzcwMzA5MzM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBzdG1tYWNgIERyaXZlcidzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBgc3RtbWFjYCwgdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIGRyaXZlciwgaXMgYSBjcml0aWNhbCBjb21wb25lbnQgYWNyb3NzIGEgd2lkZSBhcnJheSBvZiBlbWJlZGRlZCBwbGF0Zm9ybXMg4oCTIEFsbHdpbm5lciwgQW1sb2dpYywgUm9ja2NoaXAsIFNUTTMyLCB0aGUgd29ya3MuIFRoZSBxdWVzdGlvbiB0aGF0IGltbWVkaWF0ZWx5IGp1bXBzIHRvIG1pbmQgaXMsIGRvZXMgUUVNVSBhY3R1YWxseSAqZW11bGF0ZSogYHN0bW1hY2A/IFNwZWNpZmljYWxseSwgYXJlIHRoZXJlIGFueSBRRU1VIG1hY2hpbmUgbW9kZWxzIHRoYXQgZXhwb3NlIGEgdmlydHVhbGl6ZWQgZHdtYWMgb3Igc3RtbWFjIGRldmljZT8gSSBuZWVkIHRvIGNsYXJpZnkgdGhpcy5cblxuSSdtIHRoaW5raW5nLCBhcmUgdGhlcmUgcGFydGljdWxhciBBUk0tYmFzZWQgbWFjaGluZXMsIGxpa2UgU1RNMzIgb3IgQWxsd2lubmVyLCB0aGF0IFFFTVUgbWlnaHQgYmUgYWJsZSB0byBlbXVsYXRlPyBUaGUga2V5IGlzIHdoZXRoZXIgc3RhbmRhcmQgUUVNVSAvIEdDRSBmdXp6aW5nLCBzdWNoIGFzIHN5emthbGxlciBvbiB4ODYvYXJtNjQsIGFjdHVhbGx5IHV0aWxpemVzIGBzdG1tYWNgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzLlxuXG5Ob3csIGxldCBtZSBnbyBiYWNrIG92ZXIgdGhlIGd1aWRlbGluZXMuIFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCBub3QgdG8gd2FzdGUgcmVzb3VyY2VzIG9uIHBhdGNoZXMgdGhhdCBkb24ndCBpbmNyZWFzZSBmdXp6aW5nIHBvdGVudGlhbC4gVGhlIGd1aWRlbGluZXMgY2xlYXJseSBzdGF0ZSB0aGF0IHdlIHNob3VsZCBkaXNjYXJkIHBhdGNoZXMgdGhhdCBtb2RpZnkgZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgb3IgY29tbWVudHMuIENvc21ldGljIGNoYW5nZXMsIGxpa2UgYWRkZWQgbG9nZ2luZyBvciB0cmFjZXBvaW50cywgYXJlIGFsc28gbm90IGZydWl0ZnVsLiBBbHNvLCBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvbid0IGFmZmVjdCBjb2RlIGV4ZWN1dGlvbiwgb3IgY2hhbmdlcyB0aGF0IGFmZmVjdCBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBhcmUgdXNlbGVzcy4gV2UgYWxzbyB3YW50IHRvIHN0ZWVyIGNsZWFyIG9mIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIChQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVXMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgY2FuJ3QgYmUgZW11bGF0ZWQpLiBTaW1pbGFybHksIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgbGlrZSAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciBhcmUgbm90IHdvcnRoIGZ1enppbmcuXG5cbk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBQQ0kgSURzIHdpdGhpbiB0aGUgYHN0bW1hY19wY2kuY2AsIGBkd21hYy1pbnRlbC5jYCwgYGR3bWFjLWxvb25nc29uLmNgLCBhbmQgYGR3bWFjLW1vdG9yY29tbS5jYCBzb3VyY2UgZmlsZXMuIFRoaXMgd2lsbCBwcm92aWRlIHZhbHVhYmxlIGluc2lnaHQgaW50byB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgdGhlIGRyaXZlciBzdXBwb3J0cyBhbmQgd2hldGhlciB0aGV5J3JlIHN1aXRhYmxlIGZvciBlbXVsYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5MjcsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTM6NTcuNzMyNDUwMDY1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk4NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE4MDpcXHRcXHRwbGF0LVxcdTAwM2VzdXNwZW5kID0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XFxuIDE4MTpcXHRcXHRwbGF0LVxcdTAwM2VyZXN1bWUgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lO1xcbiAxODI6XFx0XFxuIDE4MzpcXHRcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG4gMTg0OlxcdH1cXG4gMTg1OlxcdFxcbiAxODY6XFx0LyoqXFxuIDE4NzpcXHQgKiBzdG1tYWNfcGNpX3JlbW92ZVxcbiAxODg6XFx0ICpcXG4gMTg5OlxcdCAqIEBwZGV2OiBwbGF0Zm9ybSBkZXZpY2UgcG9pbnRlclxcbiAxOTA6XFx0ICogRGVzY3JpcHRpb246IHRoaXMgZnVuY3Rpb24gY2FsbHMgdGhlIG1haW4gdG8gZnJlZSB0aGUgbmV0IHJlc291cmNlcy5cXG4gMTkxOlxcdCAqL1xcbiAxOTI6XFx0c3RhdGljIHZvaWQgc3RtbWFjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuIDE5MzpcXHR7XFxuIDE5NDpcXHRcXHRzdG1tYWNfZHZyX3JlbW92ZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4gMTk1OlxcdH1cXG4gMTk2OlxcdFxcbiAxOTc6XFx0Lyogc3ludGhldGljIElELCBubyBvZmZpY2lhbCB2ZW5kb3IgKi9cXG4gMTk4OlxcdCNkZWZpbmUgUENJX1ZFTkRPUl9JRF9TVE1NQUNcXHRcXHQweDA3MDBcXG4gMTk5OlxcdFxcbiAyMDA6XFx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NUTU1BQ19TVE1NQUNcXHRcXHQweDExMDhcXG4gMjAxOlxcdCNkZWZpbmUgUENJX0RFVklDRV9JRF9TWU5PUFNZU19HTUFDNV9JRFxcdFxcdDB4NzEwMlxcbiAyMDI6XFx0XFxuIDIwMzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XFxuIDIwNDpcXHRcXHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcXG4gMjA1OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKFNUTUlDUk8sIE1BQywgXFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcXG4gMjA2OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKFNZTk9QU1lTLCBHTUFDNV9JRCwgXFx1MDAyNnNucHNfZ21hYzVfcGNpX2luZm8pIH0sXFxuIDIwNzpcXHRcXHR7fVxcbiAyMDg6XFx0fTtcXG4gMjA5OlxcdFxcbiAyMTA6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHN0bW1hY19pZF90YWJsZSk7XFxuIDIxMTpcXHRcXG4gMjEyOlxcdHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcXG4gMjEzOlxcdFxcdC5uYW1lID0gU1RNTUFDX1JFU09VUkNFX05BTUUsXFxuIDIxNDpcXHRcXHQuaWRfdGFibGUgPSBzdG1tYWNfaWRfdGFibGUsXFxuIDIxNTpcXHRcXHQucHJvYmUgPSBzdG1tYWNfcGNpX3Byb2JlLFxcbiAyMTY6XFx0XFx0LnJlbW92ZSA9IHN0bW1hY19wY2lfcmVtb3ZlLFxcbiAyMTc6XFx0XFx0LmRyaXZlciAgICAgICAgID0ge1xcbiAyMTg6XFx0XFx0XFx0LnBtICAgICA9IFxcdTAwMjZzdG1tYWNfc2ltcGxlX3BtX29wcyxcXG4gMjE5OlxcdFxcdH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDIyOjEzOjU3LjczMjUzMTg3NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMzOTc2MTczNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBRRU1VJ3MgRXRoZXJuZXQgRW11bGF0aW9uKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIGNsYXJpZnkgc29tZXRoaW5nIHF1aWNrbHkuIERvZXMgUUVNVSBhY3R1YWxseSBlbXVsYXRlICphbnkqIFNUTU1BQyBvciBEV01BQy1iYXNlZCBFdGhlcm5ldCBkZXZpY2U/IEkgc2VlbSB0byByZWNhbGwgdGhhdCBiZWluZyBhIHBvdGVudGlhbCBhcmVhIHdoZXJlIHRoZXJlIHdlcmUgZ2Fwcy5cblxuUmlnaHQsIGxldCBtZSBkaWcgYSBiaXQgZGVlcGVyLiBTcGVjaWZpY2FsbHksIHdoZW4gSSBsb29rIGF0IHRoZSBgYWxsd2lubmVyLWExMGAgYm9hcmQgY29uZmlndXJhdGlvbiBpbiBRRU1VLCBkb2VzIGl0IHVzZSB0aGUgYGFsbHdpbm5lci1lbWFjYCBvciB0aGUgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBkZXZpY2U/IEkgbmVlZCB0byBrbm93IHdoaWNoIG9uZSB0byBpbnZlc3RpZ2F0ZS5cblxuQWgsIHllcyEgVGhlIFFFTVUgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBpcyB3aGF0IHNlZW1zIHRvIGJlIGluIHBsYXkuIEkgY2FuIHNlZSB0aGUgYGh3L25ldC9hbGx3aW5uZXItc3VuOGktZW1hYy5jYCBmaWxlLiBUaGlzIGlzIHByb21pc2luZy4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgZG9lcyB0aGUgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBkZXZpY2UgaW4gUUVNVSBhY3R1YWxseSAqdXNlKiBhIERXTUFDIGRyaXZlciBsaWtlIGBkd21hYy1zdW44aS5jYCwgb3IgaXMgaXQgaW1wbGVtZW50aW5nIGl0cyBvd24sIHBvdGVudGlhbGx5IHNpbXBsaWZpZWQsIGVtdWxhdGlvbj8gVGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBmaWRlbGl0eSBvZiB0aGUgbmV0d29yayBlbXVsYXRpb24uXG5cbk9rYXksIEkgbmVlZCB0byBjaGVjayB0aGUga2VybmVsIHNvdXJjZSB0byBzZWUgd2hpY2ggZHJpdmVyIG1hdGNoZXMgdGhlIGRldmljZS4gSSBuZWVkIHRvIGNoZWNrIHdoYXQgdGhlIGtlcm5lbCB1c2VzIGZvciBgc3VuOGkgZW1hY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTYxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTQ6MDEuMTMwMTUxNTcxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTA2NzgyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhbGx3aW5uZXIuKmVtYWN8YWxsd2lubmVyLHN1bjhpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM9MjIxND1zdGF0aWMgaW50IG1jcDI1MXhmZF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMzMwLVxcdCAqXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYzoyMzMxOlxcdCAqIDI1MThcXHQyMCBNSHpcXHRhbGx3aW5uZXIsc3VuOGktaDNcXHRhbGx3aW5uZXIsc3VuOGktaDMtc3BpXFx0IDgzMzMzMzMgSHpcXHQgODMuMzMlXFx0NjAwMDAwMDAwIEh6XFx0YXNzaWduZWQtY2xvY2tzID0gXFx1MDAzY1xcdTAwMjZjY3UgQ0xLX1NQSXhcXHUwMDNlXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYzoyMzMyOlxcdCAqIDI1MThcXHQ0MCBNSHpcXHRhbGx3aW5uZXIsc3VuOGktaDNcXHRhbGx3aW5uZXIsc3VuOGktaDMtc3BpXFx0MTY2NjY2NjcgSHpcXHQgODMuMzMlXFx0NjAwMDAwMDAwIEh6XFx0YXNzaWduZWQtY2xvY2tzID0gXFx1MDAzY1xcdTAwMjZjY3UgQ0xLX1NQSXhcXHUwMDNlXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMzMzLVxcdCAqIDI1MTdcXHQ0MCBNSHpcXHRhdG1lbCxzYW1hNWQyN1xcdFxcdGF0bWVsLGF0OTFybTkyMDAtc3BpXFx0MTY0MDAwMDAgSHpcXHQgODIuMDAlXFx0IDgyMDAwMDAwIEh6XFx0ZGVmYXVsdFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3N1bjRpX2Nhbi5jPTc5Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW40aWNhbl9vZl9tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3N1bjRpX2Nhbi5jLTc5OS1cXHR9LCB7XFxuZHJpdmVycy9uZXQvY2FuL3N1bjRpX2Nhbi5jOjgwMDpcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJhbGx3aW5uZXIsc3VuOGktcjQwLWNhblxcXCIsXFxuZHJpdmVycy9uZXQvY2FuL3N1bjRpX2Nhbi5jLTgwMS1cXHRcXHQuZGF0YSA9IFxcdTAwMjZzdW40aWNhbl9xdWlya3NfcjQwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jPTExMjk9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZW1hY19vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsbHdpbm5lci9zdW40aS1lbWFjLmM6MTEzMDpcXHR7LmNvbXBhdGlibGUgPSBcXFwiYWxsd2lubmVyLHN1bjRpLWExMC1lbWFjXFxcIix9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsbHdpbm5lci9zdW40aS1lbWFjLmMtMTEzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jLTExMzItXFx0LyogRGVwcmVjYXRlZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsbHdpbm5lci9zdW40aS1lbWFjLmM6MTEzMzpcXHR7LmNvbXBhdGlibGUgPSBcXFwiYWxsd2lubmVyLHN1bjRpLWVtYWNcXFwiLH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYy0xMTM0LVxcdHt9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz03NjM9c3RhdGljIGludCBnZXRfZXBoeV9ub2RlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTc3Ni1cXHRtZGlvX2ludGVybmFsID0gb2ZfZ2V0X2NvbXBhdGlibGVfY2hpbGQobWRpb19tdXgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzo3Nzc6XFx0XFx0XFx0XFx0XFx0XFx0XFxcImFsbHdpbm5lcixzdW44aS1oMy1tZGlvLWludGVybmFsXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy03NzgtXFx0b2Zfbm9kZV9wdXQobWRpb19tdXgpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMjY4PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjhpX2R3bWFjX21hdGNoW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjY5OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwiYWxsd2lubmVyLHN1bjhpLWgzLWVtYWNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTI3MC1cXHRcXHQuZGF0YSA9IFxcdTAwMjZlbWFjX3ZhcmlhbnRfaDMgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyNzE6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJhbGx3aW5uZXIsc3VuOGktdjNzLWVtYWNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTI3Mi1cXHRcXHQuZGF0YSA9IFxcdTAwMjZlbWFjX3ZhcmlhbnRfdjNzIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjczOlxcdHsgLmNvbXBhdGlibGUgPSBcXFwiYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hY1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjc0LVxcdFxcdC5kYXRhID0gXFx1MDAyNmVtYWNfdmFyaWFudF9hODN0IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjc1OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwiYWxsd2lubmVyLHN1bjhpLXI0MC1nbWFjXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyNzYtXFx0XFx0LmRhdGEgPSBcXHUwMDI2ZW1hY192YXJpYW50X3I0MCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTI3NzpcXHR7IC5jb21wYXRpYmxlID0gXFxcImFsbHdpbm5lcixzdW41MGktYTY0LWVtYWNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTI3OC1cXHRcXHQuZGF0YSA9IFxcdTAwMjZlbWFjX3ZhcmlhbnRfYTY0IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjc5OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwiYWxsd2lubmVyLHN1bjUwaS1oNi1lbWFjXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyODAtXFx0XFx0LmRhdGEgPSBcXHUwMDI2ZW1hY192YXJpYW50X2g2IH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDIyOjE0OjAxLjM1OTIyNDY4N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgwMDY5NTM3NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgc3RtbWFjYCBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gUUVNVSBoYXMgc29tZSByZWxldmFudCBoYXJkd2FyZSBtb2RlbHMsIHNwZWNpZmljYWxseSBgYWxsd2lubmVyLWgzYCB3aXRoIGl0cyBgYWxsd2lubmVyLXN1bjhpLWVtYWNgICh3aGljaCBzZWVtcyB0byB1c2UgYSBgXCJhbGx3aW5uZXIsc3VuOGktaDMtZW1hY1wiYCBkZXZpY2UgdHJlZSBlbnRyeSkgYW5kIHRoZSBgYWxsd2lubmVyLWE2NGAgKFBpbmU2NCkuIFRoZXJlJ3MgYWxzbyBTVE0zMiBTb0NzIGVtdWxhdGVkIHdpdGhpbiBRRU1VLCBsaWtlIHRoZSBzdG0zMmY0MDUsIHN0bTMyZjIwNSwgYW5kIHN0bTMybXAxNTcsIGV0Yy4gVGhpcyBpcyB1c2VmdWwhIE5vdywgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gU3l6a2FsbGVyIGVmZmVjdGl2ZWx5IGZ1enogdGhlIGBzdG1tYWNgIGRyaXZlcj8gSXMgdGhpcyBldmVuIGEgdmlhYmxlIHRhcmdldCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/IEhtbSwgSSBuZWVkIHRvIGNoZWNrIGlmIGBzdG1tYWNgIGlzIGFuIGFjdHVhbCBFdGhlcm5ldCBNQUMgZHJpdmVyIHJhdGhlciB0aGFuIHNvbWUgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIG9yIFNtYXJ0TklDIGNvbXBvbmVudC4gWWVzLCBpdCBpcyBhbiBldGhlcm5ldCBNQUMgZHJpdmVyLlxuXG5SaWdodCwgc28gbGV0J3MgZ2V0IGJhY2sgb24gdHJhY2suIEknbSBmb2N1c2luZyBvbiB0aGF0IHNwZWNpZmljIHBhdGNoIGFuZCByZXZpZXdpbmcgaXRzIGNoYW5nZXMuIEkgc2VlIHRoZSBjb21taXQgaGFzIHRoZSBJRCBgZGFiZTljYWZiODQ5ZTQzZTFlMDFjYjNiNWVjNzU1NjhhOTg5MTQ3OGAgYW5kIGl0IHdhcyBhcHBsaWVkIGJ5IHN5ei1jbHVzdGVyLiBJJ20gaW50ZXJlc3RlZCBpbiB0aGUgZGlmZiB0byB0aGUgYHN0bW1hY19tYWluLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSdtIG5vdGluZyB0aGF0IHRoZSBgc3RtbWFjX3J4X3ZsYW5gIGZ1bmN0aW9uLCB3aGljaCBoYW5kbGVkIFZMQU4gdGFnIHN0cmlwcGluZyBhdCB0aGUgZHJpdmVyIGxldmVsLCBoYXMgYmVlbiByZW1vdmVkLiBUaGUgb3JpZ2luYWwgY29kZSBoYXMgdHdvIHNjZW5hcmlvcyBmb3IgVkxBTiB0YWcgaGFuZGxpbmcuIE9uZSBhdCBNQUMgbGV2ZWwgdXNpbmcgYHN0bW1hY19yeF9od192bGFuYCBhbmQgYW5vdGhlciBhdCBkcml2ZXIgbGV2ZWwgdmlhIGBzdG1tYWNfcnhfdmxhbmAgZnVuY3Rpb24uIE5vdywgaXQgYXBwZWFycyB0aGF0IHRoZSBkcml2ZXItbGV2ZWwgc3RyaXBwaW5nIGhhcyBiZWVuIGNvbXBsZXRlbHkgcmVtb3ZlZCBpbiB0aGUgcGF0Y2guIEknbSBzZWVpbmcgdGhhdCB0aGUgY29kZSBub3cgaGFzIGEgY29uZGl0aW9uYWwgdG8gaGFuZGxlIGhhcmR3YXJlIFZMQU4gb2ZmbG9hZCwgYnkgY29uZGl0aW9uYWxseSB1c2luZyBgc3RtbWFjX3J4X2h3X3ZsYW5gLiBUaGUgYHN0bW1hY19yeF92bGFuYCBmdW5jdGlvbiAoYXQgbGluZSA1MDIxKSBpcyBubyBsb25nZXIgYmVpbmcgY2FsbGVkLiBMaW5lcyA1OTAxIGFuZCA1NDA3IGhhdmUgYmVlbiBjaGFuZ2VkIGFzIHdlbGwsIHdoZXJlIHRoZSBjYWxsIHRvIGBzdG1tYWNfcnhfdmxhbmAgd2FzLiBJIHNob3VsZCByZWFkIGFyb3VuZCBsaW5lIDc5NjQgYW5kIHVuZGVyc3RhbmQgd2hhdCdzIGNoYW5nZWQgdGhlcmUuIEFoLCB5ZXMsIGluIGBfX3N0bW1hY19kdnJfcHJvYmVgLCB0aGUgYE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYYCBhbmQgYE5FVElGX0ZfSFdfVkxBTl9TVEFHX1JYYCBmZWF0dXJlcyBhcmUgYWRkZWQgdG8gYG5kZXYtXHUwMDNlZmVhdHVyZXNgLCBidXQgdGhleSBzZWVtIHRvIGJlIGNvbmRpdGlvbmVkIG9uIGBkd21hY19pc194bWFjKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUpYC4gSWYgdGhpcyBpcyBjb3JyZWN0LCB0aGVuIHBlcmhhcHMgdGhlIG9yaWdpbmFsIGNvZGUgd2FzIG1ha2luZyB0aGUgVkxBTiBwcm9jZXNzaW5nIGNvbmRpdGlvbmFsLCBhbmQgdGhlIHBhdGNoIGhhcyBjaGFuZ2VkIGhvdyBmZWF0dXJlcyBhcmUgZW5hYmxlZC4gTm93IHRoZSBjb2RlIG9ubHkgc3VwcG9ydHMgYE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYYCBhbmQgbm90IGBORVRJRl9GX0hXX1ZMQU5fU1RBR19SWGAuIFNvIHRoaXMgcGF0Y2ggZm9jdXNlcyBvbiBoYXJkd2FyZSBWTEFOIG9mZmxvYWQuIEkgc2hvdWxkIGZpZ3VyZSBvdXQgaG93IHRoaXMgYWZmZWN0cyB0aGUgZnV6emluZyBwb3RlbnRpYWwuIEl0IHNlZW1zIGxpa2UgdGhlIHBhdGNoIHNpbXBsaWZpZXMgdGhlIGRyaXZlciBieSByZW1vdmluZyBzb2Z0d2FyZSBWTEFOIGhhbmRsaW5nIGFuZCByZWx5aW5nIHNvbGVseSBvbiBoYXJkd2FyZSBWTEFOIG9mZmxvYWQuIFRoaXMgY291bGQgZWl0aGVyIG1ha2UgaXQgZWFzaWVyIG9yIGhhcmRlciB0byBmdXp6LCBkZXBlbmRpbmcgb24gaG93IHN5emthbGxlciBjYW4gaW50ZXJhY3Qgd2l0aCBhbmQgdHJpZ2dlciB0aGUgaGFyZHdhcmUgZmVhdHVyZXMuIFRoaXMgaXMgc29tZXRoaW5nIEkgbmVlZCB0byBldmFsdWF0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI1NzksIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDIyOjE0OjA5LjM2NjE4MDk4OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDg3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3OTUwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI3OTUwOlxcdFxcdFxcdG5kZXYtXFx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUjtcXG43OTUxOlxcdFxcdFxcdG5kZXYtXFx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9TVEFHX0ZJTFRFUjtcXG43OTUyOlxcdFxcdH1cXG43OTUzOlxcdFxcdGlmIChwcml2LVxcdTAwM2VkbWFfY2FwLnZsaW5zKVxcbjc5NTQ6XFx0XFx0XFx0bmRldi1cXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfVFg7XFxuNzk1NTpcXHQjZW5kaWZcXG43OTU2OlxcdFxcdHByaXYtXFx1MDAzZW1zZ19lbmFibGUgPSBuZXRpZl9tc2dfaW5pdChkZWJ1ZywgZGVmYXVsdF9tc2dfbGV2ZWwpO1xcbjc5NTc6XFx0XFxuNzk1ODpcXHRcXHRwcml2LVxcdTAwM2V4c3RhdHMudGhyZXNob2xkID0gdGM7XFxuNzk1OTpcXHRcXG43OTYwOlxcdFxcdC8qIEluaXRpYWxpemUgUlNTICovXFxuNzk2MTpcXHRcXHRyeHEgPSBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VyeF9xdWV1ZXNfdG9fdXNlO1xcbjc5NjI6XFx0XFx0bmV0ZGV2X3Jzc19rZXlfZmlsbChwcml2LVxcdTAwM2Vyc3Mua2V5LCBzaXplb2YocHJpdi1cXHUwMDNlcnNzLmtleSkpO1xcbjc5NjM6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUocHJpdi1cXHUwMDNlcnNzLnRhYmxlKTsgaSsrKVxcbjc5NjQ6XFx0XFx0XFx0cHJpdi1cXHUwMDNlcnNzLnRhYmxlW2ldID0gZXRodG9vbF9yeGZoX2luZGlyX2RlZmF1bHQoaSwgcnhxKTtcXG43OTY1OlxcdFxcbjc5NjY6XFx0XFx0aWYgKHByaXYtXFx1MDAzZWRtYV9jYXAucnNzZW4gXFx1MDAyNlxcdTAwMjYgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcnNzX2VuKVxcbjc5Njc6XFx0XFx0XFx0bmRldi1cXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9SWEhBU0g7XFxuNzk2ODpcXHRcXG43OTY5OlxcdFxcdG5kZXYtXFx1MDAzZXZsYW5fZmVhdHVyZXMgfD0gbmRldi1cXHUwMDNlZmVhdHVyZXM7XFxuNzk3MDpcXHRcXG43OTcxOlxcdFxcdC8qIE1UVSByYW5nZTogNDYgLSBody1zcGVjaWZpYyBtYXggKi9cXG43OTcyOlxcdFxcdG5kZXYtXFx1MDAzZW1pbl9tdHUgPSBFVEhfWkxFTiAtIEVUSF9ITEVOO1xcbjc5NzM6XFx0XFxuNzk3NDpcXHRcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXFxuNzk3NTpcXHRcXHRcXHRuZGV2LVxcdTAwM2VtYXhfbXR1ID0gWEdNQUNfSlVNQk9fTEVOO1xcbjc5NzY6XFx0XFx0ZWxzZSBpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlZW5oX2Rlc2MgfHwgcHJpdi1cXHUwMDNlc3lub3BzeXNfaWQgXFx1MDAzZT0gRFdNQUNfQ09SRV80XzAwKVxcbjc5Nzc6XFx0XFx0XFx0bmRldi1cXHUwMDNlbWF4X210dSA9IEpVTUJPX0xFTjtcXG43OTc4OlxcdFxcdGVsc2VcXG43OTc5OlxcdFxcdFxcdG5kZXYtXFx1MDAzZW1heF9tdHUgPSBTS0JfTUFYX0hFQUQoTkVUX1NLQl9QQUQgKyBORVRfSVBfQUxJR04pO1xcbjc5ODA6XFx0XFxuNzk4MTpcXHRcXHQvKiBXYXJuIGlmIHRoZSBwbGF0Zm9ybSdzIG1heG10dSBpcyBzbWFsbGVyIHRoYW4gdGhlIG1pbmltdW0gTVRVLFxcbjc5ODI6XFx0XFx0ICogb3RoZXJ3aXNlIGNsYW1wIHRoZSBtYXhpbXVtIE1UVSBhYm92ZSB0byB0aGUgcGxhdGZvcm0ncyBtYXhtdHUuXFxuNzk4MzpcXHRcXHQgKi9cXG43OTg0OlxcdFxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VtYXhtdHUgXFx1MDAzYyBuZGV2LVxcdTAwM2VtaW5fbXR1KVxcbjc5ODU6XFx0XFx0XFx0ZGV2X3dhcm4ocHJpdi1cXHUwMDNlZGV2aWNlLFxcbjc5ODY6XFx0XFx0XFx0XFx0IFxcXCIlczogd2FybmluZzogbWF4bXR1IGhhdmluZyBpbnZhbGlkIHZhbHVlICglZClcXFxcblxcXCIsXFxuNzk4NzpcXHRcXHRcXHRcXHQgX19mdW5jX18sIHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZW1heG10dSk7XFxuNzk4ODpcXHRcXHRlbHNlIGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VtYXhtdHUgXFx1MDAzYyBuZGV2LVxcdTAwM2VtYXhfbXR1KVxcbjc5ODk6XFx0XFx0XFx0bmRldi1cXHUwMDNlbWF4X210dSA9IHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZW1heG10dTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTQ6MDkuMzY2NTMzMDk5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY0MjEwMzU2NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVjZW50IFBhdGNoOiBWTEFOIFRhZ2dpbmcgYW5kIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQncyB0aGUgY29udGV4dD8gV2hhdCB3YXMgdGhlIGNvbW1pdCBtZXNzYWdlLCB0aGUgYGdpdCBsb2dgLCBvciB0aGUgcHVycG9zZSBvZiB0aGlzIGNoYW5nZT8gU3BlY2lmaWNhbGx5LCBJJ20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQgd2h5IGBzdG1tYWNgIHJlbW92ZWQgYHN0bW1hY19yeF92bGFuYC4gTm93LCBpbiB0aGUgY29udGV4dCBvZiB0aGUgTGludXgga2VybmVsIG5ldHdvcmtpbmcsIEkgcmVtZW1iZXIgdGhlIGdlbmVyYWwgcnVsZTogZHJpdmVycyAqc2hvdWxkbid0KiBiZSBkb2luZyBzb2Z0d2FyZSBWTEFOIHRhZyBzdHJpcHBpbmcgYW5kIHRoZW4gZmFraW5nIGBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWGAgb3IgYF9fdmxhbl9od2FjY2VsX3B1dF90YWdgIHdoZW4gdGhlIGhhcmR3YXJlIGl0c2VsZiAqZGlkbid0KiBzdHJpcCB0aGUgVkxBTiB0YWdzLiBJdCdzIHJlZHVuZGFudCBhbmQgaW5jb3JyZWN0IHRvIGRvIHNvZnR3YXJlIFZMQU4gc3RyaXBwaW5nIGluIHRoZSBkcml2ZXIgUlggcGF0aC4gVGhpcyBoYXMgYmVlbiByZW1vdmVkIGluIHZhcmlvdXMgZXRoZXJuZXQgZHJpdmVycyBiZWNhdXNlIHRoZSBuZXR3b3JrIGNvcmUgaGFuZGxlcyB1bnRhZ2dlZCBWTEFOIHBhY2tldHMgb3IgYmVjYXVzZSBgX192bGFuX2h3YWNjZWxfcHV0X3RhZ2Agd2l0aG91dCB0cnVlIEhXIHN0cmlwcGluZyB3YXMgZWZmZWN0aXZlbHkgYSBkZWNlcHRpb24gYWJvdXQgaGFyZHdhcmUgYWNjZWxlcmF0aW9uLiBUaGlzIGFsc28gcmVtaW5kcyBtZSB0aGF0IGZvciBgZHdtYWNfaXNfeG1hY2AsIEhXIFZMQU4gQ1RBRyBSWCBzdHJpcHBpbmcgaXMgb25seSBzdXBwb3J0ZWQgaWYgeG1hYy5cblxuTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgZnV6emluZy4gSXMgdGhpcyBwYXRjaCBzb21ldGhpbmcgdGhhdCAqc2hvdWxkKiBiZSBtYXJrZWQgYFdvcnRoRnV6emluZz10cnVlYD8gTGV0J3MgYnJlYWsgZG93biB0aGUgY3JpdGVyaWEuIEZpcnN0LCBpcyBpdCBkb2N1bWVudGF0aW9uLCBgS2NvbmZpZ2AsIG9yIGNvbW1lbnRzPyBOby4gTmV4dCwgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBsaWtlIGxvZ2dpbmcgb3IgdHJhY2Vwb2ludHM/IE5vLiBIb3cgYWJvdXQgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24ndCBhZmZlY3QgZXhlY3V0aW9uPyBOb3BlLiBGaW5hbGx5LCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VPyBIbW0sIHRoYXQncyB0aGUgaW50ZXJlc3Rpbmcgb25lIGhlcmUuXG5cbkNhbiBgc3RtbWFjYCAqYWN0dWFsbHkqIHJ1biBpbiBRRU1VPyBJIG5lZWQgdG8gY2hlY2suIExldCdzIHNlZSB3aGljaCBRRU1VIHRhcmdldHMgc3VwcG9ydCBgc3RtbWFjYCBvciBgZHdtYWNgLiBJIGtub3cgdGhhdDpcblxuKiAgIGBhbGx3aW5uZXItaDNgIChlLmcuLCBgb3JhbmdlcGktcGNgIGluIGBxZW11LXN5c3RlbS1hcm1gKSB1c2VzIGBhbGx3aW5uZXItc3VuOGktZW1hY2AsIHdoaWNoIGJpbmRzIHRvIGBkd21hYy1zdW44aS5jYCAocGFydCBvZiB0aGUgU1RNTUFDIGRyaXZlciBzdWJzeXN0ZW0gYENPTkZJR19EV01BQ19TVU44SWAsIHdoaWNoIHNlbGVjdHMgYFNUTU1BQ19FVEhgKS5cbiogICBJbnRlbCBRdWFyaywgRWxraGFydCBMYWtlLCBBbGRlciBMYWtlLCBhbmQgc2ltaWxhciBQQ0llIGBkd21hY2AgZGV2aWNlcyAoYGR3bWFjLWludGVsLmNgLCBgc3RtbWFjX3BjaS5jYCkgYXJlIHJlbGV2YW50LlxuKiAgIExvb25nc29uIChgZHdtYWMtbG9vbmdzb24uY2Agb24gbG9vbmdhcmNoIC8gbWlwcyBsb29uZ3NvbiBtYWNoaW5lcykuXG4qICAgU1RNMzIgKGBkd21hYy1zdG0zMi5jYCBvbiBTVE0zMiBib2FyZHMgaW4gUUVNVSkuXG4qICAgR2VuZXJpYyBEV01BQyBwbGF0Zm9ybSBvciBQQ0kgZGV2aWNlcyBhcmUgcHJvYmFibHkgYWxzbyBpbiBwbGF5LlxuXG5Pa2F5LCB0aGF0J3MgaGVscGZ1bC4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBpcyB3aGV0aGVyIFNUTU1BQyBpcyByZWFjaGFibGUgaW4gc3l6a2FsbGVyIG9yIHZpcnR1YWxpemVkIGZ1enppbmcuIEkgbmVlZCB0byBjaGVjayB0aGUgYEtjb25maWdgIGZvciBgU1RNTUFDYCBhbmQgZW5zdXJlIHRoYXQgaXQncyBlbmFibGVkIGluIGVub3VnaCBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU2MDksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNDoxNS43ODc1NzA5MzdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0ODcyNTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfRVRIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTQ6MTUuODMyNDQ1NDI2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzNTYzMzg4MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIHRoZSBTVE1NQUMgS2NvbmZpZyoqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBTVE1NQUMgZHJpdmVyLiBUaGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdgIGZpbGUgaXMgdGhlIG9idmlvdXMgcGxhY2UgdG8gc3RhcnQuIEl0IGNvbnRhaW5zIGFsbCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgcmVsYXRlZCB0byB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IE1BQyBkcml2ZXIuIEkgd2FudCB0byBzZWUgaG93IHRoZSB2YXJpb3VzIGZlYXR1cmVzIGFyZSBleHBvc2VkLCB3aGF0IGRlcGVuZGVuY2llcyBleGlzdCBiZXR3ZWVuIHRoZW0sIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUuIFNwZWNpZmljYWxseSwgSSdtIGludGVyZXN0ZWQgaW4gW21lbnRpb24geW91ciBzcGVjaWZpYyBhcmVhIG9mIGludGVyZXN0LCBlLmcuLCBETUEgc2V0dGluZ3MsIHBvd2VyIG1hbmFnZW1lbnQsIHNwZWNpZmljIFBIWSBzdXBwb3J0LCBvciBzb21lIHBhcnRpY3VsYXIgZmVhdHVyZV0uIEknbGwgbmVlZCB0byBxdWlja2x5IHNjYW4gdGhlIG9wdGlvbnMsIHRoZWlyIGRlcGVuZGVuY2llcywgYW5kIGFueSBkZWZhdWx0IHZhbHVlcyB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiB0aGUgY29uZmlndXJhYmlsaXR5LiBJJ20gbG9va2luZyBmb3IgYW55dGhpbmcgdW51c3VhbCBvciBhbnl0aGluZyB0aGF0IG1pZ2h0IGltcGFjdCBbeW91ciBzcGVjaWZpYyBhcmVhIG9mIGludGVyZXN0XSBhbmQgaG93IHRoZSBkZXZpY2Ugd2lsbCBwZXJmb3JtIHdpdGggaXQuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGZvdW5kYXRpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaXMgY3VycmVudGx5IGNvbmZpZ3VyZWQgYW5kIHdoZXJlIG1vZGlmaWNhdGlvbnMgbWlnaHQgYmUgcG9zc2libGUgb3IgcmVxdWlyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2OTY0LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTQ6MTguMTg4Nzg2NDQ4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzg0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgU1RNTUFDX0VUSFxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gRVRIVE9PTF9ORVRMSU5LXFxuICAgNzpcXHRcXHRzZWxlY3QgTUlJXFxuICAgODpcXHRcXHRzZWxlY3QgUENTX1hQQ1NcXG4gICA5OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDEwOlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAxMTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDEyOlxcdFxcdHNlbGVjdCBSRVNFVF9DT05UUk9MTEVSXFxuICAxMzpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gIDE0OlxcdFxcdGhlbHBcXG4gIDE1OlxcdFxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIGZvciB0aGUgRXRoZXJuZXQgSVBzIGJ1aWx0IGFyb3VuZCBhXFxuICAxNjpcXHRcXHQgIFN5bm9wc3lzIElQIENvcmUuXFxuICAxNzpcXHRcXG4gIDE4OlxcdGlmIFNUTU1BQ19FVEhcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcXG4gIDIxOlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gIDIzOlxcdFxcdGRlZmF1bHQgblxcbiAgMjQ6XFx0XFx0aGVscFxcbiAgMjU6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0cyB1c2luZyBldGh0b29sLiBFbmFibGUgdGhpc1xcbiAgMjY6XFx0XFx0ICBmZWF0dXJlIGlmIHlvdSBhcmUgZmFjaW5nIHByb2JsZW1zIHdpdGggeW91ciBIVyBhbmQgc3VibWl0IHRoZSB0ZXN0XFxuICAyNzpcXHRcXHQgIHJlc3VsdHMgdG8gdGhlIG5ldGRldiBNYWlsaW5nIExpc3QuXFxuICAyODpcXHRcXG4gIDI5OlxcdGNvbmZpZyBTVE1NQUNfUExBVEZPUk1cXG4gIDMwOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUGxhdGZvcm0gYnVzIHN1cHBvcnRcXFwiXFxuICAzMTpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAgMzI6XFx0XFx0ZGVmYXVsdCB5XFxuICAzMzpcXHRcXHRoZWxwXFxuICAzNDpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbiAgMzU6XFx0XFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdXNlZCBvbiBzZXZlcmFsIFNvQ3M6XFxuICAzNjpcXHRcXHQgIFNUaSwgQWxsd2lubmVyLCBBbWxvZ2ljIE1lc29uLCBBbHRlcmEgU09DRlBHQS5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA0MTpcXHRcXG4gIDQyOlxcdGlmIFNUTU1BQ19QTEFURk9STVxcbiAgNDM6XFx0XFxuICA0NDpcXHRjb25maWcgRFdNQUNfRFdDX1FPU19FVEhcXG4gIDQ1OlxcdFxcdHRyaXN0YXRlIFxcXCJTdXBwb3J0IGZvciBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXFxcIlxcbiAgNDY6XFx0XFx0c2VsZWN0IENSQzMyXFxuICA0NzpcXHRcXHRzZWxlY3QgTUlJXFxuICA0ODpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG4gIDQ5OlxcdFxcdGhlbHBcXG4gIDUwOlxcdFxcdCAgU3VwcG9ydCBmb3IgY2hpcHMgdXNpbmcgdGhlIHNucHMsZHdjLXFvcy1ldGhlcm5ldC50eHQgRFQgYmluZGluZy5cXG4gIDUxOlxcdFxcbiAgNTI6XFx0Y29uZmlnIERXTUFDX0dFTkVSSUNcXG4gIDUzOlxcdFxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIGRyaXZlciBmb3IgRFdNQUNcXFwiXFxuICA1NDpcXHRcXHRkZWZhdWx0IFNUTU1BQ19QTEFURk9STVxcbiAgNTU6XFx0XFx0aGVscFxcbiAgNTY6XFx0XFx0ICBHZW5lcmljIERXTUFDIGRyaXZlciBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgcmVxdWlyZSBhbnlcXG4gIDU3OlxcdFxcdCAgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSB0byBmdW5jdGlvbiBvciBpcyB1c2luZyBwbGF0Zm9ybVxcbiAgNTg6XFx0XFx0ICBkYXRhIGZvciBzZXR1cC5cXG4gIDU5OlxcdFxcbiAgNjA6XFx0Y29uZmlnIERXTUFDX0FOQVJJT05cXG4gIDYxOlxcdFxcdHRyaXN0YXRlIFxcXCJBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgc3VwcG9ydFxcXCJcXG4gIDYyOlxcdFxcdGRlZmF1bHQgQVJDXFxuICA2MzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkMgfHwgQ09NUElMRV9URVNUKVxcbiAgNjQ6XFx0XFx0aGVscFxcbiAgNjU6XFx0XFx0ICBTdXBwb3J0IGZvciBBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgRXRoZXJuZXQgY29udHJvbGxlci5cXG4gIDY2OlxcdFxcbiAgNjc6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIEFuYXJpb24gU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuICA2ODpcXHRcXG4gIDY5OlxcdGNvbmZpZyBEV01BQ19FSUM3NzAwXFxuICA3MDpcXHRcXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3IgRXN3aW4gZWljNzcwMCBldGhlcm5ldCBkcml2ZXJcXFwiXFxuICA3MTpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IEhBU19ETUEgXFx1MDAyNlxcdTAwMjYgQVJDSF9FU1dJTiB8fCBDT01QSUxFX1RFU1RcXG4gIDcyOlxcdFxcdGhlbHBcXG4gIDczOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEVzd2luIEVJQzc3MDAgRXRoZXJuZXQgY29udHJvbGxlcixcXG4gIDc0OlxcdFxcdCAgd2hpY2ggaW50ZWdyYXRlcyBTeW5vcHN5cyBEZXNpZ25XYXJlIFFvUyBmZWF0dXJlcy4gSXQgZW5hYmxlc1xcbiAgNzU6XFx0XFx0ICBoaWdoLXNwZWVkIG5ldHdvcmtpbmcgd2l0aCBETUEgYWNjZWxlcmF0aW9uIGFuZCBpcyBvcHRpbWl6ZWRcXG4gIDc2OlxcdFxcdCAgZm9yIGVtYmVkZGVkIHN5c3RlbXMuXFxuICA3NzpcXHRcXG4gIDc4OlxcdGNvbmZpZyBEV01BQ19JTkdFTklDXFxuICA3OTpcXHRcXHR0cmlzdGF0ZSBcXFwiSW5nZW5pYyBNQUMgc3VwcG9ydFxcXCJcXG4gIDgwOlxcdFxcdGRlZmF1bHQgTUFDSF9JTkdFTklDXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDIyOjE0OjE4LjE4ODkwMjAxOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MjY2OTI3NjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFeGFtaW5pbmcgS2NvbmZpZyBmb3IgUENJIFx1MDAyNiBDb25maWd1cmF0aW9uIFJlYWRpbmVzcyoqXG5cbkFscmlnaHQsIGJlZm9yZSB3ZSBkaXZlIHRvbyBkZWVwLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmVuJ3QgbWlzc2VkIGFueSBvYnZpb3VzIGdvdGNoYXMgaW4gdGhlIEtjb25maWcgZmlsZXMuIE15IGluc3RpbmN0IHRlbGxzIG1lIHRoYXQgd2UncmUgbGlrZWx5IGdvaW5nIHRvIGJlIGludGVyYWN0aW5nIHdpdGggUENJIGRldmljZXMgYXQgc29tZSBwb2ludCBkdXJpbmcgdGhlIHByb2plY3QsIHNvIGl0J3MgcHJvYmFibHkgYmVzdCB0byB0YWtlIGEgbW9tZW50IGFuZCByZXZpZXcgYWxsIFBDSS1yZWxhdGVkIEtjb25maWcgb3B0aW9ucy4gSSB3YW50IHRvIHF1aWNrbHkgc2NhbiBmb3Igb2J2aW91cyB0aGluZ3MgdGhhdCBtaWdodCBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGJ5IGRlZmF1bHQgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSB0cmlwIHVzIHVwIGxhdGVyLiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGxvb2sgZm9yIHRoZSBQQ0kgc3VwcG9ydCBvcHRpb25zIGFuZCBlbnN1cmUgdGhhdCB0aGV5IGFyZSBlbmFibGVkIGZvciB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSwgYW5kIHRoYXQgYWxsIHRoZSBuZWNlc3Nhcnkgc3VwcG9ydGluZyBvcHRpb25zIChsaWtlIGludGVycnVwdCBoYW5kbGluZywgRE1BLCBldGMuKSBhcmUgcHJlc2VudCBhbmQgY29uZmlndXJlZCBhcyBleHBlY3RlZC4gSSdtIGFsc28gaG9waW5nIHRoZXJlIGFyZW4ndCBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIGNhdXNlIGEgaGVhZGFjaGUgZG93biB0aGUgbGluZS4gSXQncyBiZXN0IHRvIGlyb24gb3V0IGFueSBraW5rcyBpbiB0aGUgY29uZmlnIGJlZm9yZSB3ZSB3YXN0ZSB0aW1lIGNoYXNpbmcgZG93biBrZXJuZWwgYnVncyB0aGF0IGFyZSBhY3R1YWxseSBqdXN0IHNpbXBsZSBjb25maWd1cmF0aW9uIG92ZXJzaWdodHMuIFRoaXMgcXVpY2sgS2NvbmZpZyBhdWRpdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24gdG8gd29yayBmcm9tLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODM1NSwiT3V0cHV0VG9rZW5zIjo1NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTQ6MjIuNDU1ODMyNDZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwODA0NTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfUENJfGNvbmZpZyBEV01BQ19JTlRFTHxjb25maWcgRFdNQUNfU1VOOElcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yNzc9Y29uZmlnIERXTUFDX1NVTlhJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI4ODpjb25maWcgRFdNQUNfU1VOOElcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4OS1cXHR0cmlzdGF0ZSBcXFwiQWxsd2lubmVyIHN1bjhpIEdNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzIyPWNvbmZpZyBEV01BQ19JTVg4XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMzMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMzNDpjb25maWcgRFdNQUNfSU5URUxfUExBVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzM1LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBkd21hYyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzM9Y29uZmlnIFNUTU1BQ19MSUJQQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzc4OmNvbmZpZyBEV01BQ19JTlRFTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc5LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBHTUFDIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA4LVxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNDoyMi41MDY2Mzg3OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTkzMjk5MzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVkxBTiBIYW5kbGluZyBpbiBzdG1tYWNfbWFpbi5jKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIG5hdHVyZSBvZiB0aGVzZSBtb2RpZmllZCBmdW5jdGlvbnMuIEFyZSB3ZSBkZWFsaW5nIHdpdGggc3RhdGljIGhlbHBlciBmdW5jdGlvbnMsIGVudHJ5IHBvaW50cywgb3IgcG9zc2libHkgcHJvYmUgZnVuY3Rpb25zPyBTaW5jZSBJIHNlZSBhIHBhdGNoIGhlcmUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCdzIGNoYW5nZWQgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUuXG5cbkxvb2tpbmcgYXQgdGhlIHBhdGNoIGl0c2VsZiwgdGhlIG1haW4gZm9jdXMgaXMgYXJvdW5kIFZMQU4gaGFuZGxpbmcgaW4gdGhlIHN0bW1hYyBkcml2ZXIuIFNwZWNpZmljYWxseSwgdGhlIGBzdG1tYWNfcnhfdmxhbmAgZnVuY3Rpb24sIHdoaWNoIHNlZW1zIHRvIGhhbmRsZSBkcml2ZXItbGV2ZWwgVkxBTiBzdHJpcHBpbmcsIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSBjYWxscyB0byB0aGF0IGZ1bmN0aW9uIGluIGBzdG1tYWNfZGlzcGF0Y2hfc2tiX3pjYCBhbmQgYHN0bW1hY19yeGAgYXJlIGFsc28gZ29uZS4gSW5zdGVhZCwgdGhlcmUgYXBwZWFycyB0byBiZSBhIGNvbmRpdGlvbmFsIGNoZWNrIGJhc2VkIG9uIGBwcml2LVx1MDAzZWh3LVx1MDAzZWh3X3ZsYW5fZW5gIHRoYXQgbm93IGRpcmVjdGx5IGNhbGxzIGBzdG1tYWNfcnhfaHdfdmxhbmAuXG5cblRoaXMgc3VnZ2VzdHMgdGhlIGludGVudGlvbiBpcyB0byBtb3ZlIFZMQU4gc3RyaXBwaW5nIHRvIGhhcmR3YXJlIHdoZW5ldmVyIHBvc3NpYmxlLiAgVGhlIGNoYW5nZSBhbHNvIHRvdWNoZXMgdGhlIHByb2JlIGZ1bmN0aW9uLCBgX19zdG1tYWNfZHZyX3Byb2JlYC4gSW4gdGhhdCBmdW5jdGlvbiBJIHNlZSBzb21lIGFkanVzdG1lbnRzIHRvIGZlYXR1cmUgZmxhZ3MuIE5vdGFibHksIHRoZXJlJ3MgYSBjb25kaXRpb25hbCBzZXR0aW5nIG9mIGBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWGAuICBJdCBzZWVtcyB0aGF0IGlmIHRoZSBjb3JlIHR5cGUgaXMgXCJ4bWFjXCIsIHRoZW4gdGhlIGBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWGAgYW5kIGBwcml2LVx1MDAzZWh3LVx1MDAzZWh3X3ZsYW5fZW5gIGFyZSBzZXQuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGUgaHdfdmxhbl9lbiBmbGFnIGlzIGNvbnRyb2xsZWQgYXMgdGhpcyBzZWVtcyBrZXkgdG8gY29udHJvbGxpbmcgdGhlIGZlYXR1cmUuXG5cbk5vdywgSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBjYWxsIHNpdGVzIGZvciBgX19zdG1tYWNfZHZyX3Byb2JlYC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBjb250ZXh0IG9uIHdoZW4gVkxBTiBzdHJpcHBpbmcgaXMgZW5hYmxlZC4gSSBhbHNvIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBlbnRyeSBwb2ludHMgaW4gYHN0bW1hY19tYWluLmNgIGJlc2lkZXMgdGhpcyBwcm9iZSBmdW5jdGlvbiB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTE0MiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTQ6MjguNDk5OTQwMDY0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjA5MDM0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfZHZyX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MjgzPXN0YXRpYyBpbnQgZHdjX2V0aF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMzA6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzMxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9NDI9c3RhdGljIGludCBpbnRlbF9ldGhfcGxhdF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTExNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6MTE4OlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTE5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyNjM9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM0MTpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXQsIFxcdTAwMjZyZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM0Mi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM9Mzc0PXN0YXRpYyBpbnQgaXBxODA2eF9nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtNDgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzo0ODM6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtNDg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00OTg9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1NjI6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU2My1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jPTQyPXN0YXRpYyBpbnQgbHBjMTh4eF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYzo2ODpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy02OS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jPTU5OT1zdGF0aWMgaW50IG1lZGlhdGVrX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTY0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjY0MjpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NDMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM9NDc9c3RhdGljIGludCBtZXNvbjZfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmMtNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYzo3MzpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmMtNzQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jPTM4Mj1zdGF0aWMgaW50IG1lc29uOGJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy00NjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jOjQ2NDpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy00NjUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MjkzPXN0YXRpYyBpbnQgbW90b3Jjb21tX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzU5OlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXQsIFxcdTAwMjZyZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2MC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM9NDg9c3RhdGljIGludCByem4xX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjY4OlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy02OS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM9MzU9c3RhdGljIGludCBzb3BoZ29fZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jOjY1OlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy02Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jPTE0Nz1zdGF0aWMgaW50IHNwYWNlbWl0X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jOjIwNzpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMDgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz05MD1zdGF0aWMgaW50IHN0YXJmaXZlX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jOjE1MzpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTU0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM9NTI1PXN0YXRpYyBpbnQgc3RtMzJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM6NTc5OlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTU4MC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMTA1PXN0YXRpYyBpbnQgc3VuOGlfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyMDI6XFx0LyogdGhlIE1BQyBpcyBydW50aW1lIHN1c3BlbmRlZCBhZnRlciBzdG1tYWNfZHZyX3Byb2JlKCksIHNvIHdlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjAzLVxcdCAqIG5lZWQgdG8gZW5zdXJlIHRoZSBNQUMgcmVzdW1lIGJhY2sgYmVmb3JlIG90aGVyIG9wZXJhdGlvbnMgc3VjaFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjA4LVxcdC8qIFRoZSBtdXggbXVzdCBiZSByZWdpc3RlcmVkIGFmdGVyIHBhcmVudCBNRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjA5OlxcdCAqIHNvIGFmdGVyIHN0bW1hY19kdnJfcHJvYmUoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIxMC1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM9MjE0PXN0YXRpYyBpbnQgdGVncmFfbWdiZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zNzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYzozNzY6XFx0ZXJyID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTM3Ny1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM9MjA1PXN0YXRpYyBpbnQgdmlzY29udGlfZXRoX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTIzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jOjIzNzpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMzgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQxMz12b2lkIHN0bW1hY19kdnJfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg6NDE0OmludCBzdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaC00MTUtXFx0XFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NzY1PUVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19wbGF0X2RhdF9hbGxvYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NzY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6Nzc2NzpzdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NzY4LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwNjgtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MDY5OiAqIHN0bW1hY19kdnJfcHJvYmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwNzAtICogQGRldjogZGV2aWNlIHBvaW50ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA3Ny0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgwNzg6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA3OS1cXHRcXHQgICAgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwODgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MDg5OlxcdHJldCA9IF9fc3RtbWFjX2R2cl9wcm9iZShkZXYsIHBsYXRfZGF0LCByZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA5MC1cXHRpZiAocmV0IFxcdTAwMjZcXHUwMDI2IHBsYXRfZGF0LVxcdTAwM2VleGl0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MDk0LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgwOTU6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX2R2cl9wcm9iZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MDk2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTExOD1zdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODM6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdCwgXFx1MDAyNnJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4NC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz04NDg9aW50IHN0bW1hY19wbHRmcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjg1NzpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCByZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg1OC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDIyOjE0OjI4LjU0NjAzNDE5M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MjM0MjYzNzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBgc3RtbWFjX21haW4uY2AgZm9yIEVudHJ5IFBvaW50cyBhbmQgRHluYW1pYyBCZWhhdmlvcioqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBgc3RtbWFjX21haW4uY2AgZmlsZS4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIHN1c3BlY3QgdGhpcyBpcyBhIGNyaXRpY2FsIGNvbXBvbmVudCBvZiB0aGUgU1RNTUFDIGRyaXZlci4gSSB3YW50IHRvIHF1aWNrbHkgaWRlbnRpZnkgaXRzIGtleSBlbnRyeSBwb2ludHMgYW5kIHVuZGVyc3RhbmQgd2hhdCBwYXJ0cyBvZiB0aGlzIGNvZGUgbWlnaHQgaW50ZXJhY3QgZHluYW1pY2FsbHkgd2l0aCBvdGhlciBtb2R1bGVzIG9yIHRoZSBrZXJuZWwgYXQgcnVudGltZS4gTXkgcHJpbWFyeSB0aG91Z2h0IHByb2Nlc3MgaW52b2x2ZXMgYSB0YXJnZXRlZCBpbnZlc3RpZ2F0aW9uIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIGdvaW5nIG9uIGF0IHRoZSBoaWdoIGxldmVsLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgaGVyZSBiZXNpZGVzIHRoZSBzdGF0aWMgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIHByZXZpb3VzbHkgcG9pbnRlZCBvdXQuIEkga25vdyB0aGF0IGxvb2tpbmcgZm9yIGBFWFBPUlRfU1lNQk9MYCBpcyB0aGUgY2xhc3NpYyB3YXkgdG8gZG8gaXQuIExldCBtZSBzZWUgd2hlcmUgdGhlIGNvZGUgY2FuIGdvIGZyb20gaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ4NTksIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNDozNC43ODAzMDAyNjRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NjY5NDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKnN0bW1hY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTk1PWludCBzdG1tYWNfc2V0X2Nsa190eF9yYXRlKHZvaWQgKmJzcF9wcml2LCBzdHJ1Y3QgY2xrICpjbGtfdHhfaSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjA4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIwOTpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfc2V0X2Nsa190eF9yYXRlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjE3PXZvaWQgc3RtbWFjX2F4aV9ibGVuX3RvX21hc2sodTMyICpyZWd2YWwsIGNvbnN0IHUzMiAqYmxlbiwgc2l6ZV90IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQ2LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI0NzpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfYXhpX2JsZW5fdG9fbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNDgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTMxOTU9aW50IHN0bW1hY19nZXRfcGh5X2ludGZfc2VsKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTMyMTAtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MzIxMTpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfZ2V0X3BoeV9pbnRmX3NlbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zMjEyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NzMxPXN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqc3RtbWFjX3BsYXRfZGF0X2FsbG9jKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzc2NC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NzY1OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19wbGF0X2RhdF9hbGxvYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NzY2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz04MDc4PWludCBzdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA5NC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MDk1OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19kdnJfcHJvYmUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA5Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9ODEwMz12b2lkIHN0bW1hY19kdnJfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEzNi19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTM3OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19kdnJfcmVtb3ZlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMzgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgxNDY9aW50IHN0bW1hY19zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODE5Ny19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTk4OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19zdXNwZW5kKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxOTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgyNDI9aW50IHN0bW1hY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzI4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgzMjk6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3Jlc3VtZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz04MzMyPURFRklORV9TSU1QTEVfREVWX1BNX09QUyhzdG1tYWNfc2ltcGxlX3BtX29wcywgc3RtbWFjX3N1c3BlbmQsIHN0bW1hY19yZXN1bWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODMzMzpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfc2ltcGxlX3BtX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzM0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNDozNC44Mjc5NzMzNzNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjY2MjE1MTc2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipFeGFtaW5pbmcgYHN0bW1hY19tYWluLmNgIGFuZCBJdHMgTmV0d29yayBEZXZpY2UgT3BlcmF0aW9ucyoqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMgYHN0bW1hY2AgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQncyBpbnRlcmFjdGluZyB3aXRoIHRoZSBuZXR3b3JrIGRldmljZS4gTGV0J3Mgc3RhcnQgd2l0aCBhIGNydWNpYWwgcGllY2U6IHRoZSBgbmV0X2RldmljZV9vcHNgIHN0cnVjdHVyZS4gSSdtIGdvaW5nIHRvIGxvb2sgc3BlY2lmaWNhbGx5IHdpdGhpbiBgc3RtbWFjX21haW4uY2AgYmVjYXVzZSB0aGF0J3MgdXN1YWxseSB3aGVyZSB0aGUgY29yZSBkZXZpY2Ugc2V0dXAgYW5kIG9wZXJhdGlvbiBmdW5jdGlvbnMgYXJlIGRlZmluZWQsIHJpZ2h0PyBJIHdhbnQgdG8gc2VlIHdoaWNoIGZ1bmN0aW9ucyBpdCdzIGltcGxlbWVudGluZywgaG93IGl0J3MgaGFuZGxpbmcgdGhlIHVzdWFsIHN1c3BlY3RzOiBpbml0aWFsaXphdGlvbiwgdHJhbnNtaXNzaW9uLCByZWNlcHRpb24sIGFuZCBsaW5rIHN0YXRlLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBzdGFuZGFyZCBzdHVmZiBsaWtlIGBuZG9fb3BlbmAsIGBuZG9fc3RvcGAsIGBuZG9fc3RhcnRfeG1pdGAsIGFuZCBgbmRvX2dldF9zdGF0czY0YCBpbiB0aGVyZSwgYnV0IEknbSBhbHNvIGN1cmlvdXMgYWJvdXQgYW55IHN0bW1hYy1zcGVjaWZpYyBleHRlbnNpb25zIG9yIGN1c3RvbSBob29rcy4gR290dGEgc2VlIGhvdyB0aGV5J3ZlIGhhbmRsZWQgRE1BIGNvbmZpZ3VyYXRpb24sIGludGVycnVwdCBoYW5kbGluZywgYW5kIGJ1ZmZlciBtYW5hZ2VtZW50LCBhbGwgdGhyb3VnaCB0aGF0IG9wZXJhdGlvbnMgc3RydWN0dXJlLiBSaWdodCwgbGV0J3Mgb3BlbiB0aGF0IGZpbGUgYW5kIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY1MjIsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNDozNy40OTAxMjc3NzFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNzYxMzM1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX25ldGRldl9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xNjA9c3RhdGljIHZvaWQgc3RtbWFjX3ZsYW5fcmVzdG9yZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNjItI2lmZGVmIENPTkZJR19ERUJVR19GU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTYzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgc3RtbWFjX25ldGRldl9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNjQtc3RhdGljIHZvaWQgc3RtbWFjX2luaXRfZnMoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTY3MTI9c3RhdGljIGludCBzdG1tYWNfZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NzE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjcxODpcXHRpZiAoZGV2LVxcdTAwM2VuZXRkZXZfb3BzICE9IFxcdTAwMjZzdG1tYWNfbmV0ZGV2X29wcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY3MTktXFx0XFx0Z290byBkb25lO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MjI4PXN0YXRpYyB2b2lkIHN0bW1hY19nZXRfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRubF9saW5rX3N0YXRzNjQgKnN0YXRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MjgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzI4MTpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHN0bW1hY19uZXRkZXZfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzI4Mi1cXHQubmRvX29wZW4gPSBzdG1tYWNfb3BlbixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Nzc2Nz1zdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc4ODEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3ODgyOlxcdG5kZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2c3RtbWFjX25ldGRldl9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03ODgzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNDozOC43NjYyNjY3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ0MzAwMzQ3MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTVE1NQUMgVkxBTiBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoIGNvbmNlcm5pbmcgdGhlIE5ldHdvcmsgRGV2aWNlIChuZGV2KSBvcGVyYXRpb25zIHdpdGhpbiB0aGUgc3RtbWFjIGRyaXZlci4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgY2hhbmdlcyByZWxhdGVkIHRvIFZMQU4gaGFuZGxpbmcuIEZpcnN0LCBpdCBsb29rcyBsaWtlIGBzdG1tYWNfcnhfdmxhbmAgaGFzIGJlZW4gY29tcGxldGVseSByZW1vdmVkLiBUaGF0J3MgYSBzaWduaWZpY2FudCBzaGlmdC4gQ29uc2VxdWVudGx5LCB0aGUgY2FsbHMgdG8gYHN0bW1hY19yeF92bGFuYCB3aXRoaW4gYHN0bW1hY19kaXNwYXRjaF9za2JfemNgIGFuZCBgc3RtbWFjX3J4YCBhcmUgYWxzbyBnb25lLlxuXG5Ob3csIGxldCdzIHNjcnV0aW5pemUgYF9fc3RtbWFjX2R2cl9wcm9iZWAuIEFoLCBoZXJlJ3Mgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gVGhlIG9yaWdpbmFsIGNvZGUgYmxvY2ssIGNvbW1lbnRlZCBvdXQsIHNlZW1zIHRvIGhhdmUgYmVlbiByZWxhdGVkIHRvIGVuYWJsaW5nIGhhcmR3YXJlIFZMQU4gdGFnIGRldGVjdGlvbi4gVGhlIGNvbmRpdGlvbmFsIGAjaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURgIGlzIGdvbmUsIGJ1dCB0aGUgaW50ZW50IHJlbWFpbnMuIFNwZWNpZmljYWxseSwgdGhlIHBhdGNoIG5vdyBjb25kaXRpb25hbGx5IHNldHMgYE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYYCBiYXNlZCBvbiB0aGUgYGR3bWFjX2lzX3htYWNgIGNoZWNrLiBBbmQgdGhlIGNvcnJlc3BvbmRpbmcgYGh3X2ZlYXR1cmVzYCBpcyBhZGp1c3RlZCwgYW5kIGBwcml2LVx1MDAzZWh3LVx1MDAzZWh3X3ZsYW5fZW5gIGlzIHNldCB0byB0cnVlLiBNeSBpbnRlcnByZXRhdGlvbiBpcyB0aGF0IHRoZSBkcml2ZXIgaXMgbm93IG9ubHkgZW5hYmxpbmcgQ1RBRyAoQ3VzdG9tZXIgVGFnKSBWTEFOIHN1cHBvcnQsIGxpa2VseSByZW1vdmluZyBzdXBwb3J0IGZvciBTVEFHIChTZXJ2aWNlIFRhZykgVkxBTiwgYXQgbGVhc3QgZXhwbGljaXRseSB0aHJvdWdoIHRoaXMgY29kZSBwYXRoLlxuXG5UbyBnZXQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhpcyBWTEFOIGNoYW5nZSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBTVE1NQUMgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJ2xsIG5lZWQgdG8gcmV2aWV3IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCBhbmQgY3Jvc3MtcmVmZXJlbmNlIHRoYXQgd2l0aCB0aGUgYnJvYWRlciBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWdgIGFuZCBgZHJpdmVycy9uZXQvS2NvbmZpZ2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBiZWVuIGVuYWJsZWQgb3IgZGlzYWJsZWQgYnkgdGhpcyBwYXRjaCBpbiB0ZXJtcyBvZiB0aGUgdW5kZXJseWluZyBjb25maWd1cmF0aW9ucyBmb3IgdGhlIFNUTU1BQyBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NDkyLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDIyOjE0OjQzLjE5NjMwMzU2OVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk0NTQwOTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNvdXJjZS4qc3RtbWFjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vS2NvbmZpZz0xOT1pZiBORVRfVkVORE9SX1NUTUlDUk9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL0tjb25maWctMjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9LY29uZmlnOjIxOnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL0tjb25maWctMjItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9OTM9c3RhdGljIGludCBhbmFyaW9uX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtOTctXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6OTg6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEwMDpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEwMS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYz05Nj1zdGF0aWMgaW50IGR3Y19xb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTk3LVxcdFxcdFxcdCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6OTg6XFx0XFx0XFx0IHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpzdG1tYWNfcmVzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtOTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYz0yODM9c3RhdGljIGludCBkd2NfZXRoX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI4Ni1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6Mjg3OlxcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yODgtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYz0xNjc9c3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTcwLVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjE3MTpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0xNzItXFx0c3RydWN0IGVpYzc3MDBfcW9zX3ByaXYgKmR3Y19wcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTE3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MTc2OlxcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTc3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM9MTk9c3RhdGljIGludCBkd21hY19nZW5lcmljX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjEtXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6MjI6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjMtXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjI1OlxcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jPTI5Mz1zdGF0aWMgaW50IGlteF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjk1LVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6Mjk2OlxcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjk3LVxcdHN0cnVjdCBpbXhfcHJpdl9kYXRhICpkd21hYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTMwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozMDE6XFx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTMwMi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jPTE1ND1zdGF0aWMgaW50IGluZ2VuaWNfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMTU2LVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jOjE1NzpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0xNTgtXFx0c3RydWN0IGluZ2VuaWNfbWFjICptYWM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMTYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoxNjM6XFx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0xNjQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYz00Mj1zdGF0aWMgaW50IGludGVsX2V0aF9wbGF0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtNDQtXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6NDU6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtNDYtXFx0c3RydWN0IGludGVsX2R3bWFjICpkd21hYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy00OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6NTA6XFx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy01MS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jPTM3ND1zdGF0aWMgaW50IGlwcTgwNnhfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTM3Ni1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzozNzc6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtMzc4LVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtMzgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzozODM6XFx0dmFsID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy0zODQtXFx0aWYgKHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jPTE1OD1zdGF0aWMgaW50IGxzMXhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jLTE2MC1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jOjE2MTpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jLTE2Mi1cXHRjb25zdCBzdHJ1Y3QgbHMxeF9kYXRhICpkYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMTY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jOjE2NzpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMTY4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM9NDI9c3RhdGljIGludCBscGMxOHh4X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNDQtXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM6NDU6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNDYtXFx0c3RydWN0IHJlZ21hcCAqcmVnbWFwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYzo0OTpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTUwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jPTU5OT1zdGF0aWMgaW50IG1lZGlhdGVrX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTYwMi1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM6NjAzOlxcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02MDQtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM6NjI3OlxcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTYyOC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYz00Nz1zdGF0aWMgaW50IG1lc29uNl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy00OS1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6NTA6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTUxLVxcdHN0cnVjdCBtZXNvbl9kd21hYyAqZHdtYWM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6NTQ6XFx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmMtNTUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYz0zODI9c3RhdGljIGludCBtZXNvbjhiX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtMzg0LVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jOjM4NTpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy0zODYtXFx0c3RydWN0IG1lc29uOGJfZHdtYWMgKmR3bWFjO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTM4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM6Mzg5OlxcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtMzkwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM9ODI9c3RhdGljIGludCBudnRfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTg0LVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jOjg1OlxcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTg2LVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jOjkwOlxcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtOTEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM9Njg0PXN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNjg4LVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo2ODk6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTY5MC1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy02OTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo2OTQ6XFx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNjk1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM9MTMxPXN0YXRpYyBpbnQgcmVuZXNhc19nYmV0aF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTEzNC1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoxMzU6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMTM2LVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMTQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoxNDE6XFx0ZXJyID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0xNDItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM9MTU2OD1zdGF0aWMgaW50IHJrX2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTU3MC1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM6MTU3MTpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTU3Mi1cXHRjb25zdCBzdHJ1Y3QgcmtfZ21hY19vcHMgKmRhdGE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE1ODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYzoxNTgxOlxcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE1ODItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYz00OD1zdGF0aWMgaW50IHJ6bjFfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy01MC1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzo1MTpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy01Mi1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzo1NTpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTU2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM9NTk2PXN0YXRpYyBpbnQgc29jZnBnYV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTU5OC1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzo1OTk6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjAwLVxcdHN0cnVjdCBkZXZpY2VcXHRcXHQqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy02MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjYxMTpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTYxMi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM9MTk9c3RhdGljIGludCBzb3BoZ29fc2cyMDQ0X2R3bWFjX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy0yMC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzoyMTpcXHRcXHRcXHRcXHQgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnN0bW1hY19yZXMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM9MzU9c3RhdGljIGludCBzb3BoZ29fZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTM4LVxcdGNvbnN0IHN0cnVjdCBzb3BoZ29fZHdtYWNfZGF0YSAqZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzozOTpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTQwLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy00Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo0MzpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNDQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM9MTAyPXN0YXRpYyBpbnQgc3BhY2VtaXRfZHdtYWNfdXBkYXRlX2lycV9jb25maWcoc3RydWN0IHNwYWNtaXRfZHdtYWMgKmR3bWFjLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM6MTAzOlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqc3RtbWFjX3JlcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTEwNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jPTE0Nz1zdGF0aWMgaW50IHNwYWNlbWl0X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTE0OS1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM6MTUwOlxcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0xNTEtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM6MTYwOlxcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTE2MS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz05MD1zdGF0aWMgaW50IHN0YXJmaXZlX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTkyLVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzo5MzpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtOTQtXFx0c3RydWN0IHN0YXJmaXZlX2R3bWFjICpkd21hYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtOTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzo5ODpcXHRlcnIgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy05OS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM9MjQ5PXN0YXRpYyBpbnQgc3RpX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYy0yNTItXFx0Y29uc3Qgc3RydWN0IHN0aV9kd21hY19vZl9kYXRhICpkYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jOjI1MzpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTI1NC1cXHRzdHJ1Y3Qgc3RpX2R3bWFjICpkd21hYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTI2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYzoyNjM6XFx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTI2NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz01MjU9c3RhdGljIGludCBzdG0zMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01MjctXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jOjUyODpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTI5LVxcdHN0cnVjdCBzdG0zMl9kd21hYyAqZHdtYWM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTUzMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jOjUzMzpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01MzQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jPTEwNT1zdGF0aWMgaW50IHN1bjU1aV9nbWFjMjAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xMDctXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYzoxMDg6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xMDktXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTExMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYzoxMTM6XFx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTExNC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMTA1PXN0YXRpYyBpbnQgc3VuOGlfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTEwNy1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTEwODpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTEwOS1cXHRzdHJ1Y3Qgc3VueGlfcHJpdl9kYXRhICpnbWFjO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMTE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTExNjpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMTE3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jPTk5PXN0YXRpYyBpbnQgc3VuN2lfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xMDEtXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jOjEwMjpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmMtMTAzLVxcdHN0cnVjdCBzdW54aV9wcml2X2RhdGEgKmdtYWM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jLTEwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jOjEwNzpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xMDgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM9MjE2PXN0YXRpYyBpbnQgdGhlYWRfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jLTIxNy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYzoyMTg6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jLTIxOS1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jLTIyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jOjIyNTpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYy0yMjYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM9MjA1PXN0YXRpYyBpbnQgdmlzY29udGlfZXRoX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTIwNy1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjA4OlxcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMDktXFx0c3RydWN0IHZpc2NvbnRpX2V0aCAqZHdtYWM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTIxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jOjIxMjpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMTMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjExNj1zdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV90eF9za2J1ZnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTMwLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjEzMTpzdGF0aWMgdm9pZCBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxMzItXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjE2NjpzdGF0aWMgdm9pZCBmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTY3LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE4Mi0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIxODM6c3RhdGljIHZvaWQgX19mcmVlX2RtYV90eF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTg0LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjIwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIyMTA6c3RhdGljIHZvaWQgZnJlZV9kbWFfdHhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjIxMS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyMzAtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMjMxOnN0YXRpYyBpbnQgX19hbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjIzMi1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIzMDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMzA1OnN0YXRpYyBpbnQgYWxsb2NfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIzMDYtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMzM2LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjMzNzpzdGF0aWMgaW50IF9fYWxsb2NfZG1hX3R4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIzMzgtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMzczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjM3NDpzdGF0aWMgaW50IGFsbG9jX2RtYV90eF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMzc1LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQwMy0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI0MDQ6c3RhdGljIGludCBhbGxvY19kbWFfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQwNS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI0MjItICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyNDIzOnN0YXRpYyB2b2lkIGZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI0MjQtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9NzMyPWludCBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjczMzpcXHRcXHRcXHRcXHQgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpzdG1tYWNfcmVzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTczNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaD0yMD1pbnQgc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaDoyMTpcXHRcXHRcXHRcXHQgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0yMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTQ6NDMuMzkwODUwNDQ2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3MzczMjI5Mzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBTVE1NQUNfVkxBTl9UQUdfVVNFRGAqKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBgU1RNTUFDX1ZMQU5fVEFHX1VTRURgLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBrbm93IHByZWNpc2VseSB3aGF0IHRoaXMgbWFjcm8gcmVwcmVzZW50cy4gSXRzIGRlZmluaXRpb24gaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSB3aXRoaW4gdGhlIFNUTU1BQyBkcml2ZXIncyBWTEFOIHRhZ2dpbmcgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byBwaW5wb2ludCB3aGVyZSBpdCdzIGRlZmluZWQgd2l0aGluIHRoZSByZWxldmFudCBzb3VyY2UgY29kZS4gTGV0J3MgdHJhY2UgaXQgYmFjayBhbmQgc2VlIHdoYXQncyBhY3R1YWxseSBnb2luZyBvbi4gVGhpcyB3aWxsIHRlbGwgbWUgd2hldGhlciB0aGlzIGlzIGVuYWJsaW5nLCBkaXNhYmxpbmcgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHkuIE5vIHBvaW50IHNwZWN1bGF0aW5nIHdpdGhvdXQgdGhlIGRlZmluaXRpb24gdG8gZ3VpZGUgbXkgdGhpbmtpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NDM0LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTU6MDAuNzY0MTAwMTYzWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzY2MzA0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJTVE1NQUNfVkxBTl9UQUdfVVNFRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yMC0jaWYgSVNfRU5BQkxFRChDT05GSUdfVkxBTl84MDIxUSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDoyMTojZGVmaW5lIFNUTU1BQ19WTEFOX1RBR19VU0VEXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtMjItI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lmX3ZsYW4uaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmM9NDA9c3RhdGljIHZvaWQgZHdtYWMxMDAwX2NvcmVfaW5pdChzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtNTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYzo2MDojaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jLTYxLVxcdC8qIFRhZyBkZXRlY3Rpb24gd2l0aG91dCBmaWx0ZXJpbmcgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwX2NvcmUuYz0yMj1zdGF0aWMgdm9pZCBkd21hYzEwMF9jb3JlX2luaXQoc3RydWN0IG1hY19kZXZpY2VfaW5mbyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMF9jb3JlLmMtMzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDBfY29yZS5jOjMyOiNpZmRlZiBTVE1NQUNfVkxBTl9UQUdfVVNFRFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwX2NvcmUuYy0zMy1cXHR3cml0ZWwoRVRIX1BfODAyMVEsIGlvYWRkciArIE1BQ19WTEFOMSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9lbmhfZGVzYy5jPTE1PXN0YXRpYyBpbnQgZW5oX2Rlc2NfZ2V0X3R4X3N0YXR1cyhzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzICp4LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZW5oX2Rlc2MuYy03MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9lbmhfZGVzYy5jOjcxOiNpZmRlZiBTVE1NQUNfVkxBTl9UQUdfVVNFRFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2VuaF9kZXNjLmMtNzItXFx0aWYgKHRkZXMwIFxcdTAwMjYgRVRERVMwX1ZMQU5fRlJBTUUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9lbmhfZGVzYy5jPTE3Nj1zdGF0aWMgaW50IGVuaF9kZXNjX2dldF9yeF9zdGF0dXMoc3RydWN0IHN0bW1hY19leHRyYV9zdGF0cyAqeCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2VuaF9kZXNjLmMtMjM4LVxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9lbmhfZGVzYy5jOjIzOTojaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9lbmhfZGVzYy5jLTI0MC1cXHRpZiAocmRlczAgXFx1MDAyNiBSREVTMF9WTEFOX1RBRylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL25vcm1fZGVzYy5jPTYyPXN0YXRpYyBpbnQgbmRlc2NfZ2V0X3J4X3N0YXR1cyhzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzICp4LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvbm9ybV9kZXNjLmMtMTAzLVxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9ub3JtX2Rlc2MuYzoxMDQ6I2lmZGVmIFNUTU1BQ19WTEFOX1RBR19VU0VEXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvbm9ybV9kZXNjLmMtMTA1LVxcdGlmIChyZGVzMCBcXHUwMDI2IFJERVMwX1ZMQU5fVEFHKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NzY3PXN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzk0Mi1cXHRuZGV2LVxcdTAwM2V3YXRjaGRvZ190aW1lbyA9IG1zZWNzX3RvX2ppZmZpZXMod2F0Y2hkb2cpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6Nzk0MzojaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc5NDQtXFx0aWYgKGR3bWFjX2lzX3htYWMocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNTowMC44MTE3NjYzOTJaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjg4MDAyMDYwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNUTU1BQyBWTEFOIFRhZ2dpbmcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIGlmIGBDT05GSUdfVkxBTl84MDIxUWAgaXMgZW5hYmxlZCwgdGhlbiBgU1RNTUFDX1ZMQU5fVEFHX1VTRURgIGlzIGF1dG9tYXRpY2FsbHkgZGVmaW5lZC4gTWFrZXMgc2Vuc2UuIE5vdywgbGV0J3MgdHJhY2UgdGhlIGRlcGVuZGVuY2llcyBmb3IgYFNUTU1BQ19FVEhgIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBmaXRzIGludG8gdGhlIGJyb2FkZXIgbmV0d29yayBkcml2ZXIgc3RydWN0dXJlLiBSaWdodCwgc3RhcnRpbmcgd2l0aCB0aGUgcGFyZW50IG1lbnVzOiBgTkVUREVWSUNFU2AgdW5kZXIgYGRyaXZlcnMvbmV0L0tjb25maWdgLCB0aGVuIGBFVEhFUk5FVGAgdW5kZXIgYGRyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWdgLCBhbmQgdGhlbiBzcGVjaWZpY2FsbHksIGBORVRfVkVORE9SX1NUTUlDUk9gIGluIHRoZSBgc3RtaWNyb2Agc3ViZGlyZWN0b3J5LiBUaGF0J3MgdGhlIFN0bWljcm8gc3BlY2lmaWMgcGFydC5cblxuRnJvbSB0aGVyZSB3ZSBnZXQgdG8gYFNUTU1BQ19FVEhgIGl0c2VsZiwgd2hpY2gsIGFzIEkgc3VzcGVjdGVkLCBpcyBpbiB0aGUgYHN0bW1hY2Agc3ViLW1lbnUuICBOYXR1cmFsbHksIHdlJ2xsIHNlZSBgU1RNTUFDX1BMQVRGT1JNYCwgYFNUTU1BQ19QQ0lgLCBhbmQgc2ltaWxhciBvcHRpb25zIGRlcGVuZGVudCBvbiB0aGUgaGFyZHdhcmUuIEFuZCBvZiBjb3Vyc2UsIHRoZSBWTEFOIHN1cHBvcnQgaGluZ2VzIG9uIGBWTEFOXzgwMjFRYC4gR290IGl0LiBOb3cgSSdsbCBkcmlsbCBkb3duIGludG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vS2NvbmZpZ2AgdG8gY29uZmlybSB0aGVzZSBkZXBlbmRlbmNpZXMgYW5kIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgdGhlc2UgVkxBTiBjb25maWd1cmF0aW9ucyBhcmUgaGFuZGxlZCBpbiB0aGUgU3RtaWNybyBFdGhlcm5ldCBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NzQ3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDIyOjE1OjAzLjY5MTc4ODkzOVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg2ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFNUTWljcm9lbGVjdHJvbmljcyBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgTkVUX1ZFTkRPUl9TVE1JQ1JPXFxuICAgNzpcXHRcXHRib29sIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgZGV2aWNlc1xcXCJcXG4gICA4OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBiYXNlZCBvbiBTeW5vcHN5cyBFdGhlcm5ldCBJUFxcbiAgMTI6XFx0XFx0ICBDb3Jlcywgc2F5IFkuXFxuICAxMzpcXHRcXG4gIDE0OlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gIDE1OlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbFxcbiAgMTY6XFx0XFx0ICB0aGUgcXVlc3Rpb25zIGFib3V0IFNUTWljcm9lbGVjdHJvbmljcyBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbFxcbiAgMTc6XFx0XFx0ICBiZSBhc2tlZCBmb3IgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRpZiBORVRfVkVORE9SX1NUTUlDUk9cXG4gIDIwOlxcdFxcbiAgMjE6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXFxcIlxcbiAgMjI6XFx0XFxuICAyMzpcXHRlbmRpZiAjIE5FVF9WRU5ET1JfU1RNSUNST1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNTowMy42OTE5MDI1MDhaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTAwNjk1NzcxMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGb2N1czogU1RNTUFDIEV0aGVybmV0IERyaXZlciAtIFZMQU4gSGFuZGxpbmcqKlxuXG5Pa2F5LCBsZXQncyBuYWlsIGRvd24gdGhlIGJlc3QgZnVuY3Rpb25zIHRvIHRhcmdldCBmb3IgZnV6emluZyB0aGlzIFNUTU1BQyBkcml2ZXIgcGF0Y2guIFRoZSBwYXRjaCByZW1vdmVzIHRoZSBzdGF0aWMgYHN0bW1hY19yeF92bGFuYCBmdW5jdGlvbiwgd2hpY2ggd2FzIHVzZWQgZm9yIFZMQU4gc3RyaXBwaW5nLCBhbmQgdGhlIGNhbGxlcnMgYXJlIG5vdyBgc3RtbWFjX2Rpc3BhdGNoX3NrYl96Y2AgYW5kIGBzdG1tYWNfcnhgIOKAkyBib3RoIGluIGBzdG1tYWNfbWFpbi5jYC4gQWxzbywgYF9fc3RtbWFjX2R2cl9wcm9iZWAgaW4gdGhlIHNhbWUgZmlsZSBpcyBjYWxsZWQgYnkgYHN0bW1hY19kdnJfcHJvYmVgLiBTaW5jZSBgc3RtbWFjX2R2cl9wcm9iZWAgaXMgYSBub24tc3RhdGljIGVudHJ5IHBvaW50LCBhbmQgb3RoZXIgY29tbW9uIG5ldGRldiBvcHMgc3VjaCBhcyBgc3RtbWFjX29wZW5gLCBgc3RtbWFjX3JlbGVhc2VgLCBhbmQgYHN0bW1hY194bWl0YCwgbWlnaHQgYmUgcmVsZXZhbnQuXG5cbk5vdywgbGV0J3MgY29uZmlybSB0aGUgZm9jdXMgc3ltYm9scy4gYHN0bW1hY19kdnJfcHJvYmVgIGlzIGV4cG9ydGVkIGFuZCBub24tc3RhdGljLCBzbyB0aGF0J3MgZGVmaW5pdGVseSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgc2hvdWxkIGFsc28gY2hlY2sgYHN0bW1hY19wbHRmcl9wcm9iZWAsIGluIGBzdG1tYWNfcGxhdGZvcm0uY2AsIGFzIGFuIGFkZGl0aW9uYWwgdGFyZ2V0LlxuXG5TbywgSSdtIHRoaW5raW5nOlxuXG4qICAgKipXb3J0aEZ1enppbmc6KiogVHJ1ZSwgZGVmaW5pdGVseS4gVGhpcyBwYXRjaCB0b3VjaGVzIFZMQU4gaGFuZGxpbmcsIGFuZCB0aGUgU1RNTUFDIGNvbnRyb2xsZXJzIGFyZSBrbm93biB0byBiZSBlbXVsYXRlZCBpbiB2aXJ0dWFsIGVudmlyb25tZW50cy4gVGhpcyB3aWxsIGJlIHJlYWNoYWJsZSBpbiB0aGUgZnV6emVyLlxuKiAgICoqRm9jdXNTeW1ib2xzOioqIEknbSBsZWFuaW5nIHRvd2FyZCBpbmNsdWRpbmcgYm90aCBgc3RtbWFjX2R2cl9wcm9iZWAgYW5kIGBzdG1tYWNfcGx0ZnJfcHJvYmVgLCBvciBtYXliZSBqdXN0IGBzdG1tYWNfZHZyX3Byb2JlYCBhbmQgc2VlIGlmIHRoZSBhbmFseXNpcyBleHBhbmRzIG91dCBmcm9tIHRoZXJlLlxuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXNlIGNvbmZpZ3MgYXJlIGVuYWJsZWQ6IGBORVRfVkVORE9SX1NUTUlDUk9gLCBgU1RNTUFDX0VUSGAsIGBTVE1NQUNfUExBVEZPUk1gLCBhbmQgYFZMQU5fODAyMVFgLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2sgbXkgcmVhc29uaW5nIGhlcmUuIFRoZSBwYXRjaCBpcyBhYm91dCBWTEFOIGhhbmRsaW5nIGluIHRoZSBSWCBwYXRoLCBzcGVjaWZpY2FsbHkgcmVtb3ZpbmcgdGhlIGRyaXZlci1sZXZlbCBzdHJpcHBpbmcsIG1ha2luZyBpdCBkZXBlbmRlbnQgb24gaGFyZHdhcmUgY2FwYWJpbGl0eSB2aWEgYGR3bWFjX2lzX3htYWNgLiBUaGUgU1RNTUFDIGNvbnRyb2xsZXJzIGFyZSBlbXVsYXRlZCwgc28gdGhpcyBpcyBkZWZpbml0ZWx5IHJlbGV2YW50IGZvciBmdXp6aW5nLCBhbmQgZnVuY3Rpb25hbC5cblxuQWxyaWdodCwgSSd2ZSBnb3QgdGhlIGNvbmZpZ3Mgc3RyYWlnaHQuIE5vdywgSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA1NjEsIk91dHB1dFRva2VucyI6MjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTU6MTMuNzYxNDgyNzk4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM2ODcwNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9WRU5ET1JfU1RNSUNST1wiLFxuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiU1RNTUFDX1BMQVRGT1JNXCIsXG4gICAgXCJWTEFOXzgwMjFRXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RtbWFjX2R2cl9wcm9iZVwiLFxuICAgIFwic3RtbWFjX3BsdGZyX3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWx0ZXJzIFZMQU4gaGFuZGxpbmcgaW4gdGhlIHJlY2VpdmUgcGF0aCBvZiB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlci4gSXQgcmVtb3ZlcyBhcnRpZmljaWFsIHNvZnR3YXJlIFZMQU4gc3RyaXBwaW5nIChzdG1tYWNfcnhfdmxhbikgZnJvbSBzdG1tYWNfcnggYW5kIHN0bW1hY19kaXNwYXRjaF9za2JfemMsIGFuZCB1cGRhdGVzIGZlYXR1cmUgYWR2ZXJ0aXNpbmcgZHVyaW5nIGRyaXZlciBwcm9iZSAoX19zdG1tYWNfZHZyX3Byb2JlKSB0byBvbmx5IHNldCBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCB3aGVuIGhhcmR3YXJlIFZMQU4gc3RyaXBwaW5nIGlzIHN1cHBvcnRlZC4gU1RNTUFDIGhhcmR3YXJlIChlLmcuIEFsbHdpbm5lciBzdW44aSBFTUFDKSBpcyBzdXBwb3J0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgc28gdGhlc2UgY2hhbmdlcyBhZmZlY3QgcmVhY2hhYmxlIGtlcm5lbCBuZXR3b3JrIGRhdGEgcGF0aHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1ZFTkRPUl9TVE1JQ1JPXCIsXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUExBVEZPUk1cIixcbiAgICBcIlZMQU5fODAyMVFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfZHZyX3Byb2JlXCIsXG4gICAgXCJzdG1tYWNfcGx0ZnJfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhbHRlcnMgVkxBTiBoYW5kbGluZyBpbiB0aGUgcmVjZWl2ZSBwYXRoIG9mIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBJdCByZW1vdmVzIGFydGlmaWNpYWwgc29mdHdhcmUgVkxBTiBzdHJpcHBpbmcgKHN0bW1hY19yeF92bGFuKSBmcm9tIHN0bW1hY19yeCBhbmQgc3RtbWFjX2Rpc3BhdGNoX3NrYl96YywgYW5kIHVwZGF0ZXMgZmVhdHVyZSBhZHZlcnRpc2luZyBkdXJpbmcgZHJpdmVyIHByb2JlIChfX3N0bW1hY19kdnJfcHJvYmUpIHRvIG9ubHkgc2V0IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYIHdoZW4gaGFyZHdhcmUgVkxBTiBzdHJpcHBpbmcgaXMgc3VwcG9ydGVkLiBTVE1NQUMgaGFyZHdhcmUgKGUuZy4gQWxsd2lubmVyIHN1bjhpIEVNQUMpIGlzIHN1cHBvcnRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBzbyB0aGVzZSBjaGFuZ2VzIGFmZmVjdCByZWFjaGFibGUga2VybmVsIG5ldHdvcmsgZGF0YSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTU6MTMuODM1MTc1MDE3WiIsIlNlcSI6MzEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjU1MDY4MDM1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDIyOjE1OjEzLjgzNTYzMTUzN1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI2NTUwMjE5Nzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZW1vdmVzIHNvZnR3YXJlLWJhc2VkIFZMQU4gdGFnIHN0cmlwcGluZyAoYHN0bW1hY19yeF92bGFuYCkgZnJvbSB0aGUgc3RtbWFjIG5ldHdvcmsgZHJpdmVyJ3MgUlggcGF0aCBhbmQgcmVzdHJpY3RzIGFkdmVydGlzaW5nIGBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWGAgdG8gaGFyZHdhcmUgdGhhdCBhY3R1YWxseSBzdXBwb3J0cyBIVyBWTEFOIHN0cmlwcGluZyAoYGR3bWFjX2lzX3htYWNgKS4gXFxuXFxuTm8gbmV3IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywga2VybmVsLXRvLXVzZXIgY29waWVzLCBwYWRkaW5nIGJ5dGVzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkIHBhdGhzIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGFiZTljYWZiODQ5ZTQzZTFlMDFjYjNiNWVjNzU1NjhhOTg5MTQ3OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDEgMjI6MTM6NDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggYjJiN2QwMjQyZGQzYy4uMmUzYjBjZjEwZDY2NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC01MDIxLDI0ICs1MDIxLDYgQEAgc3RhdGljIG5ldGRldl9mZWF0dXJlc190IHN0bW1hY19mZWF0dXJlc19jaGVjayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0cmV0dXJuIHZsYW5fZmVhdHVyZXNfY2hlY2soc2tiLCBmZWF0dXJlcyk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHN0bW1hY19yeF92bGFuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4te1xuLVx0c3RydWN0IHZsYW5fZXRoaGRyICp2ZXRoID0gc2tiX3ZsYW5fZXRoX2hkcihza2IpO1xuLVx0X19iZTE2IHZsYW5fcHJvdG8gPSB2ZXRoLVx1MDAzZWhfdmxhbl9wcm90bztcbi1cdHUxNiB2bGFuaWQ7XG4tXG4tXHRpZiAoKHZsYW5fcHJvdG8gPT0gaHRvbnMoRVRIX1BfODAyMVEpIFx1MDAyNlx1MDAyNlxuLVx0ICAgICBkZXYtXHUwMDNlZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYKSB8fFxuLVx0ICAgICh2bGFuX3Byb3RvID09IGh0b25zKEVUSF9QXzgwMjFBRCkgXHUwMDI2XHUwMDI2XG4tXHQgICAgIGRldi1cdTAwM2VmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9IV19WTEFOX1NUQUdfUlgpKSB7XG4tXHRcdC8qIHBvcCB0aGUgdmxhbiB0YWcgKi9cbi1cdFx0dmxhbmlkID0gbnRvaHModmV0aC1cdTAwM2VoX3ZsYW5fVENJKTtcbi1cdFx0bWVtbW92ZShza2ItXHUwMDNlZGF0YSArIFZMQU5fSExFTiwgdmV0aCwgRVRIX0FMRU4gKiAyKTtcbi1cdFx0c2tiX3B1bGwoc2tiLCBWTEFOX0hMRU4pO1xuLVx0XHRfX3ZsYW5faHdhY2NlbF9wdXRfdGFnKHNrYiwgdmxhbl9wcm90bywgdmxhbmlkKTtcbi1cdH1cbi19XG4tXG4gLyoqXG4gICogc3RtbWFjX3J4X3JlZmlsbCAtIHJlZmlsbCB1c2VkIHNrYiBwcmVhbGxvY2F0ZWQgYnVmZmVyc1xuICAqIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmVcbkBAIC01NDA3LDkgKzUzODksNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZGlzcGF0Y2hfc2tiX3pjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlLFxuIFx0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlaHdfdmxhbl9lbilcbiBcdFx0LyogTUFDIGxldmVsIHN0cmlwcGluZy4gKi9cbiBcdFx0c3RtbWFjX3J4X2h3X3ZsYW4ocHJpdiwgcHJpdi1cdTAwM2VodywgcCwgc2tiKTtcbi1cdGVsc2Vcbi1cdFx0LyogRHJpdmVyIGxldmVsIHN0cmlwcGluZy4gKi9cbi1cdFx0c3RtbWFjX3J4X3ZsYW4ocHJpdi1cdTAwM2VkZXYsIHNrYik7XG4rXG4gXHRza2ItXHUwMDNlcHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIHByaXYtXHUwMDNlZGV2KTtcbiBcbiBcdGlmICh1bmxpa2VseSghY29lKSB8fCAhc3RtbWFjX2hhc19pcF9ldGhlcnR5cGUoc2tiKSlcbkBAIC01OTAxLDkgKzU4ODEsNiBAQCBzdGF0aWMgaW50IHN0bW1hY19yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGludCBsaW1pdCwgdTMyIHF1ZXVlKVxuIFx0XHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2Vod192bGFuX2VuKVxuIFx0XHRcdC8qIE1BQyBsZXZlbCBzdHJpcHBpbmcuICovXG4gXHRcdFx0c3RtbWFjX3J4X2h3X3ZsYW4ocHJpdiwgcHJpdi1cdTAwM2VodywgcCwgc2tiKTtcbi1cdFx0ZWxzZVxuLVx0XHRcdC8qIERyaXZlciBsZXZlbCBzdHJpcHBpbmcuICovXG4tXHRcdFx0c3RtbWFjX3J4X3ZsYW4ocHJpdi1cdTAwM2VkZXYsIHNrYik7XG4gXG4gXHRcdHNrYi1cdTAwM2Vwcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgcHJpdi1cdTAwM2VkZXYpO1xuIFxuQEAgLTc5NjQsOSArNzk0MSw4IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbiBcdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gbmRldi1cdTAwM2Vod19mZWF0dXJlcyB8IE5FVElGX0ZfSElHSERNQTtcbiBcdG5kZXYtXHUwMDNld2F0Y2hkb2dfdGltZW8gPSBtc2Vjc190b19qaWZmaWVzKHdhdGNoZG9nKTtcbiAjaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURcbi1cdC8qIEJvdGggbWFjMTAwIGFuZCBnbWFjIHN1cHBvcnQgcmVjZWl2ZSBWTEFOIHRhZyBkZXRlY3Rpb24gKi9cbi1cdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfUlggfCBORVRJRl9GX0hXX1ZMQU5fU1RBR19SWDtcbiBcdGlmIChkd21hY19pc194bWFjKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUpKSB7XG4rXHRcdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfUlg7XG4gXHRcdG5kZXYtXHUwMDNlaHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfUlg7XG4gXHRcdHByaXYtXHUwMDNlaHctXHUwMDNlaHdfdmxhbl9lbiA9IHRydWU7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNToxMy44MzU2MzI1OTdaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTkzMjgyNDY0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBGdXp6aW5nIFNlc3Npb24gRXZhbHVhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2ggc2VyaWVzIHdhcnJhbnRzIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gTGV0J3MgZGlnIGluLiBGaXJzdCwgSSdsbCBhbmFseXplIHRoZSBjaGFuZ2VzIHRoZW1zZWx2ZXMsIHRoZW4gdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cblRoZSBwYXRjaCB0b3VjaGVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gQWxyaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoZXkndmUgcmVtb3ZlZCB0aGUgYHN0bW1hY19yeF92bGFuYCBmdW5jdGlvbiwgd2hpY2ggaGFuZGxlZCBWTEFOIHN0cmlwcGluZyBhdCB0aGUgZHJpdmVyIGxldmVsLiBUaGF0IGZ1bmN0aW9uIGRpZCB0aGluZ3MgbGlrZSBwb3BwaW5nIFZMQU4gdGFncywgYG1lbW1vdmVgLCBgc2tiX3B1bGxgLCBhbmQgY2FsbGluZyBgX192bGFuX2h3YWNjZWxfcHV0X3RhZ2AuIEl0IGFwcGVhcnMgdGhleSd2ZSBhbHNvIHJlbW92ZWQgdGhlIGZhbGxiYWNrIGNhbGwgdG8gYHN0bW1hY19yeF92bGFuYCBmcm9tIGBzdG1tYWNfZGlzcGF0Y2hfc2tiX3pjYCBhbmQgYHN0bW1hY19yeGAgd2hlbiBoYXJkd2FyZSBWTEFOIHN1cHBvcnQgaXNuJ3QgZW5hYmxlZCAoYCFwcml2LVx1MDAzZWh3LVx1MDAzZWh3X3ZsYW5fZW5gKS4gQW5kLCBpbiBgX19zdG1tYWNfZHZyX3Byb2JlYCwgdGhleSdyZSBubyBsb25nZXIgZW5hYmxpbmcgYE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYIHwgTkVUSUZfRl9IV19WTEFOX1NUQUdfUlhgIHVuaXZlcnNhbGx5LCBvbmx5IG9uIFhNQUMgdmFyaWFudHMgKGBkd21hY19pc194bWFjYCkgd2hlcmUgaGFyZHdhcmUgc3RyaXBwaW5nIGlzIGFjdHVhbGx5IHN1cHBvcnRlZC5cblxuTm93LCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXMgKndoeSogdGhleSByZW1vdmVkIGBzdG1tYWNfcnhfdmxhbmAgYW5kLCBtb3JlIGltcG9ydGFudGx5LCB3aGV0aGVyIGl0cyByZW1vdmFsIGludHJvZHVjZXMgYW55IHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgc3RtbWFjX3J4X3ZsYW5gIHdhcyBkb2luZyBhbmQgd2hldGhlciB0aGVzZSBjaGFuZ2VzIGZ1bmRhbWVudGFsbHkgYWx0ZXIgdGhlIGhhbmRsaW5nIG9mIFZMQU4tdGFnZ2VkIHBhY2tldHMuIFRpbWUgdG8gZ28gY2hlY2sgdGhhdCBjb2RlIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYCBkaXJlY3RseS4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NDgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNToyMy43Njg0NTk3ODhaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNzgyNTcwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcnhfdmxhblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTU6MjMuODE5MjQ3MTk4WiIsIlNlcSI6MzUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyNTA3NzcxMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpczpcblxuKipBbmFseXppbmcgdGhlIFNUTU1BQyBWTEFOIFJlbW92YWwqKlxuXG5Pa2F5LCBzbyB0aGUgcGF0Y2ggcmVtb3ZpbmcgYHN0bW1hY19yeF92bGFuYCBoYXMgYWxyZWFkeSBtYWRlIGl0cyB3YXkgaW50byB0aGUgdHJlZS4gVGhhdCdzIGdvb2Q7IGl0IHNpbXBsaWZpZXMgdGhpbmdzIGEgYml0LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyByZW1vdmFsIGluIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhlIFNUTU1BQyBkcml2ZXIuIEkgc2hvdWxkIHByb2JhYmx5IGZvY3VzIG9uIGhvdyB0aGUgVkxBTiBoYW5kbGluZyBpcyBub3cgbWFuYWdlZC5cblxuTGV0J3MgZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRoYXQgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSB3b3VsZCBiZSBhcm91bmQgdGhlIGFyZWFzIHdoZXJlIFZMQU4gZnJhbWVzIHdlcmUgcHJldmlvdXNseSBwcm9jZXNzZWQuIFNwZWNpZmljYWxseSwgdGhlIHZpY2luaXR5IG9mIGxpbmUgNTQwMCBhbmQgYWdhaW4gYXQgbGluZSA1OTAwIGFyZSBsaWtlbHkgaG90c3BvdHMuIEknbGwgc3RhcnQgdGhlcmUsIGFuZCByZWFkIGFyb3VuZCB0aG9zZSBsaW5lcyBmb3IgdGhlIHJlbGV2YW50IGxvZ2ljIGFuZCBkZXRlcm1pbmUgdGhlIG5ldyBmbG93LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9uYWxpdHkgd2FzIHJlbW92ZWQsIHdoYXQgaXQgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgbmV3IGNvbnNpZGVyYXRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBJIGJldCBJIHdpbGwgZmluZCB0aGUgbG9naWMgaXMgbm93IGhhbmRsZWQgaW5saW5lIHdpdGhpbiB0aGUgcmVjZWl2ZSBwYXRoLCBvciBwZXJoYXBzIGRlbGVnYXRlZCB0byBhIGRpZmZlcmVudCBmdW5jdGlvbi4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGltcGFjdCBvbiBleGlzdGluZyBjb25maWd1cmF0aW9ucyBhbmQgcG90ZW50aWFsIHBlcmZvcm1hbmNlIG9yIHN0YWJpbGl0eSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzE2LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTU6MjcuMDcwMDI2MzE2WiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NjE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUzODAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjUzODA6XFx0XFx0dTMyIGhhc2g7XFxuNTM4MTpcXHRcXG41MzgyOlxcdFxcdHNrYiA9IHN0bW1hY19jb25zdHJ1Y3Rfc2tiX3pjKGNoLCB4ZHApO1xcbjUzODM6XFx0XFx0aWYgKCFza2IpIHtcXG41Mzg0OlxcdFxcdFxcdHByaXYtXFx1MDAzZXhzdGF0cy5yeF9kcm9wcGVkKys7XFxuNTM4NTpcXHRcXHRcXHRyZXR1cm47XFxuNTM4NjpcXHRcXHR9XFxuNTM4NzpcXHRcXG41Mzg4OlxcdFxcdHN0bW1hY19nZXRfcnhfaHd0c3RhbXAocHJpdiwgcCwgbnAsIHNrYik7XFxuNTM4OTpcXHRcXHRpZiAocHJpdi1cXHUwMDNlaHctXFx1MDAzZWh3X3ZsYW5fZW4pXFxuNTM5MDpcXHRcXHRcXHQvKiBNQUMgbGV2ZWwgc3RyaXBwaW5nLiAqL1xcbjUzOTE6XFx0XFx0XFx0c3RtbWFjX3J4X2h3X3ZsYW4ocHJpdiwgcHJpdi1cXHUwMDNlaHcsIHAsIHNrYik7XFxuNTM5MjpcXHRcXG41MzkzOlxcdFxcdHNrYi1cXHUwMDNlcHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIHByaXYtXFx1MDAzZWRldik7XFxuNTM5NDpcXHRcXG41Mzk1OlxcdFxcdGlmICh1bmxpa2VseSghY29lKSB8fCAhc3RtbWFjX2hhc19pcF9ldGhlcnR5cGUoc2tiKSlcXG41Mzk2OlxcdFxcdFxcdHNrYl9jaGVja3N1bV9ub25lX2Fzc2VydChza2IpO1xcbjUzOTc6XFx0XFx0ZWxzZVxcbjUzOTg6XFx0XFx0XFx0c2tiLVxcdTAwM2VpcF9zdW1tZWQgPSBDSEVDS1NVTV9VTk5FQ0VTU0FSWTtcXG41Mzk5OlxcdFxcbjU0MDA6XFx0XFx0aWYgKCFzdG1tYWNfZ2V0X3J4X2hhc2gocHJpdiwgcCwgXFx1MDAyNmhhc2gsIFxcdTAwMjZoYXNoX3R5cGUpKVxcbjU0MDE6XFx0XFx0XFx0c2tiX3NldF9oYXNoKHNrYiwgaGFzaCwgaGFzaF90eXBlKTtcXG41NDAyOlxcdFxcbjU0MDM6XFx0XFx0c2tiX3JlY29yZF9yeF9xdWV1ZShza2IsIHF1ZXVlKTtcXG41NDA0OlxcdFxcdG5hcGlfZ3JvX3JlY2VpdmUoXFx1MDAyNmNoLVxcdTAwM2VyeHR4X25hcGksIHNrYik7XFxuNTQwNTpcXHRcXG41NDA2OlxcdFxcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXFx1MDAyNnJ4cV9zdGF0cy1cXHUwMDNlbmFwaV9zeW5jcCk7XFxuNTQwNzpcXHRcXHR1NjRfc3RhdHNfaW5jKFxcdTAwMjZyeHFfc3RhdHMtXFx1MDAzZW5hcGkucnhfcGt0X24pO1xcbjU0MDg6XFx0XFx0dTY0X3N0YXRzX2FkZChcXHUwMDI2cnhxX3N0YXRzLVxcdTAwM2VuYXBpLnJ4X2J5dGVzLCBsZW4pO1xcbjU0MDk6XFx0XFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXFx1MDAyNnJ4cV9zdGF0cy1cXHUwMDNlbmFwaV9zeW5jcCk7XFxuNTQxMDpcXHR9XFxuNTQxMTpcXHRcXG41NDEyOlxcdHN0YXRpYyBib29sIHN0bW1hY19yeF9yZWZpbGxfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpXFxuNTQxMzpcXHR7XFxuNTQxNDpcXHRcXHRzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xID0gXFx1MDAyNnByaXYtXFx1MDAzZWRtYV9jb25mLnJ4X3F1ZXVlW3F1ZXVlXTtcXG41NDE1OlxcdFxcdHVuc2lnbmVkIGludCBlbnRyeSA9IHJ4X3EtXFx1MDAzZWRpcnR5X3J4O1xcbjU0MTY6XFx0XFx0c3RydWN0IGRtYV9kZXNjICpyeF9kZXNjID0gTlVMTDtcXG41NDE3OlxcdFxcdGJvb2wgcmV0ID0gdHJ1ZTtcXG41NDE4OlxcdFxcbjU0MTk6XFx0XFx0YnVkZ2V0ID0gbWluKGJ1ZGdldCwgc3RtbWFjX3J4X2RpcnR5KHByaXYsIHF1ZXVlKSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDIyOjE1OjI3LjA3MDUyNDMyNloiLCJTZXEiOjM3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMzYwODExNTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBkZWVwIGluIG15IGFyZWEgb2YgZXhwZXJ0aXNlOlxuXG4qKlN0cmF0ZWdpYyBSYW5nZSBDb25zaWRlcmF0aW9uKipcblxuUmlnaHQsIHNvIHdlJ3ZlIGdvdCBhIHNpdHVhdGlvbiBoZXJlIHdoZXJlIHRoZSBhbmFseXNpcyBpcyBwb2ludGluZyBpbiBhIHBhcnRpY3VsYXIgZGlyZWN0aW9uLiBNeSBpbW1lZGlhdGUgcmVhY3Rpb24gaXNuJ3QganVzdCB0byBhY2NlcHQgdGhlIG1vc3Qgb2J2aW91cyBjb25jbHVzaW9uLCB0aG91Z2guIFRoZSBkYXRhIHN1Z2dlc3RzIHNvbWV0aGluZyB3aXRoaW4gdGhlIHBhcmFtZXRlcnMgd2UgaGF2ZSwgYnV0IEknbSB0aGlua2luZyBzdHJhdGVnaWNhbGx5LiBJIHdhbnQgdG8gYmUgdGhvcm91Z2guIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBkYXRhIGFyb3VuZCB0aGUgNTg4MC01OTEwIHJhbmdlIHNwZWNpZmljYWxseS4gSXQncyBub3QgbmVjZXNzYXJpbHkgdGhlIHByaW1hcnkgZm9jdXMsIG9yIHRoZSBtb3N0IG9idmlvdXMgcmFuZ2UsIGJ1dCBleHBlcmllbmNlIHRlbGxzIG1lIGl0J3Mgb2Z0ZW4gcHJ1ZGVudCB0byBleHBsb3JlIHRoZXNlIGFkamFjZW50IGFyZWFzIGZvciBwb3RlbnRpYWwgbnVhbmNlcywgc2Vjb25kYXJ5IGVmZmVjdHMsIG9yIGFsdGVybmF0aXZlIGV4cGxhbmF0aW9ucy4gSXQgbWlnaHQgY29uZmlybSB0aGUgcHJpbWFyeSBmaW5kaW5ncywgb3IgdGhyb3cgdXAgYSB3cmlua2xlIHRvIGJlIGV4cGxvcmVkIGZ1cnRoZXIuIEVpdGhlciB3YXksIGl0J3MgYSBnb29kIGNyb3NzY2hlY2suIEknbSBvcGVyYXRpbmcgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBiZWluZyBtZXRpY3Vsb3VzIHVwIGZyb250IHNhdmVzIGEgbG90IG9mIHRpbWUgYW5kIHBvdGVudGlhbCByZXdvcmsgZG93biB0aGUgbGluZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgzMywiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTU6MzAuNDMxMzM4NjIyWiIsIlNlcSI6MzgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzODcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU4NzUsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjU4NzU6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuNTg3NjpcXHRcXG41ODc3OlxcdFxcdFxcdC8qIEdvdCBlbnRpcmUgcGFja2V0IGludG8gU0tCLiBGaW5pc2ggaXQuICovXFxuNTg3ODpcXHRcXG41ODc5OlxcdFxcdFxcdHN0bW1hY19nZXRfcnhfaHd0c3RhbXAocHJpdiwgcCwgbnAsIHNrYik7XFxuNTg4MDpcXHRcXG41ODgxOlxcdFxcdFxcdGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlaHdfdmxhbl9lbilcXG41ODgyOlxcdFxcdFxcdFxcdC8qIE1BQyBsZXZlbCBzdHJpcHBpbmcuICovXFxuNTg4MzpcXHRcXHRcXHRcXHRzdG1tYWNfcnhfaHdfdmxhbihwcml2LCBwcml2LVxcdTAwM2VodywgcCwgc2tiKTtcXG41ODg0OlxcdFxcbjU4ODU6XFx0XFx0XFx0c2tiLVxcdTAwM2Vwcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgcHJpdi1cXHUwMDNlZGV2KTtcXG41ODg2OlxcdFxcbjU4ODc6XFx0XFx0XFx0aWYgKHVubGlrZWx5KCFjb2UpIHx8ICFzdG1tYWNfaGFzX2lwX2V0aGVydHlwZShza2IpIHx8XFxuNTg4ODpcXHRcXHRcXHQgICAgKHN0YXR1cyBcXHUwMDI2IGNzdW1fbm9uZSkpXFxuNTg4OTpcXHRcXHRcXHRcXHRza2JfY2hlY2tzdW1fbm9uZV9hc3NlcnQoc2tiKTtcXG41ODkwOlxcdFxcdFxcdGVsc2VcXG41ODkxOlxcdFxcdFxcdFxcdHNrYi1cXHUwMDNlaXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlk7XFxuNTg5MjpcXHRcXG41ODkzOlxcdFxcdFxcdGlmICghc3RtbWFjX2dldF9yeF9oYXNoKHByaXYsIHAsIFxcdTAwMjZoYXNoLCBcXHUwMDI2aGFzaF90eXBlKSlcXG41ODk0OlxcdFxcdFxcdFxcdHNrYl9zZXRfaGFzaChza2IsIGhhc2gsIGhhc2hfdHlwZSk7XFxuNTg5NTpcXHRcXG41ODk2OlxcdFxcdFxcdHNrYl9yZWNvcmRfcnhfcXVldWUoc2tiLCBxdWV1ZSk7XFxuNTg5NzpcXHRcXHRcXHRuYXBpX2dyb19yZWNlaXZlKFxcdTAwMjZjaC1cXHUwMDNlcnhfbmFwaSwgc2tiKTtcXG41ODk4OlxcdFxcdFxcdHNrYiA9IE5VTEw7XFxuNTg5OTpcXHRcXG41OTAwOlxcdFxcdFxcdHJ4X3BhY2tldHMrKztcXG41OTAxOlxcdFxcdFxcdHJ4X2J5dGVzICs9IGxlbjtcXG41OTAyOlxcdFxcdFxcdGNvdW50Kys7XFxuNTkwMzpcXHRcXHR9XFxuNTkwNDpcXHRcXG41OTA1OlxcdFxcdGlmIChzdGF0dXMgXFx1MDAyNiByeF9ub3RfbHMgfHwgc2tiKSB7XFxuNTkwNjpcXHRcXHRcXHRyeF9xLVxcdTAwM2VzdGF0ZV9zYXZlZCA9IHRydWU7XFxuNTkwNzpcXHRcXHRcXHRyeF9xLVxcdTAwM2VzdGF0ZS5za2IgPSBza2I7XFxuNTkwODpcXHRcXHRcXHRyeF9xLVxcdTAwM2VzdGF0ZS5lcnJvciA9IGVycm9yO1xcbjU5MDk6XFx0XFx0XFx0cnhfcS1cXHUwMDNlc3RhdGUubGVuID0gbGVuO1xcbjU5MTA6XFx0XFx0fVxcbjU5MTE6XFx0XFxuNTkxMjpcXHRcXHRzdG1tYWNfZmluYWxpemVfeGRwX3J4KHByaXYsIHhkcF9zdGF0dXMpO1xcbjU5MTM6XFx0XFxuNTkxNDpcXHRcXHRzdG1tYWNfcnhfcmVmaWxsKHByaXYsIHF1ZXVlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTU6MzAuNDMxNzc4NjEyWiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4NDIxOTE0NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBTVE1NQUMgRHJpdmVyIFByb2JlKipcblxuT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBgX19zdG1tYWNfZHZyX3Byb2JlYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBJIHN1c3BlY3QgdGhlIGlzc3VlIG1pZ2h0IGJlIGx1cmtpbmcgc29tZXdoZXJlIGFyb3VuZCBsaW5lcyA3OTM1IHRocm91Z2ggNzk2NS4gVGhpcyByYW5nZSBsaWtlbHkgY292ZXJzIGEgY3JpdGljYWwgc2VjdGlvbiB3aXRoaW4gdGhlIHByb2JlIHJvdXRpbmU7IG1heWJlIGFuIGluaXRpYWxpemF0aW9uIHN0ZXAsIHJlc291cmNlIGFsbG9jYXRpb24sIG9yIGRldmljZSBjb25maWd1cmF0aW9uLiBHaXZlbiB0aGUgdHlwaWNhbCBmbG93IG9mIHByb2JlIGZ1bmN0aW9ucyBpbiBMaW51eCBrZXJuZWwgZHJpdmVycywgdGhhdCBhcmVhIGlzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBkZWJ1Z2dpbmcuIExldCdzIHNlZSB3aGF0J3MgaGFwcGVuaW5nIHRoZXJlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzM1LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNTozMi4yNzM5NzIwMDNaIiwiU2VxIjo0MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ4NDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzkzNSxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNzkzNTpcXHRcXHRcXHRcXHR9XFxuNzkzNjpcXHRcXG43OTM3OlxcdFxcdFxcdFxcdHByaXYtXFx1MDAzZWRtYV9jYXAuaG9zdF9kbWFfd2lkdGggPSAzMjtcXG43OTM4OlxcdFxcdFxcdH1cXG43OTM5OlxcdFxcdH1cXG43OTQwOlxcdFxcbjc5NDE6XFx0XFx0bmRldi1cXHUwMDNlZmVhdHVyZXMgfD0gbmRldi1cXHUwMDNlaHdfZmVhdHVyZXMgfCBORVRJRl9GX0hJR0hETUE7XFxuNzk0MjpcXHRcXHRuZGV2LVxcdTAwM2V3YXRjaGRvZ190aW1lbyA9IG1zZWNzX3RvX2ppZmZpZXMod2F0Y2hkb2cpO1xcbjc5NDM6XFx0I2lmZGVmIFNUTU1BQ19WTEFOX1RBR19VU0VEXFxuNzk0NDpcXHRcXHRpZiAoZHdtYWNfaXNfeG1hYyhwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUpKSB7XFxuNzk0NTpcXHRcXHRcXHRuZGV2LVxcdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWDtcXG43OTQ2OlxcdFxcdFxcdG5kZXYtXFx1MDAzZWh3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYO1xcbjc5NDc6XFx0XFx0XFx0cHJpdi1cXHUwMDNlaHctXFx1MDAzZWh3X3ZsYW5fZW4gPSB0cnVlO1xcbjc5NDg6XFx0XFx0fVxcbjc5NDk6XFx0XFx0aWYgKHByaXYtXFx1MDAzZWRtYV9jYXAudmxoYXNoKSB7XFxuNzk1MDpcXHRcXHRcXHRuZGV2LVxcdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fQ1RBR19GSUxURVI7XFxuNzk1MTpcXHRcXHRcXHRuZGV2LVxcdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fU1RBR19GSUxURVI7XFxuNzk1MjpcXHRcXHR9XFxuNzk1MzpcXHRcXHRpZiAocHJpdi1cXHUwMDNlZG1hX2NhcC52bGlucylcXG43OTU0OlxcdFxcdFxcdG5kZXYtXFx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1RYO1xcbjc5NTU6XFx0I2VuZGlmXFxuNzk1NjpcXHRcXHRwcml2LVxcdTAwM2Vtc2dfZW5hYmxlID0gbmV0aWZfbXNnX2luaXQoZGVidWcsIGRlZmF1bHRfbXNnX2xldmVsKTtcXG43OTU3OlxcdFxcbjc5NTg6XFx0XFx0cHJpdi1cXHUwMDNleHN0YXRzLnRocmVzaG9sZCA9IHRjO1xcbjc5NTk6XFx0XFxuNzk2MDpcXHRcXHQvKiBJbml0aWFsaXplIFJTUyAqL1xcbjc5NjE6XFx0XFx0cnhxID0gcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcnhfcXVldWVzX3RvX3VzZTtcXG43OTYyOlxcdFxcdG5ldGRldl9yc3Nfa2V5X2ZpbGwocHJpdi1cXHUwMDNlcnNzLmtleSwgc2l6ZW9mKHByaXYtXFx1MDAzZXJzcy5rZXkpKTtcXG43OTYzOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHByaXYtXFx1MDAzZXJzcy50YWJsZSk7IGkrKylcXG43OTY0OlxcdFxcdFxcdHByaXYtXFx1MDAzZXJzcy50YWJsZVtpXSA9IGV0aHRvb2xfcnhmaF9pbmRpcl9kZWZhdWx0KGksIHJ4cSk7XFxuNzk2NTpcXHRcXG43OTY2OlxcdFxcdGlmIChwcml2LVxcdTAwM2VkbWFfY2FwLnJzc2VuIFxcdTAwMjZcXHUwMDI2IHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXJzc19lbilcXG43OTY3OlxcdFxcdFxcdG5kZXYtXFx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfUlhIQVNIO1xcbjc5Njg6XFx0XFxuNzk2OTpcXHRcXHRuZGV2LVxcdTAwM2V2bGFuX2ZlYXR1cmVzIHw9IG5kZXYtXFx1MDAzZWZlYXR1cmVzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNTozMi4yNzQ0MjY3MjNaIiwiU2VxIjo0MSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODExMTM5OTg3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZMQU4gU3RyaXBwaW5nIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIHBhdGNoIGZvciB0aGUgc3RtbWFjIGRyaXZlci4gSXQgc2VlbXMgbGlrZSB3ZSdyZSBzdHJlYW1saW5pbmcgdGhlIFZMQU4gcmVjZWl2ZSBwYXRoLiBUaGUgZ29hbCBpcyB0byByZW1vdmUgdGhlIHNvZnR3YXJlLWxldmVsIFZMQU4gc3RyaXBwaW5nIGVtdWxhdGlvbiwgYHN0bW1hY19yeF92bGFuYCwgYW5kIG9ubHkgZW5hYmxlIHRoZSBoYXJkd2FyZSBWTEFOIHN0cmlwcGluZyBmbGFnLCBgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlhgLCB3aGVuIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIChgZHdtYWNfaXNfeG1hY2ApIGFjdHVhbGx5IHN1cHBvcnRzIGl0LlxuXG5Ob3csIG15IGluaXRpYWwgY29uY2VybiwgYXMgYWx3YXlzLCBpcyB1bmluaXRpYWxpemVkIG1lbW9yeS4gU28sIGxldCdzIHJ1biB0aHJvdWdoIHRoZSB1c3VhbCBjaGVja2xpc3Q6XG5cbjEuICAqKktlcm5lbCBTdHJ1Y3R1cmVzIHRvIFVzZXJzcGFjZToqKiBEb2VzIHRoaXMgY2hhbmdlIGFueXRoaW5nIHdoZXJlIHdlIG1pZ2h0IGV4cG9zZSB1bmluaXRpYWxpemVkIGZpZWxkcyBvciBwYWRkaW5nIHRvIHVzZXJzcGFjZT8gTm8sIHRoYXQncyBub3QgYSBjb25jZXJuIGhlcmUuXG4yLiAgKipDb25kaXRpb25hbCBMb2dpYy9CcmFuY2hpbmc6KiogRG9lcyB0aGUgcGF0Y2ggaW50cm9kdWNlIGFueSBuZXcgY29uZGl0aW9uYWwgbG9naWMgdGhhdCByZWxpZXMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgb3Igc3RydWN0IGZpZWxkcz8gTm9wZS5cbjMuICAqKkNvbXBsZXggRGF0YSBTdHJ1Y3R1cmUgSW5pdGlhbGl6YXRpb246KiogQXJlIHdlIGFsbG9jYXRpbmcgb3IgaW5pdGlhbGl6aW5nIGFueSBuZXcgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZCBsYXRlcj8gTm8gaXNzdWVzIGRldGVjdGVkIGhlcmUgZWl0aGVyLlxuNC4gICoqQm91bmRzIENoZWNrcy9CdWZmZXIgQWNjZXNzOioqIEFueSBtb2RpZmljYXRpb24gdG8gYm91bmRzIGNoZWNrcyBvciBsb2dpYyB0aGF0IG1pZ2h0IGFsbG93IHN1cnJvdW5kaW5nIGNvZGUgdG8gcmVhZCB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnM/IEFjdHVhbGx5LCBpdCByZW1vdmVzIGNvZGUgdGhhdCB3b3VsZCBoYXZlIGJlZW4gYSBwb3RlbnRpYWwgc291cmNlIG9mIHRoaXMgaXNzdWUgKGBtZW1tb3ZlYCBhbmQgYHNrYl9wdWxsYCBpbiBgc3RtbWFjX3J4X3ZsYW5gKS4gUGFja2V0cyB3aXRob3V0IGhhcmR3YXJlIHN0cmlwcGluZyB3aWxsIHNpbXBseSByZXRhaW4gdGhlaXIgVkxBTiBoZWFkZXIgYW5kIGJlIHByb2Nlc3NlZCBmdXJ0aGVyIHVwIHRoZSBzdGFjaywgbm8gZHJpdmVyIGludGVydmVudGlvbiBuZWVkZWQuXG5cblNvLCBpbiBzaG9ydCwgSSdtIG5vdCBzZWVpbmcgYW55IGltbWVkaWF0ZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gTm8gS01TQU4gaXMgbmVjZXNzYXJ5IGZvciB0aGlzIGNoYW5nZS4gVGhlIHJpc2sgb2Ygc3RhbmRhcmQgdGVzdGluZyBsaWtlIEtBU0FOIGlzIG5lZ2xpZ2libGUuIEtBU0FOIHNob3VsZCBiZSBtb3JlIHRoYW4gYWRlcXVhdGUgdG8gY2F0Y2ggYW55IG91dC1vZi1ib3VuZHMsIHVzZS1hZnRlci1mcmVlLCBvciBvdGhlciBtZW1vcnkgc2FmZXR5IGlzc3Vlcy5cblxuSXQncyBhbGwgbG9va2luZyBnb29kLiBJIGFtIGhhcHB5IHdpdGggdGhlIHJlc3VsdHMgb2YgdGhlIHBhdGNoJ3MgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MTcsIk91dHB1dFRva2VucyI6MTQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTU6NDAuMzg1ODI5MzA0WiIsIlNlcSI6NDIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZW1vdmVzIHNvZnR3YXJlLWJhc2VkIFZMQU4gdGFnIHN0cmlwcGluZyAoYHN0bW1hY19yeF92bGFuYCkgZnJvbSB0aGUgc3RtbWFjIG5ldHdvcmsgZHJpdmVyJ3MgUlggcGF0aCBhbmQgcmVzdHJpY3RzIGFkdmVydGlzaW5nIGBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWGAgdG8gaGFyZHdhcmUgdGhhdCBhY3R1YWxseSBzdXBwb3J0cyBIVyBWTEFOIHN0cmlwcGluZyAoYGR3bWFjX2lzX3htYWNgKS4gXFxuXFxuTm8gbmV3IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywga2VybmVsLXRvLXVzZXIgY29waWVzLCBwYWRkaW5nIGJ5dGVzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkIHBhdGhzIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBzb2Z0d2FyZS1iYXNlZCBWTEFOIHRhZyBzdHJpcHBpbmcgKGBzdG1tYWNfcnhfdmxhbmApIGZyb20gdGhlIHN0bW1hYyBuZXR3b3JrIGRyaXZlcidzIFJYIHBhdGggYW5kIHJlc3RyaWN0cyBhZHZlcnRpc2luZyBgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlhgIHRvIGhhcmR3YXJlIHRoYXQgYWN0dWFsbHkgc3VwcG9ydHMgSFcgVkxBTiBzdHJpcHBpbmcgKGBkd21hY19pc194bWFjYCkuIFxcblxcbk5vIG5ldyBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGtlcm5lbC10by11c2VyIGNvcGllcywgcGFkZGluZyBieXRlcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCBwYXRocyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIHRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9x9h[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-01 21:27:33 +0000 UTC FinishedAt: 2026-09-01 22:15:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "3ba13f5e7180c034b0a1ef7e052fb780856b134e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_VENDOR_STMICRO", "STMMAC_ETH", "STMMAC_PLATFORM", "VLAN_8021Q" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "3ba13f5e7180c034b0a1ef7e052fb780856b134e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_VENDOR_STMICRO", "STMMAC_ETH", "STMMAC_PLATFORM", "VLAN_8021Q" ], "series_id": "0273c42b-55b0-4e3f-96e1-1f07e027f8e7" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "stmmac_dvr_probe", "stmmac_pltfr_probe" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDIyOjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9WRU5ET1JfU1RNSUNSTyYjMzQ7LAogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QTEFURk9STSYjMzQ7LAogICAgJiMzNDtWTEFOXzgwMjFRJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3RtbWFjX2R2cl9wcm9iZSYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcGx0ZnJfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIHNvZnR3YXJlLWJhc2VkIFZMQU4gdGFnIHN0cmlwcGluZyAoYHN0bW1hY19yeF92bGFuYCkgZnJvbSB0aGUgc3RtbWFjIG5ldHdvcmsgZHJpdmVyJiMzOTtzIFJYIHBhdGggYW5kIHJlc3RyaWN0cyBhZHZlcnRpc2luZyBgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlhgIHRvIGhhcmR3YXJlIHRoYXQgYWN0dWFsbHkgc3VwcG9ydHMgSFcgVkxBTiBzdHJpcHBpbmcgKGBkd21hY19pc194bWFjYCkuIFxuXG5ObyBuZXcgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBrZXJuZWwtdG8tdXNlciBjb3BpZXMsIHBhZGRpbmcgYnl0ZXMsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgcGF0aHMgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZC4gVGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWx0ZXJzIFZMQU4gaGFuZGxpbmcgaW4gdGhlIHJlY2VpdmUgcGF0aCBvZiB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlci4gSXQgcmVtb3ZlcyBhcnRpZmljaWFsIHNvZnR3YXJlIFZMQU4gc3RyaXBwaW5nIChzdG1tYWNfcnhfdmxhbikgZnJvbSBzdG1tYWNfcnggYW5kIHN0bW1hY19kaXNwYXRjaF9za2JfemMsIGFuZCB1cGRhdGVzIGZlYXR1cmUgYWR2ZXJ0aXNpbmcgZHVyaW5nIGRyaXZlciBwcm9iZSAoX19zdG1tYWNfZHZyX3Byb2JlKSB0byBvbmx5IHNldCBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCB3aGVuIGhhcmR3YXJlIFZMQU4gc3RyaXBwaW5nIGlzIHN1cHBvcnRlZC4gU1RNTUFDIGhhcmR3YXJlIChlLmcuIEFsbHdpbm5lciBzdW44aSBFTUFDKSBpcyBzdXBwb3J0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgc28gdGhlc2UgY2hhbmdlcyBhZmZlY3QgcmVhY2hhYmxlIGtlcm5lbCBuZXR3b3JrIGRhdGEgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkYWJlOWNhZmI4NDllNDNlMWUwMWNiM2I1ZWM3NTU2OGE5ODkxNDc4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMSAyMjoxMzo0MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggYjJiN2QwMjQyZGQzYy4uMmUzYjBjZjEwZDY2NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC01MDIxLDI0ICYjNDM7NTAyMSw2IEBAIHN0YXRpYyBuZXRkZXZfZmVhdHVyZXNfdCBzdG1tYWNfZmVhdHVyZXNfY2hlY2soc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiB2bGFuX2ZlYXR1cmVzX2NoZWNrKHNrYiwgZmVhdHVyZXMpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBzdG1tYWNfcnhfdmxhbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLXtcbi1cdHN0cnVjdCB2bGFuX2V0aGhkciAqdmV0aCA9IHNrYl92bGFuX2V0aF9oZHIoc2tiKTtcbi1cdF9fYmUxNiB2bGFuX3Byb3RvID0gdmV0aC1cdTAwM2VoX3ZsYW5fcHJvdG87XG4tXHR1MTYgdmxhbmlkO1xuLVxuLVx0aWYgKCh2bGFuX3Byb3RvID09IGh0b25zKEVUSF9QXzgwMjFRKSBcdTAwMjZcdTAwMjZcbi1cdCAgICAgZGV2LVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCkgfHxcbi1cdCAgICAodmxhbl9wcm90byA9PSBodG9ucyhFVEhfUF84MDIxQUQpIFx1MDAyNlx1MDAyNlxuLVx0ICAgICBkZXYtXHUwMDNlZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9TVEFHX1JYKSkge1xuLVx0XHQvKiBwb3AgdGhlIHZsYW4gdGFnICovXG4tXHRcdHZsYW5pZCA9IG50b2hzKHZldGgtXHUwMDNlaF92bGFuX1RDSSk7XG4tXHRcdG1lbW1vdmUoc2tiLVx1MDAzZWRhdGEgJiM0MzsgVkxBTl9ITEVOLCB2ZXRoLCBFVEhfQUxFTiAqIDIpO1xuLVx0XHRza2JfcHVsbChza2IsIFZMQU5fSExFTik7XG4tXHRcdF9fdmxhbl9od2FjY2VsX3B1dF90YWcoc2tiLCB2bGFuX3Byb3RvLCB2bGFuaWQpO1xuLVx0fVxuLX1cbi1cbiAvKipcbiAgKiBzdG1tYWNfcnhfcmVmaWxsIC0gcmVmaWxsIHVzZWQgc2tiIHByZWFsbG9jYXRlZCBidWZmZXJzXG4gICogQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZVxuQEAgLTU0MDcsOSAmIzQzOzUzODksNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZGlzcGF0Y2hfc2tiX3pjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlLFxuIFx0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlaHdfdmxhbl9lbilcbiBcdFx0LyogTUFDIGxldmVsIHN0cmlwcGluZy4gKi9cbiBcdFx0c3RtbWFjX3J4X2h3X3ZsYW4ocHJpdiwgcHJpdi1cdTAwM2VodywgcCwgc2tiKTtcbi1cdGVsc2Vcbi1cdFx0LyogRHJpdmVyIGxldmVsIHN0cmlwcGluZy4gKi9cbi1cdFx0c3RtbWFjX3J4X3ZsYW4ocHJpdi1cdTAwM2VkZXYsIHNrYik7XG4mIzQzO1xuIFx0c2tiLVx1MDAzZXByb3RvY29sID0gZXRoX3R5cGVfdHJhbnMoc2tiLCBwcml2LVx1MDAzZWRldik7XG4gXG4gXHRpZiAodW5saWtlbHkoIWNvZSkgfHwgIXN0bW1hY19oYXNfaXBfZXRoZXJ0eXBlKHNrYikpXG5AQCAtNTkwMSw5ICYjNDM7NTg4MSw2IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3J4KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgaW50IGxpbWl0LCB1MzIgcXVldWUpXG4gXHRcdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZWh3X3ZsYW5fZW4pXG4gXHRcdFx0LyogTUFDIGxldmVsIHN0cmlwcGluZy4gKi9cbiBcdFx0XHRzdG1tYWNfcnhfaHdfdmxhbihwcml2LCBwcml2LVx1MDAzZWh3LCBwLCBza2IpO1xuLVx0XHRlbHNlXG4tXHRcdFx0LyogRHJpdmVyIGxldmVsIHN0cmlwcGluZy4gKi9cbi1cdFx0XHRzdG1tYWNfcnhfdmxhbihwcml2LVx1MDAzZWRldiwgc2tiKTtcbiBcbiBcdFx0c2tiLVx1MDAzZXByb3RvY29sID0gZXRoX3R5cGVfdHJhbnMoc2tiLCBwcml2LVx1MDAzZWRldik7XG4gXG5AQCAtNzk2NCw5ICYjNDM7Nzk0MSw4IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbiBcdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gbmRldi1cdTAwM2Vod19mZWF0dXJlcyB8IE5FVElGX0ZfSElHSERNQTtcbiBcdG5kZXYtXHUwMDNld2F0Y2hkb2dfdGltZW8gPSBtc2Vjc190b19qaWZmaWVzKHdhdGNoZG9nKTtcbiAjaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURcbi1cdC8qIEJvdGggbWFjMTAwIGFuZCBnbWFjIHN1cHBvcnQgcmVjZWl2ZSBWTEFOIHRhZyBkZXRlY3Rpb24gKi9cbi1cdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfUlggfCBORVRJRl9GX0hXX1ZMQU5fU1RBR19SWDtcbiBcdGlmIChkd21hY19pc194bWFjKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUpKSB7XG4mIzQzO1x0XHRuZGV2LVx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYO1xuIFx0XHRuZGV2LVx1MDAzZWh3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYO1xuIFx0XHRwcml2LVx1MDAzZWh3LVx1MDAzZWh3X3ZsYW5fZW4gPSB0cnVlO1xuIFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDIyOjEzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9WRU5ET1JfU1RNSUNSTyYjMzQ7LAogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QTEFURk9STSYjMzQ7LAogICAgJiMzNDtWTEFOXzgwMjFRJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3RtbWFjX2R2cl9wcm9iZSYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcGx0ZnJfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWx0ZXJzIFZMQU4gaGFuZGxpbmcgaW4gdGhlIHJlY2VpdmUgcGF0aCBvZiB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlci4gSXQgcmVtb3ZlcyBhcnRpZmljaWFsIHNvZnR3YXJlIFZMQU4gc3RyaXBwaW5nIChzdG1tYWNfcnhfdmxhbikgZnJvbSBzdG1tYWNfcnggYW5kIHN0bW1hY19kaXNwYXRjaF9za2JfemMsIGFuZCB1cGRhdGVzIGZlYXR1cmUgYWR2ZXJ0aXNpbmcgZHVyaW5nIGRyaXZlciBwcm9iZSAoX19zdG1tYWNfZHZyX3Byb2JlKSB0byBvbmx5IHNldCBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCB3aGVuIGhhcmR3YXJlIFZMQU4gc3RyaXBwaW5nIGlzIHN1cHBvcnRlZC4gU1RNTUFDIGhhcmR3YXJlIChlLmcuIEFsbHdpbm5lciBzdW44aSBFTUFDKSBpcyBzdXBwb3J0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgc28gdGhlc2UgY2hhbmdlcyBhZmZlY3QgcmVhY2hhYmxlIGtlcm5lbCBuZXR3b3JrIGRhdGEgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkYWJlOWNhZmI4NDllNDNlMWUwMWNiM2I1ZWM3NTU2OGE5ODkxNDc4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgMSAyMjoxMzo0MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCmluZGV4IGIyYjdkMDI0MmRkM2MuLjJlM2IwY2YxMGQ2NjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwpAQCAtNTAyMSwyNCAmIzQzOzUwMjEsNiBAQCBzdGF0aWMgbmV0ZGV2X2ZlYXR1cmVzX3Qgc3RtbWFjX2ZlYXR1cmVzX2NoZWNrKHN0cnVjdCBza19idWZmICpza2IsCiAJcmV0dXJuIHZsYW5fZmVhdHVyZXNfY2hlY2soc2tiLCBmZWF0dXJlcyk7CiB9CiAKLXN0YXRpYyB2b2lkIHN0bW1hY19yeF92bGFuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpCi17Ci0Jc3RydWN0IHZsYW5fZXRoaGRyICp2ZXRoID0gc2tiX3ZsYW5fZXRoX2hkcihza2IpOwotCV9fYmUxNiB2bGFuX3Byb3RvID0gdmV0aC0mZ3Q7aF92bGFuX3Byb3RvOwotCXUxNiB2bGFuaWQ7Ci0KLQlpZiAoKHZsYW5fcHJvdG8gPT0gaHRvbnMoRVRIX1BfODAyMVEpICZhbXA7JmFtcDsKLQkgICAgIGRldi0mZ3Q7ZmVhdHVyZXMgJmFtcDsgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlgpIHx8Ci0JICAgICh2bGFuX3Byb3RvID09IGh0b25zKEVUSF9QXzgwMjFBRCkgJmFtcDsmYW1wOwotCSAgICAgZGV2LSZndDtmZWF0dXJlcyAmYW1wOyBORVRJRl9GX0hXX1ZMQU5fU1RBR19SWCkpIHsKLQkJLyogcG9wIHRoZSB2bGFuIHRhZyAqLwotCQl2bGFuaWQgPSBudG9ocyh2ZXRoLSZndDtoX3ZsYW5fVENJKTsKLQkJbWVtbW92ZShza2ItJmd0O2RhdGEgJiM0MzsgVkxBTl9ITEVOLCB2ZXRoLCBFVEhfQUxFTiAqIDIpOwotCQlza2JfcHVsbChza2IsIFZMQU5fSExFTik7Ci0JCV9fdmxhbl9od2FjY2VsX3B1dF90YWcoc2tiLCB2bGFuX3Byb3RvLCB2bGFuaWQpOwotCX0KLX0KLQogLyoqCiAgKiBzdG1tYWNfcnhfcmVmaWxsIC0gcmVmaWxsIHVzZWQgc2tiIHByZWFsbG9jYXRlZCBidWZmZXJzCiAgKiBAcHJpdjogZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlCkBAIC01NDA3LDkgJiM0Mzs1Mzg5LDcgQEAgc3RhdGljIHZvaWQgc3RtbWFjX2Rpc3BhdGNoX3NrYl96YyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSwKIAlpZiAocHJpdi0mZ3Q7aHctJmd0O2h3X3ZsYW5fZW4pCiAJCS8qIE1BQyBsZXZlbCBzdHJpcHBpbmcuICovCiAJCXN0bW1hY19yeF9od192bGFuKHByaXYsIHByaXYtJmd0O2h3LCBwLCBza2IpOwotCWVsc2UKLQkJLyogRHJpdmVyIGxldmVsIHN0cmlwcGluZy4gKi8KLQkJc3RtbWFjX3J4X3ZsYW4ocHJpdi0mZ3Q7ZGV2LCBza2IpOwomIzQzOwogCXNrYi0mZ3Q7cHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIHByaXYtJmd0O2Rldik7CiAKIAlpZiAodW5saWtlbHkoIWNvZSkgfHwgIXN0bW1hY19oYXNfaXBfZXRoZXJ0eXBlKHNrYikpCkBAIC01OTAxLDkgJiM0Mzs1ODgxLDYgQEAgc3RhdGljIGludCBzdG1tYWNfcngoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBpbnQgbGltaXQsIHUzMiBxdWV1ZSkKIAkJaWYgKHByaXYtJmd0O2h3LSZndDtod192bGFuX2VuKQogCQkJLyogTUFDIGxldmVsIHN0cmlwcGluZy4gKi8KIAkJCXN0bW1hY19yeF9od192bGFuKHByaXYsIHByaXYtJmd0O2h3LCBwLCBza2IpOwotCQllbHNlCi0JCQkvKiBEcml2ZXIgbGV2ZWwgc3RyaXBwaW5nLiAqLwotCQkJc3RtbWFjX3J4X3ZsYW4ocHJpdi0mZ3Q7ZGV2LCBza2IpOwogCiAJCXNrYi0mZ3Q7cHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIHByaXYtJmd0O2Rldik7CiAKQEAgLTc5NjQsOSAmIzQzOzc5NDEsOCBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsCiAJbmRldi0mZ3Q7ZmVhdHVyZXMgfD0gbmRldi0mZ3Q7aHdfZmVhdHVyZXMgfCBORVRJRl9GX0hJR0hETUE7CiAJbmRldi0mZ3Q7d2F0Y2hkb2dfdGltZW8gPSBtc2Vjc190b19qaWZmaWVzKHdhdGNoZG9nKTsKICNpZmRlZiBTVE1NQUNfVkxBTl9UQUdfVVNFRAotCS8qIEJvdGggbWFjMTAwIGFuZCBnbWFjIHN1cHBvcnQgcmVjZWl2ZSBWTEFOIHRhZyBkZXRlY3Rpb24gKi8KLQluZGV2LSZndDtmZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCB8IE5FVElGX0ZfSFdfVkxBTl9TVEFHX1JYOwogCWlmIChkd21hY19pc194bWFjKHByaXYtJmd0O3BsYXQtJmd0O2NvcmVfdHlwZSkpIHsKJiM0MzsJCW5kZXYtJmd0O2ZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYOwogCQluZGV2LSZndDtod19mZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWDsKIAkJcHJpdi0mZ3Q7aHctJmd0O2h3X3ZsYW5fZW4gPSB0cnVlOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk1MQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDI4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBXb3J0aGluZXNzKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIHBhdGNoIG1vZGlmaWVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2hhdCYjMzk7cyBgc3RtbWFjYD8mIzM0OyBJcyB0aGlzIHNvbWV0aGluZyBJIGNhbiBldmVuIHRvdWNoIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8gSXMgaXQganVzdCBhIHBoeXNpY2FsIFNvQyB0aGluZywgc29tZSBkZWRpY2F0ZWQgaGFyZHdhcmU/IE9yIGlzIHRoZXJlIGFuIGVtdWxhdGlvbiBsYXllciwgb3IgY2FuIEkgcmVhY2ggaXQgdmlhIHN5emthbGxlcj8KCkhvbGQgb24uLi4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoZSBydWxlLiBUaGUgY3JpdGVyaWEgZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIGltcG9ydGFudCBoZXJlLiBJdCYjMzk7cyBhYm91dCBjb2RlIHBhdGhzIHRoYXQgYXJlIGluYWNjZXNzaWJsZSBpbiB0aGVzZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2hlbiB0aGUgc29mdHdhcmUgZW11bGF0ZXMgaGFyZHdhcmUsIGxpa2Ugd2l0aCBVU0IgZ2FkZ2V0IG9yIG1hYzgwMjExX2h3c2ltLiBJdCBhbHNvIGVsaW1pbmF0ZXMgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgUENJZSBjYXJkcywgc3VjaCBhcyB2ZW5kb3Itc3BlY2lmaWMgc3dpdGNoL1NtYXJ0TklDL0dQVSBkcml2ZXJzIChtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkuCgpUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpcywgZG9lcyBRRU1VICplbXVsYXRlKiBgc3RtbWFjYD8gT3IgaXMgYHN0bW1hY2AgYSBwbGF0Zm9ybSBkcml2ZXIsIGEgUENJIGRyaXZlciBmb3IgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGhhcmR3YXJlPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgdW5kZXIgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2AgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNT0RVTEVfREVWSUNFX1RBQkxFfHBjaV9yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9MTE5PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGFuYXJpb25fZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTIyLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6MTIzOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGFuYXJpb25fZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEyNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTM1Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkd2NfZXRoX2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNTgtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzU5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGR3Y19ldGhfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNjAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jPTM1MD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBlaWM3NzAwX2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTM1OS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjM2MDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBlaWM3NzAwX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0zNjEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jPTUyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGR3bWFjX2dlbmVyaWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNjYtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo2NzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkd21hY19nZW5lcmljX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy02OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0zODQ9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaW14X2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzg5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozOTA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaW14X2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTM5MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM9MjYyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGluZ2VuaWNfbWFjX29mX21hdGNoZXNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMjY5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM6MjcwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGluZ2VuaWNfbWFjX29mX21hdGNoZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTI3MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaW50ZWxfZXRoX3BsYXRfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMzktfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzo0MDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpbnRlbF9ldGhfcGxhdF9tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtNDEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDE0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjE0MTU6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGludGVsX2V0aF9wY2lfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDE2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYz00OTE9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaXBxODA2eF9nbWFjX2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTQ5NC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jOjQ5NTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpcHE4MDZ4X2dtYWNfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTQ5Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTU5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbG9vbmdzb25fZHdtYWNfaWRfdGFibGVbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYwMS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo2MDI6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGxvb25nc29uX2R3bWFjX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNjAzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jPTIxNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBsczF4X2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjI2LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYzoyMjc6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbHMxeF9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYy0yMjgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jPTcxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGxwYzE4eHhfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNzQtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYzo3NTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBscGMxOHh4X2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy03Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jPTY2Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtZWRpYXRla19kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjY5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYzo2NzA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbWVkaWF0ZWtfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NzEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYz03Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtZXNvbjZfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTc5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jOjgwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1lc29uNl9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTgxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYz00ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWVzb244Yl9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy01MDQtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYzo1MDU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbWVzb244Yl9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNTA2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTM2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM3MC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzcxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBkd21hY19tb3RvcmNvbW1fcGNpX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM3Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM9MTE4PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG52dF9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYy0xMjEtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYzoxMjI6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbnZ0X2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYy0xMjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYz04MDA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcWNvbV9ldGhxb3NfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTgwNi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo4MDc6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcWNvbV9ldGhxb3NfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy04MDgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jPTIxNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCByZW5lc2FzX2diZXRoX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTIyMS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjIyMjpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCByZW5lc2FzX2diZXRoX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0yMjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYz0xNjE2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJrX2dtYWNfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE2MzQtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM6MTYzNTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBya19nbWFjX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTYzNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM9NzU9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcnpuMV9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy03OC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjc5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJ6bjFfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTgwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jPTIxNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzMzJfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0yMTktfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjIyMDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzMzJfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMjIxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYz02NzM9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc29jZnBnYV9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy02NzgtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzo2Nzk6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc29jZnBnYV9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjgwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jPTcyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHNvcGhnb19kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTc2LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo3NzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzb3BoZ29fZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYz0yMTA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3BhY2VtaXRfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIxMy19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYzoyMTQ6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3BhY2VtaXRfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz0xNjA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3RhcmZpdmVfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE2NC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzoxNjU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3RhcmZpdmVfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNjYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM9Mjk2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN0aV9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTI5OS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM6MzAwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN0aV9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYy0zMDEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz02NjI9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3RtMzJfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTY2OC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo2Njk6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3RtMzJfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy02NzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM9MTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjU1aV9nbWFjMjAwX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMtMTQ0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYzoxNDU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3VuNTVpX2dtYWMyMDBfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMtMTQ2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTI2OD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW44aV9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTI4Mi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjgzOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN1bjhpX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTI4NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jPTE1MD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW43aV9kd21hY19tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmMtMTUzLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jOjE1NDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdW43aV9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jLTE1NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTM5Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB0ZWdyYV9tZ2JlX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy00MDAtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6NDAxOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHRlZ3JhX21nYmVfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy00MDItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYz0yNjc9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdGhlYWRfZHdtYWNfbWF0Y2hbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jLTI3MC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYzoyNzE6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdGhlYWRfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYy0yNzItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYz0yNTU9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdmlzY29udGlfZXRoX2R3bWFjX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yNTgtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjU5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHZpc2NvbnRpX2V0aF9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTI2MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjAzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjA5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxMDpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkyNwoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDQ1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgc3RtbWFjYCBEcml2ZXImIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gYHN0bW1hY2AsIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyBkcml2ZXIsIGlzIGEgY3JpdGljYWwgY29tcG9uZW50IGFjcm9zcyBhIHdpZGUgYXJyYXkgb2YgZW1iZWRkZWQgcGxhdGZvcm1zIOKAkyBBbGx3aW5uZXIsIEFtbG9naWMsIFJvY2tjaGlwLCBTVE0zMiwgdGhlIHdvcmtzLiBUaGUgcXVlc3Rpb24gdGhhdCBpbW1lZGlhdGVseSBqdW1wcyB0byBtaW5kIGlzLCBkb2VzIFFFTVUgYWN0dWFsbHkgKmVtdWxhdGUqIGBzdG1tYWNgPyBTcGVjaWZpY2FsbHksIGFyZSB0aGVyZSBhbnkgUUVNVSBtYWNoaW5lIG1vZGVscyB0aGF0IGV4cG9zZSBhIHZpcnR1YWxpemVkIGR3bWFjIG9yIHN0bW1hYyBkZXZpY2U/IEkgbmVlZCB0byBjbGFyaWZ5IHRoaXMuCgpJJiMzOTttIHRoaW5raW5nLCBhcmUgdGhlcmUgcGFydGljdWxhciBBUk0tYmFzZWQgbWFjaGluZXMsIGxpa2UgU1RNMzIgb3IgQWxsd2lubmVyLCB0aGF0IFFFTVUgbWlnaHQgYmUgYWJsZSB0byBlbXVsYXRlPyBUaGUga2V5IGlzIHdoZXRoZXIgc3RhbmRhcmQgUUVNVSAvIEdDRSBmdXp6aW5nLCBzdWNoIGFzIHN5emthbGxlciBvbiB4ODYvYXJtNjQsIGFjdHVhbGx5IHV0aWxpemVzIGBzdG1tYWNgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBmb2N1cy4KCk5vdywgbGV0IG1lIGdvIGJhY2sgb3ZlciB0aGUgZ3VpZGVsaW5lcy4gV2UgbmVlZCB0byBiZSBjYXJlZnVsIG5vdCB0byB3YXN0ZSByZXNvdXJjZXMgb24gcGF0Y2hlcyB0aGF0IGRvbiYjMzk7dCBpbmNyZWFzZSBmdXp6aW5nIHBvdGVudGlhbC4gVGhlIGd1aWRlbGluZXMgY2xlYXJseSBzdGF0ZSB0aGF0IHdlIHNob3VsZCBkaXNjYXJkIHBhdGNoZXMgdGhhdCBtb2RpZnkgZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgb3IgY29tbWVudHMuIENvc21ldGljIGNoYW5nZXMsIGxpa2UgYWRkZWQgbG9nZ2luZyBvciB0cmFjZXBvaW50cywgYXJlIGFsc28gbm90IGZydWl0ZnVsLiBBbHNvLCBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvbiYjMzk7dCBhZmZlY3QgY29kZSBleGVjdXRpb24sIG9yIGNoYW5nZXMgdGhhdCBhZmZlY3QgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYXJlIHVzZWxlc3MuIFdlIGFsc28gd2FudCB0byBzdGVlciBjbGVhciBvZiB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyAoUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFVzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGNhbiYjMzk7dCBiZSBlbXVsYXRlZCkuIFNpbWlsYXJseSwgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyBsaWtlIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIGFyZSBub3Qgd29ydGggZnV6emluZy4KCk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBQQ0kgSURzIHdpdGhpbiB0aGUgYHN0bW1hY19wY2kuY2AsIGBkd21hYy1pbnRlbC5jYCwgYGR3bWFjLWxvb25nc29uLmNgLCBhbmQgYGR3bWFjLW1vdG9yY29tbS5jYCBzb3VyY2UgZmlsZXMuIFRoaXMgd2lsbCBwcm92aWRlIHZhbHVhYmxlIGluc2lnaHQgaW50byB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgdGhlIGRyaXZlciBzdXBwb3J0cyBhbmQgd2hldGhlciB0aGV5JiMzOTtyZSBzdWl0YWJsZSBmb3IgZW11bGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDIyOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxODA6XHRcdHBsYXQtXHUwMDNlc3VzcGVuZCA9IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kO1xuIDE4MTpcdFx0cGxhdC1cdTAwM2VyZXN1bWUgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lO1xuIDE4MjpcdFxuIDE4MzpcdFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXQsIFx1MDAyNnJlcyk7XG4gMTg0Olx0fVxuIDE4NTpcdFxuIDE4NjpcdC8qKlxuIDE4NzpcdCAqIHN0bW1hY19wY2lfcmVtb3ZlXG4gMTg4Olx0ICpcbiAxODk6XHQgKiBAcGRldjogcGxhdGZvcm0gZGV2aWNlIHBvaW50ZXJcbiAxOTA6XHQgKiBEZXNjcmlwdGlvbjogdGhpcyBmdW5jdGlvbiBjYWxscyB0aGUgbWFpbiB0byBmcmVlIHRoZSBuZXQgcmVzb3VyY2VzLlxuIDE5MTpcdCAqL1xuIDE5MjpcdHN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIDE5MzpcdHtcbiAxOTQ6XHRcdHN0bW1hY19kdnJfcmVtb3ZlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiAxOTU6XHR9XG4gMTk2Olx0XG4gMTk3Olx0Lyogc3ludGhldGljIElELCBubyBvZmZpY2lhbCB2ZW5kb3IgKi9cbiAxOTg6XHQjZGVmaW5lIFBDSV9WRU5ET1JfSURfU1RNTUFDXHRcdDB4MDcwMFxuIDE5OTpcdFxuIDIwMDpcdCNkZWZpbmUgUENJX0RFVklDRV9JRF9TVE1NQUNfU1RNTUFDXHRcdDB4MTEwOFxuIDIwMTpcdCNkZWZpbmUgUENJX0RFVklDRV9JRF9TWU5PUFNZU19HTUFDNV9JRFx0XHQweDcxMDJcbiAyMDI6XHRcbiAyMDM6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XG4gMjA0Olx0XHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuIDIwNTpcdFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNSUNSTywgTUFDLCBcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXG4gMjA2Olx0XHR7IFBDSV9ERVZJQ0VfREFUQShTWU5PUFNZUywgR01BQzVfSUQsIFx1MDAyNnNucHNfZ21hYzVfcGNpX2luZm8pIH0sXG4gMjA3Olx0XHR7fVxuIDIwODpcdH07XG4gMjA5Olx0XG4gMjEwOlx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHN0bW1hY19pZF90YWJsZSk7XG4gMjExOlx0XG4gMjEyOlx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xuIDIxMzpcdFx0Lm5hbWUgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcbiAyMTQ6XHRcdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcbiAyMTU6XHRcdC5wcm9iZSA9IHN0bW1hY19wY2lfcHJvYmUsXG4gMjE2Olx0XHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXG4gMjE3Olx0XHQuZHJpdmVyICAgICAgICAgPSB7XG4gMjE4Olx0XHRcdC5wbSAgICAgPSBcdTAwMjZzdG1tYWNfc2ltcGxlX3BtX29wcyxcbiAyMTk6XHRcdH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1NjEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBRRU1VJiMzOTtzIEV0aGVybmV0IEVtdWxhdGlvbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gY2xhcmlmeSBzb21ldGhpbmcgcXVpY2tseS4gRG9lcyBRRU1VIGFjdHVhbGx5IGVtdWxhdGUgKmFueSogU1RNTUFDIG9yIERXTUFDLWJhc2VkIEV0aGVybmV0IGRldmljZT8gSSBzZWVtIHRvIHJlY2FsbCB0aGF0IGJlaW5nIGEgcG90ZW50aWFsIGFyZWEgd2hlcmUgdGhlcmUgd2VyZSBnYXBzLgoKUmlnaHQsIGxldCBtZSBkaWcgYSBiaXQgZGVlcGVyLiBTcGVjaWZpY2FsbHksIHdoZW4gSSBsb29rIGF0IHRoZSBgYWxsd2lubmVyLWExMGAgYm9hcmQgY29uZmlndXJhdGlvbiBpbiBRRU1VLCBkb2VzIGl0IHVzZSB0aGUgYGFsbHdpbm5lci1lbWFjYCBvciB0aGUgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBkZXZpY2U/IEkgbmVlZCB0byBrbm93IHdoaWNoIG9uZSB0byBpbnZlc3RpZ2F0ZS4KCkFoLCB5ZXMhIFRoZSBRRU1VIGBhbGx3aW5uZXItc3VuOGktZW1hY2AgaXMgd2hhdCBzZWVtcyB0byBiZSBpbiBwbGF5LiBJIGNhbiBzZWUgdGhlIGBody9uZXQvYWxsd2lubmVyLXN1bjhpLWVtYWMuY2AgZmlsZS4gVGhpcyBpcyBwcm9taXNpbmcuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGRvZXMgdGhlIGBhbGx3aW5uZXItc3VuOGktZW1hY2AgZGV2aWNlIGluIFFFTVUgYWN0dWFsbHkgKnVzZSogYSBEV01BQyBkcml2ZXIgbGlrZSBgZHdtYWMtc3VuOGkuY2AsIG9yIGlzIGl0IGltcGxlbWVudGluZyBpdHMgb3duLCBwb3RlbnRpYWxseSBzaW1wbGlmaWVkLCBlbXVsYXRpb24/IFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZmlkZWxpdHkgb2YgdGhlIG5ldHdvcmsgZW11bGF0aW9uLgoKT2theSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBrZXJuZWwgc291cmNlIHRvIHNlZSB3aGljaCBkcml2ZXIgbWF0Y2hlcyB0aGUgZGV2aWNlLiBJIG5lZWQgdG8gY2hlY2sgd2hhdCB0aGUga2VybmVsIHVzZXMgZm9yIGBzdW44aSBlbWFjYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthbGx3aW5uZXIuKmVtYWN8YWxsd2lubmVyLHN1bjhpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYz0yMjE0PXN0YXRpYyBpbnQgbWNwMjUxeGZkX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMzMwLVx0ICpcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM6MjMzMTpcdCAqIDI1MThcdDIwIE1Ielx0YWxsd2lubmVyLHN1bjhpLWgzXHRhbGx3aW5uZXIsc3VuOGktaDMtc3BpXHQgODMzMzMzMyBIelx0IDgzLjMzJVx0NjAwMDAwMDAwIEh6XHRhc3NpZ25lZC1jbG9ja3MgPSBcdTAwM2NcdTAwMjZjY3UgQ0xLX1NQSXhcdTAwM2VcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM6MjMzMjpcdCAqIDI1MThcdDQwIE1Ielx0YWxsd2lubmVyLHN1bjhpLWgzXHRhbGx3aW5uZXIsc3VuOGktaDMtc3BpXHQxNjY2NjY2NyBIelx0IDgzLjMzJVx0NjAwMDAwMDAwIEh6XHRhc3NpZ25lZC1jbG9ja3MgPSBcdTAwM2NcdTAwMjZjY3UgQ0xLX1NQSXhcdTAwM2VcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmMtMjMzMy1cdCAqIDI1MTdcdDQwIE1Ielx0YXRtZWwsc2FtYTVkMjdcdFx0YXRtZWwsYXQ5MXJtOTIwMC1zcGlcdDE2NDAwMDAwIEh6XHQgODIuMDAlXHQgODIwMDAwMDAgSHpcdGRlZmF1bHRcbi0tXG5kcml2ZXJzL25ldC9jYW4vc3VuNGlfY2FuLmM9NzkyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjRpY2FuX29mX21hdGNoW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3N1bjRpX2Nhbi5jLTc5OS1cdH0sIHtcbmRyaXZlcnMvbmV0L2Nhbi9zdW40aV9jYW4uYzo4MDA6XHRcdC5jb21wYXRpYmxlID0gXCYjMzQ7YWxsd2lubmVyLHN1bjhpLXI0MC1jYW5cJiMzNDssXG5kcml2ZXJzL25ldC9jYW4vc3VuNGlfY2FuLmMtODAxLVx0XHQuZGF0YSA9IFx1MDAyNnN1bjRpY2FuX3F1aXJrc19yNDBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jPTExMjk9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZW1hY19vZl9tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYzoxMTMwOlx0ey5jb21wYXRpYmxlID0gXCYjMzQ7YWxsd2lubmVyLHN1bjRpLWExMC1lbWFjXCYjMzQ7LH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jLTExMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jLTExMzItXHQvKiBEZXByZWNhdGVkICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jOjExMzM6XHR7LmNvbXBhdGlibGUgPSBcJiMzNDthbGx3aW5uZXIsc3VuNGktZW1hY1wmIzM0Oyx9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYy0xMTM0LVx0e30sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz03NjM9c3RhdGljIGludCBnZXRfZXBoeV9ub2RlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy03NzYtXHRtZGlvX2ludGVybmFsID0gb2ZfZ2V0X2NvbXBhdGlibGVfY2hpbGQobWRpb19tdXgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjc3NzpcdFx0XHRcdFx0XHRcJiMzNDthbGx3aW5uZXIsc3VuOGktaDMtbWRpby1pbnRlcm5hbFwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTc3OC1cdG9mX25vZGVfcHV0KG1kaW9fbXV4KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jPTEyNjg9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3VuOGlfZHdtYWNfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTI2OTpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDthbGx3aW5uZXIsc3VuOGktaDMtZW1hY1wmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTI3MC1cdFx0LmRhdGEgPSBcdTAwMjZlbWFjX3ZhcmlhbnRfaDMgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTI3MTpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDthbGx3aW5uZXIsc3VuOGktdjNzLWVtYWNcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyNzItXHRcdC5kYXRhID0gXHUwMDI2ZW1hY192YXJpYW50X3YzcyB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjczOlx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O2FsbHdpbm5lcixzdW44aS1hODN0LWVtYWNcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyNzQtXHRcdC5kYXRhID0gXHUwMDI2ZW1hY192YXJpYW50X2E4M3QgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTI3NTpcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDthbGx3aW5uZXIsc3VuOGktcjQwLWdtYWNcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyNzYtXHRcdC5kYXRhID0gXHUwMDI2ZW1hY192YXJpYW50X3I0MCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjc3Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O2FsbHdpbm5lcixzdW41MGktYTY0LWVtYWNcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyNzgtXHRcdC5kYXRhID0gXHUwMDI2ZW1hY192YXJpYW50X2E2NCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjc5Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O2FsbHdpbm5lcixzdW41MGktaDYtZW1hY1wmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTI4MC1cdFx0LmRhdGEgPSBcdTAwMjZlbWFjX3ZhcmlhbnRfaDYgfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjU3OQoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDE0MjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgc3RtbWFjYCBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIFFFTVUgaGFzIHNvbWUgcmVsZXZhbnQgaGFyZHdhcmUgbW9kZWxzLCBzcGVjaWZpY2FsbHkgYGFsbHdpbm5lci1oM2Agd2l0aCBpdHMgYGFsbHdpbm5lci1zdW44aS1lbWFjYCAod2hpY2ggc2VlbXMgdG8gdXNlIGEgYCYjMzQ7YWxsd2lubmVyLHN1bjhpLWgzLWVtYWMmIzM0O2AgZGV2aWNlIHRyZWUgZW50cnkpIGFuZCB0aGUgYGFsbHdpbm5lci1hNjRgIChQaW5lNjQpLiBUaGVyZSYjMzk7cyBhbHNvIFNUTTMyIFNvQ3MgZW11bGF0ZWQgd2l0aGluIFFFTVUsIGxpa2UgdGhlIHN0bTMyZjQwNSwgc3RtMzJmMjA1LCBhbmQgc3RtMzJtcDE1NywgZXRjLiBUaGlzIGlzIHVzZWZ1bCEgTm93LCB0aGUgcXVlc3Rpb24gaXMsIGNhbiBTeXprYWxsZXIgZWZmZWN0aXZlbHkgZnV6eiB0aGUgYHN0bW1hY2AgZHJpdmVyPyBJcyB0aGlzIGV2ZW4gYSB2aWFibGUgdGFyZ2V0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cz8gSG1tLCBJIG5lZWQgdG8gY2hlY2sgaWYgYHN0bW1hY2AgaXMgYW4gYWN0dWFsIEV0aGVybmV0IE1BQyBkcml2ZXIgcmF0aGVyIHRoYW4gc29tZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2ggb3IgU21hcnROSUMgY29tcG9uZW50LiBZZXMsIGl0IGlzIGFuIGV0aGVybmV0IE1BQyBkcml2ZXIuCgpSaWdodCwgc28gbGV0JiMzOTtzIGdldCBiYWNrIG9uIHRyYWNrLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoYXQgc3BlY2lmaWMgcGF0Y2ggYW5kIHJldmlld2luZyBpdHMgY2hhbmdlcy4gSSBzZWUgdGhlIGNvbW1pdCBoYXMgdGhlIElEIGBkYWJlOWNhZmI4NDllNDNlMWUwMWNiM2I1ZWM3NTU2OGE5ODkxNDc4YCBhbmQgaXQgd2FzIGFwcGxpZWQgYnkgc3l6LWNsdXN0ZXIuIEkmIzM5O20gaW50ZXJlc3RlZCBpbiB0aGUgZGlmZiB0byB0aGUgYHN0bW1hY19tYWluLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBub3RpbmcgdGhhdCB0aGUgYHN0bW1hY19yeF92bGFuYCBmdW5jdGlvbiwgd2hpY2ggaGFuZGxlZCBWTEFOIHRhZyBzdHJpcHBpbmcgYXQgdGhlIGRyaXZlciBsZXZlbCwgaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIG9yaWdpbmFsIGNvZGUgaGFzIHR3byBzY2VuYXJpb3MgZm9yIFZMQU4gdGFnIGhhbmRsaW5nLiBPbmUgYXQgTUFDIGxldmVsIHVzaW5nIGBzdG1tYWNfcnhfaHdfdmxhbmAgYW5kIGFub3RoZXIgYXQgZHJpdmVyIGxldmVsIHZpYSBgc3RtbWFjX3J4X3ZsYW5gIGZ1bmN0aW9uLiBOb3csIGl0IGFwcGVhcnMgdGhhdCB0aGUgZHJpdmVyLWxldmVsIHN0cmlwcGluZyBoYXMgYmVlbiBjb21wbGV0ZWx5IHJlbW92ZWQgaW4gdGhlIHBhdGNoLiBJJiMzOTttIHNlZWluZyB0aGF0IHRoZSBjb2RlIG5vdyBoYXMgYSBjb25kaXRpb25hbCB0byBoYW5kbGUgaGFyZHdhcmUgVkxBTiBvZmZsb2FkLCBieSBjb25kaXRpb25hbGx5IHVzaW5nIGBzdG1tYWNfcnhfaHdfdmxhbmAuIFRoZSBgc3RtbWFjX3J4X3ZsYW5gIGZ1bmN0aW9uIChhdCBsaW5lIDUwMjEpIGlzIG5vIGxvbmdlciBiZWluZyBjYWxsZWQuIExpbmVzIDU5MDEgYW5kIDU0MDcgaGF2ZSBiZWVuIGNoYW5nZWQgYXMgd2VsbCwgd2hlcmUgdGhlIGNhbGwgdG8gYHN0bW1hY19yeF92bGFuYCB3YXMuIEkgc2hvdWxkIHJlYWQgYXJvdW5kIGxpbmUgNzk2NCBhbmQgdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGNoYW5nZWQgdGhlcmUuIEFoLCB5ZXMsIGluIGBfX3N0bW1hY19kdnJfcHJvYmVgLCB0aGUgYE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYYCBhbmQgYE5FVElGX0ZfSFdfVkxBTl9TVEFHX1JYYCBmZWF0dXJlcyBhcmUgYWRkZWQgdG8gYG5kZXYtJmd0O2ZlYXR1cmVzYCwgYnV0IHRoZXkgc2VlbSB0byBiZSBjb25kaXRpb25lZCBvbiBgZHdtYWNfaXNfeG1hYyhwcml2LSZndDtwbGF0LSZndDtjb3JlX3R5cGUpYC4gSWYgdGhpcyBpcyBjb3JyZWN0LCB0aGVuIHBlcmhhcHMgdGhlIG9yaWdpbmFsIGNvZGUgd2FzIG1ha2luZyB0aGUgVkxBTiBwcm9jZXNzaW5nIGNvbmRpdGlvbmFsLCBhbmQgdGhlIHBhdGNoIGhhcyBjaGFuZ2VkIGhvdyBmZWF0dXJlcyBhcmUgZW5hYmxlZC4gTm93IHRoZSBjb2RlIG9ubHkgc3VwcG9ydHMgYE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYYCBhbmQgbm90IGBORVRJRl9GX0hXX1ZMQU5fU1RBR19SWGAuIFNvIHRoaXMgcGF0Y2ggZm9jdXNlcyBvbiBoYXJkd2FyZSBWTEFOIG9mZmxvYWQuIEkgc2hvdWxkIGZpZ3VyZSBvdXQgaG93IHRoaXMgYWZmZWN0cyB0aGUgZnV6emluZyBwb3RlbnRpYWwuIEl0IHNlZW1zIGxpa2UgdGhlIHBhdGNoIHNpbXBsaWZpZXMgdGhlIGRyaXZlciBieSByZW1vdmluZyBzb2Z0d2FyZSBWTEFOIGhhbmRsaW5nIGFuZCByZWx5aW5nIHNvbGVseSBvbiBoYXJkd2FyZSBWTEFOIG9mZmxvYWQuIFRoaXMgY291bGQgZWl0aGVyIG1ha2UgaXQgZWFzaWVyIG9yIGhhcmRlciB0byBmdXp6LCBkZXBlbmRpbmcgb24gaG93IHN5emthbGxlciBjYW4gaW50ZXJhY3Qgd2l0aCBhbmQgdHJpZ2dlciB0aGUgaGFyZHdhcmUgZmVhdHVyZXMuIFRoaXMgaXMgc29tZXRoaW5nIEkgbmVlZCB0byBldmFsdWF0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzk1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs3OTUwOlx0XHRcdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfRklMVEVSO1xuNzk1MTpcdFx0XHRuZGV2LVx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9TVEFHX0ZJTFRFUjtcbjc5NTI6XHRcdH1cbjc5NTM6XHRcdGlmIChwcml2LVx1MDAzZWRtYV9jYXAudmxpbnMpXG43OTU0Olx0XHRcdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfVFg7XG43OTU1Olx0I2VuZGlmXG43OTU2Olx0XHRwcml2LVx1MDAzZW1zZ19lbmFibGUgPSBuZXRpZl9tc2dfaW5pdChkZWJ1ZywgZGVmYXVsdF9tc2dfbGV2ZWwpO1xuNzk1NzpcdFxuNzk1ODpcdFx0cHJpdi1cdTAwM2V4c3RhdHMudGhyZXNob2xkID0gdGM7XG43OTU5Olx0XG43OTYwOlx0XHQvKiBJbml0aWFsaXplIFJTUyAqL1xuNzk2MTpcdFx0cnhxID0gcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXJ4X3F1ZXVlc190b191c2U7XG43OTYyOlx0XHRuZXRkZXZfcnNzX2tleV9maWxsKHByaXYtXHUwMDNlcnNzLmtleSwgc2l6ZW9mKHByaXYtXHUwMDNlcnNzLmtleSkpO1xuNzk2MzpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShwcml2LVx1MDAzZXJzcy50YWJsZSk7IGkmIzQzOyYjNDM7KVxuNzk2NDpcdFx0XHRwcml2LVx1MDAzZXJzcy50YWJsZVtpXSA9IGV0aHRvb2xfcnhmaF9pbmRpcl9kZWZhdWx0KGksIHJ4cSk7XG43OTY1Olx0XG43OTY2Olx0XHRpZiAocHJpdi1cdTAwM2VkbWFfY2FwLnJzc2VuIFx1MDAyNlx1MDAyNiBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnNzX2VuKVxuNzk2NzpcdFx0XHRuZGV2LVx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfUlhIQVNIO1xuNzk2ODpcdFxuNzk2OTpcdFx0bmRldi1cdTAwM2V2bGFuX2ZlYXR1cmVzIHw9IG5kZXYtXHUwMDNlZmVhdHVyZXM7XG43OTcwOlx0XG43OTcxOlx0XHQvKiBNVFUgcmFuZ2U6IDQ2IC0gaHctc3BlY2lmaWMgbWF4ICovXG43OTcyOlx0XHRuZGV2LVx1MDAzZW1pbl9tdHUgPSBFVEhfWkxFTiAtIEVUSF9ITEVOO1xuNzk3MzpcdFxuNzk3NDpcdFx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUgPT0gRFdNQUNfQ09SRV9YR01BQylcbjc5NzU6XHRcdFx0bmRldi1cdTAwM2VtYXhfbXR1ID0gWEdNQUNfSlVNQk9fTEVOO1xuNzk3NjpcdFx0ZWxzZSBpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWVuaF9kZXNjIHx8IHByaXYtXHUwMDNlc3lub3BzeXNfaWQgXHUwMDNlPSBEV01BQ19DT1JFXzRfMDApXG43OTc3Olx0XHRcdG5kZXYtXHUwMDNlbWF4X210dSA9IEpVTUJPX0xFTjtcbjc5Nzg6XHRcdGVsc2Vcbjc5Nzk6XHRcdFx0bmRldi1cdTAwM2VtYXhfbXR1ID0gU0tCX01BWF9IRUFEKE5FVF9TS0JfUEFEICYjNDM7IE5FVF9JUF9BTElHTik7XG43OTgwOlx0XG43OTgxOlx0XHQvKiBXYXJuIGlmIHRoZSBwbGF0Zm9ybSYjMzk7cyBtYXhtdHUgaXMgc21hbGxlciB0aGFuIHRoZSBtaW5pbXVtIE1UVSxcbjc5ODI6XHRcdCAqIG90aGVyd2lzZSBjbGFtcCB0aGUgbWF4aW11bSBNVFUgYWJvdmUgdG8gdGhlIHBsYXRmb3JtJiMzOTtzIG1heG10dS5cbjc5ODM6XHRcdCAqL1xuNzk4NDpcdFx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtYXhtdHUgXHUwMDNjIG5kZXYtXHUwMDNlbWluX210dSlcbjc5ODU6XHRcdFx0ZGV2X3dhcm4ocHJpdi1cdTAwM2VkZXZpY2UsXG43OTg2Olx0XHRcdFx0IFwmIzM0OyVzOiB3YXJuaW5nOiBtYXhtdHUgaGF2aW5nIGludmFsaWQgdmFsdWUgKCVkKVxcblwmIzM0Oyxcbjc5ODc6XHRcdFx0XHQgX19mdW5jX18sIHByaXYtXHUwMDNlcGxhdC1cdTAwM2VtYXhtdHUpO1xuNzk4ODpcdFx0ZWxzZSBpZiAocHJpdi1cdTAwM2VwbGF0LVx1MDAzZW1heG10dSBcdTAwM2MgbmRldi1cdTAwM2VtYXhfbXR1KVxuNzk4OTpcdFx0XHRuZGV2LVx1MDAzZW1heF9tdHUgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlbWF4bXR1O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTYwOQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDU1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWNlbnQgUGF0Y2g6IFZMQU4gVGFnZ2luZyBhbmQgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0JiMzOTtzIHRoZSBjb250ZXh0PyBXaGF0IHdhcyB0aGUgY29tbWl0IG1lc3NhZ2UsIHRoZSBgZ2l0IGxvZ2AsIG9yIHRoZSBwdXJwb3NlIG9mIHRoaXMgY2hhbmdlPyBTcGVjaWZpY2FsbHksIEkmIzM5O20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQgd2h5IGBzdG1tYWNgIHJlbW92ZWQgYHN0bW1hY19yeF92bGFuYC4gTm93LCBpbiB0aGUgY29udGV4dCBvZiB0aGUgTGludXgga2VybmVsIG5ldHdvcmtpbmcsIEkgcmVtZW1iZXIgdGhlIGdlbmVyYWwgcnVsZTogZHJpdmVycyAqc2hvdWxkbiYjMzk7dCogYmUgZG9pbmcgc29mdHdhcmUgVkxBTiB0YWcgc3RyaXBwaW5nIGFuZCB0aGVuIGZha2luZyBgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlhgIG9yIGBfX3ZsYW5faHdhY2NlbF9wdXRfdGFnYCB3aGVuIHRoZSBoYXJkd2FyZSBpdHNlbGYgKmRpZG4mIzM5O3QqIHN0cmlwIHRoZSBWTEFOIHRhZ3MuIEl0JiMzOTtzIHJlZHVuZGFudCBhbmQgaW5jb3JyZWN0IHRvIGRvIHNvZnR3YXJlIFZMQU4gc3RyaXBwaW5nIGluIHRoZSBkcml2ZXIgUlggcGF0aC4gVGhpcyBoYXMgYmVlbiByZW1vdmVkIGluIHZhcmlvdXMgZXRoZXJuZXQgZHJpdmVycyBiZWNhdXNlIHRoZSBuZXR3b3JrIGNvcmUgaGFuZGxlcyB1bnRhZ2dlZCBWTEFOIHBhY2tldHMgb3IgYmVjYXVzZSBgX192bGFuX2h3YWNjZWxfcHV0X3RhZ2Agd2l0aG91dCB0cnVlIEhXIHN0cmlwcGluZyB3YXMgZWZmZWN0aXZlbHkgYSBkZWNlcHRpb24gYWJvdXQgaGFyZHdhcmUgYWNjZWxlcmF0aW9uLiBUaGlzIGFsc28gcmVtaW5kcyBtZSB0aGF0IGZvciBgZHdtYWNfaXNfeG1hY2AsIEhXIFZMQU4gQ1RBRyBSWCBzdHJpcHBpbmcgaXMgb25seSBzdXBwb3J0ZWQgaWYgeG1hYy4KCk5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCBmdXp6aW5nLiBJcyB0aGlzIHBhdGNoIHNvbWV0aGluZyB0aGF0ICpzaG91bGQqIGJlIG1hcmtlZCBgV29ydGhGdXp6aW5nPXRydWVgPyBMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgY3JpdGVyaWEuIEZpcnN0LCBpcyBpdCBkb2N1bWVudGF0aW9uLCBgS2NvbmZpZ2AsIG9yIGNvbW1lbnRzPyBOby4gTmV4dCwgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBsaWtlIGxvZ2dpbmcgb3IgdHJhY2Vwb2ludHM/IE5vLiBIb3cgYWJvdXQgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24mIzM5O3QgYWZmZWN0IGV4ZWN1dGlvbj8gTm9wZS4gRmluYWxseSwgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVT8gSG1tLCB0aGF0JiMzOTtzIHRoZSBpbnRlcmVzdGluZyBvbmUgaGVyZS4KCkNhbiBgc3RtbWFjYCAqYWN0dWFsbHkqIHJ1biBpbiBRRU1VPyBJIG5lZWQgdG8gY2hlY2suIExldCYjMzk7cyBzZWUgd2hpY2ggUUVNVSB0YXJnZXRzIHN1cHBvcnQgYHN0bW1hY2Agb3IgYGR3bWFjYC4gSSBrbm93IHRoYXQ6CgoqICAgYGFsbHdpbm5lci1oM2AgKGUuZy4sIGBvcmFuZ2VwaS1wY2AgaW4gYHFlbXUtc3lzdGVtLWFybWApIHVzZXMgYGFsbHdpbm5lci1zdW44aS1lbWFjYCwgd2hpY2ggYmluZHMgdG8gYGR3bWFjLXN1bjhpLmNgIChwYXJ0IG9mIHRoZSBTVE1NQUMgZHJpdmVyIHN1YnN5c3RlbSBgQ09ORklHX0RXTUFDX1NVTjhJYCwgd2hpY2ggc2VsZWN0cyBgU1RNTUFDX0VUSGApLgoqICAgSW50ZWwgUXVhcmssIEVsa2hhcnQgTGFrZSwgQWxkZXIgTGFrZSwgYW5kIHNpbWlsYXIgUENJZSBgZHdtYWNgIGRldmljZXMgKGBkd21hYy1pbnRlbC5jYCwgYHN0bW1hY19wY2kuY2ApIGFyZSByZWxldmFudC4KKiAgIExvb25nc29uIChgZHdtYWMtbG9vbmdzb24uY2Agb24gbG9vbmdhcmNoIC8gbWlwcyBsb29uZ3NvbiBtYWNoaW5lcykuCiogICBTVE0zMiAoYGR3bWFjLXN0bTMyLmNgIG9uIFNUTTMyIGJvYXJkcyBpbiBRRU1VKS4KKiAgIEdlbmVyaWMgRFdNQUMgcGxhdGZvcm0gb3IgUENJIGRldmljZXMgYXJlIHByb2JhYmx5IGFsc28gaW4gcGxheS4KCk9rYXksIHRoYXQmIzM5O3MgaGVscGZ1bC4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBpcyB3aGV0aGVyIFNUTU1BQyBpcyByZWFjaGFibGUgaW4gc3l6a2FsbGVyIG9yIHZpcnR1YWxpemVkIGZ1enppbmcuIEkgbmVlZCB0byBjaGVjayB0aGUgYEtjb25maWdgIGZvciBgU1RNTUFDYCBhbmQgZW5zdXJlIHRoYXQgaXQmIzM5O3MgZW5hYmxlZCBpbiBlbm91Z2ggY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDIyOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTVE1NQUNfRVRIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY5NjQKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkV4YW1pbmluZyB0aGUgU1RNTUFDIEtjb25maWcqKgoKT2theSwgdGltZSB0byBkaXZlIGluLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFNUTU1BQyBkcml2ZXIuIFRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgZmlsZSBpcyB0aGUgb2J2aW91cyBwbGFjZSB0byBzdGFydC4gSXQgY29udGFpbnMgYWxsIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBzZXR0aW5ncyByZWxhdGVkIHRvIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGRyaXZlci4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHZhcmlvdXMgZmVhdHVyZXMgYXJlIGV4cG9zZWQsIHdoYXQgZGVwZW5kZW5jaWVzIGV4aXN0IGJldHdlZW4gdGhlbSwgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgdW5kZXJseWluZyBoYXJkd2FyZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGludGVyZXN0ZWQgaW4gW21lbnRpb24geW91ciBzcGVjaWZpYyBhcmVhIG9mIGludGVyZXN0LCBlLmcuLCBETUEgc2V0dGluZ3MsIHBvd2VyIG1hbmFnZW1lbnQsIHNwZWNpZmljIFBIWSBzdXBwb3J0LCBvciBzb21lIHBhcnRpY3VsYXIgZmVhdHVyZV0uIEkmIzM5O2xsIG5lZWQgdG8gcXVpY2tseSBzY2FuIHRoZSBvcHRpb25zLCB0aGVpciBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgZGVmYXVsdCB2YWx1ZXMgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb2YgdGhlIGNvbmZpZ3VyYWJpbGl0eS4gSSYjMzk7bSBsb29raW5nIGZvciBhbnl0aGluZyB1bnVzdWFsIG9yIGFueXRoaW5nIHRoYXQgbWlnaHQgaW1wYWN0IFt5b3VyIHNwZWNpZmljIGFyZWEgb2YgaW50ZXJlc3RdIGFuZCBob3cgdGhlIGRldmljZSB3aWxsIHBlcmZvcm0gd2l0aCBpdC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSB0aGUgZm91bmRhdGlvbiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpcyBjdXJyZW50bHkgY29uZmlndXJlZCBhbmQgd2hlcmUgbW9kaWZpY2F0aW9ucyBtaWdodCBiZSBwb3NzaWJsZSBvciByZXF1aXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFNUTU1BQ19FVEhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IEhBU19ETUFcbiAgIDU6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgIDY6XHRcdGRlcGVuZHMgb24gRVRIVE9PTF9ORVRMSU5LXG4gICA3Olx0XHRzZWxlY3QgTUlJXG4gICA4Olx0XHRzZWxlY3QgUENTX1hQQ1NcbiAgIDk6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgMTA6XHRcdHNlbGVjdCBQSFlMSU5LXG4gIDExOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMTI6XHRcdHNlbGVjdCBSRVNFVF9DT05UUk9MTEVSXG4gIDEzOlx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAgMTQ6XHRcdGhlbHBcbiAgMTU6XHRcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIGZvciB0aGUgRXRoZXJuZXQgSVBzIGJ1aWx0IGFyb3VuZCBhXG4gIDE2Olx0XHQgIFN5bm9wc3lzIElQIENvcmUuXG4gIDE3Olx0XG4gIDE4Olx0aWYgU1RNTUFDX0VUSFxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXG4gIDIxOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcJiMzNDtcbiAgMjI6XHRcdGRlcGVuZHMgb24gSU5FVFxuICAyMzpcdFx0ZGVmYXVsdCBuXG4gIDI0Olx0XHRoZWxwXG4gIDI1Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzIHVzaW5nIGV0aHRvb2wuIEVuYWJsZSB0aGlzXG4gIDI2Olx0XHQgIGZlYXR1cmUgaWYgeW91IGFyZSBmYWNpbmcgcHJvYmxlbXMgd2l0aCB5b3VyIEhXIGFuZCBzdWJtaXQgdGhlIHRlc3RcbiAgMjc6XHRcdCAgcmVzdWx0cyB0byB0aGUgbmV0ZGV2IE1haWxpbmcgTGlzdC5cbiAgMjg6XHRcbiAgMjk6XHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXG4gIDMwOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUGxhdGZvcm0gYnVzIHN1cHBvcnRcJiMzNDtcbiAgMzE6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gIDMyOlx0XHRkZWZhdWx0IHlcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXG4gIDM1Olx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciB1c2VkIG9uIHNldmVyYWwgU29DczpcbiAgMzY6XHRcdCAgU1RpLCBBbGx3aW5uZXIsIEFtbG9naWMgTWVzb24sIEFsdGVyYSBTT0NGUEdBLlxuICAzNzpcdFxuICAzODpcdFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuICAzOTpcdFxuICA0MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA0MTpcdFxuICA0MjpcdGlmIFNUTU1BQ19QTEFURk9STVxuICA0MzpcdFxuICA0NDpcdGNvbmZpZyBEV01BQ19EV0NfUU9TX0VUSFxuICA0NTpcdFx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3Igc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlwmIzM0O1xuICA0NjpcdFx0c2VsZWN0IENSQzMyXG4gIDQ3Olx0XHRzZWxlY3QgTUlJXG4gIDQ4Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gIDQ5Olx0XHRoZWxwXG4gIDUwOlx0XHQgIFN1cHBvcnQgZm9yIGNoaXBzIHVzaW5nIHRoZSBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXG4gIDUxOlx0XG4gIDUyOlx0Y29uZmlnIERXTUFDX0dFTkVSSUNcbiAgNTM6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgZHJpdmVyIGZvciBEV01BQ1wmIzM0O1xuICA1NDpcdFx0ZGVmYXVsdCBTVE1NQUNfUExBVEZPUk1cbiAgNTU6XHRcdGhlbHBcbiAgNTY6XHRcdCAgR2VuZXJpYyBEV01BQyBkcml2ZXIgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbiYjMzk7dCByZXF1aXJlIGFueVxuICA1NzpcdFx0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXG4gIDU4Olx0XHQgIGRhdGEgZm9yIHNldHVwLlxuICA1OTpcdFxuICA2MDpcdGNvbmZpZyBEV01BQ19BTkFSSU9OXG4gIDYxOlx0XHR0cmlzdGF0ZSBcJiMzNDtBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgc3VwcG9ydFwmIzM0O1xuICA2MjpcdFx0ZGVmYXVsdCBBUkNcbiAgNjM6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkMgfHwgQ09NUElMRV9URVNUKVxuICA2NDpcdFx0aGVscFxuICA2NTpcdFx0ICBTdXBwb3J0IGZvciBBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgRXRoZXJuZXQgY29udHJvbGxlci5cbiAgNjY6XHRcbiAgNjc6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbmFyaW9uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuICA2ODpcdFxuICA2OTpcdGNvbmZpZyBEV01BQ19FSUM3NzAwXG4gIDcwOlx0XHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IGZvciBFc3dpbiBlaWM3NzAwIGV0aGVybmV0IGRyaXZlclwmIzM0O1xuICA3MTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgSEFTX0RNQSBcdTAwMjZcdTAwMjYgQVJDSF9FU1dJTiB8fCBDT01QSUxFX1RFU1RcbiAgNzI6XHRcdGhlbHBcbiAgNzM6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEVzd2luIEVJQzc3MDAgRXRoZXJuZXQgY29udHJvbGxlcixcbiAgNzQ6XHRcdCAgd2hpY2ggaW50ZWdyYXRlcyBTeW5vcHN5cyBEZXNpZ25XYXJlIFFvUyBmZWF0dXJlcy4gSXQgZW5hYmxlc1xuICA3NTpcdFx0ICBoaWdoLXNwZWVkIG5ldHdvcmtpbmcgd2l0aCBETUEgYWNjZWxlcmF0aW9uIGFuZCBpcyBvcHRpbWl6ZWRcbiAgNzY6XHRcdCAgZm9yIGVtYmVkZGVkIHN5c3RlbXMuXG4gIDc3Olx0XG4gIDc4Olx0Y29uZmlnIERXTUFDX0lOR0VOSUNcbiAgNzk6XHRcdHRyaXN0YXRlIFwmIzM0O0luZ2VuaWMgTUFDIHN1cHBvcnRcJiMzNDtcbiAgODA6XHRcdGRlZmF1bHQgTUFDSF9JTkdFTklDXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDIyOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MzU1CgkJCQkJCQlvdXRwdXQ6IDU2CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIEtjb25maWcgZm9yIFBDSSAmYW1wOyBDb25maWd1cmF0aW9uIFJlYWRpbmVzcyoqCgpBbHJpZ2h0LCBiZWZvcmUgd2UgZGl2ZSB0b28gZGVlcCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG9idmlvdXMgZ290Y2hhcyBpbiB0aGUgS2NvbmZpZyBmaWxlcy4gTXkgaW5zdGluY3QgdGVsbHMgbWUgdGhhdCB3ZSYjMzk7cmUgbGlrZWx5IGdvaW5nIHRvIGJlIGludGVyYWN0aW5nIHdpdGggUENJIGRldmljZXMgYXQgc29tZSBwb2ludCBkdXJpbmcgdGhlIHByb2plY3QsIHNvIGl0JiMzOTtzIHByb2JhYmx5IGJlc3QgdG8gdGFrZSBhIG1vbWVudCBhbmQgcmV2aWV3IGFsbCBQQ0ktcmVsYXRlZCBLY29uZmlnIG9wdGlvbnMuIEkgd2FudCB0byBxdWlja2x5IHNjYW4gZm9yIG9idmlvdXMgdGhpbmdzIHRoYXQgbWlnaHQgYmUgZW5hYmxlZCBvciBkaXNhYmxlZCBieSBkZWZhdWx0IHRoYXQgY291bGQgcG90ZW50aWFsbHkgdHJpcCB1cyB1cCBsYXRlci4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBsb29rIGZvciB0aGUgUENJIHN1cHBvcnQgb3B0aW9ucyBhbmQgZW5zdXJlIHRoYXQgdGhleSBhcmUgZW5hYmxlZCBmb3IgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIGFuZCB0aGF0IGFsbCB0aGUgbmVjZXNzYXJ5IHN1cHBvcnRpbmcgb3B0aW9ucyAobGlrZSBpbnRlcnJ1cHQgaGFuZGxpbmcsIERNQSwgZXRjLikgYXJlIHByZXNlbnQgYW5kIGNvbmZpZ3VyZWQgYXMgZXhwZWN0ZWQuIEkmIzM5O20gYWxzbyBob3BpbmcgdGhlcmUgYXJlbiYjMzk7dCBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIGNhdXNlIGEgaGVhZGFjaGUgZG93biB0aGUgbGluZS4gSXQmIzM5O3MgYmVzdCB0byBpcm9uIG91dCBhbnkga2lua3MgaW4gdGhlIGNvbmZpZyBiZWZvcmUgd2Ugd2FzdGUgdGltZSBjaGFzaW5nIGRvd24ga2VybmVsIGJ1Z3MgdGhhdCBhcmUgYWN0dWFsbHkganVzdCBzaW1wbGUgY29uZmlndXJhdGlvbiBvdmVyc2lnaHRzLiBUaGlzIHF1aWNrIEtjb25maWcgYXVkaXQgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIHRvIHdvcmsgZnJvbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQ19QQ0l8Y29uZmlnIERXTUFDX0lOVEVMfGNvbmZpZyBEV01BQ19TVU44SSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mjc3PWNvbmZpZyBEV01BQ19TVU5YSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyODg6Y29uZmlnIERXTUFDX1NVTjhJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4OS1cdHRyaXN0YXRlIFwmIzM0O0FsbHdpbm5lciBzdW44aSBHTUFDIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTMyMj1jb25maWcgRFdNQUNfSU1YOFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMzQ6Y29uZmlnIERXTUFDX0lOVEVMX1BMQVRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzM1LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgZHdtYWMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzczPWNvbmZpZyBTVE1NQUNfTElCUENJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM3ODpjb25maWcgRFdNQUNfSU5URUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc5LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgR01BQyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA4LVx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBDSSBidXMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTE0MgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDExNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWTEFOIEhhbmRsaW5nIGluIHN0bW1hY19tYWluLmMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBuYXR1cmUgb2YgdGhlc2UgbW9kaWZpZWQgZnVuY3Rpb25zLiBBcmUgd2UgZGVhbGluZyB3aXRoIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLCBlbnRyeSBwb2ludHMsIG9yIHBvc3NpYmx5IHByb2JlIGZ1bmN0aW9ucz8gU2luY2UgSSBzZWUgYSBwYXRjaCBoZXJlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQmIzM5O3MgY2hhbmdlZCBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZS4KCkxvb2tpbmcgYXQgdGhlIHBhdGNoIGl0c2VsZiwgdGhlIG1haW4gZm9jdXMgaXMgYXJvdW5kIFZMQU4gaGFuZGxpbmcgaW4gdGhlIHN0bW1hYyBkcml2ZXIuIFNwZWNpZmljYWxseSwgdGhlIGBzdG1tYWNfcnhfdmxhbmAgZnVuY3Rpb24sIHdoaWNoIHNlZW1zIHRvIGhhbmRsZSBkcml2ZXItbGV2ZWwgVkxBTiBzdHJpcHBpbmcsIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSBjYWxscyB0byB0aGF0IGZ1bmN0aW9uIGluIGBzdG1tYWNfZGlzcGF0Y2hfc2tiX3pjYCBhbmQgYHN0bW1hY19yeGAgYXJlIGFsc28gZ29uZS4gSW5zdGVhZCwgdGhlcmUgYXBwZWFycyB0byBiZSBhIGNvbmRpdGlvbmFsIGNoZWNrIGJhc2VkIG9uIGBwcml2LSZndDtody0mZ3Q7aHdfdmxhbl9lbmAgdGhhdCBub3cgZGlyZWN0bHkgY2FsbHMgYHN0bW1hY19yeF9od192bGFuYC4KClRoaXMgc3VnZ2VzdHMgdGhlIGludGVudGlvbiBpcyB0byBtb3ZlIFZMQU4gc3RyaXBwaW5nIHRvIGhhcmR3YXJlIHdoZW5ldmVyIHBvc3NpYmxlLiAgVGhlIGNoYW5nZSBhbHNvIHRvdWNoZXMgdGhlIHByb2JlIGZ1bmN0aW9uLCBgX19zdG1tYWNfZHZyX3Byb2JlYC4gSW4gdGhhdCBmdW5jdGlvbiBJIHNlZSBzb21lIGFkanVzdG1lbnRzIHRvIGZlYXR1cmUgZmxhZ3MuIE5vdGFibHksIHRoZXJlJiMzOTtzIGEgY29uZGl0aW9uYWwgc2V0dGluZyBvZiBgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlhgLiAgSXQgc2VlbXMgdGhhdCBpZiB0aGUgY29yZSB0eXBlIGlzICYjMzQ7eG1hYyYjMzQ7LCB0aGVuIHRoZSBgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlhgIGFuZCBgcHJpdi0mZ3Q7aHctJmd0O2h3X3ZsYW5fZW5gIGFyZSBzZXQuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGUgaHdfdmxhbl9lbiBmbGFnIGlzIGNvbnRyb2xsZWQgYXMgdGhpcyBzZWVtcyBrZXkgdG8gY29udHJvbGxpbmcgdGhlIGZlYXR1cmUuCgpOb3csIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIGNhbGwgc2l0ZXMgZm9yIGBfX3N0bW1hY19kdnJfcHJvYmVgLiBUaGlzIHNob3VsZCBnaXZlIG1lIGNvbnRleHQgb24gd2hlbiBWTEFOIHN0cmlwcGluZyBpcyBlbmFibGVkLiBJIGFsc28gbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGVudHJ5IHBvaW50cyBpbiBgc3RtbWFjX21haW4uY2AgYmVzaWRlcyB0aGlzIHByb2JlIGZ1bmN0aW9uIHRoYXQgSSBzaG91bGQgYmUgYXdhcmUgb2YuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDIyOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19kdnJfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI4Mz1zdGF0aWMgaW50IGR3Y19ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzMwOlx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMzEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYz00Mj1zdGF0aWMgaW50IGludGVsX2V0aF9wbGF0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTExNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxMTg6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTE5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyNjM9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM0MTpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXQsIFx1MDAyNnJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzNDItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jPTM3ND1zdGF0aWMgaW50IGlwcTgwNnhfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00ODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM6NDgzOlx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00ODQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00OTg9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1NjI6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NjMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYz00Mj1zdGF0aWMgaW50IGxwYzE4eHhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM6Njg6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTY5LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jPTU5OT1zdGF0aWMgaW50IG1lZGlhdGVrX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjY0MjpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjQzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jPTQ3PXN0YXRpYyBpbnQgbWVzb242X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy03Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6NzM6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy03NC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jPTM4Mj1zdGF0aWMgaW50IG1lc29uOGJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNDYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jOjQ2NDpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNDY1LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yOTM9c3RhdGljIGludCBtb3RvcmNvbW1fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNTk6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2MC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jPTQ4PXN0YXRpYyBpbnQgcnpuMV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy02Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzo2ODpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNjktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jPTM1PXN0YXRpYyBpbnQgc29waGdvX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo2NTpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNjYtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM9MTQ3PXN0YXRpYyBpbnQgc3BhY2VtaXRfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM6MjA3Olx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIwOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz05MD1zdGF0aWMgaW50IHN0YXJmaXZlX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jOjE1MzpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE1NC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz01MjU9c3RhdGljIGludCBzdG0zMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo1Nzk6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTU4MC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMTA1PXN0YXRpYyBpbnQgc3VuOGlfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyMDI6XHQvKiB0aGUgTUFDIGlzIHJ1bnRpbWUgc3VzcGVuZGVkIGFmdGVyIHN0bW1hY19kdnJfcHJvYmUoKSwgc28gd2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwMy1cdCAqIG5lZWQgdG8gZW5zdXJlIHRoZSBNQUMgcmVzdW1lIGJhY2sgYmVmb3JlIG90aGVyIG9wZXJhdGlvbnMgc3VjaFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwOC1cdC8qIFRoZSBtdXggbXVzdCBiZSByZWdpc3RlcmVkIGFmdGVyIHBhcmVudCBNRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyMDk6XHQgKiBzbyBhZnRlciBzdG1tYWNfZHZyX3Byb2JlKClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIxMC1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM9MjE0PXN0YXRpYyBpbnQgdGVncmFfbWdiZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYzozNzY6XHRlcnIgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zNzctXHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM9MjA1PXN0YXRpYyBpbnQgdmlzY29udGlfZXRoX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jOjIzNzpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmMtMjM4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00MTM9dm9pZCBzdG1tYWNfZHZyX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg6NDE0OmludCBzdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQxNS1cdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Nzc2NT1FWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGxhdF9kYXRfYWxsb2MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NzY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NzY3OnN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzc2OC1cdFx0XHQgICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA2OC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODA2OTogKiBzdG1tYWNfZHZyX3Byb2JlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwNzAtICogQGRldjogZGV2aWNlIHBvaW50ZXJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwNzctICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgwNzg6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MDc5LVx0XHQgICAgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpyZXMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MDg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MDg5Olx0cmV0ID0gX19zdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIHJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwOTAtXHRpZiAocmV0IFx1MDAyNlx1MDAyNiBwbGF0X2RhdC1cdTAwM2VleGl0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA5NC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgwOTU6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX2R2cl9wcm9iZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwOTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTExOD1zdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODM6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODQtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTg0OD1pbnQgc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6ODU3Olx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXQsIHJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NTgtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDg1OQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipBbmFseXppbmcgYHN0bW1hY19tYWluLmNgIGZvciBFbnRyeSBQb2ludHMgYW5kIER5bmFtaWMgQmVoYXZpb3IqKgoKQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGBzdG1tYWNfbWFpbi5jYCBmaWxlLiBHaXZlbiBteSBleHBlcnRpc2UsIEkgc3VzcGVjdCB0aGlzIGlzIGEgY3JpdGljYWwgY29tcG9uZW50IG9mIHRoZSBTVE1NQUMgZHJpdmVyLiBJIHdhbnQgdG8gcXVpY2tseSBpZGVudGlmeSBpdHMga2V5IGVudHJ5IHBvaW50cyBhbmQgdW5kZXJzdGFuZCB3aGF0IHBhcnRzIG9mIHRoaXMgY29kZSBtaWdodCBpbnRlcmFjdCBkeW5hbWljYWxseSB3aXRoIG90aGVyIG1vZHVsZXMgb3IgdGhlIGtlcm5lbCBhdCBydW50aW1lLiBNeSBwcmltYXJ5IHRob3VnaHQgcHJvY2VzcyBpbnZvbHZlcyBhIHRhcmdldGVkIGludmVzdGlnYXRpb24gdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGdvaW5nIG9uIGF0IHRoZSBoaWdoIGxldmVsLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGhlcmUgYmVzaWRlcyB0aGUgc3RhdGljIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBwcmV2aW91c2x5IHBvaW50ZWQgb3V0LiBJIGtub3cgdGhhdCBsb29raW5nIGZvciBgRVhQT1JUX1NZTUJPTGAgaXMgdGhlIGNsYXNzaWMgd2F5IHRvIGRvIGl0LiBMZXQgbWUgc2VlIHdoZXJlIHRoZSBjb2RlIGNhbiBnbyBmcm9tIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDIyOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKnN0bW1hYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xOTU9aW50IHN0bW1hY19zZXRfY2xrX3R4X3JhdGUodm9pZCAqYnNwX3ByaXYsIHN0cnVjdCBjbGsgKmNsa190eF9pLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjA4LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjA5OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19zZXRfY2xrX3R4X3JhdGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMTc9dm9pZCBzdG1tYWNfYXhpX2JsZW5fdG9fbWFzayh1MzIgKnJlZ3ZhbCwgY29uc3QgdTMyICpibGVuLCBzaXplX3QgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQ2LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjQ3OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19heGlfYmxlbl90b19tYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQ4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MzE5NT1pbnQgc3RtbWFjX2dldF9waHlfaW50Zl9zZWwocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTMyMTAtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzozMjExOkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19nZXRfcGh5X2ludGZfc2VsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzIxMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc3MzE9c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpzdG1tYWNfcGxhdF9kYXRfYWxsb2Moc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzc2NC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc3NjU6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3BsYXRfZGF0X2FsbG9jKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzc2Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgwNzg9aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA5NC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgwOTU6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX2R2cl9wcm9iZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwOTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz04MTAzPXZvaWQgc3RtbWFjX2R2cl9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEzNi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMzc6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX2R2cl9yZW1vdmUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTM4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9ODE0Nj1pbnQgc3RtbWFjX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODE5Ny19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxOTg6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3N1c3BlbmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTk5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9ODI0Mj1pbnQgc3RtbWFjX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzI4LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODMyOTpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcmVzdW1lKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODMzMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgzMzI9REVGSU5FX1NJTVBMRV9ERVZfUE1fT1BTKHN0bW1hY19zaW1wbGVfcG1fb3BzLCBzdG1tYWNfc3VzcGVuZCwgc3RtbWFjX3Jlc3VtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgzMzM6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3NpbXBsZV9wbV9vcHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzM0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjUyMgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIGBzdG1tYWNfbWFpbi5jYCBhbmQgSXRzIE5ldHdvcmsgRGV2aWNlIE9wZXJhdGlvbnMqKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhpcyBgc3RtbWFjYCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyBpbnRlcmFjdGluZyB3aXRoIHRoZSBuZXR3b3JrIGRldmljZS4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBjcnVjaWFsIHBpZWNlOiB0aGUgYG5ldF9kZXZpY2Vfb3BzYCBzdHJ1Y3R1cmUuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBzcGVjaWZpY2FsbHkgd2l0aGluIGBzdG1tYWNfbWFpbi5jYCBiZWNhdXNlIHRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB0aGUgY29yZSBkZXZpY2Ugc2V0dXAgYW5kIG9wZXJhdGlvbiBmdW5jdGlvbnMgYXJlIGRlZmluZWQsIHJpZ2h0PyBJIHdhbnQgdG8gc2VlIHdoaWNoIGZ1bmN0aW9ucyBpdCYjMzk7cyBpbXBsZW1lbnRpbmcsIGhvdyBpdCYjMzk7cyBoYW5kbGluZyB0aGUgdXN1YWwgc3VzcGVjdHM6IGluaXRpYWxpemF0aW9uLCB0cmFuc21pc3Npb24sIHJlY2VwdGlvbiwgYW5kIGxpbmsgc3RhdGUuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHN0YW5kYXJkIHN0dWZmIGxpa2UgYG5kb19vcGVuYCwgYG5kb19zdG9wYCwgYG5kb19zdGFydF94bWl0YCwgYW5kIGBuZG9fZ2V0X3N0YXRzNjRgIGluIHRoZXJlLCBidXQgSSYjMzk7bSBhbHNvIGN1cmlvdXMgYWJvdXQgYW55IHN0bW1hYy1zcGVjaWZpYyBleHRlbnNpb25zIG9yIGN1c3RvbSBob29rcy4gR290dGEgc2VlIGhvdyB0aGV5JiMzOTt2ZSBoYW5kbGVkIERNQSBjb25maWd1cmF0aW9uLCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFuZCBidWZmZXIgbWFuYWdlbWVudCwgYWxsIHRocm91Z2ggdGhhdCBvcGVyYXRpb25zIHN0cnVjdHVyZS4gUmlnaHQsIGxldCYjMzk7cyBvcGVuIHRoYXQgZmlsZSBhbmQgZ2V0IHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfbmV0ZGV2X29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTYwPXN0YXRpYyB2b2lkIHN0bW1hY192bGFuX3Jlc3RvcmUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE2Mi0jaWZkZWYgQ09ORklHX0RFQlVHX0ZTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE2MzpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHN0bW1hY19uZXRkZXZfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNjQtc3RhdGljIHZvaWQgc3RtbWFjX2luaXRfZnMoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02NzEyPXN0YXRpYyBpbnQgc3RtbWFjX2RldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY3MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY3MTg6XHRpZiAoZGV2LVx1MDAzZW5ldGRldl9vcHMgIT0gXHUwMDI2c3RtbWFjX25ldGRldl9vcHMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY3MTktXHRcdGdvdG8gZG9uZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcyMjg9c3RhdGljIHZvaWQgc3RtbWFjX2dldF9zdGF0czY0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCAqc3RhdHMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MjgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MjgxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgc3RtbWFjX25ldGRldl9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcyODItXHQubmRvX29wZW4gPSBzdG1tYWNfb3Blbixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc3Njc9c3RhdGljIGludCBfX3N0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzg4MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6Nzg4MjpcdG5kZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNnN0bW1hY19uZXRkZXZfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03ODgzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzQ5MgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDMxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNUTU1BQyBWTEFOIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaCBjb25jZXJuaW5nIHRoZSBOZXR3b3JrIERldmljZSAobmRldikgb3BlcmF0aW9ucyB3aXRoaW4gdGhlIHN0bW1hYyBkcml2ZXIuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGNoYW5nZXMgcmVsYXRlZCB0byBWTEFOIGhhbmRsaW5nLiBGaXJzdCwgaXQgbG9va3MgbGlrZSBgc3RtbWFjX3J4X3ZsYW5gIGhhcyBiZWVuIGNvbXBsZXRlbHkgcmVtb3ZlZC4gVGhhdCYjMzk7cyBhIHNpZ25pZmljYW50IHNoaWZ0LiBDb25zZXF1ZW50bHksIHRoZSBjYWxscyB0byBgc3RtbWFjX3J4X3ZsYW5gIHdpdGhpbiBgc3RtbWFjX2Rpc3BhdGNoX3NrYl96Y2AgYW5kIGBzdG1tYWNfcnhgIGFyZSBhbHNvIGdvbmUuCgpOb3csIGxldCYjMzk7cyBzY3J1dGluaXplIGBfX3N0bW1hY19kdnJfcHJvYmVgLiBBaCwgaGVyZSYjMzk7cyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBUaGUgb3JpZ2luYWwgY29kZSBibG9jaywgY29tbWVudGVkIG91dCwgc2VlbXMgdG8gaGF2ZSBiZWVuIHJlbGF0ZWQgdG8gZW5hYmxpbmcgaGFyZHdhcmUgVkxBTiB0YWcgZGV0ZWN0aW9uLiBUaGUgY29uZGl0aW9uYWwgYCNpZmRlZiBTVE1NQUNfVkxBTl9UQUdfVVNFRGAgaXMgZ29uZSwgYnV0IHRoZSBpbnRlbnQgcmVtYWlucy4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggbm93IGNvbmRpdGlvbmFsbHkgc2V0cyBgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlhgIGJhc2VkIG9uIHRoZSBgZHdtYWNfaXNfeG1hY2AgY2hlY2suIEFuZCB0aGUgY29ycmVzcG9uZGluZyBgaHdfZmVhdHVyZXNgIGlzIGFkanVzdGVkLCBhbmQgYHByaXYtJmd0O2h3LSZndDtod192bGFuX2VuYCBpcyBzZXQgdG8gdHJ1ZS4gTXkgaW50ZXJwcmV0YXRpb24gaXMgdGhhdCB0aGUgZHJpdmVyIGlzIG5vdyBvbmx5IGVuYWJsaW5nIENUQUcgKEN1c3RvbWVyIFRhZykgVkxBTiBzdXBwb3J0LCBsaWtlbHkgcmVtb3Zpbmcgc3VwcG9ydCBmb3IgU1RBRyAoU2VydmljZSBUYWcpIFZMQU4sIGF0IGxlYXN0IGV4cGxpY2l0bHkgdGhyb3VnaCB0aGlzIGNvZGUgcGF0aC4KClRvIGdldCB0aGUgY29tcGxldGUgcGljdHVyZSBvZiB0aGlzIFZMQU4gY2hhbmdlLCBJIG5lZWQgdG8gY2hlY2sgdGhlIFNUTU1BQyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gcmV2aWV3IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCBhbmQgY3Jvc3MtcmVmZXJlbmNlIHRoYXQgd2l0aCB0aGUgYnJvYWRlciBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWdgIGFuZCBgZHJpdmVycy9uZXQvS2NvbmZpZ2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVlbiBlbmFibGVkIG9yIGRpc2FibGVkIGJ5IHRoaXMgcGF0Y2ggaW4gdGVybXMgb2YgdGhlIHVuZGVybHlpbmcgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBTVE1NQUMgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzb3VyY2UuKnN0bW1hYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vS2NvbmZpZz0xOT1pZiBORVRfVkVORE9SX1NUTUlDUk9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vS2NvbmZpZy0yMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vS2NvbmZpZzoyMTpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9LY29uZmlnLTIyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYz05Mz1zdGF0aWMgaW50IGFuYXJpb25fZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtOTctXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjk4Olx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy05OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMDA6XHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMDEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9OTY9c3RhdGljIGludCBkd2NfcW9zX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTk3LVx0XHRcdCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzo5ODpcdFx0XHQgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnN0bW1hY19yZXMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTk5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI4Mz1zdGF0aWMgaW50IGR3Y19ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI4Ni1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI4NzpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI4OC1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jPTE2Nz1zdGF0aWMgaW50IGVpYzc3MDBfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTcwLVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzoxNzE6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTE3Mi1cdHN0cnVjdCBlaWM3NzAwX3Fvc19wcml2ICpkd2NfcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjE3NjpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTE3Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jPTE5PXN0YXRpYyBpbnQgZHdtYWNfZ2VuZXJpY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy0yMS1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6MjI6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTIzLVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy0yNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzoyNTpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTI2LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0yOTM9c3RhdGljIGludCBpbXhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yOTUtXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6Mjk2Olx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI5Ny1cdHN0cnVjdCBpbXhfcHJpdl9kYXRhICpkd21hYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zMDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozMDE6XHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTMwMi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jPTE1ND1zdGF0aWMgaW50IGluZ2VuaWNfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTE1Ni1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM6MTU3Olx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0xNTgtXHRzdHJ1Y3QgaW5nZW5pY19tYWMgKm1hYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMTYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jOjE2MzpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTE2NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jPTQyPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BsYXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtNDQtXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjQ1Olx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy00Ni1cdHN0cnVjdCBpbnRlbF9kd21hYyAqZHdtYWM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjUwOlx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtNTEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYz0zNzQ9c3RhdGljIGludCBpcHE4MDZ4X2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtMzc2LVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzozNzc6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTM3OC1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy0zODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM6MzgzOlx0dmFsID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtMzg0LVx0aWYgKHZhbClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYz0xNTg9c3RhdGljIGludCBsczF4X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMTYwLVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jOjE2MTpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYy0xNjItXHRjb25zdCBzdHJ1Y3QgbHMxeF9kYXRhICpkYXRhO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jLTE2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jOjE2NzpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMTY4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM9NDI9c3RhdGljIGludCBscGMxOHh4X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTQ0LVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYzo0NTpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNDYtXHRzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jOjQ5Olx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNTAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM9NTk5PXN0YXRpYyBpbnQgbWVkaWF0ZWtfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTYwMi1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjYwMzpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTYwNC1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02MjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjYyNzpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02MjgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM9NDc9c3RhdGljIGludCBtZXNvbjZfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTQ5LVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6NTA6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy01MS1cdHN0cnVjdCBtZXNvbl9kd21hYyAqZHdtYWM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy01My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6NTQ6XHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmMtNTUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYz0zODI9c3RhdGljIGludCBtZXNvbjhiX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTM4NC1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM6Mzg1Olx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy0zODYtXHRzdHJ1Y3QgbWVzb244Yl9kd21hYyAqZHdtYWM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTM4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYzozODk6XHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy0zOTAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYz04Mj1zdGF0aWMgaW50IG52dF9nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTg0LVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYzo4NTpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtODYtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM6OTA6XHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYy05MS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYz02ODQ9c3RhdGljIGludCBxY29tX2V0aHFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNjg4LVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6Njg5Olx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNjkwLVx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy02OTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jOjY5NDpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy02OTUtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz0xMzE9c3RhdGljIGludCByZW5lc2FzX2diZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTEzNC1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM6MTM1Olx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0xMzYtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMTQwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjE0MTpcdGVyciA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTE0Mi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYz0xNTY4PXN0YXRpYyBpbnQgcmtfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTU3MC1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jOjE1NzE6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xNTcyLVx0Y29uc3Qgc3RydWN0IHJrX2dtYWNfb3BzICpkYXRhO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTU4MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM6MTU4MTpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xNTgyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM9NDg9c3RhdGljIGludCByem4xX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTUwLVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzo1MTpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNTItXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM6NTU6XHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy01Ni1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jPTU5Nj1zdGF0aWMgaW50IHNvY2ZwZ2FfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNTk4LVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzo1OTk6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTYwMC1cdHN0cnVjdCBkZXZpY2VcdFx0KmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy02MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM6NjExOlx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjEyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYz0xOT1zdGF0aWMgaW50IHNvcGhnb19zZzIwNDRfZHdtYWNfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtMjAtXHRcdFx0XHQgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jOjIxOlx0XHRcdFx0ICAgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpzdG1tYWNfcmVzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtMjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jPTM1PXN0YXRpYyBpbnQgc29waGdvX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtMzgtXHRjb25zdCBzdHJ1Y3Qgc29waGdvX2R3bWFjX2RhdGEgKmRhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzozOTpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy00MC1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM6NDM6XHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTQ0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jPTEwMj1zdGF0aWMgaW50IHNwYWNlbWl0X2R3bWFjX3VwZGF0ZV9pcnFfY29uZmlnKHN0cnVjdCBzcGFjbWl0X2R3bWFjICpkd21hYyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM6MTAzOlx0XHRcdFx0XHQgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnN0bW1hY19yZXMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTEwNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYz0xNDc9c3RhdGljIGludCBzcGFjZW1pdF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMTQ5LVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM6MTUwOlx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMTUxLVx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0xNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jOjE2MDpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0xNjEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmM9OTA9c3RhdGljIGludCBzdGFyZml2ZV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtOTItXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzo5MzpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTk0LVx0c3RydWN0IHN0YXJmaXZlX2R3bWFjICpkd21hYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzo5ODpcdGVyciA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy05OS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM9MjQ5PXN0YXRpYyBpbnQgc3RpX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMjUyLVx0Y29uc3Qgc3RydWN0IHN0aV9kd21hY19vZl9kYXRhICpkYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM6MjUzOlx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTI1NC1cdHN0cnVjdCBzdGlfZHdtYWMgKmR3bWFjO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTI2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jOjI2MzpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMjY0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jPTUyNT1zdGF0aWMgaW50IHN0bTMyX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01MjctXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo1Mjg6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01MjktXHRzdHJ1Y3Qgc3RtMzJfZHdtYWMgKmR3bWFjO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo1MzM6XHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTM0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYz0xMDU9c3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTEwNy1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYzoxMDg6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMtMTA5LVx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMtMTEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM6MTEzOlx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xMTQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTEwNT1zdGF0aWMgaW50IHN1bjhpX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMTA3LVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTEwODpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTExMDktXHRzdHJ1Y3Qgc3VueGlfcHJpdl9kYXRhICpnbWFjO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTExNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTExNjpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMTE3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jPTk5PXN0YXRpYyBpbnQgc3VuN2lfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmMtMTAxLVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmM6MTAyOlx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmMtMTAzLVx0c3RydWN0IHN1bnhpX3ByaXZfZGF0YSAqZ21hYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jLTEwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmM6MTA3Olx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jLTEwOC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYz0yMTY9c3RhdGljIGludCB0aGVhZF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYy0yMTcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYzoyMTg6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYy0yMTktXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYy0yMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jOjIyNTpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYy0yMjYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM9MjA1PXN0YXRpYyBpbnQgdmlzY29udGlfZXRoX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMDctXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYzoyMDg6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMDktXHRzdHJ1Y3QgdmlzY29udGlfZXRoICpkd21hYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTIxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjEyOlx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTIxMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0yMTE2PXN0YXRpYyB2b2lkIHN0bW1hY19mcmVlX3R4X3NrYnVmcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTMwLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMTMxOnN0YXRpYyB2b2lkIF9fZnJlZV9kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTMyLVx0XHRcdFx0XHQgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMTY2OnN0YXRpYyB2b2lkIGZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE2Ny1cdFx0XHRcdCAgICAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxODItICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIxODM6c3RhdGljIHZvaWQgX19mcmVlX2RtYV90eF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxODQtXHRcdFx0XHRcdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyMDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIyMTA6c3RhdGljIHZvaWQgZnJlZV9kbWFfdHhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMjExLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjIzMC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjIzMTpzdGF0aWMgaW50IF9fYWxsb2NfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjIzMi1cdFx0XHRcdFx0IHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjMwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjMwNTpzdGF0aWMgaW50IGFsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIzMDYtXHRcdFx0XHQgICAgICAgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMzM2LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMzM3OnN0YXRpYyBpbnQgX19hbGxvY19kbWFfdHhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMzM4LVx0XHRcdFx0XHQgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMzczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMzc0OnN0YXRpYyBpbnQgYWxsb2NfZG1hX3R4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjM3NS1cdFx0XHRcdCAgICAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI0MDMtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI0MDQ6c3RhdGljIGludCBhbGxvY19kbWFfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNDA1LVx0XHRcdFx0ICAgIHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQyMi0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjQyMzpzdGF0aWMgdm9pZCBmcmVlX2RtYV9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI0MjQtXHRcdFx0XHQgICAgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9NzMyPWludCBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6NzMzOlx0XHRcdFx0ICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqc3RtbWFjX3JlcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTczNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmg9MjA9aW50IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaDoyMTpcdFx0XHRcdCAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmgtMjItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDIyOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NDM0CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYFNUTU1BQ19WTEFOX1RBR19VU0VEYCoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gYFNUTU1BQ19WTEFOX1RBR19VU0VEYC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8ga25vdyBwcmVjaXNlbHkgd2hhdCB0aGlzIG1hY3JvIHJlcHJlc2VudHMuIEl0cyBkZWZpbml0aW9uIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgd2l0aGluIHRoZSBTVE1NQUMgZHJpdmVyJiMzOTtzIFZMQU4gdGFnZ2luZyBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHBpbnBvaW50IHdoZXJlIGl0JiMzOTtzIGRlZmluZWQgd2l0aGluIHRoZSByZWxldmFudCBzb3VyY2UgY29kZS4gTGV0JiMzOTtzIHRyYWNlIGl0IGJhY2sgYW5kIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGdvaW5nIG9uLiBUaGlzIHdpbGwgdGVsbCBtZSB3aGV0aGVyIHRoaXMgaXMgZW5hYmxpbmcsIGRpc2FibGluZyBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseS4gTm8gcG9pbnQgc3BlY3VsYXRpbmcgd2l0aG91dCB0aGUgZGVmaW5pdGlvbiB0byBndWlkZSBteSB0aGlua2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7U1RNTUFDX1ZMQU5fVEFHX1VTRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yMC0jaWYgSVNfRU5BQkxFRChDT05GSUdfVkxBTl84MDIxUSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjIxOiNkZWZpbmUgU1RNTUFDX1ZMQU5fVEFHX1VTRURcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTIyLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2lmX3ZsYW4uaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmM9NDA9c3RhdGljIHZvaWQgZHdtYWMxMDAwX2NvcmVfaW5pdChzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jLTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYzo2MDojaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtNjEtXHQvKiBUYWcgZGV0ZWN0aW9uIHdpdGhvdXQgZmlsdGVyaW5nICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDBfY29yZS5jPTIyPXN0YXRpYyB2b2lkIGR3bWFjMTAwX2NvcmVfaW5pdChzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMF9jb3JlLmMtMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMF9jb3JlLmM6MzI6I2lmZGVmIFNUTU1BQ19WTEFOX1RBR19VU0VEXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMF9jb3JlLmMtMzMtXHR3cml0ZWwoRVRIX1BfODAyMVEsIGlvYWRkciAmIzQzOyBNQUNfVkxBTjEpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2VuaF9kZXNjLmM9MTU9c3RhdGljIGludCBlbmhfZGVzY19nZXRfdHhfc3RhdHVzKHN0cnVjdCBzdG1tYWNfZXh0cmFfc3RhdHMgKngsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZW5oX2Rlc2MuYy03MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2VuaF9kZXNjLmM6NzE6I2lmZGVmIFNUTU1BQ19WTEFOX1RBR19VU0VEXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9lbmhfZGVzYy5jLTcyLVx0aWYgKHRkZXMwIFx1MDAyNiBFVERFUzBfVkxBTl9GUkFNRSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9lbmhfZGVzYy5jPTE3Nj1zdGF0aWMgaW50IGVuaF9kZXNjX2dldF9yeF9zdGF0dXMoc3RydWN0IHN0bW1hY19leHRyYV9zdGF0cyAqeCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9lbmhfZGVzYy5jLTIzOC1cdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2VuaF9kZXNjLmM6MjM5OiNpZmRlZiBTVE1NQUNfVkxBTl9UQUdfVVNFRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZW5oX2Rlc2MuYy0yNDAtXHRpZiAocmRlczAgXHUwMDI2IFJERVMwX1ZMQU5fVEFHKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL25vcm1fZGVzYy5jPTYyPXN0YXRpYyBpbnQgbmRlc2NfZ2V0X3J4X3N0YXR1cyhzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzICp4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL25vcm1fZGVzYy5jLTEwMy1cdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL25vcm1fZGVzYy5jOjEwNDojaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL25vcm1fZGVzYy5jLTEwNS1cdGlmIChyZGVzMCBcdTAwMjYgUkRFUzBfVkxBTl9UQUcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NzY3PXN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc5NDItXHRuZGV2LVx1MDAzZXdhdGNoZG9nX3RpbWVvID0gbXNlY3NfdG9famlmZmllcyh3YXRjaGRvZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc5NDM6I2lmZGVmIFNUTU1BQ19WTEFOX1RBR19VU0VEXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc5NDQtXHRpZiAoZHdtYWNfaXNfeG1hYyhwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTc0NwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNUTU1BQyBWTEFOIFRhZ2dpbmcgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBpZiBgQ09ORklHX1ZMQU5fODAyMVFgIGlzIGVuYWJsZWQsIHRoZW4gYFNUTU1BQ19WTEFOX1RBR19VU0VEYCBpcyBhdXRvbWF0aWNhbGx5IGRlZmluZWQuIE1ha2VzIHNlbnNlLiBOb3csIGxldCYjMzk7cyB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzIGZvciBgU1RNTUFDX0VUSGAgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIGZpdHMgaW50byB0aGUgYnJvYWRlciBuZXR3b3JrIGRyaXZlciBzdHJ1Y3R1cmUuIFJpZ2h0LCBzdGFydGluZyB3aXRoIHRoZSBwYXJlbnQgbWVudXM6IGBORVRERVZJQ0VTYCB1bmRlciBgZHJpdmVycy9uZXQvS2NvbmZpZ2AsIHRoZW4gYEVUSEVSTkVUYCB1bmRlciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvS2NvbmZpZ2AsIGFuZCB0aGVuIHNwZWNpZmljYWxseSwgYE5FVF9WRU5ET1JfU1RNSUNST2AgaW4gdGhlIGBzdG1pY3JvYCBzdWJkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdGhlIFN0bWljcm8gc3BlY2lmaWMgcGFydC4KCkZyb20gdGhlcmUgd2UgZ2V0IHRvIGBTVE1NQUNfRVRIYCBpdHNlbGYsIHdoaWNoLCBhcyBJIHN1c3BlY3RlZCwgaXMgaW4gdGhlIGBzdG1tYWNgIHN1Yi1tZW51LiAgTmF0dXJhbGx5LCB3ZSYjMzk7bGwgc2VlIGBTVE1NQUNfUExBVEZPUk1gLCBgU1RNTUFDX1BDSWAsIGFuZCBzaW1pbGFyIG9wdGlvbnMgZGVwZW5kZW50IG9uIHRoZSBoYXJkd2FyZS4gQW5kIG9mIGNvdXJzZSwgdGhlIFZMQU4gc3VwcG9ydCBoaW5nZXMgb24gYFZMQU5fODAyMVFgLiBHb3QgaXQuIE5vdyBJJiMzOTtsbCBkcmlsbCBkb3duIGludG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vS2NvbmZpZ2AgdG8gY29uZmlybSB0aGVzZSBkZXBlbmRlbmNpZXMgYW5kIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgdGhlc2UgVkxBTiBjb25maWd1cmF0aW9ucyBhcmUgaGFuZGxlZCBpbiB0aGUgU3RtaWNybyBFdGhlcm5ldCBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDIyOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgU1RNaWNyb2VsZWN0cm9uaWNzIGRldmljZSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBORVRfVkVORE9SX1NUTUlDUk9cbiAgIDc6XHRcdGJvb2wgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIGRldmljZXNcJiMzNDtcbiAgIDg6XHRcdGRlZmF1bHQgeVxuICAgOTpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBiYXNlZCBvbiBTeW5vcHN5cyBFdGhlcm5ldCBJUFxuICAxMjpcdFx0ICBDb3Jlcywgc2F5IFkuXG4gIDEzOlx0XG4gIDE0Olx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAxNTpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsXG4gIDE2Olx0XHQgIHRoZSBxdWVzdGlvbnMgYWJvdXQgU1RNaWNyb2VsZWN0cm9uaWNzIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsXG4gIDE3Olx0XHQgIGJlIGFza2VkIGZvciB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXG4gIDE4Olx0XG4gIDE5Olx0aWYgTkVUX1ZFTkRPUl9TVE1JQ1JPXG4gIDIwOlx0XG4gIDIxOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcJiMzNDtcbiAgMjI6XHRcbiAgMjM6XHRlbmRpZiAjIE5FVF9WRU5ET1JfU1RNSUNST1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDU2MQoJCQkJCQkJb3V0cHV0OiAyMTkKCQkJCQkJCXRob3VnaHRzOiA1MjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBGb2N1czogU1RNTUFDIEV0aGVybmV0IERyaXZlciAtIFZMQU4gSGFuZGxpbmcqKgoKT2theSwgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgYmVzdCBmdW5jdGlvbnMgdG8gdGFyZ2V0IGZvciBmdXp6aW5nIHRoaXMgU1RNTUFDIGRyaXZlciBwYXRjaC4gVGhlIHBhdGNoIHJlbW92ZXMgdGhlIHN0YXRpYyBgc3RtbWFjX3J4X3ZsYW5gIGZ1bmN0aW9uLCB3aGljaCB3YXMgdXNlZCBmb3IgVkxBTiBzdHJpcHBpbmcsIGFuZCB0aGUgY2FsbGVycyBhcmUgbm93IGBzdG1tYWNfZGlzcGF0Y2hfc2tiX3pjYCBhbmQgYHN0bW1hY19yeGAg4oCTIGJvdGggaW4gYHN0bW1hY19tYWluLmNgLiBBbHNvLCBgX19zdG1tYWNfZHZyX3Byb2JlYCBpbiB0aGUgc2FtZSBmaWxlIGlzIGNhbGxlZCBieSBgc3RtbWFjX2R2cl9wcm9iZWAuIFNpbmNlIGBzdG1tYWNfZHZyX3Byb2JlYCBpcyBhIG5vbi1zdGF0aWMgZW50cnkgcG9pbnQsIGFuZCBvdGhlciBjb21tb24gbmV0ZGV2IG9wcyBzdWNoIGFzIGBzdG1tYWNfb3BlbmAsIGBzdG1tYWNfcmVsZWFzZWAsIGFuZCBgc3RtbWFjX3htaXRgLCBtaWdodCBiZSByZWxldmFudC4KCk5vdywgbGV0JiMzOTtzIGNvbmZpcm0gdGhlIGZvY3VzIHN5bWJvbHMuIGBzdG1tYWNfZHZyX3Byb2JlYCBpcyBleHBvcnRlZCBhbmQgbm9uLXN0YXRpYywgc28gdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBzaG91bGQgYWxzbyBjaGVjayBgc3RtbWFjX3BsdGZyX3Byb2JlYCwgaW4gYHN0bW1hY19wbGF0Zm9ybS5jYCwgYXMgYW4gYWRkaXRpb25hbCB0YXJnZXQuCgpTbywgSSYjMzk7bSB0aGlua2luZzoKCiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlLCBkZWZpbml0ZWx5LiBUaGlzIHBhdGNoIHRvdWNoZXMgVkxBTiBoYW5kbGluZywgYW5kIHRoZSBTVE1NQUMgY29udHJvbGxlcnMgYXJlIGtub3duIHRvIGJlIGVtdWxhdGVkIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBUaGlzIHdpbGwgYmUgcmVhY2hhYmxlIGluIHRoZSBmdXp6ZXIuCiogICAqKkZvY3VzU3ltYm9sczoqKiBJJiMzOTttIGxlYW5pbmcgdG93YXJkIGluY2x1ZGluZyBib3RoIGBzdG1tYWNfZHZyX3Byb2JlYCBhbmQgYHN0bW1hY19wbHRmcl9wcm9iZWAsIG9yIG1heWJlIGp1c3QgYHN0bW1hY19kdnJfcHJvYmVgIGFuZCBzZWUgaWYgdGhlIGFuYWx5c2lzIGV4cGFuZHMgb3V0IGZyb20gdGhlcmUuCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVzZSBjb25maWdzIGFyZSBlbmFibGVkOiBgTkVUX1ZFTkRPUl9TVE1JQ1JPYCwgYFNUTU1BQ19FVEhgLCBgU1RNTUFDX1BMQVRGT1JNYCwgYW5kIGBWTEFOXzgwMjFRYC4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBteSByZWFzb25pbmcgaGVyZS4gVGhlIHBhdGNoIGlzIGFib3V0IFZMQU4gaGFuZGxpbmcgaW4gdGhlIFJYIHBhdGgsIHNwZWNpZmljYWxseSByZW1vdmluZyB0aGUgZHJpdmVyLWxldmVsIHN0cmlwcGluZywgbWFraW5nIGl0IGRlcGVuZGVudCBvbiBoYXJkd2FyZSBjYXBhYmlsaXR5IHZpYSBgZHdtYWNfaXNfeG1hY2AuIFRoZSBTVE1NQUMgY29udHJvbGxlcnMgYXJlIGVtdWxhdGVkLCBzbyB0aGlzIGlzIGRlZmluaXRlbHkgcmVsZXZhbnQgZm9yIGZ1enppbmcsIGFuZCBmdW5jdGlvbmFsLgoKQWxyaWdodCwgSSYjMzk7dmUgZ290IHRoZSBjb25maWdzIHN0cmFpZ2h0LiBOb3csIEkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1ZFTkRPUl9TVE1JQ1JPJiMzNDssCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BMQVRGT1JNJiMzNDssCiAgICAmIzM0O1ZMQU5fODAyMVEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfZHZyX3Byb2JlJiMzNDssCiAgICAmIzM0O3N0bW1hY19wbHRmcl9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhbHRlcnMgVkxBTiBoYW5kbGluZyBpbiB0aGUgcmVjZWl2ZSBwYXRoIG9mIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBJdCByZW1vdmVzIGFydGlmaWNpYWwgc29mdHdhcmUgVkxBTiBzdHJpcHBpbmcgKHN0bW1hY19yeF92bGFuKSBmcm9tIHN0bW1hY19yeCBhbmQgc3RtbWFjX2Rpc3BhdGNoX3NrYl96YywgYW5kIHVwZGF0ZXMgZmVhdHVyZSBhZHZlcnRpc2luZyBkdXJpbmcgZHJpdmVyIHByb2JlIChfX3N0bW1hY19kdnJfcHJvYmUpIHRvIG9ubHkgc2V0IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYIHdoZW4gaGFyZHdhcmUgVkxBTiBzdHJpcHBpbmcgaXMgc3VwcG9ydGVkLiBTVE1NQUMgaGFyZHdhcmUgKGUuZy4gQWxsd2lubmVyIHN1bjhpIEVNQUMpIGlzIHN1cHBvcnRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBzbyB0aGVzZSBjaGFuZ2VzIGFmZmVjdCByZWFjaGFibGUga2VybmVsIG5ldHdvcmsgZGF0YSBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1ZFTkRPUl9TVE1JQ1JPJiMzNDssCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BMQVRGT1JNJiMzNDssCiAgICAmIzM0O1ZMQU5fODAyMVEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfZHZyX3Byb2JlJiMzNDssCiAgICAmIzM0O3N0bW1hY19wbHRmcl9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhbHRlcnMgVkxBTiBoYW5kbGluZyBpbiB0aGUgcmVjZWl2ZSBwYXRoIG9mIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBJdCByZW1vdmVzIGFydGlmaWNpYWwgc29mdHdhcmUgVkxBTiBzdHJpcHBpbmcgKHN0bW1hY19yeF92bGFuKSBmcm9tIHN0bW1hY19yeCBhbmQgc3RtbWFjX2Rpc3BhdGNoX3NrYl96YywgYW5kIHVwZGF0ZXMgZmVhdHVyZSBhZHZlcnRpc2luZyBkdXJpbmcgZHJpdmVyIHByb2JlIChfX3N0bW1hY19kdnJfcHJvYmUpIHRvIG9ubHkgc2V0IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYIHdoZW4gaGFyZHdhcmUgVkxBTiBzdHJpcHBpbmcgaXMgc3VwcG9ydGVkLiBTVE1NQUMgaGFyZHdhcmUgKGUuZy4gQWxsd2lubmVyIHN1bjhpIEVNQUMpIGlzIHN1cHBvcnRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBzbyB0aGVzZSBjaGFuZ2VzIGFmZmVjdCByZWFjaGFibGUga2VybmVsIG5ldHdvcmsgZGF0YSBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgc29mdHdhcmUtYmFzZWQgVkxBTiB0YWcgc3RyaXBwaW5nIChgc3RtbWFjX3J4X3ZsYW5gKSBmcm9tIHRoZSBzdG1tYWMgbmV0d29yayBkcml2ZXImIzM5O3MgUlggcGF0aCBhbmQgcmVzdHJpY3RzIGFkdmVydGlzaW5nIGBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWGAgdG8gaGFyZHdhcmUgdGhhdCBhY3R1YWxseSBzdXBwb3J0cyBIVyBWTEFOIHN0cmlwcGluZyAoYGR3bWFjX2lzX3htYWNgKS4gXG5cbk5vIG5ldyBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGtlcm5lbC10by11c2VyIGNvcGllcywgcGFkZGluZyBieXRlcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCBwYXRocyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIHRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkYWJlOWNhZmI4NDllNDNlMWUwMWNiM2I1ZWM3NTU2OGE5ODkxNDc4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgMSAyMjoxMzo0MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCmluZGV4IGIyYjdkMDI0MmRkM2MuLjJlM2IwY2YxMGQ2NjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwpAQCAtNTAyMSwyNCAmIzQzOzUwMjEsNiBAQCBzdGF0aWMgbmV0ZGV2X2ZlYXR1cmVzX3Qgc3RtbWFjX2ZlYXR1cmVzX2NoZWNrKHN0cnVjdCBza19idWZmICpza2IsCiAJcmV0dXJuIHZsYW5fZmVhdHVyZXNfY2hlY2soc2tiLCBmZWF0dXJlcyk7CiB9CiAKLXN0YXRpYyB2b2lkIHN0bW1hY19yeF92bGFuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpCi17Ci0Jc3RydWN0IHZsYW5fZXRoaGRyICp2ZXRoID0gc2tiX3ZsYW5fZXRoX2hkcihza2IpOwotCV9fYmUxNiB2bGFuX3Byb3RvID0gdmV0aC0mZ3Q7aF92bGFuX3Byb3RvOwotCXUxNiB2bGFuaWQ7Ci0KLQlpZiAoKHZsYW5fcHJvdG8gPT0gaHRvbnMoRVRIX1BfODAyMVEpICZhbXA7JmFtcDsKLQkgICAgIGRldi0mZ3Q7ZmVhdHVyZXMgJmFtcDsgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlgpIHx8Ci0JICAgICh2bGFuX3Byb3RvID09IGh0b25zKEVUSF9QXzgwMjFBRCkgJmFtcDsmYW1wOwotCSAgICAgZGV2LSZndDtmZWF0dXJlcyAmYW1wOyBORVRJRl9GX0hXX1ZMQU5fU1RBR19SWCkpIHsKLQkJLyogcG9wIHRoZSB2bGFuIHRhZyAqLwotCQl2bGFuaWQgPSBudG9ocyh2ZXRoLSZndDtoX3ZsYW5fVENJKTsKLQkJbWVtbW92ZShza2ItJmd0O2RhdGEgJiM0MzsgVkxBTl9ITEVOLCB2ZXRoLCBFVEhfQUxFTiAqIDIpOwotCQlza2JfcHVsbChza2IsIFZMQU5fSExFTik7Ci0JCV9fdmxhbl9od2FjY2VsX3B1dF90YWcoc2tiLCB2bGFuX3Byb3RvLCB2bGFuaWQpOwotCX0KLX0KLQogLyoqCiAgKiBzdG1tYWNfcnhfcmVmaWxsIC0gcmVmaWxsIHVzZWQgc2tiIHByZWFsbG9jYXRlZCBidWZmZXJzCiAgKiBAcHJpdjogZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlCkBAIC01NDA3LDkgJiM0Mzs1Mzg5LDcgQEAgc3RhdGljIHZvaWQgc3RtbWFjX2Rpc3BhdGNoX3NrYl96YyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSwKIAlpZiAocHJpdi0mZ3Q7aHctJmd0O2h3X3ZsYW5fZW4pCiAJCS8qIE1BQyBsZXZlbCBzdHJpcHBpbmcuICovCiAJCXN0bW1hY19yeF9od192bGFuKHByaXYsIHByaXYtJmd0O2h3LCBwLCBza2IpOwotCWVsc2UKLQkJLyogRHJpdmVyIGxldmVsIHN0cmlwcGluZy4gKi8KLQkJc3RtbWFjX3J4X3ZsYW4ocHJpdi0mZ3Q7ZGV2LCBza2IpOwomIzQzOwogCXNrYi0mZ3Q7cHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIHByaXYtJmd0O2Rldik7CiAKIAlpZiAodW5saWtlbHkoIWNvZSkgfHwgIXN0bW1hY19oYXNfaXBfZXRoZXJ0eXBlKHNrYikpCkBAIC01OTAxLDkgJiM0Mzs1ODgxLDYgQEAgc3RhdGljIGludCBzdG1tYWNfcngoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBpbnQgbGltaXQsIHUzMiBxdWV1ZSkKIAkJaWYgKHByaXYtJmd0O2h3LSZndDtod192bGFuX2VuKQogCQkJLyogTUFDIGxldmVsIHN0cmlwcGluZy4gKi8KIAkJCXN0bW1hY19yeF9od192bGFuKHByaXYsIHByaXYtJmd0O2h3LCBwLCBza2IpOwotCQllbHNlCi0JCQkvKiBEcml2ZXIgbGV2ZWwgc3RyaXBwaW5nLiAqLwotCQkJc3RtbWFjX3J4X3ZsYW4ocHJpdi0mZ3Q7ZGV2LCBza2IpOwogCiAJCXNrYi0mZ3Q7cHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIHByaXYtJmd0O2Rldik7CiAKQEAgLTc5NjQsOSAmIzQzOzc5NDEsOCBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsCiAJbmRldi0mZ3Q7ZmVhdHVyZXMgfD0gbmRldi0mZ3Q7aHdfZmVhdHVyZXMgfCBORVRJRl9GX0hJR0hETUE7CiAJbmRldi0mZ3Q7d2F0Y2hkb2dfdGltZW8gPSBtc2Vjc190b19qaWZmaWVzKHdhdGNoZG9nKTsKICNpZmRlZiBTVE1NQUNfVkxBTl9UQUdfVVNFRAotCS8qIEJvdGggbWFjMTAwIGFuZCBnbWFjIHN1cHBvcnQgcmVjZWl2ZSBWTEFOIHRhZyBkZXRlY3Rpb24gKi8KLQluZGV2LSZndDtmZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCB8IE5FVElGX0ZfSFdfVkxBTl9TVEFHX1JYOwogCWlmIChkd21hY19pc194bWFjKHByaXYtJmd0O3BsYXQtJmd0O2NvcmVfdHlwZSkpIHsKJiM0MzsJCW5kZXYtJmd0O2ZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYOwogCQluZGV2LSZndDtod19mZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWDsKIAkJcHJpdi0mZ3Q7aHctJmd0O2h3X3ZsYW5fZW4gPSB0cnVlOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDIyOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NDgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gRnV6emluZyBTZXNzaW9uIEV2YWx1YXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBwYXRjaCBzZXJpZXMgd2FycmFudHMgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiBMZXQmIzM5O3MgZGlnIGluLiBGaXJzdCwgSSYjMzk7bGwgYW5hbHl6ZSB0aGUgY2hhbmdlcyB0aGVtc2VsdmVzLCB0aGVuIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LgoKVGhlIHBhdGNoIHRvdWNoZXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLiBBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIHJlbW92ZWQgdGhlIGBzdG1tYWNfcnhfdmxhbmAgZnVuY3Rpb24sIHdoaWNoIGhhbmRsZWQgVkxBTiBzdHJpcHBpbmcgYXQgdGhlIGRyaXZlciBsZXZlbC4gVGhhdCBmdW5jdGlvbiBkaWQgdGhpbmdzIGxpa2UgcG9wcGluZyBWTEFOIHRhZ3MsIGBtZW1tb3ZlYCwgYHNrYl9wdWxsYCwgYW5kIGNhbGxpbmcgYF9fdmxhbl9od2FjY2VsX3B1dF90YWdgLiBJdCBhcHBlYXJzIHRoZXkmIzM5O3ZlIGFsc28gcmVtb3ZlZCB0aGUgZmFsbGJhY2sgY2FsbCB0byBgc3RtbWFjX3J4X3ZsYW5gIGZyb20gYHN0bW1hY19kaXNwYXRjaF9za2JfemNgIGFuZCBgc3RtbWFjX3J4YCB3aGVuIGhhcmR3YXJlIFZMQU4gc3VwcG9ydCBpc24mIzM5O3QgZW5hYmxlZCAoYCFwcml2LSZndDtody0mZ3Q7aHdfdmxhbl9lbmApLiBBbmQsIGluIGBfX3N0bW1hY19kdnJfcHJvYmVgLCB0aGV5JiMzOTtyZSBubyBsb25nZXIgZW5hYmxpbmcgYE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYIHwgTkVUSUZfRl9IV19WTEFOX1NUQUdfUlhgIHVuaXZlcnNhbGx5LCBvbmx5IG9uIFhNQUMgdmFyaWFudHMgKGBkd21hY19pc194bWFjYCkgd2hlcmUgaGFyZHdhcmUgc3RyaXBwaW5nIGlzIGFjdHVhbGx5IHN1cHBvcnRlZC4KCk5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzICp3aHkqIHRoZXkgcmVtb3ZlZCBgc3RtbWFjX3J4X3ZsYW5gIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgd2hldGhlciBpdHMgcmVtb3ZhbCBpbnRyb2R1Y2VzIGFueSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHN0bW1hY19yeF92bGFuYCB3YXMgZG9pbmcgYW5kIHdoZXRoZXIgdGhlc2UgY2hhbmdlcyBmdW5kYW1lbnRhbGx5IGFsdGVyIHRoZSBoYW5kbGluZyBvZiBWTEFOLXRhZ2dlZCBwYWNrZXRzLiBUaW1lIHRvIGdvIGNoZWNrIHRoYXQgY29kZSBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AgZGlyZWN0bHkuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfcnhfdmxhbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcxNgoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpczoKCioqQW5hbHl6aW5nIHRoZSBTVE1NQUMgVkxBTiBSZW1vdmFsKioKCk9rYXksIHNvIHRoZSBwYXRjaCByZW1vdmluZyBgc3RtbWFjX3J4X3ZsYW5gIGhhcyBhbHJlYWR5IG1hZGUgaXRzIHdheSBpbnRvIHRoZSB0cmVlLiBUaGF0JiMzOTtzIGdvb2Q7IGl0IHNpbXBsaWZpZXMgdGhpbmdzIGEgYml0LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyByZW1vdmFsIGluIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhlIFNUTU1BQyBkcml2ZXIuIEkgc2hvdWxkIHByb2JhYmx5IGZvY3VzIG9uIGhvdyB0aGUgVkxBTiBoYW5kbGluZyBpcyBub3cgbWFuYWdlZC4KCkxldCYjMzk7cyBkaXZlIGludG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHdvdWxkIGJlIGFyb3VuZCB0aGUgYXJlYXMgd2hlcmUgVkxBTiBmcmFtZXMgd2VyZSBwcmV2aW91c2x5IHByb2Nlc3NlZC4gU3BlY2lmaWNhbGx5LCB0aGUgdmljaW5pdHkgb2YgbGluZSA1NDAwIGFuZCBhZ2FpbiBhdCBsaW5lIDU5MDAgYXJlIGxpa2VseSBob3RzcG90cy4gSSYjMzk7bGwgc3RhcnQgdGhlcmUsIGFuZCByZWFkIGFyb3VuZCB0aG9zZSBsaW5lcyBmb3IgdGhlIHJlbGV2YW50IGxvZ2ljIGFuZCBkZXRlcm1pbmUgdGhlIG5ldyBmbG93LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9uYWxpdHkgd2FzIHJlbW92ZWQsIHdoYXQgaXQgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgbmV3IGNvbnNpZGVyYXRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBJIGJldCBJIHdpbGwgZmluZCB0aGUgbG9naWMgaXMgbm93IGhhbmRsZWQgaW5saW5lIHdpdGhpbiB0aGUgcmVjZWl2ZSBwYXRoLCBvciBwZXJoYXBzIGRlbGVnYXRlZCB0byBhIGRpZmZlcmVudCBmdW5jdGlvbi4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGltcGFjdCBvbiBleGlzdGluZyBjb25maWd1cmF0aW9ucyBhbmQgcG90ZW50aWFsIHBlcmZvcm1hbmNlIG9yIHN0YWJpbGl0eSBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MzgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzUzODA6XHRcdHUzMiBoYXNoO1xuNTM4MTpcdFxuNTM4MjpcdFx0c2tiID0gc3RtbWFjX2NvbnN0cnVjdF9za2JfemMoY2gsIHhkcCk7XG41MzgzOlx0XHRpZiAoIXNrYikge1xuNTM4NDpcdFx0XHRwcml2LVx1MDAzZXhzdGF0cy5yeF9kcm9wcGVkJiM0MzsmIzQzOztcbjUzODU6XHRcdFx0cmV0dXJuO1xuNTM4NjpcdFx0fVxuNTM4NzpcdFxuNTM4ODpcdFx0c3RtbWFjX2dldF9yeF9od3RzdGFtcChwcml2LCBwLCBucCwgc2tiKTtcbjUzODk6XHRcdGlmIChwcml2LVx1MDAzZWh3LVx1MDAzZWh3X3ZsYW5fZW4pXG41MzkwOlx0XHRcdC8qIE1BQyBsZXZlbCBzdHJpcHBpbmcuICovXG41MzkxOlx0XHRcdHN0bW1hY19yeF9od192bGFuKHByaXYsIHByaXYtXHUwMDNlaHcsIHAsIHNrYik7XG41MzkyOlx0XG41MzkzOlx0XHRza2ItXHUwMDNlcHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIHByaXYtXHUwMDNlZGV2KTtcbjUzOTQ6XHRcbjUzOTU6XHRcdGlmICh1bmxpa2VseSghY29lKSB8fCAhc3RtbWFjX2hhc19pcF9ldGhlcnR5cGUoc2tiKSlcbjUzOTY6XHRcdFx0c2tiX2NoZWNrc3VtX25vbmVfYXNzZXJ0KHNrYik7XG41Mzk3Olx0XHRlbHNlXG41Mzk4Olx0XHRcdHNrYi1cdTAwM2VpcF9zdW1tZWQgPSBDSEVDS1NVTV9VTk5FQ0VTU0FSWTtcbjUzOTk6XHRcbjU0MDA6XHRcdGlmICghc3RtbWFjX2dldF9yeF9oYXNoKHByaXYsIHAsIFx1MDAyNmhhc2gsIFx1MDAyNmhhc2hfdHlwZSkpXG41NDAxOlx0XHRcdHNrYl9zZXRfaGFzaChza2IsIGhhc2gsIGhhc2hfdHlwZSk7XG41NDAyOlx0XG41NDAzOlx0XHRza2JfcmVjb3JkX3J4X3F1ZXVlKHNrYiwgcXVldWUpO1xuNTQwNDpcdFx0bmFwaV9ncm9fcmVjZWl2ZShcdTAwMjZjaC1cdTAwM2VyeHR4X25hcGksIHNrYik7XG41NDA1Olx0XG41NDA2Olx0XHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFx1MDAyNnJ4cV9zdGF0cy1cdTAwM2VuYXBpX3N5bmNwKTtcbjU0MDc6XHRcdHU2NF9zdGF0c19pbmMoXHUwMDI2cnhxX3N0YXRzLVx1MDAzZW5hcGkucnhfcGt0X24pO1xuNTQwODpcdFx0dTY0X3N0YXRzX2FkZChcdTAwMjZyeHFfc3RhdHMtXHUwMDNlbmFwaS5yeF9ieXRlcywgbGVuKTtcbjU0MDk6XHRcdHU2NF9zdGF0c191cGRhdGVfZW5kKFx1MDAyNnJ4cV9zdGF0cy1cdTAwM2VuYXBpX3N5bmNwKTtcbjU0MTA6XHR9XG41NDExOlx0XG41NDEyOlx0c3RhdGljIGJvb2wgc3RtbWFjX3J4X3JlZmlsbF96YyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSwgdTMyIGJ1ZGdldClcbjU0MTM6XHR7XG41NDE0Olx0XHRzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xID0gXHUwMDI2cHJpdi1cdTAwM2VkbWFfY29uZi5yeF9xdWV1ZVtxdWV1ZV07XG41NDE1Olx0XHR1bnNpZ25lZCBpbnQgZW50cnkgPSByeF9xLVx1MDAzZWRpcnR5X3J4O1xuNTQxNjpcdFx0c3RydWN0IGRtYV9kZXNjICpyeF9kZXNjID0gTlVMTDtcbjU0MTc6XHRcdGJvb2wgcmV0ID0gdHJ1ZTtcbjU0MTg6XHRcbjU0MTk6XHRcdGJ1ZGdldCA9IG1pbihidWRnZXQsIHN0bW1hY19yeF9kaXJ0eShwcml2LCBxdWV1ZSkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODMzCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gZGVlcCBpbiBteSBhcmVhIG9mIGV4cGVydGlzZToKCioqU3RyYXRlZ2ljIFJhbmdlIENvbnNpZGVyYXRpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTt2ZSBnb3QgYSBzaXR1YXRpb24gaGVyZSB3aGVyZSB0aGUgYW5hbHlzaXMgaXMgcG9pbnRpbmcgaW4gYSBwYXJ0aWN1bGFyIGRpcmVjdGlvbi4gTXkgaW1tZWRpYXRlIHJlYWN0aW9uIGlzbiYjMzk7dCBqdXN0IHRvIGFjY2VwdCB0aGUgbW9zdCBvYnZpb3VzIGNvbmNsdXNpb24sIHRob3VnaC4gVGhlIGRhdGEgc3VnZ2VzdHMgc29tZXRoaW5nIHdpdGhpbiB0aGUgcGFyYW1ldGVycyB3ZSBoYXZlLCBidXQgSSYjMzk7bSB0aGlua2luZyBzdHJhdGVnaWNhbGx5LiBJIHdhbnQgdG8gYmUgdGhvcm91Z2guIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgZGF0YSBhcm91bmQgdGhlIDU4ODAtNTkxMCByYW5nZSBzcGVjaWZpY2FsbHkuIEl0JiMzOTtzIG5vdCBuZWNlc3NhcmlseSB0aGUgcHJpbWFyeSBmb2N1cywgb3IgdGhlIG1vc3Qgb2J2aW91cyByYW5nZSwgYnV0IGV4cGVyaWVuY2UgdGVsbHMgbWUgaXQmIzM5O3Mgb2Z0ZW4gcHJ1ZGVudCB0byBleHBsb3JlIHRoZXNlIGFkamFjZW50IGFyZWFzIGZvciBwb3RlbnRpYWwgbnVhbmNlcywgc2Vjb25kYXJ5IGVmZmVjdHMsIG9yIGFsdGVybmF0aXZlIGV4cGxhbmF0aW9ucy4gSXQgbWlnaHQgY29uZmlybSB0aGUgcHJpbWFyeSBmaW5kaW5ncywgb3IgdGhyb3cgdXAgYSB3cmlua2xlIHRvIGJlIGV4cGxvcmVkIGZ1cnRoZXIuIEVpdGhlciB3YXksIGl0JiMzOTtzIGEgZ29vZCBjcm9zc2NoZWNrLiBJJiMzOTttIG9wZXJhdGluZyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IGJlaW5nIG1ldGljdWxvdXMgdXAgZnJvbnQgc2F2ZXMgYSBsb3Qgb2YgdGltZSBhbmQgcG90ZW50aWFsIHJld29yayBkb3duIHRoZSBsaW5lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1ODc1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzU4NzU6XHRcdFx0XHRjb250aW51ZTtcbjU4NzY6XHRcbjU4Nzc6XHRcdFx0LyogR290IGVudGlyZSBwYWNrZXQgaW50byBTS0IuIEZpbmlzaCBpdC4gKi9cbjU4Nzg6XHRcbjU4Nzk6XHRcdFx0c3RtbWFjX2dldF9yeF9od3RzdGFtcChwcml2LCBwLCBucCwgc2tiKTtcbjU4ODA6XHRcbjU4ODE6XHRcdFx0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlaHdfdmxhbl9lbilcbjU4ODI6XHRcdFx0XHQvKiBNQUMgbGV2ZWwgc3RyaXBwaW5nLiAqL1xuNTg4MzpcdFx0XHRcdHN0bW1hY19yeF9od192bGFuKHByaXYsIHByaXYtXHUwMDNlaHcsIHAsIHNrYik7XG41ODg0Olx0XG41ODg1Olx0XHRcdHNrYi1cdTAwM2Vwcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgcHJpdi1cdTAwM2VkZXYpO1xuNTg4NjpcdFxuNTg4NzpcdFx0XHRpZiAodW5saWtlbHkoIWNvZSkgfHwgIXN0bW1hY19oYXNfaXBfZXRoZXJ0eXBlKHNrYikgfHxcbjU4ODg6XHRcdFx0ICAgIChzdGF0dXMgXHUwMDI2IGNzdW1fbm9uZSkpXG41ODg5Olx0XHRcdFx0c2tiX2NoZWNrc3VtX25vbmVfYXNzZXJ0KHNrYik7XG41ODkwOlx0XHRcdGVsc2VcbjU4OTE6XHRcdFx0XHRza2ItXHUwMDNlaXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlk7XG41ODkyOlx0XG41ODkzOlx0XHRcdGlmICghc3RtbWFjX2dldF9yeF9oYXNoKHByaXYsIHAsIFx1MDAyNmhhc2gsIFx1MDAyNmhhc2hfdHlwZSkpXG41ODk0Olx0XHRcdFx0c2tiX3NldF9oYXNoKHNrYiwgaGFzaCwgaGFzaF90eXBlKTtcbjU4OTU6XHRcbjU4OTY6XHRcdFx0c2tiX3JlY29yZF9yeF9xdWV1ZShza2IsIHF1ZXVlKTtcbjU4OTc6XHRcdFx0bmFwaV9ncm9fcmVjZWl2ZShcdTAwMjZjaC1cdTAwM2VyeF9uYXBpLCBza2IpO1xuNTg5ODpcdFx0XHRza2IgPSBOVUxMO1xuNTg5OTpcdFxuNTkwMDpcdFx0XHRyeF9wYWNrZXRzJiM0MzsmIzQzOztcbjU5MDE6XHRcdFx0cnhfYnl0ZXMgJiM0Mzs9IGxlbjtcbjU5MDI6XHRcdFx0Y291bnQmIzQzOyYjNDM7O1xuNTkwMzpcdFx0fVxuNTkwNDpcdFxuNTkwNTpcdFx0aWYgKHN0YXR1cyBcdTAwMjYgcnhfbm90X2xzIHx8IHNrYikge1xuNTkwNjpcdFx0XHRyeF9xLVx1MDAzZXN0YXRlX3NhdmVkID0gdHJ1ZTtcbjU5MDc6XHRcdFx0cnhfcS1cdTAwM2VzdGF0ZS5za2IgPSBza2I7XG41OTA4Olx0XHRcdHJ4X3EtXHUwMDNlc3RhdGUuZXJyb3IgPSBlcnJvcjtcbjU5MDk6XHRcdFx0cnhfcS1cdTAwM2VzdGF0ZS5sZW4gPSBsZW47XG41OTEwOlx0XHR9XG41OTExOlx0XG41OTEyOlx0XHRzdG1tYWNfZmluYWxpemVfeGRwX3J4KHByaXYsIHhkcF9zdGF0dXMpO1xuNTkxMzpcdFxuNTkxNDpcdFx0c3RtbWFjX3J4X3JlZmlsbChwcml2LCBxdWV1ZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDIyOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3MzUKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipEaXZpbmcgaW50byB0aGUgU1RNTUFDIERyaXZlciBQcm9iZSoqCgpPa2F5LCB0aW1lIHRvIGdldCB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGBfX3N0bW1hY19kdnJfcHJvYmVgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIEkgc3VzcGVjdCB0aGUgaXNzdWUgbWlnaHQgYmUgbHVya2luZyBzb21ld2hlcmUgYXJvdW5kIGxpbmVzIDc5MzUgdGhyb3VnaCA3OTY1LiBUaGlzIHJhbmdlIGxpa2VseSBjb3ZlcnMgYSBjcml0aWNhbCBzZWN0aW9uIHdpdGhpbiB0aGUgcHJvYmUgcm91dGluZTsgbWF5YmUgYW4gaW5pdGlhbGl6YXRpb24gc3RlcCwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgb3IgZGV2aWNlIGNvbmZpZ3VyYXRpb24uIEdpdmVuIHRoZSB0eXBpY2FsIGZsb3cgb2YgcHJvYmUgZnVuY3Rpb25zIGluIExpbnV4IGtlcm5lbCBkcml2ZXJzLCB0aGF0IGFyZWEgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGRlYnVnZ2luZy4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyB0aGVyZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzkzNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs3OTM1Olx0XHRcdFx0fVxuNzkzNjpcdFxuNzkzNzpcdFx0XHRcdHByaXYtXHUwMDNlZG1hX2NhcC5ob3N0X2RtYV93aWR0aCA9IDMyO1xuNzkzODpcdFx0XHR9XG43OTM5Olx0XHR9XG43OTQwOlx0XG43OTQxOlx0XHRuZGV2LVx1MDAzZWZlYXR1cmVzIHw9IG5kZXYtXHUwMDNlaHdfZmVhdHVyZXMgfCBORVRJRl9GX0hJR0hETUE7XG43OTQyOlx0XHRuZGV2LVx1MDAzZXdhdGNoZG9nX3RpbWVvID0gbXNlY3NfdG9famlmZmllcyh3YXRjaGRvZyk7XG43OTQzOlx0I2lmZGVmIFNUTU1BQ19WTEFOX1RBR19VU0VEXG43OTQ0Olx0XHRpZiAoZHdtYWNfaXNfeG1hYyhwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlKSkge1xuNzk0NTpcdFx0XHRuZGV2LVx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYO1xuNzk0NjpcdFx0XHRuZGV2LVx1MDAzZWh3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYO1xuNzk0NzpcdFx0XHRwcml2LVx1MDAzZWh3LVx1MDAzZWh3X3ZsYW5fZW4gPSB0cnVlO1xuNzk0ODpcdFx0fVxuNzk0OTpcdFx0aWYgKHByaXYtXHUwMDNlZG1hX2NhcC52bGhhc2gpIHtcbjc5NTA6XHRcdFx0bmRldi1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fQ1RBR19GSUxURVI7XG43OTUxOlx0XHRcdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX1NUQUdfRklMVEVSO1xuNzk1MjpcdFx0fVxuNzk1MzpcdFx0aWYgKHByaXYtXHUwMDNlZG1hX2NhcC52bGlucylcbjc5NTQ6XHRcdFx0bmRldi1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fQ1RBR19UWDtcbjc5NTU6XHQjZW5kaWZcbjc5NTY6XHRcdHByaXYtXHUwMDNlbXNnX2VuYWJsZSA9IG5ldGlmX21zZ19pbml0KGRlYnVnLCBkZWZhdWx0X21zZ19sZXZlbCk7XG43OTU3Olx0XG43OTU4Olx0XHRwcml2LVx1MDAzZXhzdGF0cy50aHJlc2hvbGQgPSB0Yztcbjc5NTk6XHRcbjc5NjA6XHRcdC8qIEluaXRpYWxpemUgUlNTICovXG43OTYxOlx0XHRyeHEgPSBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTtcbjc5NjI6XHRcdG5ldGRldl9yc3Nfa2V5X2ZpbGwocHJpdi1cdTAwM2Vyc3Mua2V5LCBzaXplb2YocHJpdi1cdTAwM2Vyc3Mua2V5KSk7XG43OTYzOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHByaXYtXHUwMDNlcnNzLnRhYmxlKTsgaSYjNDM7JiM0MzspXG43OTY0Olx0XHRcdHByaXYtXHUwMDNlcnNzLnRhYmxlW2ldID0gZXRodG9vbF9yeGZoX2luZGlyX2RlZmF1bHQoaSwgcnhxKTtcbjc5NjU6XHRcbjc5NjY6XHRcdGlmIChwcml2LVx1MDAzZWRtYV9jYXAucnNzZW4gXHUwMDI2XHUwMDI2IHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vyc3NfZW4pXG43OTY3Olx0XHRcdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9SWEhBU0g7XG43OTY4Olx0XG43OTY5Olx0XHRuZGV2LVx1MDAzZXZsYW5fZmVhdHVyZXMgfD0gbmRldi1cdTAwM2VmZWF0dXJlcztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMjI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYxNwoJCQkJCQkJb3V0cHV0OiAxNDcKCQkJCQkJCXRob3VnaHRzOiAzNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWTEFOIFN0cmlwcGluZyBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoIGZvciB0aGUgc3RtbWFjIGRyaXZlci4gSXQgc2VlbXMgbGlrZSB3ZSYjMzk7cmUgc3RyZWFtbGluaW5nIHRoZSBWTEFOIHJlY2VpdmUgcGF0aC4gVGhlIGdvYWwgaXMgdG8gcmVtb3ZlIHRoZSBzb2Z0d2FyZS1sZXZlbCBWTEFOIHN0cmlwcGluZyBlbXVsYXRpb24sIGBzdG1tYWNfcnhfdmxhbmAsIGFuZCBvbmx5IGVuYWJsZSB0aGUgaGFyZHdhcmUgVkxBTiBzdHJpcHBpbmcgZmxhZywgYE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYYCwgd2hlbiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSAoYGR3bWFjX2lzX3htYWNgKSBhY3R1YWxseSBzdXBwb3J0cyBpdC4KCk5vdywgbXkgaW5pdGlhbCBjb25jZXJuLCBhcyBhbHdheXMsIGlzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBTbywgbGV0JiMzOTtzIHJ1biB0aHJvdWdoIHRoZSB1c3VhbCBjaGVja2xpc3Q6CgoxLiAgKipLZXJuZWwgU3RydWN0dXJlcyB0byBVc2Vyc3BhY2U6KiogRG9lcyB0aGlzIGNoYW5nZSBhbnl0aGluZyB3aGVyZSB3ZSBtaWdodCBleHBvc2UgdW5pbml0aWFsaXplZCBmaWVsZHMgb3IgcGFkZGluZyB0byB1c2Vyc3BhY2U/IE5vLCB0aGF0JiMzOTtzIG5vdCBhIGNvbmNlcm4gaGVyZS4KMi4gICoqQ29uZGl0aW9uYWwgTG9naWMvQnJhbmNoaW5nOioqIERvZXMgdGhlIHBhdGNoIGludHJvZHVjZSBhbnkgbmV3IGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgcmVsaWVzIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHN0cnVjdCBmaWVsZHM/IE5vcGUuCjMuICAqKkNvbXBsZXggRGF0YSBTdHJ1Y3R1cmUgSW5pdGlhbGl6YXRpb246KiogQXJlIHdlIGFsbG9jYXRpbmcgb3IgaW5pdGlhbGl6aW5nIGFueSBuZXcgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZCBsYXRlcj8gTm8gaXNzdWVzIGRldGVjdGVkIGhlcmUgZWl0aGVyLgo0LiAgKipCb3VuZHMgQ2hlY2tzL0J1ZmZlciBBY2Nlc3M6KiogQW55IG1vZGlmaWNhdGlvbiB0byBib3VuZHMgY2hlY2tzIG9yIGxvZ2ljIHRoYXQgbWlnaHQgYWxsb3cgc3Vycm91bmRpbmcgY29kZSB0byByZWFkIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycz8gQWN0dWFsbHksIGl0IHJlbW92ZXMgY29kZSB0aGF0IHdvdWxkIGhhdmUgYmVlbiBhIHBvdGVudGlhbCBzb3VyY2Ugb2YgdGhpcyBpc3N1ZSAoYG1lbW1vdmVgIGFuZCBgc2tiX3B1bGxgIGluIGBzdG1tYWNfcnhfdmxhbmApLiBQYWNrZXRzIHdpdGhvdXQgaGFyZHdhcmUgc3RyaXBwaW5nIHdpbGwgc2ltcGx5IHJldGFpbiB0aGVpciBWTEFOIGhlYWRlciBhbmQgYmUgcHJvY2Vzc2VkIGZ1cnRoZXIgdXAgdGhlIHN0YWNrLCBubyBkcml2ZXIgaW50ZXJ2ZW50aW9uIG5lZWRlZC4KClNvLCBpbiBzaG9ydCwgSSYjMzk7bSBub3Qgc2VlaW5nIGFueSBpbW1lZGlhdGUgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIE5vIEtNU0FOIGlzIG5lY2Vzc2FyeSBmb3IgdGhpcyBjaGFuZ2UuIFRoZSByaXNrIG9mIHN0YW5kYXJkIHRlc3RpbmcgbGlrZSBLQVNBTiBpcyBuZWdsaWdpYmxlLiBLQVNBTiBzaG91bGQgYmUgbW9yZSB0aGFuIGFkZXF1YXRlIHRvIGNhdGNoIGFueSBvdXQtb2YtYm91bmRzLCB1c2UtYWZ0ZXItZnJlZSwgb3Igb3RoZXIgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuCgpJdCYjMzk7cyBhbGwgbG9va2luZyBnb29kLiBJIGFtIGhhcHB5IHdpdGggdGhlIHJlc3VsdHMgb2YgdGhlIHBhdGNoJiMzOTtzIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAyMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIHNvZnR3YXJlLWJhc2VkIFZMQU4gdGFnIHN0cmlwcGluZyAoYHN0bW1hY19yeF92bGFuYCkgZnJvbSB0aGUgc3RtbWFjIG5ldHdvcmsgZHJpdmVyJiMzOTtzIFJYIHBhdGggYW5kIHJlc3RyaWN0cyBhZHZlcnRpc2luZyBgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlhgIHRvIGhhcmR3YXJlIHRoYXQgYWN0dWFsbHkgc3VwcG9ydHMgSFcgVkxBTiBzdHJpcHBpbmcgKGBkd21hY19pc194bWFjYCkuIFxuXG5ObyBuZXcgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBrZXJuZWwtdG8tdXNlciBjb3BpZXMsIHBhZGRpbmcgYnl0ZXMsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgcGF0aHMgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZC4gVGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgc29mdHdhcmUtYmFzZWQgVkxBTiB0YWcgc3RyaXBwaW5nIChgc3RtbWFjX3J4X3ZsYW5gKSBmcm9tIHRoZSBzdG1tYWMgbmV0d29yayBkcml2ZXImIzM5O3MgUlggcGF0aCBhbmQgcmVzdHJpY3RzIGFkdmVydGlzaW5nIGBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWGAgdG8gaGFyZHdhcmUgdGhhdCBhY3R1YWxseSBzdXBwb3J0cyBIVyBWTEFOIHN0cmlwcGluZyAoYGR3bWFjX2lzX3htYWNgKS4gXG5cbk5vIG5ldyBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGtlcm5lbC10by11c2VyIGNvcGllcywgcGFkZGluZyBieXRlcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCBwYXRocyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIHRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxMzo0Mi41OTE2Mjc5NjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTc3OTQyMzcwOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1ZFTkRPUl9TVE1JQ1JPXCIsXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUExBVEZPUk1cIixcbiAgICBcIlZMQU5fODAyMVFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfZHZyX3Byb2JlXCIsXG4gICAgXCJzdG1tYWNfcGx0ZnJfcHJvYmVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgc29mdHdhcmUtYmFzZWQgVkxBTiB0YWcgc3RyaXBwaW5nIChgc3RtbWFjX3J4X3ZsYW5gKSBmcm9tIHRoZSBzdG1tYWMgbmV0d29yayBkcml2ZXIncyBSWCBwYXRoIGFuZCByZXN0cmljdHMgYWR2ZXJ0aXNpbmcgYE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYYCB0byBoYXJkd2FyZSB0aGF0IGFjdHVhbGx5IHN1cHBvcnRzIEhXIFZMQU4gc3RyaXBwaW5nIChgZHdtYWNfaXNfeG1hY2ApLiBcXG5cXG5ObyBuZXcgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBrZXJuZWwtdG8tdXNlciBjb3BpZXMsIHBhZGRpbmcgYnl0ZXMsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgcGF0aHMgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZC4gVGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhbHRlcnMgVkxBTiBoYW5kbGluZyBpbiB0aGUgcmVjZWl2ZSBwYXRoIG9mIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBJdCByZW1vdmVzIGFydGlmaWNpYWwgc29mdHdhcmUgVkxBTiBzdHJpcHBpbmcgKHN0bW1hY19yeF92bGFuKSBmcm9tIHN0bW1hY19yeCBhbmQgc3RtbWFjX2Rpc3BhdGNoX3NrYl96YywgYW5kIHVwZGF0ZXMgZmVhdHVyZSBhZHZlcnRpc2luZyBkdXJpbmcgZHJpdmVyIHByb2JlIChfX3N0bW1hY19kdnJfcHJvYmUpIHRvIG9ubHkgc2V0IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYIHdoZW4gaGFyZHdhcmUgVkxBTiBzdHJpcHBpbmcgaXMgc3VwcG9ydGVkLiBTVE1NQUMgaGFyZHdhcmUgKGUuZy4gQWxsd2lubmVyIHN1bjhpIEVNQUMpIGlzIHN1cHBvcnRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBzbyB0aGVzZSBjaGFuZ2VzIGFmZmVjdCByZWFjaGFibGUga2VybmVsIG5ldHdvcmsgZGF0YSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTM6NDIuNTkxNjM1ODQ3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQyNzk0ODM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZGFiZTljYWZiODQ5ZTQzZTFlMDFjYjNiNWVjNzU1NjhhOTg5MTQ3OFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIFNlcCAxIDIyOjEzOjQwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuaW5kZXggYjJiN2QwMjQyZGQzYy4uMmUzYjBjZjEwZDY2NyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbkBAIC01MDIxLDI0ICs1MDIxLDYgQEAgc3RhdGljIG5ldGRldl9mZWF0dXJlc190IHN0bW1hY19mZWF0dXJlc19jaGVjayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRyZXR1cm4gdmxhbl9mZWF0dXJlc19jaGVjayhza2IsIGZlYXR1cmVzKTtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgc3RtbWFjX3J4X3ZsYW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4te1xcbi1cXHRzdHJ1Y3Qgdmxhbl9ldGhoZHIgKnZldGggPSBza2Jfdmxhbl9ldGhfaGRyKHNrYik7XFxuLVxcdF9fYmUxNiB2bGFuX3Byb3RvID0gdmV0aC1cXHUwMDNlaF92bGFuX3Byb3RvO1xcbi1cXHR1MTYgdmxhbmlkO1xcbi1cXG4tXFx0aWYgKCh2bGFuX3Byb3RvID09IGh0b25zKEVUSF9QXzgwMjFRKSBcXHUwMDI2XFx1MDAyNlxcbi1cXHQgICAgIGRldi1cXHUwMDNlZmVhdHVyZXMgXFx1MDAyNiBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCkgfHxcXG4tXFx0ICAgICh2bGFuX3Byb3RvID09IGh0b25zKEVUSF9QXzgwMjFBRCkgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgICBkZXYtXFx1MDAzZWZlYXR1cmVzIFxcdTAwMjYgTkVUSUZfRl9IV19WTEFOX1NUQUdfUlgpKSB7XFxuLVxcdFxcdC8qIHBvcCB0aGUgdmxhbiB0YWcgKi9cXG4tXFx0XFx0dmxhbmlkID0gbnRvaHModmV0aC1cXHUwMDNlaF92bGFuX1RDSSk7XFxuLVxcdFxcdG1lbW1vdmUoc2tiLVxcdTAwM2VkYXRhICsgVkxBTl9ITEVOLCB2ZXRoLCBFVEhfQUxFTiAqIDIpO1xcbi1cXHRcXHRza2JfcHVsbChza2IsIFZMQU5fSExFTik7XFxuLVxcdFxcdF9fdmxhbl9od2FjY2VsX3B1dF90YWcoc2tiLCB2bGFuX3Byb3RvLCB2bGFuaWQpO1xcbi1cXHR9XFxuLX1cXG4tXFxuIC8qKlxcbiAgKiBzdG1tYWNfcnhfcmVmaWxsIC0gcmVmaWxsIHVzZWQgc2tiIHByZWFsbG9jYXRlZCBidWZmZXJzXFxuICAqIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG5AQCAtNTQwNyw5ICs1Mzg5LDcgQEAgc3RhdGljIHZvaWQgc3RtbWFjX2Rpc3BhdGNoX3NrYl96YyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUzMiBxdWV1ZSxcXG4gXFx0aWYgKHByaXYtXFx1MDAzZWh3LVxcdTAwM2Vod192bGFuX2VuKVxcbiBcXHRcXHQvKiBNQUMgbGV2ZWwgc3RyaXBwaW5nLiAqL1xcbiBcXHRcXHRzdG1tYWNfcnhfaHdfdmxhbihwcml2LCBwcml2LVxcdTAwM2VodywgcCwgc2tiKTtcXG4tXFx0ZWxzZVxcbi1cXHRcXHQvKiBEcml2ZXIgbGV2ZWwgc3RyaXBwaW5nLiAqL1xcbi1cXHRcXHRzdG1tYWNfcnhfdmxhbihwcml2LVxcdTAwM2VkZXYsIHNrYik7XFxuK1xcbiBcXHRza2ItXFx1MDAzZXByb3RvY29sID0gZXRoX3R5cGVfdHJhbnMoc2tiLCBwcml2LVxcdTAwM2VkZXYpO1xcbiBcXG4gXFx0aWYgKHVubGlrZWx5KCFjb2UpIHx8ICFzdG1tYWNfaGFzX2lwX2V0aGVydHlwZShza2IpKVxcbkBAIC01OTAxLDkgKzU4ODEsNiBAQCBzdGF0aWMgaW50IHN0bW1hY19yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGludCBsaW1pdCwgdTMyIHF1ZXVlKVxcbiBcXHRcXHRpZiAocHJpdi1cXHUwMDNlaHctXFx1MDAzZWh3X3ZsYW5fZW4pXFxuIFxcdFxcdFxcdC8qIE1BQyBsZXZlbCBzdHJpcHBpbmcuICovXFxuIFxcdFxcdFxcdHN0bW1hY19yeF9od192bGFuKHByaXYsIHByaXYtXFx1MDAzZWh3LCBwLCBza2IpO1xcbi1cXHRcXHRlbHNlXFxuLVxcdFxcdFxcdC8qIERyaXZlciBsZXZlbCBzdHJpcHBpbmcuICovXFxuLVxcdFxcdFxcdHN0bW1hY19yeF92bGFuKHByaXYtXFx1MDAzZWRldiwgc2tiKTtcXG4gXFxuIFxcdFxcdHNrYi1cXHUwMDNlcHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIHByaXYtXFx1MDAzZWRldik7XFxuIFxcbkBAIC03OTY0LDkgKzc5NDEsOCBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuIFxcdG5kZXYtXFx1MDAzZWZlYXR1cmVzIHw9IG5kZXYtXFx1MDAzZWh3X2ZlYXR1cmVzIHwgTkVUSUZfRl9ISUdIRE1BO1xcbiBcXHRuZGV2LVxcdTAwM2V3YXRjaGRvZ190aW1lbyA9IG1zZWNzX3RvX2ppZmZpZXMod2F0Y2hkb2cpO1xcbiAjaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURcXG4tXFx0LyogQm90aCBtYWMxMDAgYW5kIGdtYWMgc3VwcG9ydCByZWNlaXZlIFZMQU4gdGFnIGRldGVjdGlvbiAqL1xcbi1cXHRuZGV2LVxcdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCB8IE5FVElGX0ZfSFdfVkxBTl9TVEFHX1JYO1xcbiBcXHRpZiAoZHdtYWNfaXNfeG1hYyhwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUpKSB7XFxuK1xcdFxcdG5kZXYtXFx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYO1xcbiBcXHRcXHRuZGV2LVxcdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWDtcXG4gXFx0XFx0cHJpdi1cXHUwMDNlaHctXFx1MDAzZWh3X3ZsYW5fZW4gPSB0cnVlO1xcbiBcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDIyOjEzOjQzLjkzNTEzMjI1NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6ODk5MDAwMzk4MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1ZFTkRPUl9TVE1JQ1JPXCIsXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUExBVEZPUk1cIixcbiAgICBcIlZMQU5fODAyMVFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfZHZyX3Byb2JlXCIsXG4gICAgXCJzdG1tYWNfcGx0ZnJfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhbHRlcnMgVkxBTiBoYW5kbGluZyBpbiB0aGUgcmVjZWl2ZSBwYXRoIG9mIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBJdCByZW1vdmVzIGFydGlmaWNpYWwgc29mdHdhcmUgVkxBTiBzdHJpcHBpbmcgKHN0bW1hY19yeF92bGFuKSBmcm9tIHN0bW1hY19yeCBhbmQgc3RtbWFjX2Rpc3BhdGNoX3NrYl96YywgYW5kIHVwZGF0ZXMgZmVhdHVyZSBhZHZlcnRpc2luZyBkdXJpbmcgZHJpdmVyIHByb2JlIChfX3N0bW1hY19kdnJfcHJvYmUpIHRvIG9ubHkgc2V0IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYIHdoZW4gaGFyZHdhcmUgVkxBTiBzdHJpcHBpbmcgaXMgc3VwcG9ydGVkLiBTVE1NQUMgaGFyZHdhcmUgKGUuZy4gQWxsd2lubmVyIHN1bjhpIEVNQUMpIGlzIHN1cHBvcnRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBzbyB0aGVzZSBjaGFuZ2VzIGFmZmVjdCByZWFjaGFibGUga2VybmVsIG5ldHdvcmsgZGF0YSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGFiZTljYWZiODQ5ZTQzZTFlMDFjYjNiNWVjNzU1NjhhOTg5MTQ3OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDEgMjI6MTM6NDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggYjJiN2QwMjQyZGQzYy4uMmUzYjBjZjEwZDY2NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC01MDIxLDI0ICs1MDIxLDYgQEAgc3RhdGljIG5ldGRldl9mZWF0dXJlc190IHN0bW1hY19mZWF0dXJlc19jaGVjayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0cmV0dXJuIHZsYW5fZmVhdHVyZXNfY2hlY2soc2tiLCBmZWF0dXJlcyk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHN0bW1hY19yeF92bGFuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4te1xuLVx0c3RydWN0IHZsYW5fZXRoaGRyICp2ZXRoID0gc2tiX3ZsYW5fZXRoX2hkcihza2IpO1xuLVx0X19iZTE2IHZsYW5fcHJvdG8gPSB2ZXRoLVx1MDAzZWhfdmxhbl9wcm90bztcbi1cdHUxNiB2bGFuaWQ7XG4tXG4tXHRpZiAoKHZsYW5fcHJvdG8gPT0gaHRvbnMoRVRIX1BfODAyMVEpIFx1MDAyNlx1MDAyNlxuLVx0ICAgICBkZXYtXHUwMDNlZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYKSB8fFxuLVx0ICAgICh2bGFuX3Byb3RvID09IGh0b25zKEVUSF9QXzgwMjFBRCkgXHUwMDI2XHUwMDI2XG4tXHQgICAgIGRldi1cdTAwM2VmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9IV19WTEFOX1NUQUdfUlgpKSB7XG4tXHRcdC8qIHBvcCB0aGUgdmxhbiB0YWcgKi9cbi1cdFx0dmxhbmlkID0gbnRvaHModmV0aC1cdTAwM2VoX3ZsYW5fVENJKTtcbi1cdFx0bWVtbW92ZShza2ItXHUwMDNlZGF0YSArIFZMQU5fSExFTiwgdmV0aCwgRVRIX0FMRU4gKiAyKTtcbi1cdFx0c2tiX3B1bGwoc2tiLCBWTEFOX0hMRU4pO1xuLVx0XHRfX3ZsYW5faHdhY2NlbF9wdXRfdGFnKHNrYiwgdmxhbl9wcm90bywgdmxhbmlkKTtcbi1cdH1cbi19XG4tXG4gLyoqXG4gICogc3RtbWFjX3J4X3JlZmlsbCAtIHJlZmlsbCB1c2VkIHNrYiBwcmVhbGxvY2F0ZWQgYnVmZmVyc1xuICAqIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmVcbkBAIC01NDA3LDkgKzUzODksNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZGlzcGF0Y2hfc2tiX3pjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlLFxuIFx0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlaHdfdmxhbl9lbilcbiBcdFx0LyogTUFDIGxldmVsIHN0cmlwcGluZy4gKi9cbiBcdFx0c3RtbWFjX3J4X2h3X3ZsYW4ocHJpdiwgcHJpdi1cdTAwM2VodywgcCwgc2tiKTtcbi1cdGVsc2Vcbi1cdFx0LyogRHJpdmVyIGxldmVsIHN0cmlwcGluZy4gKi9cbi1cdFx0c3RtbWFjX3J4X3ZsYW4ocHJpdi1cdTAwM2VkZXYsIHNrYik7XG4rXG4gXHRza2ItXHUwMDNlcHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIHByaXYtXHUwMDNlZGV2KTtcbiBcbiBcdGlmICh1bmxpa2VseSghY29lKSB8fCAhc3RtbWFjX2hhc19pcF9ldGhlcnR5cGUoc2tiKSlcbkBAIC01OTAxLDkgKzU4ODEsNiBAQCBzdGF0aWMgaW50IHN0bW1hY19yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGludCBsaW1pdCwgdTMyIHF1ZXVlKVxuIFx0XHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2Vod192bGFuX2VuKVxuIFx0XHRcdC8qIE1BQyBsZXZlbCBzdHJpcHBpbmcuICovXG4gXHRcdFx0c3RtbWFjX3J4X2h3X3ZsYW4ocHJpdiwgcHJpdi1cdTAwM2VodywgcCwgc2tiKTtcbi1cdFx0ZWxzZVxuLVx0XHRcdC8qIERyaXZlciBsZXZlbCBzdHJpcHBpbmcuICovXG4tXHRcdFx0c3RtbWFjX3J4X3ZsYW4ocHJpdi1cdTAwM2VkZXYsIHNrYik7XG4gXG4gXHRcdHNrYi1cdTAwM2Vwcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgcHJpdi1cdTAwM2VkZXYpO1xuIFxuQEAgLTc5NjQsOSArNzk0MSw4IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbiBcdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gbmRldi1cdTAwM2Vod19mZWF0dXJlcyB8IE5FVElGX0ZfSElHSERNQTtcbiBcdG5kZXYtXHUwMDNld2F0Y2hkb2dfdGltZW8gPSBtc2Vjc190b19qaWZmaWVzKHdhdGNoZG9nKTtcbiAjaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURcbi1cdC8qIEJvdGggbWFjMTAwIGFuZCBnbWFjIHN1cHBvcnQgcmVjZWl2ZSBWTEFOIHRhZyBkZXRlY3Rpb24gKi9cbi1cdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfUlggfCBORVRJRl9GX0hXX1ZMQU5fU1RBR19SWDtcbiBcdGlmIChkd21hY19pc194bWFjKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUpKSB7XG4rXHRcdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfUlg7XG4gXHRcdG5kZXYtXHUwMDNlaHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfUlg7XG4gXHRcdHByaXYtXHUwMDNlaHctXHUwMDNlaHdfdmxhbl9lbiA9IHRydWU7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxMzo0My45MzUxMzM1NDVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1Mzc4MDk4OTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIFdvcnRoaW5lc3MqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIHBhdGNoIG1vZGlmaWVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hhdCdzIGBzdG1tYWNgP1wiIElzIHRoaXMgc29tZXRoaW5nIEkgY2FuIGV2ZW4gdG91Y2ggaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lPyBJcyBpdCBqdXN0IGEgcGh5c2ljYWwgU29DIHRoaW5nLCBzb21lIGRlZGljYXRlZCBoYXJkd2FyZT8gT3IgaXMgdGhlcmUgYW4gZW11bGF0aW9uIGxheWVyLCBvciBjYW4gSSByZWFjaCBpdCB2aWEgc3l6a2FsbGVyP1xuXG5Ib2xkIG9uLi4uIEkgbmVlZCB0byByZW1lbWJlciB0aGUgcnVsZS4gVGhlIGNyaXRlcmlhIGZvciBgV29ydGhGdXp6aW5nPWZhbHNlYCBpcyBpbXBvcnRhbnQgaGVyZS4gSXQncyBhYm91dCBjb2RlIHBhdGhzIHRoYXQgYXJlIGluYWNjZXNzaWJsZSBpbiB0aGVzZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2hlbiB0aGUgc29mdHdhcmUgZW11bGF0ZXMgaGFyZHdhcmUsIGxpa2Ugd2l0aCBVU0IgZ2FkZ2V0IG9yIG1hYzgwMjExX2h3c2ltLiBJdCBhbHNvIGVsaW1pbmF0ZXMgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgUENJZSBjYXJkcywgc3VjaCBhcyB2ZW5kb3Itc3BlY2lmaWMgc3dpdGNoL1NtYXJ0TklDL0dQVSBkcml2ZXJzIChtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkuXG5cblRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzLCBkb2VzIFFFTVUgKmVtdWxhdGUqIGBzdG1tYWNgPyBPciBpcyBgc3RtbWFjYCBhIHBsYXRmb3JtIGRyaXZlciwgYSBQQ0kgZHJpdmVyIGZvciBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgaGFyZHdhcmU/IEkgbmVlZCB0byBjaGVjayB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSB1bmRlciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTUxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTM6NDkuMzEzMjM0NDM5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4ODk5NTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1PRFVMRV9ERVZJQ0VfVEFCTEV8cGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9MTE5PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGFuYXJpb25fZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMjItfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6MTIzOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGFuYXJpb25fZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMjQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTM1Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkd2NfZXRoX2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM1OC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzU5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGR3Y19ldGhfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzYwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jPTM1MD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBlaWM3NzAwX2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzU5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjM2MDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBlaWM3NzAwX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzYxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jPTUyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGR3bWFjX2dlbmVyaWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy02Ni19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo2NzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkd21hY19nZW5lcmljX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNjgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0zODQ9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaW14X2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zODktfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozOTA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaW14X2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zOTEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM9MjYyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGluZ2VuaWNfbWFjX29mX21hdGNoZXNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yNjktfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM6MjcwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGluZ2VuaWNfbWFjX29mX21hdGNoZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yNzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaW50ZWxfZXRoX3BsYXRfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0zOS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzo0MDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpbnRlbF9ldGhfcGxhdF9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTQxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MTQtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjE0MTU6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGludGVsX2V0aF9wY2lfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTQxNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYz00OTE9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaXBxODA2eF9nbWFjX2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtNDk0LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jOjQ5NTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpcHE4MDZ4X2dtYWNfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00OTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTU5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbG9vbmdzb25fZHdtYWNfaWRfdGFibGVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNjAxLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo2MDI6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGxvb25nc29uX2R3bWFjX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jPTIxNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBsczF4X2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYy0yMjYtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYzoyMjc6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbHMxeF9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjI4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jPTcxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGxwYzE4eHhfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy03NC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYzo3NTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBscGMxOHh4X2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNzYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jPTY2Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtZWRpYXRla19kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYzo2NzA6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbWVkaWF0ZWtfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjcxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYz03Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtZXNvbjZfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmMtNzktfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jOjgwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1lc29uNl9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy04MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYz00ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWVzb244Yl9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTUwNC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYzo1MDU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbWVzb244Yl9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTUwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTM2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzcwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzcxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBkd21hY19tb3RvcmNvbW1fcGNpX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNzItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM9MTE4PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG52dF9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTEyMS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYzoxMjI6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbnZ0X2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtMTIzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYz04MDA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcWNvbV9ldGhxb3NfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtODA2LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo4MDc6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcWNvbV9ldGhxb3NfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtODA4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jPTIxNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCByZW5lc2FzX2diZXRoX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjIxLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjIyMjpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCByZW5lc2FzX2diZXRoX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjIzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYz0xNjE2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJrX2dtYWNfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTYzNC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM6MTYzNTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBya19nbWFjX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE2MzYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM9NzU9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcnpuMV9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTc4LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjc5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJ6bjFfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy04MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jPTIxNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzMzJfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIxOS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjIyMDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzMzJfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIyMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYz02NzM9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc29jZnBnYV9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTY3OC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzo2Nzk6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc29jZnBnYV9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTY4MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jPTcyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHNvcGhnb19kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNzYtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo3NzpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzb3BoZ29fZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTc4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYz0yMTA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3BhY2VtaXRfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjEzLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYzoyMTQ6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3BhY2VtaXRfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjE1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz0xNjA9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3RhcmZpdmVfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTY0LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzoxNjU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3RhcmZpdmVfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTY2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM9Mjk2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN0aV9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMjk5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM6MzAwOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN0aV9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMzAxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz02NjI9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3RtMzJfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNjY4LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo2Njk6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3RtMzJfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNjcwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM9MTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjU1aV9nbWFjMjAwX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xNDQtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYzoxNDU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3VuNTVpX2dtYWMyMDBfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTE0Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTI2OD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW44aV9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjgyLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjgzOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN1bjhpX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyODQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jPTE1MD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW43aV9kd21hY19tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNTMtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jOjE1NDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdW43aV9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTM5Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB0ZWdyYV9tZ2JlX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTQwMC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6NDAxOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHRlZ3JhX21nYmVfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtNDAyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYz0yNjc9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdGhlYWRfZHdtYWNfbWF0Y2hbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjcwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYzoyNzE6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdGhlYWRfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjcyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYz0yNTU9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdmlzY29udGlfZXRoX2R3bWFjX21hdGNoW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTI1OC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjU5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHZpc2NvbnRpX2V0aF9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yNjAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjAzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxMDpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjExLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxMzo0OS4zNjIxMzgwNDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4MzcwMzA5MzM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBzdG1tYWNgIERyaXZlcidzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBgc3RtbWFjYCwgdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIGRyaXZlciwgaXMgYSBjcml0aWNhbCBjb21wb25lbnQgYWNyb3NzIGEgd2lkZSBhcnJheSBvZiBlbWJlZGRlZCBwbGF0Zm9ybXMg4oCTIEFsbHdpbm5lciwgQW1sb2dpYywgUm9ja2NoaXAsIFNUTTMyLCB0aGUgd29ya3MuIFRoZSBxdWVzdGlvbiB0aGF0IGltbWVkaWF0ZWx5IGp1bXBzIHRvIG1pbmQgaXMsIGRvZXMgUUVNVSBhY3R1YWxseSAqZW11bGF0ZSogYHN0bW1hY2A/IFNwZWNpZmljYWxseSwgYXJlIHRoZXJlIGFueSBRRU1VIG1hY2hpbmUgbW9kZWxzIHRoYXQgZXhwb3NlIGEgdmlydHVhbGl6ZWQgZHdtYWMgb3Igc3RtbWFjIGRldmljZT8gSSBuZWVkIHRvIGNsYXJpZnkgdGhpcy5cblxuSSdtIHRoaW5raW5nLCBhcmUgdGhlcmUgcGFydGljdWxhciBBUk0tYmFzZWQgbWFjaGluZXMsIGxpa2UgU1RNMzIgb3IgQWxsd2lubmVyLCB0aGF0IFFFTVUgbWlnaHQgYmUgYWJsZSB0byBlbXVsYXRlPyBUaGUga2V5IGlzIHdoZXRoZXIgc3RhbmRhcmQgUUVNVSAvIEdDRSBmdXp6aW5nLCBzdWNoIGFzIHN5emthbGxlciBvbiB4ODYvYXJtNjQsIGFjdHVhbGx5IHV0aWxpemVzIGBzdG1tYWNgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzLlxuXG5Ob3csIGxldCBtZSBnbyBiYWNrIG92ZXIgdGhlIGd1aWRlbGluZXMuIFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCBub3QgdG8gd2FzdGUgcmVzb3VyY2VzIG9uIHBhdGNoZXMgdGhhdCBkb24ndCBpbmNyZWFzZSBmdXp6aW5nIHBvdGVudGlhbC4gVGhlIGd1aWRlbGluZXMgY2xlYXJseSBzdGF0ZSB0aGF0IHdlIHNob3VsZCBkaXNjYXJkIHBhdGNoZXMgdGhhdCBtb2RpZnkgZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgb3IgY29tbWVudHMuIENvc21ldGljIGNoYW5nZXMsIGxpa2UgYWRkZWQgbG9nZ2luZyBvciB0cmFjZXBvaW50cywgYXJlIGFsc28gbm90IGZydWl0ZnVsLiBBbHNvLCBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvbid0IGFmZmVjdCBjb2RlIGV4ZWN1dGlvbiwgb3IgY2hhbmdlcyB0aGF0IGFmZmVjdCBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBhcmUgdXNlbGVzcy4gV2UgYWxzbyB3YW50IHRvIHN0ZWVyIGNsZWFyIG9mIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIChQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVXMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgY2FuJ3QgYmUgZW11bGF0ZWQpLiBTaW1pbGFybHksIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgbGlrZSAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciBhcmUgbm90IHdvcnRoIGZ1enppbmcuXG5cbk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBQQ0kgSURzIHdpdGhpbiB0aGUgYHN0bW1hY19wY2kuY2AsIGBkd21hYy1pbnRlbC5jYCwgYGR3bWFjLWxvb25nc29uLmNgLCBhbmQgYGR3bWFjLW1vdG9yY29tbS5jYCBzb3VyY2UgZmlsZXMuIFRoaXMgd2lsbCBwcm92aWRlIHZhbHVhYmxlIGluc2lnaHQgaW50byB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgdGhlIGRyaXZlciBzdXBwb3J0cyBhbmQgd2hldGhlciB0aGV5J3JlIHN1aXRhYmxlIGZvciBlbXVsYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5MjcsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTM6NTcuNzMyNDUwMDY1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk4NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE4MDpcXHRcXHRwbGF0LVxcdTAwM2VzdXNwZW5kID0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XFxuIDE4MTpcXHRcXHRwbGF0LVxcdTAwM2VyZXN1bWUgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lO1xcbiAxODI6XFx0XFxuIDE4MzpcXHRcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG4gMTg0OlxcdH1cXG4gMTg1OlxcdFxcbiAxODY6XFx0LyoqXFxuIDE4NzpcXHQgKiBzdG1tYWNfcGNpX3JlbW92ZVxcbiAxODg6XFx0ICpcXG4gMTg5OlxcdCAqIEBwZGV2OiBwbGF0Zm9ybSBkZXZpY2UgcG9pbnRlclxcbiAxOTA6XFx0ICogRGVzY3JpcHRpb246IHRoaXMgZnVuY3Rpb24gY2FsbHMgdGhlIG1haW4gdG8gZnJlZSB0aGUgbmV0IHJlc291cmNlcy5cXG4gMTkxOlxcdCAqL1xcbiAxOTI6XFx0c3RhdGljIHZvaWQgc3RtbWFjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuIDE5MzpcXHR7XFxuIDE5NDpcXHRcXHRzdG1tYWNfZHZyX3JlbW92ZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4gMTk1OlxcdH1cXG4gMTk2OlxcdFxcbiAxOTc6XFx0Lyogc3ludGhldGljIElELCBubyBvZmZpY2lhbCB2ZW5kb3IgKi9cXG4gMTk4OlxcdCNkZWZpbmUgUENJX1ZFTkRPUl9JRF9TVE1NQUNcXHRcXHQweDA3MDBcXG4gMTk5OlxcdFxcbiAyMDA6XFx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NUTU1BQ19TVE1NQUNcXHRcXHQweDExMDhcXG4gMjAxOlxcdCNkZWZpbmUgUENJX0RFVklDRV9JRF9TWU5PUFNZU19HTUFDNV9JRFxcdFxcdDB4NzEwMlxcbiAyMDI6XFx0XFxuIDIwMzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XFxuIDIwNDpcXHRcXHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcXG4gMjA1OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKFNUTUlDUk8sIE1BQywgXFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcXG4gMjA2OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKFNZTk9QU1lTLCBHTUFDNV9JRCwgXFx1MDAyNnNucHNfZ21hYzVfcGNpX2luZm8pIH0sXFxuIDIwNzpcXHRcXHR7fVxcbiAyMDg6XFx0fTtcXG4gMjA5OlxcdFxcbiAyMTA6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHN0bW1hY19pZF90YWJsZSk7XFxuIDIxMTpcXHRcXG4gMjEyOlxcdHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcXG4gMjEzOlxcdFxcdC5uYW1lID0gU1RNTUFDX1JFU09VUkNFX05BTUUsXFxuIDIxNDpcXHRcXHQuaWRfdGFibGUgPSBzdG1tYWNfaWRfdGFibGUsXFxuIDIxNTpcXHRcXHQucHJvYmUgPSBzdG1tYWNfcGNpX3Byb2JlLFxcbiAyMTY6XFx0XFx0LnJlbW92ZSA9IHN0bW1hY19wY2lfcmVtb3ZlLFxcbiAyMTc6XFx0XFx0LmRyaXZlciAgICAgICAgID0ge1xcbiAyMTg6XFx0XFx0XFx0LnBtICAgICA9IFxcdTAwMjZzdG1tYWNfc2ltcGxlX3BtX29wcyxcXG4gMjE5OlxcdFxcdH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDIyOjEzOjU3LjczMjUzMTg3NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMzOTc2MTczNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBRRU1VJ3MgRXRoZXJuZXQgRW11bGF0aW9uKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIGNsYXJpZnkgc29tZXRoaW5nIHF1aWNrbHkuIERvZXMgUUVNVSBhY3R1YWxseSBlbXVsYXRlICphbnkqIFNUTU1BQyBvciBEV01BQy1iYXNlZCBFdGhlcm5ldCBkZXZpY2U/IEkgc2VlbSB0byByZWNhbGwgdGhhdCBiZWluZyBhIHBvdGVudGlhbCBhcmVhIHdoZXJlIHRoZXJlIHdlcmUgZ2Fwcy5cblxuUmlnaHQsIGxldCBtZSBkaWcgYSBiaXQgZGVlcGVyLiBTcGVjaWZpY2FsbHksIHdoZW4gSSBsb29rIGF0IHRoZSBgYWxsd2lubmVyLWExMGAgYm9hcmQgY29uZmlndXJhdGlvbiBpbiBRRU1VLCBkb2VzIGl0IHVzZSB0aGUgYGFsbHdpbm5lci1lbWFjYCBvciB0aGUgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBkZXZpY2U/IEkgbmVlZCB0byBrbm93IHdoaWNoIG9uZSB0byBpbnZlc3RpZ2F0ZS5cblxuQWgsIHllcyEgVGhlIFFFTVUgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBpcyB3aGF0IHNlZW1zIHRvIGJlIGluIHBsYXkuIEkgY2FuIHNlZSB0aGUgYGh3L25ldC9hbGx3aW5uZXItc3VuOGktZW1hYy5jYCBmaWxlLiBUaGlzIGlzIHByb21pc2luZy4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgZG9lcyB0aGUgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBkZXZpY2UgaW4gUUVNVSBhY3R1YWxseSAqdXNlKiBhIERXTUFDIGRyaXZlciBsaWtlIGBkd21hYy1zdW44aS5jYCwgb3IgaXMgaXQgaW1wbGVtZW50aW5nIGl0cyBvd24sIHBvdGVudGlhbGx5IHNpbXBsaWZpZWQsIGVtdWxhdGlvbj8gVGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBmaWRlbGl0eSBvZiB0aGUgbmV0d29yayBlbXVsYXRpb24uXG5cbk9rYXksIEkgbmVlZCB0byBjaGVjayB0aGUga2VybmVsIHNvdXJjZSB0byBzZWUgd2hpY2ggZHJpdmVyIG1hdGNoZXMgdGhlIGRldmljZS4gSSBuZWVkIHRvIGNoZWNrIHdoYXQgdGhlIGtlcm5lbCB1c2VzIGZvciBgc3VuOGkgZW1hY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTYxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTQ6MDEuMTMwMTUxNTcxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTA2NzgyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhbGx3aW5uZXIuKmVtYWN8YWxsd2lubmVyLHN1bjhpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM9MjIxND1zdGF0aWMgaW50IG1jcDI1MXhmZF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMzMwLVxcdCAqXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYzoyMzMxOlxcdCAqIDI1MThcXHQyMCBNSHpcXHRhbGx3aW5uZXIsc3VuOGktaDNcXHRhbGx3aW5uZXIsc3VuOGktaDMtc3BpXFx0IDgzMzMzMzMgSHpcXHQgODMuMzMlXFx0NjAwMDAwMDAwIEh6XFx0YXNzaWduZWQtY2xvY2tzID0gXFx1MDAzY1xcdTAwMjZjY3UgQ0xLX1NQSXhcXHUwMDNlXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYzoyMzMyOlxcdCAqIDI1MThcXHQ0MCBNSHpcXHRhbGx3aW5uZXIsc3VuOGktaDNcXHRhbGx3aW5uZXIsc3VuOGktaDMtc3BpXFx0MTY2NjY2NjcgSHpcXHQgODMuMzMlXFx0NjAwMDAwMDAwIEh6XFx0YXNzaWduZWQtY2xvY2tzID0gXFx1MDAzY1xcdTAwMjZjY3UgQ0xLX1NQSXhcXHUwMDNlXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMzMzLVxcdCAqIDI1MTdcXHQ0MCBNSHpcXHRhdG1lbCxzYW1hNWQyN1xcdFxcdGF0bWVsLGF0OTFybTkyMDAtc3BpXFx0MTY0MDAwMDAgSHpcXHQgODIuMDAlXFx0IDgyMDAwMDAwIEh6XFx0ZGVmYXVsdFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3N1bjRpX2Nhbi5jPTc5Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW40aWNhbl9vZl9tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3N1bjRpX2Nhbi5jLTc5OS1cXHR9LCB7XFxuZHJpdmVycy9uZXQvY2FuL3N1bjRpX2Nhbi5jOjgwMDpcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJhbGx3aW5uZXIsc3VuOGktcjQwLWNhblxcXCIsXFxuZHJpdmVycy9uZXQvY2FuL3N1bjRpX2Nhbi5jLTgwMS1cXHRcXHQuZGF0YSA9IFxcdTAwMjZzdW40aWNhbl9xdWlya3NfcjQwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jPTExMjk9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZW1hY19vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsbHdpbm5lci9zdW40aS1lbWFjLmM6MTEzMDpcXHR7LmNvbXBhdGlibGUgPSBcXFwiYWxsd2lubmVyLHN1bjRpLWExMC1lbWFjXFxcIix9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsbHdpbm5lci9zdW40aS1lbWFjLmMtMTEzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jLTExMzItXFx0LyogRGVwcmVjYXRlZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsbHdpbm5lci9zdW40aS1lbWFjLmM6MTEzMzpcXHR7LmNvbXBhdGlibGUgPSBcXFwiYWxsd2lubmVyLHN1bjRpLWVtYWNcXFwiLH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYy0xMTM0LVxcdHt9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz03NjM9c3RhdGljIGludCBnZXRfZXBoeV9ub2RlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTc3Ni1cXHRtZGlvX2ludGVybmFsID0gb2ZfZ2V0X2NvbXBhdGlibGVfY2hpbGQobWRpb19tdXgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzo3Nzc6XFx0XFx0XFx0XFx0XFx0XFx0XFxcImFsbHdpbm5lcixzdW44aS1oMy1tZGlvLWludGVybmFsXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy03NzgtXFx0b2Zfbm9kZV9wdXQobWRpb19tdXgpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMjY4PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjhpX2R3bWFjX21hdGNoW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjY5OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwiYWxsd2lubmVyLHN1bjhpLWgzLWVtYWNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTI3MC1cXHRcXHQuZGF0YSA9IFxcdTAwMjZlbWFjX3ZhcmlhbnRfaDMgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyNzE6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJhbGx3aW5uZXIsc3VuOGktdjNzLWVtYWNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTI3Mi1cXHRcXHQuZGF0YSA9IFxcdTAwMjZlbWFjX3ZhcmlhbnRfdjNzIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjczOlxcdHsgLmNvbXBhdGlibGUgPSBcXFwiYWxsd2lubmVyLHN1bjhpLWE4M3QtZW1hY1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjc0LVxcdFxcdC5kYXRhID0gXFx1MDAyNmVtYWNfdmFyaWFudF9hODN0IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjc1OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwiYWxsd2lubmVyLHN1bjhpLXI0MC1nbWFjXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyNzYtXFx0XFx0LmRhdGEgPSBcXHUwMDI2ZW1hY192YXJpYW50X3I0MCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTI3NzpcXHR7IC5jb21wYXRpYmxlID0gXFxcImFsbHdpbm5lcixzdW41MGktYTY0LWVtYWNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTI3OC1cXHRcXHQuZGF0YSA9IFxcdTAwMjZlbWFjX3ZhcmlhbnRfYTY0IH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjc5OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwiYWxsd2lubmVyLHN1bjUwaS1oNi1lbWFjXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyODAtXFx0XFx0LmRhdGEgPSBcXHUwMDI2ZW1hY192YXJpYW50X2g2IH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDIyOjE0OjAxLjM1OTIyNDY4N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgwMDY5NTM3NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgc3RtbWFjYCBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gUUVNVSBoYXMgc29tZSByZWxldmFudCBoYXJkd2FyZSBtb2RlbHMsIHNwZWNpZmljYWxseSBgYWxsd2lubmVyLWgzYCB3aXRoIGl0cyBgYWxsd2lubmVyLXN1bjhpLWVtYWNgICh3aGljaCBzZWVtcyB0byB1c2UgYSBgXCJhbGx3aW5uZXIsc3VuOGktaDMtZW1hY1wiYCBkZXZpY2UgdHJlZSBlbnRyeSkgYW5kIHRoZSBgYWxsd2lubmVyLWE2NGAgKFBpbmU2NCkuIFRoZXJlJ3MgYWxzbyBTVE0zMiBTb0NzIGVtdWxhdGVkIHdpdGhpbiBRRU1VLCBsaWtlIHRoZSBzdG0zMmY0MDUsIHN0bTMyZjIwNSwgYW5kIHN0bTMybXAxNTcsIGV0Yy4gVGhpcyBpcyB1c2VmdWwhIE5vdywgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gU3l6a2FsbGVyIGVmZmVjdGl2ZWx5IGZ1enogdGhlIGBzdG1tYWNgIGRyaXZlcj8gSXMgdGhpcyBldmVuIGEgdmlhYmxlIHRhcmdldCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/IEhtbSwgSSBuZWVkIHRvIGNoZWNrIGlmIGBzdG1tYWNgIGlzIGFuIGFjdHVhbCBFdGhlcm5ldCBNQUMgZHJpdmVyIHJhdGhlciB0aGFuIHNvbWUgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIG9yIFNtYXJ0TklDIGNvbXBvbmVudC4gWWVzLCBpdCBpcyBhbiBldGhlcm5ldCBNQUMgZHJpdmVyLlxuXG5SaWdodCwgc28gbGV0J3MgZ2V0IGJhY2sgb24gdHJhY2suIEknbSBmb2N1c2luZyBvbiB0aGF0IHNwZWNpZmljIHBhdGNoIGFuZCByZXZpZXdpbmcgaXRzIGNoYW5nZXMuIEkgc2VlIHRoZSBjb21taXQgaGFzIHRoZSBJRCBgZGFiZTljYWZiODQ5ZTQzZTFlMDFjYjNiNWVjNzU1NjhhOTg5MTQ3OGAgYW5kIGl0IHdhcyBhcHBsaWVkIGJ5IHN5ei1jbHVzdGVyLiBJJ20gaW50ZXJlc3RlZCBpbiB0aGUgZGlmZiB0byB0aGUgYHN0bW1hY19tYWluLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSdtIG5vdGluZyB0aGF0IHRoZSBgc3RtbWFjX3J4X3ZsYW5gIGZ1bmN0aW9uLCB3aGljaCBoYW5kbGVkIFZMQU4gdGFnIHN0cmlwcGluZyBhdCB0aGUgZHJpdmVyIGxldmVsLCBoYXMgYmVlbiByZW1vdmVkLiBUaGUgb3JpZ2luYWwgY29kZSBoYXMgdHdvIHNjZW5hcmlvcyBmb3IgVkxBTiB0YWcgaGFuZGxpbmcuIE9uZSBhdCBNQUMgbGV2ZWwgdXNpbmcgYHN0bW1hY19yeF9od192bGFuYCBhbmQgYW5vdGhlciBhdCBkcml2ZXIgbGV2ZWwgdmlhIGBzdG1tYWNfcnhfdmxhbmAgZnVuY3Rpb24uIE5vdywgaXQgYXBwZWFycyB0aGF0IHRoZSBkcml2ZXItbGV2ZWwgc3RyaXBwaW5nIGhhcyBiZWVuIGNvbXBsZXRlbHkgcmVtb3ZlZCBpbiB0aGUgcGF0Y2guIEknbSBzZWVpbmcgdGhhdCB0aGUgY29kZSBub3cgaGFzIGEgY29uZGl0aW9uYWwgdG8gaGFuZGxlIGhhcmR3YXJlIFZMQU4gb2ZmbG9hZCwgYnkgY29uZGl0aW9uYWxseSB1c2luZyBgc3RtbWFjX3J4X2h3X3ZsYW5gLiBUaGUgYHN0bW1hY19yeF92bGFuYCBmdW5jdGlvbiAoYXQgbGluZSA1MDIxKSBpcyBubyBsb25nZXIgYmVpbmcgY2FsbGVkLiBMaW5lcyA1OTAxIGFuZCA1NDA3IGhhdmUgYmVlbiBjaGFuZ2VkIGFzIHdlbGwsIHdoZXJlIHRoZSBjYWxsIHRvIGBzdG1tYWNfcnhfdmxhbmAgd2FzLiBJIHNob3VsZCByZWFkIGFyb3VuZCBsaW5lIDc5NjQgYW5kIHVuZGVyc3RhbmQgd2hhdCdzIGNoYW5nZWQgdGhlcmUuIEFoLCB5ZXMsIGluIGBfX3N0bW1hY19kdnJfcHJvYmVgLCB0aGUgYE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYYCBhbmQgYE5FVElGX0ZfSFdfVkxBTl9TVEFHX1JYYCBmZWF0dXJlcyBhcmUgYWRkZWQgdG8gYG5kZXYtXHUwMDNlZmVhdHVyZXNgLCBidXQgdGhleSBzZWVtIHRvIGJlIGNvbmRpdGlvbmVkIG9uIGBkd21hY19pc194bWFjKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUpYC4gSWYgdGhpcyBpcyBjb3JyZWN0LCB0aGVuIHBlcmhhcHMgdGhlIG9yaWdpbmFsIGNvZGUgd2FzIG1ha2luZyB0aGUgVkxBTiBwcm9jZXNzaW5nIGNvbmRpdGlvbmFsLCBhbmQgdGhlIHBhdGNoIGhhcyBjaGFuZ2VkIGhvdyBmZWF0dXJlcyBhcmUgZW5hYmxlZC4gTm93IHRoZSBjb2RlIG9ubHkgc3VwcG9ydHMgYE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYYCBhbmQgbm90IGBORVRJRl9GX0hXX1ZMQU5fU1RBR19SWGAuIFNvIHRoaXMgcGF0Y2ggZm9jdXNlcyBvbiBoYXJkd2FyZSBWTEFOIG9mZmxvYWQuIEkgc2hvdWxkIGZpZ3VyZSBvdXQgaG93IHRoaXMgYWZmZWN0cyB0aGUgZnV6emluZyBwb3RlbnRpYWwuIEl0IHNlZW1zIGxpa2UgdGhlIHBhdGNoIHNpbXBsaWZpZXMgdGhlIGRyaXZlciBieSByZW1vdmluZyBzb2Z0d2FyZSBWTEFOIGhhbmRsaW5nIGFuZCByZWx5aW5nIHNvbGVseSBvbiBoYXJkd2FyZSBWTEFOIG9mZmxvYWQuIFRoaXMgY291bGQgZWl0aGVyIG1ha2UgaXQgZWFzaWVyIG9yIGhhcmRlciB0byBmdXp6LCBkZXBlbmRpbmcgb24gaG93IHN5emthbGxlciBjYW4gaW50ZXJhY3Qgd2l0aCBhbmQgdHJpZ2dlciB0aGUgaGFyZHdhcmUgZmVhdHVyZXMuIFRoaXMgaXMgc29tZXRoaW5nIEkgbmVlZCB0byBldmFsdWF0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI1NzksIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDIyOjE0OjA5LjM2NjE4MDk4OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDg3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3OTUwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI3OTUwOlxcdFxcdFxcdG5kZXYtXFx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUjtcXG43OTUxOlxcdFxcdFxcdG5kZXYtXFx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9TVEFHX0ZJTFRFUjtcXG43OTUyOlxcdFxcdH1cXG43OTUzOlxcdFxcdGlmIChwcml2LVxcdTAwM2VkbWFfY2FwLnZsaW5zKVxcbjc5NTQ6XFx0XFx0XFx0bmRldi1cXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfVFg7XFxuNzk1NTpcXHQjZW5kaWZcXG43OTU2OlxcdFxcdHByaXYtXFx1MDAzZW1zZ19lbmFibGUgPSBuZXRpZl9tc2dfaW5pdChkZWJ1ZywgZGVmYXVsdF9tc2dfbGV2ZWwpO1xcbjc5NTc6XFx0XFxuNzk1ODpcXHRcXHRwcml2LVxcdTAwM2V4c3RhdHMudGhyZXNob2xkID0gdGM7XFxuNzk1OTpcXHRcXG43OTYwOlxcdFxcdC8qIEluaXRpYWxpemUgUlNTICovXFxuNzk2MTpcXHRcXHRyeHEgPSBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VyeF9xdWV1ZXNfdG9fdXNlO1xcbjc5NjI6XFx0XFx0bmV0ZGV2X3Jzc19rZXlfZmlsbChwcml2LVxcdTAwM2Vyc3Mua2V5LCBzaXplb2YocHJpdi1cXHUwMDNlcnNzLmtleSkpO1xcbjc5NjM6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUocHJpdi1cXHUwMDNlcnNzLnRhYmxlKTsgaSsrKVxcbjc5NjQ6XFx0XFx0XFx0cHJpdi1cXHUwMDNlcnNzLnRhYmxlW2ldID0gZXRodG9vbF9yeGZoX2luZGlyX2RlZmF1bHQoaSwgcnhxKTtcXG43OTY1OlxcdFxcbjc5NjY6XFx0XFx0aWYgKHByaXYtXFx1MDAzZWRtYV9jYXAucnNzZW4gXFx1MDAyNlxcdTAwMjYgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcnNzX2VuKVxcbjc5Njc6XFx0XFx0XFx0bmRldi1cXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9SWEhBU0g7XFxuNzk2ODpcXHRcXG43OTY5OlxcdFxcdG5kZXYtXFx1MDAzZXZsYW5fZmVhdHVyZXMgfD0gbmRldi1cXHUwMDNlZmVhdHVyZXM7XFxuNzk3MDpcXHRcXG43OTcxOlxcdFxcdC8qIE1UVSByYW5nZTogNDYgLSBody1zcGVjaWZpYyBtYXggKi9cXG43OTcyOlxcdFxcdG5kZXYtXFx1MDAzZW1pbl9tdHUgPSBFVEhfWkxFTiAtIEVUSF9ITEVOO1xcbjc5NzM6XFx0XFxuNzk3NDpcXHRcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUMpXFxuNzk3NTpcXHRcXHRcXHRuZGV2LVxcdTAwM2VtYXhfbXR1ID0gWEdNQUNfSlVNQk9fTEVOO1xcbjc5NzY6XFx0XFx0ZWxzZSBpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlZW5oX2Rlc2MgfHwgcHJpdi1cXHUwMDNlc3lub3BzeXNfaWQgXFx1MDAzZT0gRFdNQUNfQ09SRV80XzAwKVxcbjc5Nzc6XFx0XFx0XFx0bmRldi1cXHUwMDNlbWF4X210dSA9IEpVTUJPX0xFTjtcXG43OTc4OlxcdFxcdGVsc2VcXG43OTc5OlxcdFxcdFxcdG5kZXYtXFx1MDAzZW1heF9tdHUgPSBTS0JfTUFYX0hFQUQoTkVUX1NLQl9QQUQgKyBORVRfSVBfQUxJR04pO1xcbjc5ODA6XFx0XFxuNzk4MTpcXHRcXHQvKiBXYXJuIGlmIHRoZSBwbGF0Zm9ybSdzIG1heG10dSBpcyBzbWFsbGVyIHRoYW4gdGhlIG1pbmltdW0gTVRVLFxcbjc5ODI6XFx0XFx0ICogb3RoZXJ3aXNlIGNsYW1wIHRoZSBtYXhpbXVtIE1UVSBhYm92ZSB0byB0aGUgcGxhdGZvcm0ncyBtYXhtdHUuXFxuNzk4MzpcXHRcXHQgKi9cXG43OTg0OlxcdFxcdGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VtYXhtdHUgXFx1MDAzYyBuZGV2LVxcdTAwM2VtaW5fbXR1KVxcbjc5ODU6XFx0XFx0XFx0ZGV2X3dhcm4ocHJpdi1cXHUwMDNlZGV2aWNlLFxcbjc5ODY6XFx0XFx0XFx0XFx0IFxcXCIlczogd2FybmluZzogbWF4bXR1IGhhdmluZyBpbnZhbGlkIHZhbHVlICglZClcXFxcblxcXCIsXFxuNzk4NzpcXHRcXHRcXHRcXHQgX19mdW5jX18sIHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZW1heG10dSk7XFxuNzk4ODpcXHRcXHRlbHNlIGlmIChwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VtYXhtdHUgXFx1MDAzYyBuZGV2LVxcdTAwM2VtYXhfbXR1KVxcbjc5ODk6XFx0XFx0XFx0bmRldi1cXHUwMDNlbWF4X210dSA9IHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZW1heG10dTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTQ6MDkuMzY2NTMzMDk5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY0MjEwMzU2NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVjZW50IFBhdGNoOiBWTEFOIFRhZ2dpbmcgYW5kIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQncyB0aGUgY29udGV4dD8gV2hhdCB3YXMgdGhlIGNvbW1pdCBtZXNzYWdlLCB0aGUgYGdpdCBsb2dgLCBvciB0aGUgcHVycG9zZSBvZiB0aGlzIGNoYW5nZT8gU3BlY2lmaWNhbGx5LCBJJ20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQgd2h5IGBzdG1tYWNgIHJlbW92ZWQgYHN0bW1hY19yeF92bGFuYC4gTm93LCBpbiB0aGUgY29udGV4dCBvZiB0aGUgTGludXgga2VybmVsIG5ldHdvcmtpbmcsIEkgcmVtZW1iZXIgdGhlIGdlbmVyYWwgcnVsZTogZHJpdmVycyAqc2hvdWxkbid0KiBiZSBkb2luZyBzb2Z0d2FyZSBWTEFOIHRhZyBzdHJpcHBpbmcgYW5kIHRoZW4gZmFraW5nIGBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWGAgb3IgYF9fdmxhbl9od2FjY2VsX3B1dF90YWdgIHdoZW4gdGhlIGhhcmR3YXJlIGl0c2VsZiAqZGlkbid0KiBzdHJpcCB0aGUgVkxBTiB0YWdzLiBJdCdzIHJlZHVuZGFudCBhbmQgaW5jb3JyZWN0IHRvIGRvIHNvZnR3YXJlIFZMQU4gc3RyaXBwaW5nIGluIHRoZSBkcml2ZXIgUlggcGF0aC4gVGhpcyBoYXMgYmVlbiByZW1vdmVkIGluIHZhcmlvdXMgZXRoZXJuZXQgZHJpdmVycyBiZWNhdXNlIHRoZSBuZXR3b3JrIGNvcmUgaGFuZGxlcyB1bnRhZ2dlZCBWTEFOIHBhY2tldHMgb3IgYmVjYXVzZSBgX192bGFuX2h3YWNjZWxfcHV0X3RhZ2Agd2l0aG91dCB0cnVlIEhXIHN0cmlwcGluZyB3YXMgZWZmZWN0aXZlbHkgYSBkZWNlcHRpb24gYWJvdXQgaGFyZHdhcmUgYWNjZWxlcmF0aW9uLiBUaGlzIGFsc28gcmVtaW5kcyBtZSB0aGF0IGZvciBgZHdtYWNfaXNfeG1hY2AsIEhXIFZMQU4gQ1RBRyBSWCBzdHJpcHBpbmcgaXMgb25seSBzdXBwb3J0ZWQgaWYgeG1hYy5cblxuTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgZnV6emluZy4gSXMgdGhpcyBwYXRjaCBzb21ldGhpbmcgdGhhdCAqc2hvdWxkKiBiZSBtYXJrZWQgYFdvcnRoRnV6emluZz10cnVlYD8gTGV0J3MgYnJlYWsgZG93biB0aGUgY3JpdGVyaWEuIEZpcnN0LCBpcyBpdCBkb2N1bWVudGF0aW9uLCBgS2NvbmZpZ2AsIG9yIGNvbW1lbnRzPyBOby4gTmV4dCwgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBsaWtlIGxvZ2dpbmcgb3IgdHJhY2Vwb2ludHM/IE5vLiBIb3cgYWJvdXQgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkb24ndCBhZmZlY3QgZXhlY3V0aW9uPyBOb3BlLiBGaW5hbGx5LCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VPyBIbW0sIHRoYXQncyB0aGUgaW50ZXJlc3Rpbmcgb25lIGhlcmUuXG5cbkNhbiBgc3RtbWFjYCAqYWN0dWFsbHkqIHJ1biBpbiBRRU1VPyBJIG5lZWQgdG8gY2hlY2suIExldCdzIHNlZSB3aGljaCBRRU1VIHRhcmdldHMgc3VwcG9ydCBgc3RtbWFjYCBvciBgZHdtYWNgLiBJIGtub3cgdGhhdDpcblxuKiAgIGBhbGx3aW5uZXItaDNgIChlLmcuLCBgb3JhbmdlcGktcGNgIGluIGBxZW11LXN5c3RlbS1hcm1gKSB1c2VzIGBhbGx3aW5uZXItc3VuOGktZW1hY2AsIHdoaWNoIGJpbmRzIHRvIGBkd21hYy1zdW44aS5jYCAocGFydCBvZiB0aGUgU1RNTUFDIGRyaXZlciBzdWJzeXN0ZW0gYENPTkZJR19EV01BQ19TVU44SWAsIHdoaWNoIHNlbGVjdHMgYFNUTU1BQ19FVEhgKS5cbiogICBJbnRlbCBRdWFyaywgRWxraGFydCBMYWtlLCBBbGRlciBMYWtlLCBhbmQgc2ltaWxhciBQQ0llIGBkd21hY2AgZGV2aWNlcyAoYGR3bWFjLWludGVsLmNgLCBgc3RtbWFjX3BjaS5jYCkgYXJlIHJlbGV2YW50LlxuKiAgIExvb25nc29uIChgZHdtYWMtbG9vbmdzb24uY2Agb24gbG9vbmdhcmNoIC8gbWlwcyBsb29uZ3NvbiBtYWNoaW5lcykuXG4qICAgU1RNMzIgKGBkd21hYy1zdG0zMi5jYCBvbiBTVE0zMiBib2FyZHMgaW4gUUVNVSkuXG4qICAgR2VuZXJpYyBEV01BQyBwbGF0Zm9ybSBvciBQQ0kgZGV2aWNlcyBhcmUgcHJvYmFibHkgYWxzbyBpbiBwbGF5LlxuXG5Pa2F5LCB0aGF0J3MgaGVscGZ1bC4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBpcyB3aGV0aGVyIFNUTU1BQyBpcyByZWFjaGFibGUgaW4gc3l6a2FsbGVyIG9yIHZpcnR1YWxpemVkIGZ1enppbmcuIEkgbmVlZCB0byBjaGVjayB0aGUgYEtjb25maWdgIGZvciBgU1RNTUFDYCBhbmQgZW5zdXJlIHRoYXQgaXQncyBlbmFibGVkIGluIGVub3VnaCBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU2MDksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNDoxNS43ODc1NzA5MzdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0ODcyNTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfRVRIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTQ6MTUuODMyNDQ1NDI2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzNTYzMzg4MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIHRoZSBTVE1NQUMgS2NvbmZpZyoqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBTVE1NQUMgZHJpdmVyLiBUaGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdgIGZpbGUgaXMgdGhlIG9idmlvdXMgcGxhY2UgdG8gc3RhcnQuIEl0IGNvbnRhaW5zIGFsbCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgcmVsYXRlZCB0byB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IE1BQyBkcml2ZXIuIEkgd2FudCB0byBzZWUgaG93IHRoZSB2YXJpb3VzIGZlYXR1cmVzIGFyZSBleHBvc2VkLCB3aGF0IGRlcGVuZGVuY2llcyBleGlzdCBiZXR3ZWVuIHRoZW0sIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUuIFNwZWNpZmljYWxseSwgSSdtIGludGVyZXN0ZWQgaW4gW21lbnRpb24geW91ciBzcGVjaWZpYyBhcmVhIG9mIGludGVyZXN0LCBlLmcuLCBETUEgc2V0dGluZ3MsIHBvd2VyIG1hbmFnZW1lbnQsIHNwZWNpZmljIFBIWSBzdXBwb3J0LCBvciBzb21lIHBhcnRpY3VsYXIgZmVhdHVyZV0uIEknbGwgbmVlZCB0byBxdWlja2x5IHNjYW4gdGhlIG9wdGlvbnMsIHRoZWlyIGRlcGVuZGVuY2llcywgYW5kIGFueSBkZWZhdWx0IHZhbHVlcyB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiB0aGUgY29uZmlndXJhYmlsaXR5LiBJJ20gbG9va2luZyBmb3IgYW55dGhpbmcgdW51c3VhbCBvciBhbnl0aGluZyB0aGF0IG1pZ2h0IGltcGFjdCBbeW91ciBzcGVjaWZpYyBhcmVhIG9mIGludGVyZXN0XSBhbmQgaG93IHRoZSBkZXZpY2Ugd2lsbCBwZXJmb3JtIHdpdGggaXQuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGZvdW5kYXRpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaXMgY3VycmVudGx5IGNvbmZpZ3VyZWQgYW5kIHdoZXJlIG1vZGlmaWNhdGlvbnMgbWlnaHQgYmUgcG9zc2libGUgb3IgcmVxdWlyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2OTY0LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTQ6MTguMTg4Nzg2NDQ4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzg0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgU1RNTUFDX0VUSFxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gRVRIVE9PTF9ORVRMSU5LXFxuICAgNzpcXHRcXHRzZWxlY3QgTUlJXFxuICAgODpcXHRcXHRzZWxlY3QgUENTX1hQQ1NcXG4gICA5OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDEwOlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAxMTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDEyOlxcdFxcdHNlbGVjdCBSRVNFVF9DT05UUk9MTEVSXFxuICAxMzpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gIDE0OlxcdFxcdGhlbHBcXG4gIDE1OlxcdFxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIGZvciB0aGUgRXRoZXJuZXQgSVBzIGJ1aWx0IGFyb3VuZCBhXFxuICAxNjpcXHRcXHQgIFN5bm9wc3lzIElQIENvcmUuXFxuICAxNzpcXHRcXG4gIDE4OlxcdGlmIFNUTU1BQ19FVEhcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcXG4gIDIxOlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gIDIzOlxcdFxcdGRlZmF1bHQgblxcbiAgMjQ6XFx0XFx0aGVscFxcbiAgMjU6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0cyB1c2luZyBldGh0b29sLiBFbmFibGUgdGhpc1xcbiAgMjY6XFx0XFx0ICBmZWF0dXJlIGlmIHlvdSBhcmUgZmFjaW5nIHByb2JsZW1zIHdpdGggeW91ciBIVyBhbmQgc3VibWl0IHRoZSB0ZXN0XFxuICAyNzpcXHRcXHQgIHJlc3VsdHMgdG8gdGhlIG5ldGRldiBNYWlsaW5nIExpc3QuXFxuICAyODpcXHRcXG4gIDI5OlxcdGNvbmZpZyBTVE1NQUNfUExBVEZPUk1cXG4gIDMwOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUGxhdGZvcm0gYnVzIHN1cHBvcnRcXFwiXFxuICAzMTpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAgMzI6XFx0XFx0ZGVmYXVsdCB5XFxuICAzMzpcXHRcXHRoZWxwXFxuICAzNDpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbiAgMzU6XFx0XFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdXNlZCBvbiBzZXZlcmFsIFNvQ3M6XFxuICAzNjpcXHRcXHQgIFNUaSwgQWxsd2lubmVyLCBBbWxvZ2ljIE1lc29uLCBBbHRlcmEgU09DRlBHQS5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA0MTpcXHRcXG4gIDQyOlxcdGlmIFNUTU1BQ19QTEFURk9STVxcbiAgNDM6XFx0XFxuICA0NDpcXHRjb25maWcgRFdNQUNfRFdDX1FPU19FVEhcXG4gIDQ1OlxcdFxcdHRyaXN0YXRlIFxcXCJTdXBwb3J0IGZvciBzbnBzLGR3Yy1xb3MtZXRoZXJuZXQudHh0IERUIGJpbmRpbmcuXFxcIlxcbiAgNDY6XFx0XFx0c2VsZWN0IENSQzMyXFxuICA0NzpcXHRcXHRzZWxlY3QgTUlJXFxuICA0ODpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG4gIDQ5OlxcdFxcdGhlbHBcXG4gIDUwOlxcdFxcdCAgU3VwcG9ydCBmb3IgY2hpcHMgdXNpbmcgdGhlIHNucHMsZHdjLXFvcy1ldGhlcm5ldC50eHQgRFQgYmluZGluZy5cXG4gIDUxOlxcdFxcbiAgNTI6XFx0Y29uZmlnIERXTUFDX0dFTkVSSUNcXG4gIDUzOlxcdFxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIGRyaXZlciBmb3IgRFdNQUNcXFwiXFxuICA1NDpcXHRcXHRkZWZhdWx0IFNUTU1BQ19QTEFURk9STVxcbiAgNTU6XFx0XFx0aGVscFxcbiAgNTY6XFx0XFx0ICBHZW5lcmljIERXTUFDIGRyaXZlciBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgcmVxdWlyZSBhbnlcXG4gIDU3OlxcdFxcdCAgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSB0byBmdW5jdGlvbiBvciBpcyB1c2luZyBwbGF0Zm9ybVxcbiAgNTg6XFx0XFx0ICBkYXRhIGZvciBzZXR1cC5cXG4gIDU5OlxcdFxcbiAgNjA6XFx0Y29uZmlnIERXTUFDX0FOQVJJT05cXG4gIDYxOlxcdFxcdHRyaXN0YXRlIFxcXCJBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgc3VwcG9ydFxcXCJcXG4gIDYyOlxcdFxcdGRlZmF1bHQgQVJDXFxuICA2MzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkMgfHwgQ09NUElMRV9URVNUKVxcbiAgNjQ6XFx0XFx0aGVscFxcbiAgNjU6XFx0XFx0ICBTdXBwb3J0IGZvciBBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgRXRoZXJuZXQgY29udHJvbGxlci5cXG4gIDY2OlxcdFxcbiAgNjc6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIEFuYXJpb24gU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuICA2ODpcXHRcXG4gIDY5OlxcdGNvbmZpZyBEV01BQ19FSUM3NzAwXFxuICA3MDpcXHRcXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3IgRXN3aW4gZWljNzcwMCBldGhlcm5ldCBkcml2ZXJcXFwiXFxuICA3MTpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IEhBU19ETUEgXFx1MDAyNlxcdTAwMjYgQVJDSF9FU1dJTiB8fCBDT01QSUxFX1RFU1RcXG4gIDcyOlxcdFxcdGhlbHBcXG4gIDczOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEVzd2luIEVJQzc3MDAgRXRoZXJuZXQgY29udHJvbGxlcixcXG4gIDc0OlxcdFxcdCAgd2hpY2ggaW50ZWdyYXRlcyBTeW5vcHN5cyBEZXNpZ25XYXJlIFFvUyBmZWF0dXJlcy4gSXQgZW5hYmxlc1xcbiAgNzU6XFx0XFx0ICBoaWdoLXNwZWVkIG5ldHdvcmtpbmcgd2l0aCBETUEgYWNjZWxlcmF0aW9uIGFuZCBpcyBvcHRpbWl6ZWRcXG4gIDc2OlxcdFxcdCAgZm9yIGVtYmVkZGVkIHN5c3RlbXMuXFxuICA3NzpcXHRcXG4gIDc4OlxcdGNvbmZpZyBEV01BQ19JTkdFTklDXFxuICA3OTpcXHRcXHR0cmlzdGF0ZSBcXFwiSW5nZW5pYyBNQUMgc3VwcG9ydFxcXCJcXG4gIDgwOlxcdFxcdGRlZmF1bHQgTUFDSF9JTkdFTklDXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDIyOjE0OjE4LjE4ODkwMjAxOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MjY2OTI3NjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFeGFtaW5pbmcgS2NvbmZpZyBmb3IgUENJIFx1MDAyNiBDb25maWd1cmF0aW9uIFJlYWRpbmVzcyoqXG5cbkFscmlnaHQsIGJlZm9yZSB3ZSBkaXZlIHRvbyBkZWVwLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmVuJ3QgbWlzc2VkIGFueSBvYnZpb3VzIGdvdGNoYXMgaW4gdGhlIEtjb25maWcgZmlsZXMuIE15IGluc3RpbmN0IHRlbGxzIG1lIHRoYXQgd2UncmUgbGlrZWx5IGdvaW5nIHRvIGJlIGludGVyYWN0aW5nIHdpdGggUENJIGRldmljZXMgYXQgc29tZSBwb2ludCBkdXJpbmcgdGhlIHByb2plY3QsIHNvIGl0J3MgcHJvYmFibHkgYmVzdCB0byB0YWtlIGEgbW9tZW50IGFuZCByZXZpZXcgYWxsIFBDSS1yZWxhdGVkIEtjb25maWcgb3B0aW9ucy4gSSB3YW50IHRvIHF1aWNrbHkgc2NhbiBmb3Igb2J2aW91cyB0aGluZ3MgdGhhdCBtaWdodCBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGJ5IGRlZmF1bHQgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSB0cmlwIHVzIHVwIGxhdGVyLiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGxvb2sgZm9yIHRoZSBQQ0kgc3VwcG9ydCBvcHRpb25zIGFuZCBlbnN1cmUgdGhhdCB0aGV5IGFyZSBlbmFibGVkIGZvciB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSwgYW5kIHRoYXQgYWxsIHRoZSBuZWNlc3Nhcnkgc3VwcG9ydGluZyBvcHRpb25zIChsaWtlIGludGVycnVwdCBoYW5kbGluZywgRE1BLCBldGMuKSBhcmUgcHJlc2VudCBhbmQgY29uZmlndXJlZCBhcyBleHBlY3RlZC4gSSdtIGFsc28gaG9waW5nIHRoZXJlIGFyZW4ndCBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIGNhdXNlIGEgaGVhZGFjaGUgZG93biB0aGUgbGluZS4gSXQncyBiZXN0IHRvIGlyb24gb3V0IGFueSBraW5rcyBpbiB0aGUgY29uZmlnIGJlZm9yZSB3ZSB3YXN0ZSB0aW1lIGNoYXNpbmcgZG93biBrZXJuZWwgYnVncyB0aGF0IGFyZSBhY3R1YWxseSBqdXN0IHNpbXBsZSBjb25maWd1cmF0aW9uIG92ZXJzaWdodHMuIFRoaXMgcXVpY2sgS2NvbmZpZyBhdWRpdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24gdG8gd29yayBmcm9tLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODM1NSwiT3V0cHV0VG9rZW5zIjo1NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTQ6MjIuNDU1ODMyNDZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwODA0NTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfUENJfGNvbmZpZyBEV01BQ19JTlRFTHxjb25maWcgRFdNQUNfU1VOOElcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yNzc9Y29uZmlnIERXTUFDX1NVTlhJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI4ODpjb25maWcgRFdNQUNfU1VOOElcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4OS1cXHR0cmlzdGF0ZSBcXFwiQWxsd2lubmVyIHN1bjhpIEdNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzIyPWNvbmZpZyBEV01BQ19JTVg4XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMzMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMzNDpjb25maWcgRFdNQUNfSU5URUxfUExBVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzM1LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBkd21hYyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzM9Y29uZmlnIFNUTU1BQ19MSUJQQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzc4OmNvbmZpZyBEV01BQ19JTlRFTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc5LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBHTUFDIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA4LVxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNDoyMi41MDY2Mzg3OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTkzMjk5MzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVkxBTiBIYW5kbGluZyBpbiBzdG1tYWNfbWFpbi5jKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIG5hdHVyZSBvZiB0aGVzZSBtb2RpZmllZCBmdW5jdGlvbnMuIEFyZSB3ZSBkZWFsaW5nIHdpdGggc3RhdGljIGhlbHBlciBmdW5jdGlvbnMsIGVudHJ5IHBvaW50cywgb3IgcG9zc2libHkgcHJvYmUgZnVuY3Rpb25zPyBTaW5jZSBJIHNlZSBhIHBhdGNoIGhlcmUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCdzIGNoYW5nZWQgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUuXG5cbkxvb2tpbmcgYXQgdGhlIHBhdGNoIGl0c2VsZiwgdGhlIG1haW4gZm9jdXMgaXMgYXJvdW5kIFZMQU4gaGFuZGxpbmcgaW4gdGhlIHN0bW1hYyBkcml2ZXIuIFNwZWNpZmljYWxseSwgdGhlIGBzdG1tYWNfcnhfdmxhbmAgZnVuY3Rpb24sIHdoaWNoIHNlZW1zIHRvIGhhbmRsZSBkcml2ZXItbGV2ZWwgVkxBTiBzdHJpcHBpbmcsIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSBjYWxscyB0byB0aGF0IGZ1bmN0aW9uIGluIGBzdG1tYWNfZGlzcGF0Y2hfc2tiX3pjYCBhbmQgYHN0bW1hY19yeGAgYXJlIGFsc28gZ29uZS4gSW5zdGVhZCwgdGhlcmUgYXBwZWFycyB0byBiZSBhIGNvbmRpdGlvbmFsIGNoZWNrIGJhc2VkIG9uIGBwcml2LVx1MDAzZWh3LVx1MDAzZWh3X3ZsYW5fZW5gIHRoYXQgbm93IGRpcmVjdGx5IGNhbGxzIGBzdG1tYWNfcnhfaHdfdmxhbmAuXG5cblRoaXMgc3VnZ2VzdHMgdGhlIGludGVudGlvbiBpcyB0byBtb3ZlIFZMQU4gc3RyaXBwaW5nIHRvIGhhcmR3YXJlIHdoZW5ldmVyIHBvc3NpYmxlLiAgVGhlIGNoYW5nZSBhbHNvIHRvdWNoZXMgdGhlIHByb2JlIGZ1bmN0aW9uLCBgX19zdG1tYWNfZHZyX3Byb2JlYC4gSW4gdGhhdCBmdW5jdGlvbiBJIHNlZSBzb21lIGFkanVzdG1lbnRzIHRvIGZlYXR1cmUgZmxhZ3MuIE5vdGFibHksIHRoZXJlJ3MgYSBjb25kaXRpb25hbCBzZXR0aW5nIG9mIGBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWGAuICBJdCBzZWVtcyB0aGF0IGlmIHRoZSBjb3JlIHR5cGUgaXMgXCJ4bWFjXCIsIHRoZW4gdGhlIGBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWGAgYW5kIGBwcml2LVx1MDAzZWh3LVx1MDAzZWh3X3ZsYW5fZW5gIGFyZSBzZXQuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGUgaHdfdmxhbl9lbiBmbGFnIGlzIGNvbnRyb2xsZWQgYXMgdGhpcyBzZWVtcyBrZXkgdG8gY29udHJvbGxpbmcgdGhlIGZlYXR1cmUuXG5cbk5vdywgSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBjYWxsIHNpdGVzIGZvciBgX19zdG1tYWNfZHZyX3Byb2JlYC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBjb250ZXh0IG9uIHdoZW4gVkxBTiBzdHJpcHBpbmcgaXMgZW5hYmxlZC4gSSBhbHNvIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBlbnRyeSBwb2ludHMgaW4gYHN0bW1hY19tYWluLmNgIGJlc2lkZXMgdGhpcyBwcm9iZSBmdW5jdGlvbiB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTE0MiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTQ6MjguNDk5OTQwMDY0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjA5MDM0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfZHZyX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MjgzPXN0YXRpYyBpbnQgZHdjX2V0aF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMzA6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzMxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9NDI9c3RhdGljIGludCBpbnRlbF9ldGhfcGxhdF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTExNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6MTE4OlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTE5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyNjM9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM0MTpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXQsIFxcdTAwMjZyZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM0Mi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM9Mzc0PXN0YXRpYyBpbnQgaXBxODA2eF9nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtNDgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzo0ODM6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtNDg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00OTg9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1NjI6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU2My1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jPTQyPXN0YXRpYyBpbnQgbHBjMTh4eF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYzo2ODpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy02OS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jPTU5OT1zdGF0aWMgaW50IG1lZGlhdGVrX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTY0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjY0MjpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NDMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM9NDc9c3RhdGljIGludCBtZXNvbjZfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmMtNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYzo3MzpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmMtNzQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jPTM4Mj1zdGF0aWMgaW50IG1lc29uOGJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy00NjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jOjQ2NDpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy00NjUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MjkzPXN0YXRpYyBpbnQgbW90b3Jjb21tX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MzU5OlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXQsIFxcdTAwMjZyZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2MC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM9NDg9c3RhdGljIGludCByem4xX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjY4OlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy02OS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM9MzU9c3RhdGljIGludCBzb3BoZ29fZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jOjY1OlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy02Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jPTE0Nz1zdGF0aWMgaW50IHNwYWNlbWl0X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jOjIwNzpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMDgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz05MD1zdGF0aWMgaW50IHN0YXJmaXZlX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jOjE1MzpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTU0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM9NTI1PXN0YXRpYyBpbnQgc3RtMzJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM6NTc5OlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTU4MC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMTA1PXN0YXRpYyBpbnQgc3VuOGlfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyMDI6XFx0LyogdGhlIE1BQyBpcyBydW50aW1lIHN1c3BlbmRlZCBhZnRlciBzdG1tYWNfZHZyX3Byb2JlKCksIHNvIHdlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjAzLVxcdCAqIG5lZWQgdG8gZW5zdXJlIHRoZSBNQUMgcmVzdW1lIGJhY2sgYmVmb3JlIG90aGVyIG9wZXJhdGlvbnMgc3VjaFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjA4LVxcdC8qIFRoZSBtdXggbXVzdCBiZSByZWdpc3RlcmVkIGFmdGVyIHBhcmVudCBNRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjA5OlxcdCAqIHNvIGFmdGVyIHN0bW1hY19kdnJfcHJvYmUoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIxMC1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM9MjE0PXN0YXRpYyBpbnQgdGVncmFfbWdiZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zNzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYzozNzY6XFx0ZXJyID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTM3Ny1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM9MjA1PXN0YXRpYyBpbnQgdmlzY29udGlfZXRoX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTIzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jOjIzNzpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMzgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQxMz12b2lkIHN0bW1hY19kdnJfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg6NDE0OmludCBzdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaC00MTUtXFx0XFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NzY1PUVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19wbGF0X2RhdF9hbGxvYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NzY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6Nzc2NzpzdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NzY4LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwNjgtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MDY5OiAqIHN0bW1hY19kdnJfcHJvYmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwNzAtICogQGRldjogZGV2aWNlIHBvaW50ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA3Ny0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgwNzg6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA3OS1cXHRcXHQgICAgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgwODgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MDg5OlxcdHJldCA9IF9fc3RtbWFjX2R2cl9wcm9iZShkZXYsIHBsYXRfZGF0LCByZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA5MC1cXHRpZiAocmV0IFxcdTAwMjZcXHUwMDI2IHBsYXRfZGF0LVxcdTAwM2VleGl0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MDk0LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgwOTU6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX2R2cl9wcm9iZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MDk2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTExOD1zdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODM6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdCwgXFx1MDAyNnJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4NC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz04NDg9aW50IHN0bW1hY19wbHRmcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjg1NzpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCByZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg1OC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDIyOjE0OjI4LjU0NjAzNDE5M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MjM0MjYzNzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBgc3RtbWFjX21haW4uY2AgZm9yIEVudHJ5IFBvaW50cyBhbmQgRHluYW1pYyBCZWhhdmlvcioqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBgc3RtbWFjX21haW4uY2AgZmlsZS4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIHN1c3BlY3QgdGhpcyBpcyBhIGNyaXRpY2FsIGNvbXBvbmVudCBvZiB0aGUgU1RNTUFDIGRyaXZlci4gSSB3YW50IHRvIHF1aWNrbHkgaWRlbnRpZnkgaXRzIGtleSBlbnRyeSBwb2ludHMgYW5kIHVuZGVyc3RhbmQgd2hhdCBwYXJ0cyBvZiB0aGlzIGNvZGUgbWlnaHQgaW50ZXJhY3QgZHluYW1pY2FsbHkgd2l0aCBvdGhlciBtb2R1bGVzIG9yIHRoZSBrZXJuZWwgYXQgcnVudGltZS4gTXkgcHJpbWFyeSB0aG91Z2h0IHByb2Nlc3MgaW52b2x2ZXMgYSB0YXJnZXRlZCBpbnZlc3RpZ2F0aW9uIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIGdvaW5nIG9uIGF0IHRoZSBoaWdoIGxldmVsLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgaGVyZSBiZXNpZGVzIHRoZSBzdGF0aWMgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIHByZXZpb3VzbHkgcG9pbnRlZCBvdXQuIEkga25vdyB0aGF0IGxvb2tpbmcgZm9yIGBFWFBPUlRfU1lNQk9MYCBpcyB0aGUgY2xhc3NpYyB3YXkgdG8gZG8gaXQuIExldCBtZSBzZWUgd2hlcmUgdGhlIGNvZGUgY2FuIGdvIGZyb20gaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ4NTksIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNDozNC43ODAzMDAyNjRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NjY5NDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKnN0bW1hY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTk1PWludCBzdG1tYWNfc2V0X2Nsa190eF9yYXRlKHZvaWQgKmJzcF9wcml2LCBzdHJ1Y3QgY2xrICpjbGtfdHhfaSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjA4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIwOTpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfc2V0X2Nsa190eF9yYXRlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjE3PXZvaWQgc3RtbWFjX2F4aV9ibGVuX3RvX21hc2sodTMyICpyZWd2YWwsIGNvbnN0IHUzMiAqYmxlbiwgc2l6ZV90IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQ2LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI0NzpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfYXhpX2JsZW5fdG9fbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNDgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTMxOTU9aW50IHN0bW1hY19nZXRfcGh5X2ludGZfc2VsKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTMyMTAtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MzIxMTpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfZ2V0X3BoeV9pbnRmX3NlbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zMjEyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NzMxPXN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqc3RtbWFjX3BsYXRfZGF0X2FsbG9jKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzc2NC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NzY1OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19wbGF0X2RhdF9hbGxvYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NzY2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz04MDc4PWludCBzdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA5NC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MDk1OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19kdnJfcHJvYmUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA5Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9ODEwMz12b2lkIHN0bW1hY19kdnJfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEzNi19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTM3OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19kdnJfcmVtb3ZlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMzgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgxNDY9aW50IHN0bW1hY19zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODE5Ny19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MTk4OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19zdXNwZW5kKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxOTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgyNDI9aW50IHN0bW1hY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzI4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgzMjk6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3Jlc3VtZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz04MzMyPURFRklORV9TSU1QTEVfREVWX1BNX09QUyhzdG1tYWNfc2ltcGxlX3BtX29wcywgc3RtbWFjX3N1c3BlbmQsIHN0bW1hY19yZXN1bWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODMzMzpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfc2ltcGxlX3BtX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzM0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNDozNC44Mjc5NzMzNzNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjY2MjE1MTc2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipFeGFtaW5pbmcgYHN0bW1hY19tYWluLmNgIGFuZCBJdHMgTmV0d29yayBEZXZpY2UgT3BlcmF0aW9ucyoqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMgYHN0bW1hY2AgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQncyBpbnRlcmFjdGluZyB3aXRoIHRoZSBuZXR3b3JrIGRldmljZS4gTGV0J3Mgc3RhcnQgd2l0aCBhIGNydWNpYWwgcGllY2U6IHRoZSBgbmV0X2RldmljZV9vcHNgIHN0cnVjdHVyZS4gSSdtIGdvaW5nIHRvIGxvb2sgc3BlY2lmaWNhbGx5IHdpdGhpbiBgc3RtbWFjX21haW4uY2AgYmVjYXVzZSB0aGF0J3MgdXN1YWxseSB3aGVyZSB0aGUgY29yZSBkZXZpY2Ugc2V0dXAgYW5kIG9wZXJhdGlvbiBmdW5jdGlvbnMgYXJlIGRlZmluZWQsIHJpZ2h0PyBJIHdhbnQgdG8gc2VlIHdoaWNoIGZ1bmN0aW9ucyBpdCdzIGltcGxlbWVudGluZywgaG93IGl0J3MgaGFuZGxpbmcgdGhlIHVzdWFsIHN1c3BlY3RzOiBpbml0aWFsaXphdGlvbiwgdHJhbnNtaXNzaW9uLCByZWNlcHRpb24sIGFuZCBsaW5rIHN0YXRlLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBzdGFuZGFyZCBzdHVmZiBsaWtlIGBuZG9fb3BlbmAsIGBuZG9fc3RvcGAsIGBuZG9fc3RhcnRfeG1pdGAsIGFuZCBgbmRvX2dldF9zdGF0czY0YCBpbiB0aGVyZSwgYnV0IEknbSBhbHNvIGN1cmlvdXMgYWJvdXQgYW55IHN0bW1hYy1zcGVjaWZpYyBleHRlbnNpb25zIG9yIGN1c3RvbSBob29rcy4gR290dGEgc2VlIGhvdyB0aGV5J3ZlIGhhbmRsZWQgRE1BIGNvbmZpZ3VyYXRpb24sIGludGVycnVwdCBoYW5kbGluZywgYW5kIGJ1ZmZlciBtYW5hZ2VtZW50LCBhbGwgdGhyb3VnaCB0aGF0IG9wZXJhdGlvbnMgc3RydWN0dXJlLiBSaWdodCwgbGV0J3Mgb3BlbiB0aGF0IGZpbGUgYW5kIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY1MjIsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNDozNy40OTAxMjc3NzFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNzYxMzM1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX25ldGRldl9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xNjA9c3RhdGljIHZvaWQgc3RtbWFjX3ZsYW5fcmVzdG9yZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNjItI2lmZGVmIENPTkZJR19ERUJVR19GU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTYzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgc3RtbWFjX25ldGRldl9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNjQtc3RhdGljIHZvaWQgc3RtbWFjX2luaXRfZnMoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTY3MTI9c3RhdGljIGludCBzdG1tYWNfZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NzE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjcxODpcXHRpZiAoZGV2LVxcdTAwM2VuZXRkZXZfb3BzICE9IFxcdTAwMjZzdG1tYWNfbmV0ZGV2X29wcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY3MTktXFx0XFx0Z290byBkb25lO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MjI4PXN0YXRpYyB2b2lkIHN0bW1hY19nZXRfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRubF9saW5rX3N0YXRzNjQgKnN0YXRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MjgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzI4MTpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHN0bW1hY19uZXRkZXZfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzI4Mi1cXHQubmRvX29wZW4gPSBzdG1tYWNfb3BlbixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9Nzc2Nz1zdGF0aWMgaW50IF9fc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc4ODEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3ODgyOlxcdG5kZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2c3RtbWFjX25ldGRldl9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03ODgzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNDozOC43NjYyNjY3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ0MzAwMzQ3MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTVE1NQUMgVkxBTiBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoIGNvbmNlcm5pbmcgdGhlIE5ldHdvcmsgRGV2aWNlIChuZGV2KSBvcGVyYXRpb25zIHdpdGhpbiB0aGUgc3RtbWFjIGRyaXZlci4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgY2hhbmdlcyByZWxhdGVkIHRvIFZMQU4gaGFuZGxpbmcuIEZpcnN0LCBpdCBsb29rcyBsaWtlIGBzdG1tYWNfcnhfdmxhbmAgaGFzIGJlZW4gY29tcGxldGVseSByZW1vdmVkLiBUaGF0J3MgYSBzaWduaWZpY2FudCBzaGlmdC4gQ29uc2VxdWVudGx5LCB0aGUgY2FsbHMgdG8gYHN0bW1hY19yeF92bGFuYCB3aXRoaW4gYHN0bW1hY19kaXNwYXRjaF9za2JfemNgIGFuZCBgc3RtbWFjX3J4YCBhcmUgYWxzbyBnb25lLlxuXG5Ob3csIGxldCdzIHNjcnV0aW5pemUgYF9fc3RtbWFjX2R2cl9wcm9iZWAuIEFoLCBoZXJlJ3Mgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gVGhlIG9yaWdpbmFsIGNvZGUgYmxvY2ssIGNvbW1lbnRlZCBvdXQsIHNlZW1zIHRvIGhhdmUgYmVlbiByZWxhdGVkIHRvIGVuYWJsaW5nIGhhcmR3YXJlIFZMQU4gdGFnIGRldGVjdGlvbi4gVGhlIGNvbmRpdGlvbmFsIGAjaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURgIGlzIGdvbmUsIGJ1dCB0aGUgaW50ZW50IHJlbWFpbnMuIFNwZWNpZmljYWxseSwgdGhlIHBhdGNoIG5vdyBjb25kaXRpb25hbGx5IHNldHMgYE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYYCBiYXNlZCBvbiB0aGUgYGR3bWFjX2lzX3htYWNgIGNoZWNrLiBBbmQgdGhlIGNvcnJlc3BvbmRpbmcgYGh3X2ZlYXR1cmVzYCBpcyBhZGp1c3RlZCwgYW5kIGBwcml2LVx1MDAzZWh3LVx1MDAzZWh3X3ZsYW5fZW5gIGlzIHNldCB0byB0cnVlLiBNeSBpbnRlcnByZXRhdGlvbiBpcyB0aGF0IHRoZSBkcml2ZXIgaXMgbm93IG9ubHkgZW5hYmxpbmcgQ1RBRyAoQ3VzdG9tZXIgVGFnKSBWTEFOIHN1cHBvcnQsIGxpa2VseSByZW1vdmluZyBzdXBwb3J0IGZvciBTVEFHIChTZXJ2aWNlIFRhZykgVkxBTiwgYXQgbGVhc3QgZXhwbGljaXRseSB0aHJvdWdoIHRoaXMgY29kZSBwYXRoLlxuXG5UbyBnZXQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhpcyBWTEFOIGNoYW5nZSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBTVE1NQUMgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJ2xsIG5lZWQgdG8gcmV2aWV3IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCBhbmQgY3Jvc3MtcmVmZXJlbmNlIHRoYXQgd2l0aCB0aGUgYnJvYWRlciBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWdgIGFuZCBgZHJpdmVycy9uZXQvS2NvbmZpZ2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBiZWVuIGVuYWJsZWQgb3IgZGlzYWJsZWQgYnkgdGhpcyBwYXRjaCBpbiB0ZXJtcyBvZiB0aGUgdW5kZXJseWluZyBjb25maWd1cmF0aW9ucyBmb3IgdGhlIFNUTU1BQyBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NDkyLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDIyOjE0OjQzLjE5NjMwMzU2OVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk0NTQwOTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNvdXJjZS4qc3RtbWFjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vS2NvbmZpZz0xOT1pZiBORVRfVkVORE9SX1NUTUlDUk9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL0tjb25maWctMjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9LY29uZmlnOjIxOnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL0tjb25maWctMjItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9OTM9c3RhdGljIGludCBhbmFyaW9uX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtOTctXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6OTg6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEwMDpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEwMS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYz05Nj1zdGF0aWMgaW50IGR3Y19xb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTk3LVxcdFxcdFxcdCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6OTg6XFx0XFx0XFx0IHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpzdG1tYWNfcmVzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtOTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYz0yODM9c3RhdGljIGludCBkd2NfZXRoX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI4Ni1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6Mjg3OlxcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yODgtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYz0xNjc9c3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTcwLVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjE3MTpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0xNzItXFx0c3RydWN0IGVpYzc3MDBfcW9zX3ByaXYgKmR3Y19wcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTE3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MTc2OlxcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTc3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM9MTk9c3RhdGljIGludCBkd21hY19nZW5lcmljX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjEtXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6MjI6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjMtXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjI1OlxcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jPTI5Mz1zdGF0aWMgaW50IGlteF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjk1LVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6Mjk2OlxcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjk3LVxcdHN0cnVjdCBpbXhfcHJpdl9kYXRhICpkd21hYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTMwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozMDE6XFx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTMwMi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jPTE1ND1zdGF0aWMgaW50IGluZ2VuaWNfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMTU2LVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jOjE1NzpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0xNTgtXFx0c3RydWN0IGluZ2VuaWNfbWFjICptYWM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMTYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoxNjM6XFx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0xNjQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYz00Mj1zdGF0aWMgaW50IGludGVsX2V0aF9wbGF0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtNDQtXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6NDU6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtNDYtXFx0c3RydWN0IGludGVsX2R3bWFjICpkd21hYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy00OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6NTA6XFx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy01MS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jPTM3ND1zdGF0aWMgaW50IGlwcTgwNnhfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTM3Ni1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzozNzc6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtMzc4LVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtMzgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzozODM6XFx0dmFsID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy0zODQtXFx0aWYgKHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jPTE1OD1zdGF0aWMgaW50IGxzMXhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jLTE2MC1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jOjE2MTpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jLTE2Mi1cXHRjb25zdCBzdHJ1Y3QgbHMxeF9kYXRhICpkYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMTY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jOjE2NzpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMTY4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM9NDI9c3RhdGljIGludCBscGMxOHh4X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNDQtXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM6NDU6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNDYtXFx0c3RydWN0IHJlZ21hcCAqcmVnbWFwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYzo0OTpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTUwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jPTU5OT1zdGF0aWMgaW50IG1lZGlhdGVrX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTYwMi1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM6NjAzOlxcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02MDQtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM6NjI3OlxcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTYyOC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYz00Nz1zdGF0aWMgaW50IG1lc29uNl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy00OS1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6NTA6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTUxLVxcdHN0cnVjdCBtZXNvbl9kd21hYyAqZHdtYWM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6NTQ6XFx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmMtNTUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYz0zODI9c3RhdGljIGludCBtZXNvbjhiX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtMzg0LVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jOjM4NTpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy0zODYtXFx0c3RydWN0IG1lc29uOGJfZHdtYWMgKmR3bWFjO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTM4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM6Mzg5OlxcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtMzkwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM9ODI9c3RhdGljIGludCBudnRfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTg0LVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jOjg1OlxcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTg2LVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jOjkwOlxcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtOTEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM9Njg0PXN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNjg4LVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo2ODk6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTY5MC1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy02OTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo2OTQ6XFx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNjk1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM9MTMxPXN0YXRpYyBpbnQgcmVuZXNhc19nYmV0aF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTEzNC1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoxMzU6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMTM2LVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMTQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoxNDE6XFx0ZXJyID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0xNDItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM9MTU2OD1zdGF0aWMgaW50IHJrX2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTU3MC1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM6MTU3MTpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTU3Mi1cXHRjb25zdCBzdHJ1Y3QgcmtfZ21hY19vcHMgKmRhdGE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE1ODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYzoxNTgxOlxcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE1ODItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYz00OD1zdGF0aWMgaW50IHJ6bjFfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy01MC1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzo1MTpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy01Mi1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYzo1NTpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTU2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM9NTk2PXN0YXRpYyBpbnQgc29jZnBnYV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTU5OC1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzo1OTk6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjAwLVxcdHN0cnVjdCBkZXZpY2VcXHRcXHQqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy02MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjYxMTpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTYxMi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM9MTk9c3RhdGljIGludCBzb3BoZ29fc2cyMDQ0X2R3bWFjX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy0yMC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzoyMTpcXHRcXHRcXHRcXHQgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnN0bW1hY19yZXMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM9MzU9c3RhdGljIGludCBzb3BoZ29fZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTM4LVxcdGNvbnN0IHN0cnVjdCBzb3BoZ29fZHdtYWNfZGF0YSAqZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzozOTpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTQwLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy00Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo0MzpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNDQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM9MTAyPXN0YXRpYyBpbnQgc3BhY2VtaXRfZHdtYWNfdXBkYXRlX2lycV9jb25maWcoc3RydWN0IHNwYWNtaXRfZHdtYWMgKmR3bWFjLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM6MTAzOlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqc3RtbWFjX3JlcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTEwNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jPTE0Nz1zdGF0aWMgaW50IHNwYWNlbWl0X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTE0OS1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM6MTUwOlxcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0xNTEtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM6MTYwOlxcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTE2MS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz05MD1zdGF0aWMgaW50IHN0YXJmaXZlX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTkyLVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzo5MzpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtOTQtXFx0c3RydWN0IHN0YXJmaXZlX2R3bWFjICpkd21hYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtOTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzo5ODpcXHRlcnIgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy05OS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM9MjQ5PXN0YXRpYyBpbnQgc3RpX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYy0yNTItXFx0Y29uc3Qgc3RydWN0IHN0aV9kd21hY19vZl9kYXRhICpkYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jOjI1MzpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTI1NC1cXHRzdHJ1Y3Qgc3RpX2R3bWFjICpkd21hYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTI2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYzoyNjM6XFx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTI2NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz01MjU9c3RhdGljIGludCBzdG0zMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01MjctXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jOjUyODpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTI5LVxcdHN0cnVjdCBzdG0zMl9kd21hYyAqZHdtYWM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTUzMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jOjUzMzpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01MzQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jPTEwNT1zdGF0aWMgaW50IHN1bjU1aV9nbWFjMjAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xMDctXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYzoxMDg6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xMDktXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTExMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYzoxMTM6XFx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTExNC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMTA1PXN0YXRpYyBpbnQgc3VuOGlfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTEwNy1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTEwODpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTEwOS1cXHRzdHJ1Y3Qgc3VueGlfcHJpdl9kYXRhICpnbWFjO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMTE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTExNjpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMTE3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jPTk5PXN0YXRpYyBpbnQgc3VuN2lfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xMDEtXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jOjEwMjpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmMtMTAzLVxcdHN0cnVjdCBzdW54aV9wcml2X2RhdGEgKmdtYWM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jLTEwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jOjEwNzpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xMDgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM9MjE2PXN0YXRpYyBpbnQgdGhlYWRfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jLTIxNy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYzoyMTg6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jLTIxOS1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jLTIyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jOjIyNTpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYy0yMjYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM9MjA1PXN0YXRpYyBpbnQgdmlzY29udGlfZXRoX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTIwNy1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjA4OlxcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMDktXFx0c3RydWN0IHZpc2NvbnRpX2V0aCAqZHdtYWM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTIxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jOjIxMjpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMTMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MjExNj1zdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV90eF9za2J1ZnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTMwLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjEzMTpzdGF0aWMgdm9pZCBfX2ZyZWVfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIxMzItXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjE2NjpzdGF0aWMgdm9pZCBmcmVlX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTY3LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjE4Mi0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIxODM6c3RhdGljIHZvaWQgX19mcmVlX2RtYV90eF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMTg0LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjIwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjIyMTA6c3RhdGljIHZvaWQgZnJlZV9kbWFfdHhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjIxMS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIyMzAtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMjMxOnN0YXRpYyBpbnQgX19hbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjIzMi1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIzMDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyMzA1OnN0YXRpYyBpbnQgYWxsb2NfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIzMDYtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMzM2LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjMzNzpzdGF0aWMgaW50IF9fYWxsb2NfZG1hX3R4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTIzMzgtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMzczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjM3NDpzdGF0aWMgaW50IGFsbG9jX2RtYV90eF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yMzc1LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQwMy0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjI0MDQ6c3RhdGljIGludCBhbGxvY19kbWFfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjQwNS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI0MjItICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyNDIzOnN0YXRpYyB2b2lkIGZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTI0MjQtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9NzMyPWludCBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjczMzpcXHRcXHRcXHRcXHQgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpzdG1tYWNfcmVzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTczNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaD0yMD1pbnQgc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaDoyMTpcXHRcXHRcXHRcXHQgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0yMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTQ6NDMuMzkwODUwNDQ2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3MzczMjI5Mzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBTVE1NQUNfVkxBTl9UQUdfVVNFRGAqKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBgU1RNTUFDX1ZMQU5fVEFHX1VTRURgLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBrbm93IHByZWNpc2VseSB3aGF0IHRoaXMgbWFjcm8gcmVwcmVzZW50cy4gSXRzIGRlZmluaXRpb24gaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSB3aXRoaW4gdGhlIFNUTU1BQyBkcml2ZXIncyBWTEFOIHRhZ2dpbmcgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byBwaW5wb2ludCB3aGVyZSBpdCdzIGRlZmluZWQgd2l0aGluIHRoZSByZWxldmFudCBzb3VyY2UgY29kZS4gTGV0J3MgdHJhY2UgaXQgYmFjayBhbmQgc2VlIHdoYXQncyBhY3R1YWxseSBnb2luZyBvbi4gVGhpcyB3aWxsIHRlbGwgbWUgd2hldGhlciB0aGlzIGlzIGVuYWJsaW5nLCBkaXNhYmxpbmcgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHkuIE5vIHBvaW50IHNwZWN1bGF0aW5nIHdpdGhvdXQgdGhlIGRlZmluaXRpb24gdG8gZ3VpZGUgbXkgdGhpbmtpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NDM0LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTU6MDAuNzY0MTAwMTYzWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzY2MzA0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJTVE1NQUNfVkxBTl9UQUdfVVNFRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yMC0jaWYgSVNfRU5BQkxFRChDT05GSUdfVkxBTl84MDIxUSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDoyMTojZGVmaW5lIFNUTU1BQ19WTEFOX1RBR19VU0VEXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtMjItI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lmX3ZsYW4uaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmM9NDA9c3RhdGljIHZvaWQgZHdtYWMxMDAwX2NvcmVfaW5pdChzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwMF9jb3JlLmMtNTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDAwX2NvcmUuYzo2MDojaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMDBfY29yZS5jLTYxLVxcdC8qIFRhZyBkZXRlY3Rpb24gd2l0aG91dCBmaWx0ZXJpbmcgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwX2NvcmUuYz0yMj1zdGF0aWMgdm9pZCBkd21hYzEwMF9jb3JlX2luaXQoc3RydWN0IG1hY19kZXZpY2VfaW5mbyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYzEwMF9jb3JlLmMtMzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMxMDBfY29yZS5jOjMyOiNpZmRlZiBTVE1NQUNfVkxBTl9UQUdfVVNFRFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjMTAwX2NvcmUuYy0zMy1cXHR3cml0ZWwoRVRIX1BfODAyMVEsIGlvYWRkciArIE1BQ19WTEFOMSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9lbmhfZGVzYy5jPTE1PXN0YXRpYyBpbnQgZW5oX2Rlc2NfZ2V0X3R4X3N0YXR1cyhzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzICp4LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZW5oX2Rlc2MuYy03MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9lbmhfZGVzYy5jOjcxOiNpZmRlZiBTVE1NQUNfVkxBTl9UQUdfVVNFRFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2VuaF9kZXNjLmMtNzItXFx0aWYgKHRkZXMwIFxcdTAwMjYgRVRERVMwX1ZMQU5fRlJBTUUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9lbmhfZGVzYy5jPTE3Nj1zdGF0aWMgaW50IGVuaF9kZXNjX2dldF9yeF9zdGF0dXMoc3RydWN0IHN0bW1hY19leHRyYV9zdGF0cyAqeCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2VuaF9kZXNjLmMtMjM4LVxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9lbmhfZGVzYy5jOjIzOTojaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9lbmhfZGVzYy5jLTI0MC1cXHRpZiAocmRlczAgXFx1MDAyNiBSREVTMF9WTEFOX1RBRylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL25vcm1fZGVzYy5jPTYyPXN0YXRpYyBpbnQgbmRlc2NfZ2V0X3J4X3N0YXR1cyhzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzICp4LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvbm9ybV9kZXNjLmMtMTAzLVxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9ub3JtX2Rlc2MuYzoxMDQ6I2lmZGVmIFNUTU1BQ19WTEFOX1RBR19VU0VEXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvbm9ybV9kZXNjLmMtMTA1LVxcdGlmIChyZGVzMCBcXHUwMDI2IFJERVMwX1ZMQU5fVEFHKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NzY3PXN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzk0Mi1cXHRuZGV2LVxcdTAwM2V3YXRjaGRvZ190aW1lbyA9IG1zZWNzX3RvX2ppZmZpZXMod2F0Y2hkb2cpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6Nzk0MzojaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc5NDQtXFx0aWYgKGR3bWFjX2lzX3htYWMocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNTowMC44MTE3NjYzOTJaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjg4MDAyMDYwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNUTU1BQyBWTEFOIFRhZ2dpbmcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIGlmIGBDT05GSUdfVkxBTl84MDIxUWAgaXMgZW5hYmxlZCwgdGhlbiBgU1RNTUFDX1ZMQU5fVEFHX1VTRURgIGlzIGF1dG9tYXRpY2FsbHkgZGVmaW5lZC4gTWFrZXMgc2Vuc2UuIE5vdywgbGV0J3MgdHJhY2UgdGhlIGRlcGVuZGVuY2llcyBmb3IgYFNUTU1BQ19FVEhgIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBmaXRzIGludG8gdGhlIGJyb2FkZXIgbmV0d29yayBkcml2ZXIgc3RydWN0dXJlLiBSaWdodCwgc3RhcnRpbmcgd2l0aCB0aGUgcGFyZW50IG1lbnVzOiBgTkVUREVWSUNFU2AgdW5kZXIgYGRyaXZlcnMvbmV0L0tjb25maWdgLCB0aGVuIGBFVEhFUk5FVGAgdW5kZXIgYGRyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWdgLCBhbmQgdGhlbiBzcGVjaWZpY2FsbHksIGBORVRfVkVORE9SX1NUTUlDUk9gIGluIHRoZSBgc3RtaWNyb2Agc3ViZGlyZWN0b3J5LiBUaGF0J3MgdGhlIFN0bWljcm8gc3BlY2lmaWMgcGFydC5cblxuRnJvbSB0aGVyZSB3ZSBnZXQgdG8gYFNUTU1BQ19FVEhgIGl0c2VsZiwgd2hpY2gsIGFzIEkgc3VzcGVjdGVkLCBpcyBpbiB0aGUgYHN0bW1hY2Agc3ViLW1lbnUuICBOYXR1cmFsbHksIHdlJ2xsIHNlZSBgU1RNTUFDX1BMQVRGT1JNYCwgYFNUTU1BQ19QQ0lgLCBhbmQgc2ltaWxhciBvcHRpb25zIGRlcGVuZGVudCBvbiB0aGUgaGFyZHdhcmUuIEFuZCBvZiBjb3Vyc2UsIHRoZSBWTEFOIHN1cHBvcnQgaGluZ2VzIG9uIGBWTEFOXzgwMjFRYC4gR290IGl0LiBOb3cgSSdsbCBkcmlsbCBkb3duIGludG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vS2NvbmZpZ2AgdG8gY29uZmlybSB0aGVzZSBkZXBlbmRlbmNpZXMgYW5kIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgdGhlc2UgVkxBTiBjb25maWd1cmF0aW9ucyBhcmUgaGFuZGxlZCBpbiB0aGUgU3RtaWNybyBFdGhlcm5ldCBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NzQ3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDIyOjE1OjAzLjY5MTc4ODkzOVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg2ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFNUTWljcm9lbGVjdHJvbmljcyBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgTkVUX1ZFTkRPUl9TVE1JQ1JPXFxuICAgNzpcXHRcXHRib29sIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgZGV2aWNlc1xcXCJcXG4gICA4OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBiYXNlZCBvbiBTeW5vcHN5cyBFdGhlcm5ldCBJUFxcbiAgMTI6XFx0XFx0ICBDb3Jlcywgc2F5IFkuXFxuICAxMzpcXHRcXG4gIDE0OlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gIDE1OlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbFxcbiAgMTY6XFx0XFx0ICB0aGUgcXVlc3Rpb25zIGFib3V0IFNUTWljcm9lbGVjdHJvbmljcyBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbFxcbiAgMTc6XFx0XFx0ICBiZSBhc2tlZCBmb3IgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRpZiBORVRfVkVORE9SX1NUTUlDUk9cXG4gIDIwOlxcdFxcbiAgMjE6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXFxcIlxcbiAgMjI6XFx0XFxuICAyMzpcXHRlbmRpZiAjIE5FVF9WRU5ET1JfU1RNSUNST1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNTowMy42OTE5MDI1MDhaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTAwNjk1NzcxMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGb2N1czogU1RNTUFDIEV0aGVybmV0IERyaXZlciAtIFZMQU4gSGFuZGxpbmcqKlxuXG5Pa2F5LCBsZXQncyBuYWlsIGRvd24gdGhlIGJlc3QgZnVuY3Rpb25zIHRvIHRhcmdldCBmb3IgZnV6emluZyB0aGlzIFNUTU1BQyBkcml2ZXIgcGF0Y2guIFRoZSBwYXRjaCByZW1vdmVzIHRoZSBzdGF0aWMgYHN0bW1hY19yeF92bGFuYCBmdW5jdGlvbiwgd2hpY2ggd2FzIHVzZWQgZm9yIFZMQU4gc3RyaXBwaW5nLCBhbmQgdGhlIGNhbGxlcnMgYXJlIG5vdyBgc3RtbWFjX2Rpc3BhdGNoX3NrYl96Y2AgYW5kIGBzdG1tYWNfcnhgIOKAkyBib3RoIGluIGBzdG1tYWNfbWFpbi5jYC4gQWxzbywgYF9fc3RtbWFjX2R2cl9wcm9iZWAgaW4gdGhlIHNhbWUgZmlsZSBpcyBjYWxsZWQgYnkgYHN0bW1hY19kdnJfcHJvYmVgLiBTaW5jZSBgc3RtbWFjX2R2cl9wcm9iZWAgaXMgYSBub24tc3RhdGljIGVudHJ5IHBvaW50LCBhbmQgb3RoZXIgY29tbW9uIG5ldGRldiBvcHMgc3VjaCBhcyBgc3RtbWFjX29wZW5gLCBgc3RtbWFjX3JlbGVhc2VgLCBhbmQgYHN0bW1hY194bWl0YCwgbWlnaHQgYmUgcmVsZXZhbnQuXG5cbk5vdywgbGV0J3MgY29uZmlybSB0aGUgZm9jdXMgc3ltYm9scy4gYHN0bW1hY19kdnJfcHJvYmVgIGlzIGV4cG9ydGVkIGFuZCBub24tc3RhdGljLCBzbyB0aGF0J3MgZGVmaW5pdGVseSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgc2hvdWxkIGFsc28gY2hlY2sgYHN0bW1hY19wbHRmcl9wcm9iZWAsIGluIGBzdG1tYWNfcGxhdGZvcm0uY2AsIGFzIGFuIGFkZGl0aW9uYWwgdGFyZ2V0LlxuXG5TbywgSSdtIHRoaW5raW5nOlxuXG4qICAgKipXb3J0aEZ1enppbmc6KiogVHJ1ZSwgZGVmaW5pdGVseS4gVGhpcyBwYXRjaCB0b3VjaGVzIFZMQU4gaGFuZGxpbmcsIGFuZCB0aGUgU1RNTUFDIGNvbnRyb2xsZXJzIGFyZSBrbm93biB0byBiZSBlbXVsYXRlZCBpbiB2aXJ0dWFsIGVudmlyb25tZW50cy4gVGhpcyB3aWxsIGJlIHJlYWNoYWJsZSBpbiB0aGUgZnV6emVyLlxuKiAgICoqRm9jdXNTeW1ib2xzOioqIEknbSBsZWFuaW5nIHRvd2FyZCBpbmNsdWRpbmcgYm90aCBgc3RtbWFjX2R2cl9wcm9iZWAgYW5kIGBzdG1tYWNfcGx0ZnJfcHJvYmVgLCBvciBtYXliZSBqdXN0IGBzdG1tYWNfZHZyX3Byb2JlYCBhbmQgc2VlIGlmIHRoZSBhbmFseXNpcyBleHBhbmRzIG91dCBmcm9tIHRoZXJlLlxuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXNlIGNvbmZpZ3MgYXJlIGVuYWJsZWQ6IGBORVRfVkVORE9SX1NUTUlDUk9gLCBgU1RNTUFDX0VUSGAsIGBTVE1NQUNfUExBVEZPUk1gLCBhbmQgYFZMQU5fODAyMVFgLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2sgbXkgcmVhc29uaW5nIGhlcmUuIFRoZSBwYXRjaCBpcyBhYm91dCBWTEFOIGhhbmRsaW5nIGluIHRoZSBSWCBwYXRoLCBzcGVjaWZpY2FsbHkgcmVtb3ZpbmcgdGhlIGRyaXZlci1sZXZlbCBzdHJpcHBpbmcsIG1ha2luZyBpdCBkZXBlbmRlbnQgb24gaGFyZHdhcmUgY2FwYWJpbGl0eSB2aWEgYGR3bWFjX2lzX3htYWNgLiBUaGUgU1RNTUFDIGNvbnRyb2xsZXJzIGFyZSBlbXVsYXRlZCwgc28gdGhpcyBpcyBkZWZpbml0ZWx5IHJlbGV2YW50IGZvciBmdXp6aW5nLCBhbmQgZnVuY3Rpb25hbC5cblxuQWxyaWdodCwgSSd2ZSBnb3QgdGhlIGNvbmZpZ3Mgc3RyYWlnaHQuIE5vdywgSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA1NjEsIk91dHB1dFRva2VucyI6MjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTU6MTMuNzYxNDgyNzk4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM2ODcwNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9WRU5ET1JfU1RNSUNST1wiLFxuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiU1RNTUFDX1BMQVRGT1JNXCIsXG4gICAgXCJWTEFOXzgwMjFRXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RtbWFjX2R2cl9wcm9iZVwiLFxuICAgIFwic3RtbWFjX3BsdGZyX3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWx0ZXJzIFZMQU4gaGFuZGxpbmcgaW4gdGhlIHJlY2VpdmUgcGF0aCBvZiB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlci4gSXQgcmVtb3ZlcyBhcnRpZmljaWFsIHNvZnR3YXJlIFZMQU4gc3RyaXBwaW5nIChzdG1tYWNfcnhfdmxhbikgZnJvbSBzdG1tYWNfcnggYW5kIHN0bW1hY19kaXNwYXRjaF9za2JfemMsIGFuZCB1cGRhdGVzIGZlYXR1cmUgYWR2ZXJ0aXNpbmcgZHVyaW5nIGRyaXZlciBwcm9iZSAoX19zdG1tYWNfZHZyX3Byb2JlKSB0byBvbmx5IHNldCBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCB3aGVuIGhhcmR3YXJlIFZMQU4gc3RyaXBwaW5nIGlzIHN1cHBvcnRlZC4gU1RNTUFDIGhhcmR3YXJlIChlLmcuIEFsbHdpbm5lciBzdW44aSBFTUFDKSBpcyBzdXBwb3J0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSwgc28gdGhlc2UgY2hhbmdlcyBhZmZlY3QgcmVhY2hhYmxlIGtlcm5lbCBuZXR3b3JrIGRhdGEgcGF0aHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1ZFTkRPUl9TVE1JQ1JPXCIsXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUExBVEZPUk1cIixcbiAgICBcIlZMQU5fODAyMVFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfZHZyX3Byb2JlXCIsXG4gICAgXCJzdG1tYWNfcGx0ZnJfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhbHRlcnMgVkxBTiBoYW5kbGluZyBpbiB0aGUgcmVjZWl2ZSBwYXRoIG9mIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBJdCByZW1vdmVzIGFydGlmaWNpYWwgc29mdHdhcmUgVkxBTiBzdHJpcHBpbmcgKHN0bW1hY19yeF92bGFuKSBmcm9tIHN0bW1hY19yeCBhbmQgc3RtbWFjX2Rpc3BhdGNoX3NrYl96YywgYW5kIHVwZGF0ZXMgZmVhdHVyZSBhZHZlcnRpc2luZyBkdXJpbmcgZHJpdmVyIHByb2JlIChfX3N0bW1hY19kdnJfcHJvYmUpIHRvIG9ubHkgc2V0IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYIHdoZW4gaGFyZHdhcmUgVkxBTiBzdHJpcHBpbmcgaXMgc3VwcG9ydGVkLiBTVE1NQUMgaGFyZHdhcmUgKGUuZy4gQWxsd2lubmVyIHN1bjhpIEVNQUMpIGlzIHN1cHBvcnRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBzbyB0aGVzZSBjaGFuZ2VzIGFmZmVjdCByZWFjaGFibGUga2VybmVsIG5ldHdvcmsgZGF0YSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTU6MTMuODM1MTc1MDE3WiIsIlNlcSI6MzEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjU1MDY4MDM1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDIyOjE1OjEzLjgzNTYzMTUzN1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI2NTUwMjE5Nzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZW1vdmVzIHNvZnR3YXJlLWJhc2VkIFZMQU4gdGFnIHN0cmlwcGluZyAoYHN0bW1hY19yeF92bGFuYCkgZnJvbSB0aGUgc3RtbWFjIG5ldHdvcmsgZHJpdmVyJ3MgUlggcGF0aCBhbmQgcmVzdHJpY3RzIGFkdmVydGlzaW5nIGBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWGAgdG8gaGFyZHdhcmUgdGhhdCBhY3R1YWxseSBzdXBwb3J0cyBIVyBWTEFOIHN0cmlwcGluZyAoYGR3bWFjX2lzX3htYWNgKS4gXFxuXFxuTm8gbmV3IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywga2VybmVsLXRvLXVzZXIgY29waWVzLCBwYWRkaW5nIGJ5dGVzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkIHBhdGhzIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGFiZTljYWZiODQ5ZTQzZTFlMDFjYjNiNWVjNzU1NjhhOTg5MTQ3OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDEgMjI6MTM6NDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggYjJiN2QwMjQyZGQzYy4uMmUzYjBjZjEwZDY2NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC01MDIxLDI0ICs1MDIxLDYgQEAgc3RhdGljIG5ldGRldl9mZWF0dXJlc190IHN0bW1hY19mZWF0dXJlc19jaGVjayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0cmV0dXJuIHZsYW5fZmVhdHVyZXNfY2hlY2soc2tiLCBmZWF0dXJlcyk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHN0bW1hY19yeF92bGFuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4te1xuLVx0c3RydWN0IHZsYW5fZXRoaGRyICp2ZXRoID0gc2tiX3ZsYW5fZXRoX2hkcihza2IpO1xuLVx0X19iZTE2IHZsYW5fcHJvdG8gPSB2ZXRoLVx1MDAzZWhfdmxhbl9wcm90bztcbi1cdHUxNiB2bGFuaWQ7XG4tXG4tXHRpZiAoKHZsYW5fcHJvdG8gPT0gaHRvbnMoRVRIX1BfODAyMVEpIFx1MDAyNlx1MDAyNlxuLVx0ICAgICBkZXYtXHUwMDNlZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYKSB8fFxuLVx0ICAgICh2bGFuX3Byb3RvID09IGh0b25zKEVUSF9QXzgwMjFBRCkgXHUwMDI2XHUwMDI2XG4tXHQgICAgIGRldi1cdTAwM2VmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9IV19WTEFOX1NUQUdfUlgpKSB7XG4tXHRcdC8qIHBvcCB0aGUgdmxhbiB0YWcgKi9cbi1cdFx0dmxhbmlkID0gbnRvaHModmV0aC1cdTAwM2VoX3ZsYW5fVENJKTtcbi1cdFx0bWVtbW92ZShza2ItXHUwMDNlZGF0YSArIFZMQU5fSExFTiwgdmV0aCwgRVRIX0FMRU4gKiAyKTtcbi1cdFx0c2tiX3B1bGwoc2tiLCBWTEFOX0hMRU4pO1xuLVx0XHRfX3ZsYW5faHdhY2NlbF9wdXRfdGFnKHNrYiwgdmxhbl9wcm90bywgdmxhbmlkKTtcbi1cdH1cbi19XG4tXG4gLyoqXG4gICogc3RtbWFjX3J4X3JlZmlsbCAtIHJlZmlsbCB1c2VkIHNrYiBwcmVhbGxvY2F0ZWQgYnVmZmVyc1xuICAqIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmVcbkBAIC01NDA3LDkgKzUzODksNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZGlzcGF0Y2hfc2tiX3pjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlLFxuIFx0aWYgKHByaXYtXHUwMDNlaHctXHUwMDNlaHdfdmxhbl9lbilcbiBcdFx0LyogTUFDIGxldmVsIHN0cmlwcGluZy4gKi9cbiBcdFx0c3RtbWFjX3J4X2h3X3ZsYW4ocHJpdiwgcHJpdi1cdTAwM2VodywgcCwgc2tiKTtcbi1cdGVsc2Vcbi1cdFx0LyogRHJpdmVyIGxldmVsIHN0cmlwcGluZy4gKi9cbi1cdFx0c3RtbWFjX3J4X3ZsYW4ocHJpdi1cdTAwM2VkZXYsIHNrYik7XG4rXG4gXHRza2ItXHUwMDNlcHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIHByaXYtXHUwMDNlZGV2KTtcbiBcbiBcdGlmICh1bmxpa2VseSghY29lKSB8fCAhc3RtbWFjX2hhc19pcF9ldGhlcnR5cGUoc2tiKSlcbkBAIC01OTAxLDkgKzU4ODEsNiBAQCBzdGF0aWMgaW50IHN0bW1hY19yeChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGludCBsaW1pdCwgdTMyIHF1ZXVlKVxuIFx0XHRpZiAocHJpdi1cdTAwM2Vody1cdTAwM2Vod192bGFuX2VuKVxuIFx0XHRcdC8qIE1BQyBsZXZlbCBzdHJpcHBpbmcuICovXG4gXHRcdFx0c3RtbWFjX3J4X2h3X3ZsYW4ocHJpdiwgcHJpdi1cdTAwM2VodywgcCwgc2tiKTtcbi1cdFx0ZWxzZVxuLVx0XHRcdC8qIERyaXZlciBsZXZlbCBzdHJpcHBpbmcuICovXG4tXHRcdFx0c3RtbWFjX3J4X3ZsYW4ocHJpdi1cdTAwM2VkZXYsIHNrYik7XG4gXG4gXHRcdHNrYi1cdTAwM2Vwcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgcHJpdi1cdTAwM2VkZXYpO1xuIFxuQEAgLTc5NjQsOSArNzk0MSw4IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbiBcdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gbmRldi1cdTAwM2Vod19mZWF0dXJlcyB8IE5FVElGX0ZfSElHSERNQTtcbiBcdG5kZXYtXHUwMDNld2F0Y2hkb2dfdGltZW8gPSBtc2Vjc190b19qaWZmaWVzKHdhdGNoZG9nKTtcbiAjaWZkZWYgU1RNTUFDX1ZMQU5fVEFHX1VTRURcbi1cdC8qIEJvdGggbWFjMTAwIGFuZCBnbWFjIHN1cHBvcnQgcmVjZWl2ZSBWTEFOIHRhZyBkZXRlY3Rpb24gKi9cbi1cdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfUlggfCBORVRJRl9GX0hXX1ZMQU5fU1RBR19SWDtcbiBcdGlmIChkd21hY19pc194bWFjKHByaXYtXHUwMDNlcGxhdC1cdTAwM2Vjb3JlX3R5cGUpKSB7XG4rXHRcdG5kZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfUlg7XG4gXHRcdG5kZXYtXHUwMDNlaHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfUlg7XG4gXHRcdHByaXYtXHUwMDNlaHctXHUwMDNlaHdfdmxhbl9lbiA9IHRydWU7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNToxMy44MzU2MzI1OTdaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTkzMjgyNDY0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBGdXp6aW5nIFNlc3Npb24gRXZhbHVhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2ggc2VyaWVzIHdhcnJhbnRzIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gTGV0J3MgZGlnIGluLiBGaXJzdCwgSSdsbCBhbmFseXplIHRoZSBjaGFuZ2VzIHRoZW1zZWx2ZXMsIHRoZW4gdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cblRoZSBwYXRjaCB0b3VjaGVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gQWxyaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoZXkndmUgcmVtb3ZlZCB0aGUgYHN0bW1hY19yeF92bGFuYCBmdW5jdGlvbiwgd2hpY2ggaGFuZGxlZCBWTEFOIHN0cmlwcGluZyBhdCB0aGUgZHJpdmVyIGxldmVsLiBUaGF0IGZ1bmN0aW9uIGRpZCB0aGluZ3MgbGlrZSBwb3BwaW5nIFZMQU4gdGFncywgYG1lbW1vdmVgLCBgc2tiX3B1bGxgLCBhbmQgY2FsbGluZyBgX192bGFuX2h3YWNjZWxfcHV0X3RhZ2AuIEl0IGFwcGVhcnMgdGhleSd2ZSBhbHNvIHJlbW92ZWQgdGhlIGZhbGxiYWNrIGNhbGwgdG8gYHN0bW1hY19yeF92bGFuYCBmcm9tIGBzdG1tYWNfZGlzcGF0Y2hfc2tiX3pjYCBhbmQgYHN0bW1hY19yeGAgd2hlbiBoYXJkd2FyZSBWTEFOIHN1cHBvcnQgaXNuJ3QgZW5hYmxlZCAoYCFwcml2LVx1MDAzZWh3LVx1MDAzZWh3X3ZsYW5fZW5gKS4gQW5kLCBpbiBgX19zdG1tYWNfZHZyX3Byb2JlYCwgdGhleSdyZSBubyBsb25nZXIgZW5hYmxpbmcgYE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYIHwgTkVUSUZfRl9IV19WTEFOX1NUQUdfUlhgIHVuaXZlcnNhbGx5LCBvbmx5IG9uIFhNQUMgdmFyaWFudHMgKGBkd21hY19pc194bWFjYCkgd2hlcmUgaGFyZHdhcmUgc3RyaXBwaW5nIGlzIGFjdHVhbGx5IHN1cHBvcnRlZC5cblxuTm93LCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXMgKndoeSogdGhleSByZW1vdmVkIGBzdG1tYWNfcnhfdmxhbmAgYW5kLCBtb3JlIGltcG9ydGFudGx5LCB3aGV0aGVyIGl0cyByZW1vdmFsIGludHJvZHVjZXMgYW55IHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgc3RtbWFjX3J4X3ZsYW5gIHdhcyBkb2luZyBhbmQgd2hldGhlciB0aGVzZSBjaGFuZ2VzIGZ1bmRhbWVudGFsbHkgYWx0ZXIgdGhlIGhhbmRsaW5nIG9mIFZMQU4tdGFnZ2VkIHBhY2tldHMuIFRpbWUgdG8gZ28gY2hlY2sgdGhhdCBjb2RlIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYCBkaXJlY3RseS4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NDgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNToyMy43Njg0NTk3ODhaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNzgyNTcwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcnhfdmxhblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTU6MjMuODE5MjQ3MTk4WiIsIlNlcSI6MzUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyNTA3NzcxMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpczpcblxuKipBbmFseXppbmcgdGhlIFNUTU1BQyBWTEFOIFJlbW92YWwqKlxuXG5Pa2F5LCBzbyB0aGUgcGF0Y2ggcmVtb3ZpbmcgYHN0bW1hY19yeF92bGFuYCBoYXMgYWxyZWFkeSBtYWRlIGl0cyB3YXkgaW50byB0aGUgdHJlZS4gVGhhdCdzIGdvb2Q7IGl0IHNpbXBsaWZpZXMgdGhpbmdzIGEgYml0LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyByZW1vdmFsIGluIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhlIFNUTU1BQyBkcml2ZXIuIEkgc2hvdWxkIHByb2JhYmx5IGZvY3VzIG9uIGhvdyB0aGUgVkxBTiBoYW5kbGluZyBpcyBub3cgbWFuYWdlZC5cblxuTGV0J3MgZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRoYXQgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSB3b3VsZCBiZSBhcm91bmQgdGhlIGFyZWFzIHdoZXJlIFZMQU4gZnJhbWVzIHdlcmUgcHJldmlvdXNseSBwcm9jZXNzZWQuIFNwZWNpZmljYWxseSwgdGhlIHZpY2luaXR5IG9mIGxpbmUgNTQwMCBhbmQgYWdhaW4gYXQgbGluZSA1OTAwIGFyZSBsaWtlbHkgaG90c3BvdHMuIEknbGwgc3RhcnQgdGhlcmUsIGFuZCByZWFkIGFyb3VuZCB0aG9zZSBsaW5lcyBmb3IgdGhlIHJlbGV2YW50IGxvZ2ljIGFuZCBkZXRlcm1pbmUgdGhlIG5ldyBmbG93LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9uYWxpdHkgd2FzIHJlbW92ZWQsIHdoYXQgaXQgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgbmV3IGNvbnNpZGVyYXRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBJIGJldCBJIHdpbGwgZmluZCB0aGUgbG9naWMgaXMgbm93IGhhbmRsZWQgaW5saW5lIHdpdGhpbiB0aGUgcmVjZWl2ZSBwYXRoLCBvciBwZXJoYXBzIGRlbGVnYXRlZCB0byBhIGRpZmZlcmVudCBmdW5jdGlvbi4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGltcGFjdCBvbiBleGlzdGluZyBjb25maWd1cmF0aW9ucyBhbmQgcG90ZW50aWFsIHBlcmZvcm1hbmNlIG9yIHN0YWJpbGl0eSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzE2LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTU6MjcuMDcwMDI2MzE2WiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NjE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUzODAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjUzODA6XFx0XFx0dTMyIGhhc2g7XFxuNTM4MTpcXHRcXG41MzgyOlxcdFxcdHNrYiA9IHN0bW1hY19jb25zdHJ1Y3Rfc2tiX3pjKGNoLCB4ZHApO1xcbjUzODM6XFx0XFx0aWYgKCFza2IpIHtcXG41Mzg0OlxcdFxcdFxcdHByaXYtXFx1MDAzZXhzdGF0cy5yeF9kcm9wcGVkKys7XFxuNTM4NTpcXHRcXHRcXHRyZXR1cm47XFxuNTM4NjpcXHRcXHR9XFxuNTM4NzpcXHRcXG41Mzg4OlxcdFxcdHN0bW1hY19nZXRfcnhfaHd0c3RhbXAocHJpdiwgcCwgbnAsIHNrYik7XFxuNTM4OTpcXHRcXHRpZiAocHJpdi1cXHUwMDNlaHctXFx1MDAzZWh3X3ZsYW5fZW4pXFxuNTM5MDpcXHRcXHRcXHQvKiBNQUMgbGV2ZWwgc3RyaXBwaW5nLiAqL1xcbjUzOTE6XFx0XFx0XFx0c3RtbWFjX3J4X2h3X3ZsYW4ocHJpdiwgcHJpdi1cXHUwMDNlaHcsIHAsIHNrYik7XFxuNTM5MjpcXHRcXG41MzkzOlxcdFxcdHNrYi1cXHUwMDNlcHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIHByaXYtXFx1MDAzZWRldik7XFxuNTM5NDpcXHRcXG41Mzk1OlxcdFxcdGlmICh1bmxpa2VseSghY29lKSB8fCAhc3RtbWFjX2hhc19pcF9ldGhlcnR5cGUoc2tiKSlcXG41Mzk2OlxcdFxcdFxcdHNrYl9jaGVja3N1bV9ub25lX2Fzc2VydChza2IpO1xcbjUzOTc6XFx0XFx0ZWxzZVxcbjUzOTg6XFx0XFx0XFx0c2tiLVxcdTAwM2VpcF9zdW1tZWQgPSBDSEVDS1NVTV9VTk5FQ0VTU0FSWTtcXG41Mzk5OlxcdFxcbjU0MDA6XFx0XFx0aWYgKCFzdG1tYWNfZ2V0X3J4X2hhc2gocHJpdiwgcCwgXFx1MDAyNmhhc2gsIFxcdTAwMjZoYXNoX3R5cGUpKVxcbjU0MDE6XFx0XFx0XFx0c2tiX3NldF9oYXNoKHNrYiwgaGFzaCwgaGFzaF90eXBlKTtcXG41NDAyOlxcdFxcbjU0MDM6XFx0XFx0c2tiX3JlY29yZF9yeF9xdWV1ZShza2IsIHF1ZXVlKTtcXG41NDA0OlxcdFxcdG5hcGlfZ3JvX3JlY2VpdmUoXFx1MDAyNmNoLVxcdTAwM2VyeHR4X25hcGksIHNrYik7XFxuNTQwNTpcXHRcXG41NDA2OlxcdFxcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXFx1MDAyNnJ4cV9zdGF0cy1cXHUwMDNlbmFwaV9zeW5jcCk7XFxuNTQwNzpcXHRcXHR1NjRfc3RhdHNfaW5jKFxcdTAwMjZyeHFfc3RhdHMtXFx1MDAzZW5hcGkucnhfcGt0X24pO1xcbjU0MDg6XFx0XFx0dTY0X3N0YXRzX2FkZChcXHUwMDI2cnhxX3N0YXRzLVxcdTAwM2VuYXBpLnJ4X2J5dGVzLCBsZW4pO1xcbjU0MDk6XFx0XFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXFx1MDAyNnJ4cV9zdGF0cy1cXHUwMDNlbmFwaV9zeW5jcCk7XFxuNTQxMDpcXHR9XFxuNTQxMTpcXHRcXG41NDEyOlxcdHN0YXRpYyBib29sIHN0bW1hY19yeF9yZWZpbGxfemMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUsIHUzMiBidWRnZXQpXFxuNTQxMzpcXHR7XFxuNTQxNDpcXHRcXHRzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xID0gXFx1MDAyNnByaXYtXFx1MDAzZWRtYV9jb25mLnJ4X3F1ZXVlW3F1ZXVlXTtcXG41NDE1OlxcdFxcdHVuc2lnbmVkIGludCBlbnRyeSA9IHJ4X3EtXFx1MDAzZWRpcnR5X3J4O1xcbjU0MTY6XFx0XFx0c3RydWN0IGRtYV9kZXNjICpyeF9kZXNjID0gTlVMTDtcXG41NDE3OlxcdFxcdGJvb2wgcmV0ID0gdHJ1ZTtcXG41NDE4OlxcdFxcbjU0MTk6XFx0XFx0YnVkZ2V0ID0gbWluKGJ1ZGdldCwgc3RtbWFjX3J4X2RpcnR5KHByaXYsIHF1ZXVlKSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDIyOjE1OjI3LjA3MDUyNDMyNloiLCJTZXEiOjM3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMzYwODExNTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBkZWVwIGluIG15IGFyZWEgb2YgZXhwZXJ0aXNlOlxuXG4qKlN0cmF0ZWdpYyBSYW5nZSBDb25zaWRlcmF0aW9uKipcblxuUmlnaHQsIHNvIHdlJ3ZlIGdvdCBhIHNpdHVhdGlvbiBoZXJlIHdoZXJlIHRoZSBhbmFseXNpcyBpcyBwb2ludGluZyBpbiBhIHBhcnRpY3VsYXIgZGlyZWN0aW9uLiBNeSBpbW1lZGlhdGUgcmVhY3Rpb24gaXNuJ3QganVzdCB0byBhY2NlcHQgdGhlIG1vc3Qgb2J2aW91cyBjb25jbHVzaW9uLCB0aG91Z2guIFRoZSBkYXRhIHN1Z2dlc3RzIHNvbWV0aGluZyB3aXRoaW4gdGhlIHBhcmFtZXRlcnMgd2UgaGF2ZSwgYnV0IEknbSB0aGlua2luZyBzdHJhdGVnaWNhbGx5LiBJIHdhbnQgdG8gYmUgdGhvcm91Z2guIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBkYXRhIGFyb3VuZCB0aGUgNTg4MC01OTEwIHJhbmdlIHNwZWNpZmljYWxseS4gSXQncyBub3QgbmVjZXNzYXJpbHkgdGhlIHByaW1hcnkgZm9jdXMsIG9yIHRoZSBtb3N0IG9idmlvdXMgcmFuZ2UsIGJ1dCBleHBlcmllbmNlIHRlbGxzIG1lIGl0J3Mgb2Z0ZW4gcHJ1ZGVudCB0byBleHBsb3JlIHRoZXNlIGFkamFjZW50IGFyZWFzIGZvciBwb3RlbnRpYWwgbnVhbmNlcywgc2Vjb25kYXJ5IGVmZmVjdHMsIG9yIGFsdGVybmF0aXZlIGV4cGxhbmF0aW9ucy4gSXQgbWlnaHQgY29uZmlybSB0aGUgcHJpbWFyeSBmaW5kaW5ncywgb3IgdGhyb3cgdXAgYSB3cmlua2xlIHRvIGJlIGV4cGxvcmVkIGZ1cnRoZXIuIEVpdGhlciB3YXksIGl0J3MgYSBnb29kIGNyb3NzY2hlY2suIEknbSBvcGVyYXRpbmcgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBiZWluZyBtZXRpY3Vsb3VzIHVwIGZyb250IHNhdmVzIGEgbG90IG9mIHRpbWUgYW5kIHBvdGVudGlhbCByZXdvcmsgZG93biB0aGUgbGluZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgzMywiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTU6MzAuNDMxMzM4NjIyWiIsIlNlcSI6MzgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzODcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU4NzUsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjU4NzU6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuNTg3NjpcXHRcXG41ODc3OlxcdFxcdFxcdC8qIEdvdCBlbnRpcmUgcGFja2V0IGludG8gU0tCLiBGaW5pc2ggaXQuICovXFxuNTg3ODpcXHRcXG41ODc5OlxcdFxcdFxcdHN0bW1hY19nZXRfcnhfaHd0c3RhbXAocHJpdiwgcCwgbnAsIHNrYik7XFxuNTg4MDpcXHRcXG41ODgxOlxcdFxcdFxcdGlmIChwcml2LVxcdTAwM2Vody1cXHUwMDNlaHdfdmxhbl9lbilcXG41ODgyOlxcdFxcdFxcdFxcdC8qIE1BQyBsZXZlbCBzdHJpcHBpbmcuICovXFxuNTg4MzpcXHRcXHRcXHRcXHRzdG1tYWNfcnhfaHdfdmxhbihwcml2LCBwcml2LVxcdTAwM2VodywgcCwgc2tiKTtcXG41ODg0OlxcdFxcbjU4ODU6XFx0XFx0XFx0c2tiLVxcdTAwM2Vwcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgcHJpdi1cXHUwMDNlZGV2KTtcXG41ODg2OlxcdFxcbjU4ODc6XFx0XFx0XFx0aWYgKHVubGlrZWx5KCFjb2UpIHx8ICFzdG1tYWNfaGFzX2lwX2V0aGVydHlwZShza2IpIHx8XFxuNTg4ODpcXHRcXHRcXHQgICAgKHN0YXR1cyBcXHUwMDI2IGNzdW1fbm9uZSkpXFxuNTg4OTpcXHRcXHRcXHRcXHRza2JfY2hlY2tzdW1fbm9uZV9hc3NlcnQoc2tiKTtcXG41ODkwOlxcdFxcdFxcdGVsc2VcXG41ODkxOlxcdFxcdFxcdFxcdHNrYi1cXHUwMDNlaXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlk7XFxuNTg5MjpcXHRcXG41ODkzOlxcdFxcdFxcdGlmICghc3RtbWFjX2dldF9yeF9oYXNoKHByaXYsIHAsIFxcdTAwMjZoYXNoLCBcXHUwMDI2aGFzaF90eXBlKSlcXG41ODk0OlxcdFxcdFxcdFxcdHNrYl9zZXRfaGFzaChza2IsIGhhc2gsIGhhc2hfdHlwZSk7XFxuNTg5NTpcXHRcXG41ODk2OlxcdFxcdFxcdHNrYl9yZWNvcmRfcnhfcXVldWUoc2tiLCBxdWV1ZSk7XFxuNTg5NzpcXHRcXHRcXHRuYXBpX2dyb19yZWNlaXZlKFxcdTAwMjZjaC1cXHUwMDNlcnhfbmFwaSwgc2tiKTtcXG41ODk4OlxcdFxcdFxcdHNrYiA9IE5VTEw7XFxuNTg5OTpcXHRcXG41OTAwOlxcdFxcdFxcdHJ4X3BhY2tldHMrKztcXG41OTAxOlxcdFxcdFxcdHJ4X2J5dGVzICs9IGxlbjtcXG41OTAyOlxcdFxcdFxcdGNvdW50Kys7XFxuNTkwMzpcXHRcXHR9XFxuNTkwNDpcXHRcXG41OTA1OlxcdFxcdGlmIChzdGF0dXMgXFx1MDAyNiByeF9ub3RfbHMgfHwgc2tiKSB7XFxuNTkwNjpcXHRcXHRcXHRyeF9xLVxcdTAwM2VzdGF0ZV9zYXZlZCA9IHRydWU7XFxuNTkwNzpcXHRcXHRcXHRyeF9xLVxcdTAwM2VzdGF0ZS5za2IgPSBza2I7XFxuNTkwODpcXHRcXHRcXHRyeF9xLVxcdTAwM2VzdGF0ZS5lcnJvciA9IGVycm9yO1xcbjU5MDk6XFx0XFx0XFx0cnhfcS1cXHUwMDNlc3RhdGUubGVuID0gbGVuO1xcbjU5MTA6XFx0XFx0fVxcbjU5MTE6XFx0XFxuNTkxMjpcXHRcXHRzdG1tYWNfZmluYWxpemVfeGRwX3J4KHByaXYsIHhkcF9zdGF0dXMpO1xcbjU5MTM6XFx0XFxuNTkxNDpcXHRcXHRzdG1tYWNfcnhfcmVmaWxsKHByaXYsIHF1ZXVlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTU6MzAuNDMxNzc4NjEyWiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4NDIxOTE0NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBTVE1NQUMgRHJpdmVyIFByb2JlKipcblxuT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBgX19zdG1tYWNfZHZyX3Byb2JlYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBJIHN1c3BlY3QgdGhlIGlzc3VlIG1pZ2h0IGJlIGx1cmtpbmcgc29tZXdoZXJlIGFyb3VuZCBsaW5lcyA3OTM1IHRocm91Z2ggNzk2NS4gVGhpcyByYW5nZSBsaWtlbHkgY292ZXJzIGEgY3JpdGljYWwgc2VjdGlvbiB3aXRoaW4gdGhlIHByb2JlIHJvdXRpbmU7IG1heWJlIGFuIGluaXRpYWxpemF0aW9uIHN0ZXAsIHJlc291cmNlIGFsbG9jYXRpb24sIG9yIGRldmljZSBjb25maWd1cmF0aW9uLiBHaXZlbiB0aGUgdHlwaWNhbCBmbG93IG9mIHByb2JlIGZ1bmN0aW9ucyBpbiBMaW51eCBrZXJuZWwgZHJpdmVycywgdGhhdCBhcmVhIGlzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBkZWJ1Z2dpbmcuIExldCdzIHNlZSB3aGF0J3MgaGFwcGVuaW5nIHRoZXJlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzM1LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNTozMi4yNzM5NzIwMDNaIiwiU2VxIjo0MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ4NDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzkzNSxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNzkzNTpcXHRcXHRcXHRcXHR9XFxuNzkzNjpcXHRcXG43OTM3OlxcdFxcdFxcdFxcdHByaXYtXFx1MDAzZWRtYV9jYXAuaG9zdF9kbWFfd2lkdGggPSAzMjtcXG43OTM4OlxcdFxcdFxcdH1cXG43OTM5OlxcdFxcdH1cXG43OTQwOlxcdFxcbjc5NDE6XFx0XFx0bmRldi1cXHUwMDNlZmVhdHVyZXMgfD0gbmRldi1cXHUwMDNlaHdfZmVhdHVyZXMgfCBORVRJRl9GX0hJR0hETUE7XFxuNzk0MjpcXHRcXHRuZGV2LVxcdTAwM2V3YXRjaGRvZ190aW1lbyA9IG1zZWNzX3RvX2ppZmZpZXMod2F0Y2hkb2cpO1xcbjc5NDM6XFx0I2lmZGVmIFNUTU1BQ19WTEFOX1RBR19VU0VEXFxuNzk0NDpcXHRcXHRpZiAoZHdtYWNfaXNfeG1hYyhwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vjb3JlX3R5cGUpKSB7XFxuNzk0NTpcXHRcXHRcXHRuZGV2LVxcdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWDtcXG43OTQ2OlxcdFxcdFxcdG5kZXYtXFx1MDAzZWh3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYO1xcbjc5NDc6XFx0XFx0XFx0cHJpdi1cXHUwMDNlaHctXFx1MDAzZWh3X3ZsYW5fZW4gPSB0cnVlO1xcbjc5NDg6XFx0XFx0fVxcbjc5NDk6XFx0XFx0aWYgKHByaXYtXFx1MDAzZWRtYV9jYXAudmxoYXNoKSB7XFxuNzk1MDpcXHRcXHRcXHRuZGV2LVxcdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fQ1RBR19GSUxURVI7XFxuNzk1MTpcXHRcXHRcXHRuZGV2LVxcdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fU1RBR19GSUxURVI7XFxuNzk1MjpcXHRcXHR9XFxuNzk1MzpcXHRcXHRpZiAocHJpdi1cXHUwMDNlZG1hX2NhcC52bGlucylcXG43OTU0OlxcdFxcdFxcdG5kZXYtXFx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1RYO1xcbjc5NTU6XFx0I2VuZGlmXFxuNzk1NjpcXHRcXHRwcml2LVxcdTAwM2Vtc2dfZW5hYmxlID0gbmV0aWZfbXNnX2luaXQoZGVidWcsIGRlZmF1bHRfbXNnX2xldmVsKTtcXG43OTU3OlxcdFxcbjc5NTg6XFx0XFx0cHJpdi1cXHUwMDNleHN0YXRzLnRocmVzaG9sZCA9IHRjO1xcbjc5NTk6XFx0XFxuNzk2MDpcXHRcXHQvKiBJbml0aWFsaXplIFJTUyAqL1xcbjc5NjE6XFx0XFx0cnhxID0gcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcnhfcXVldWVzX3RvX3VzZTtcXG43OTYyOlxcdFxcdG5ldGRldl9yc3Nfa2V5X2ZpbGwocHJpdi1cXHUwMDNlcnNzLmtleSwgc2l6ZW9mKHByaXYtXFx1MDAzZXJzcy5rZXkpKTtcXG43OTYzOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHByaXYtXFx1MDAzZXJzcy50YWJsZSk7IGkrKylcXG43OTY0OlxcdFxcdFxcdHByaXYtXFx1MDAzZXJzcy50YWJsZVtpXSA9IGV0aHRvb2xfcnhmaF9pbmRpcl9kZWZhdWx0KGksIHJ4cSk7XFxuNzk2NTpcXHRcXG43OTY2OlxcdFxcdGlmIChwcml2LVxcdTAwM2VkbWFfY2FwLnJzc2VuIFxcdTAwMjZcXHUwMDI2IHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXJzc19lbilcXG43OTY3OlxcdFxcdFxcdG5kZXYtXFx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfUlhIQVNIO1xcbjc5Njg6XFx0XFxuNzk2OTpcXHRcXHRuZGV2LVxcdTAwM2V2bGFuX2ZlYXR1cmVzIHw9IG5kZXYtXFx1MDAzZWZlYXR1cmVzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQyMjoxNTozMi4yNzQ0MjY3MjNaIiwiU2VxIjo0MSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODExMTM5OTg3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZMQU4gU3RyaXBwaW5nIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIHBhdGNoIGZvciB0aGUgc3RtbWFjIGRyaXZlci4gSXQgc2VlbXMgbGlrZSB3ZSdyZSBzdHJlYW1saW5pbmcgdGhlIFZMQU4gcmVjZWl2ZSBwYXRoLiBUaGUgZ29hbCBpcyB0byByZW1vdmUgdGhlIHNvZnR3YXJlLWxldmVsIFZMQU4gc3RyaXBwaW5nIGVtdWxhdGlvbiwgYHN0bW1hY19yeF92bGFuYCwgYW5kIG9ubHkgZW5hYmxlIHRoZSBoYXJkd2FyZSBWTEFOIHN0cmlwcGluZyBmbGFnLCBgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlhgLCB3aGVuIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIChgZHdtYWNfaXNfeG1hY2ApIGFjdHVhbGx5IHN1cHBvcnRzIGl0LlxuXG5Ob3csIG15IGluaXRpYWwgY29uY2VybiwgYXMgYWx3YXlzLCBpcyB1bmluaXRpYWxpemVkIG1lbW9yeS4gU28sIGxldCdzIHJ1biB0aHJvdWdoIHRoZSB1c3VhbCBjaGVja2xpc3Q6XG5cbjEuICAqKktlcm5lbCBTdHJ1Y3R1cmVzIHRvIFVzZXJzcGFjZToqKiBEb2VzIHRoaXMgY2hhbmdlIGFueXRoaW5nIHdoZXJlIHdlIG1pZ2h0IGV4cG9zZSB1bmluaXRpYWxpemVkIGZpZWxkcyBvciBwYWRkaW5nIHRvIHVzZXJzcGFjZT8gTm8sIHRoYXQncyBub3QgYSBjb25jZXJuIGhlcmUuXG4yLiAgKipDb25kaXRpb25hbCBMb2dpYy9CcmFuY2hpbmc6KiogRG9lcyB0aGUgcGF0Y2ggaW50cm9kdWNlIGFueSBuZXcgY29uZGl0aW9uYWwgbG9naWMgdGhhdCByZWxpZXMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgb3Igc3RydWN0IGZpZWxkcz8gTm9wZS5cbjMuICAqKkNvbXBsZXggRGF0YSBTdHJ1Y3R1cmUgSW5pdGlhbGl6YXRpb246KiogQXJlIHdlIGFsbG9jYXRpbmcgb3IgaW5pdGlhbGl6aW5nIGFueSBuZXcgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZCBsYXRlcj8gTm8gaXNzdWVzIGRldGVjdGVkIGhlcmUgZWl0aGVyLlxuNC4gICoqQm91bmRzIENoZWNrcy9CdWZmZXIgQWNjZXNzOioqIEFueSBtb2RpZmljYXRpb24gdG8gYm91bmRzIGNoZWNrcyBvciBsb2dpYyB0aGF0IG1pZ2h0IGFsbG93IHN1cnJvdW5kaW5nIGNvZGUgdG8gcmVhZCB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnM/IEFjdHVhbGx5LCBpdCByZW1vdmVzIGNvZGUgdGhhdCB3b3VsZCBoYXZlIGJlZW4gYSBwb3RlbnRpYWwgc291cmNlIG9mIHRoaXMgaXNzdWUgKGBtZW1tb3ZlYCBhbmQgYHNrYl9wdWxsYCBpbiBgc3RtbWFjX3J4X3ZsYW5gKS4gUGFja2V0cyB3aXRob3V0IGhhcmR3YXJlIHN0cmlwcGluZyB3aWxsIHNpbXBseSByZXRhaW4gdGhlaXIgVkxBTiBoZWFkZXIgYW5kIGJlIHByb2Nlc3NlZCBmdXJ0aGVyIHVwIHRoZSBzdGFjaywgbm8gZHJpdmVyIGludGVydmVudGlvbiBuZWVkZWQuXG5cblNvLCBpbiBzaG9ydCwgSSdtIG5vdCBzZWVpbmcgYW55IGltbWVkaWF0ZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gTm8gS01TQU4gaXMgbmVjZXNzYXJ5IGZvciB0aGlzIGNoYW5nZS4gVGhlIHJpc2sgb2Ygc3RhbmRhcmQgdGVzdGluZyBsaWtlIEtBU0FOIGlzIG5lZ2xpZ2libGUuIEtBU0FOIHNob3VsZCBiZSBtb3JlIHRoYW4gYWRlcXVhdGUgdG8gY2F0Y2ggYW55IG91dC1vZi1ib3VuZHMsIHVzZS1hZnRlci1mcmVlLCBvciBvdGhlciBtZW1vcnkgc2FmZXR5IGlzc3Vlcy5cblxuSXQncyBhbGwgbG9va2luZyBnb29kLiBJIGFtIGhhcHB5IHdpdGggdGhlIHJlc3VsdHMgb2YgdGhlIHBhdGNoJ3MgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MTcsIk91dHB1dFRva2VucyI6MTQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMjI6MTU6NDAuMzg1ODI5MzA0WiIsIlNlcSI6NDIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZW1vdmVzIHNvZnR3YXJlLWJhc2VkIFZMQU4gdGFnIHN0cmlwcGluZyAoYHN0bW1hY19yeF92bGFuYCkgZnJvbSB0aGUgc3RtbWFjIG5ldHdvcmsgZHJpdmVyJ3MgUlggcGF0aCBhbmQgcmVzdHJpY3RzIGFkdmVydGlzaW5nIGBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWGAgdG8gaGFyZHdhcmUgdGhhdCBhY3R1YWxseSBzdXBwb3J0cyBIVyBWTEFOIHN0cmlwcGluZyAoYGR3bWFjX2lzX3htYWNgKS4gXFxuXFxuTm8gbmV3IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywga2VybmVsLXRvLXVzZXIgY29waWVzLCBwYWRkaW5nIGJ5dGVzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkIHBhdGhzIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBzb2Z0d2FyZS1iYXNlZCBWTEFOIHRhZyBzdHJpcHBpbmcgKGBzdG1tYWNfcnhfdmxhbmApIGZyb20gdGhlIHN0bW1hYyBuZXR3b3JrIGRyaXZlcidzIFJYIHBhdGggYW5kIHJlc3RyaWN0cyBhZHZlcnRpc2luZyBgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlhgIHRvIGhhcmR3YXJlIHRoYXQgYWN0dWFsbHkgc3VwcG9ydHMgSFcgVkxBTiBzdHJpcHBpbmcgKGBkd21hY19pc194bWFjYCkuIFxcblxcbk5vIG5ldyBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGtlcm5lbC10by11c2VyIGNvcGllcywgcGFkZGluZyBieXRlcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCBwYXRocyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIHRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9x9h[1] Phase: Succeeded StartedAt: 2026-09-01 22:16:02 +0000 UTC FinishedAt: 2026-09-01 22:16:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-01 22:16:02 +0000 UTC FinishedAt: 2026-09-01 22:16:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[2] Phase: Succeeded StartedAt: 2026-09-01 22:16:02 +0000 UTC FinishedAt: 2026-09-02 01:55:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-01 22:16:02 +0000 UTC FinishedAt: 2026-09-02 01:55:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-01 22:16:02 +0000 UTC FinishedAt: 2026-09-01 22:16:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-01 22:16:02 +0000 UTC FinishedAt: 2026-09-01 22:16:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx9x9h/series-workflowx9x9h-convert-artifact-233794277/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-01 22:16:12 +0000 UTC FinishedAt: 2026-09-01 22:32:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-01 22:16:12 +0000 UTC FinishedAt: 2026-09-01 22:32:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*53e608f6-cfb7-4a9a-ba72-3ec1c1b4d18a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx9x9h/series-workflowx9x9h-convert-artifact-233794277/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "14d981c5-d624-49a4-bc1b-e227459bb2e1", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx9x9h/series-workflowx9x9h-build-action-1014130443/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-01 22:16:12 +0000 UTC FinishedAt: 2026-09-01 22:32:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*53e608f6-cfb7-4a9a-ba72-3ec1c1b4d18a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx9x9h/series-workflowx9x9h-convert-artifact-233794277/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "14d981c5-d624-49a4-bc1b-e227459bb2e1", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx9x9h/series-workflowx9x9h-build-action-1014130443/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-01 22:32:11 +0000 UTC FinishedAt: 2026-09-01 22:32:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-01 22:32:11 +0000 UTC FinishedAt: 2026-09-01 22:32:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-01 22:32:11 +0000 UTC FinishedAt: 2026-09-01 22:32:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-01 22:32:11 +0000 UTC FinishedAt: 2026-09-01 22:32:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx9x9h/series-workflowx9x9h-convert-artifact-4015761600/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-01 22:32:21 +0000 UTC FinishedAt: 2026-09-01 22:34:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-01 22:32:21 +0000 UTC FinishedAt: 2026-09-01 22:34:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*14d981c5-d624-49a4-bc1b-e227459bb2e1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx9x9h/series-workflowx9x9h-build-action-1014130443/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-01 22:34:11 +0000 UTC FinishedAt: 2026-09-01 22:34:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-01 22:34:11 +0000 UTC FinishedAt: 2026-09-01 22:34:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-01 22:34:11 +0000 UTC FinishedAt: 2026-09-01 22:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-01 22:34:11 +0000 UTC FinishedAt: 2026-09-01 22:50:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*53e608f6-cfb7-4a9a-ba72-3ec1c1b4d18a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx9x9h/series-workflowx9x9h-convert-artifact-4015761600/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "d6d4730c-1e35-4424-bd0f-b5bc901387bd", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx9x9h/series-workflowx9x9h-build-action-1039603324/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-01 22:34:11 +0000 UTC FinishedAt: 2026-09-01 22:50:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*53e608f6-cfb7-4a9a-ba72-3ec1c1b4d18a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx9x9h/series-workflowx9x9h-convert-artifact-4015761600/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "d6d4730c-1e35-4424-bd0f-b5bc901387bd", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx9x9h/series-workflowx9x9h-build-action-1039603324/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-01 22:50:21 +0000 UTC FinishedAt: 2026-09-01 22:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-01 22:50:21 +0000 UTC FinishedAt: 2026-09-01 22:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-01 22:50:21 +0000 UTC FinishedAt: 2026-09-01 22:52:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-01 22:50:21 +0000 UTC FinishedAt: 2026-09-01 22:52:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d6d4730c-1e35-4424-bd0f-b5bc901387bd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx9x9h/series-workflowx9x9h-build-action-1039603324/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-01 22:52:17 +0000 UTC FinishedAt: 2026-09-02 01:55:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-01 22:52:17 +0000 UTC FinishedAt: 2026-09-02 01:55:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*14d981c5-d624-49a4-bc1b-e227459bb2e1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d6d4730c-1e35-4424-bd0f-b5bc901387bd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx9x9h/series-workflowx9x9h-build-action-1014130443/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx9x9h/series-workflowx9x9h-build-action-1039603324/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-01 22:52:17 +0000 UTC FinishedAt: 2026-09-01 22:52:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-01 22:52:17 +0000 UTC FinishedAt: 2026-09-01 22:52:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx9x9h/series-workflowx9x9h-convert-artifact-2099610393/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-01 22:52:17 +0000 UTC FinishedAt: 2026-09-01 22:52:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-01 22:52:17 +0000 UTC FinishedAt: 2026-09-01 22:52:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-01 22:52:17 +0000 UTC FinishedAt: 2026-09-01 22:52:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-01 22:52:27 +0000 UTC FinishedAt: 2026-09-02 01:55:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9x9h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_dvr_probe","stmmac_pltfr_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3ba13f5e7180c034b0a1ef7e052fb780856b134e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_STMICRO","STMMAC_ETH","STMMAC_PLATFORM","VLAN_8021Q"],"series_id":"0273c42b-55b0-4e3f-96e1-1f07e027f8e7","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-01 22:52:27 +0000 UTC FinishedAt: 2026-09-02 01:54:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*14d981c5-d624-49a4-bc1b-e227459bb2e1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d6d4730c-1e35-4424-bd0f-b5bc901387bd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx9x9h/series-workflowx9x9h-build-action-1014130443/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx9x9h/series-workflowx9x9h-build-action-1039603324/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx9x9h/series-workflowx9x9h-convert-artifact-2099610393/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}