Name: series-workflowdqvtd Phase: Succeeded StartedAt: 2026-08-20 10:09:49 +0000 UTC FinishedAt: 2026-08-20 14:12:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[0] Phase: Succeeded StartedAt: 2026-08-20 10:09:49 +0000 UTC FinishedAt: 2026-08-20 10:32:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[0].run-triage Phase: Succeeded StartedAt: 2026-08-20 10:09:49 +0000 UTC FinishedAt: 2026-08-20 10:32:11 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "564973a259ec76f2dad0853420e7034cc43994c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "564973a259ec76f2dad0853420e7034cc43994c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET" ], "series_id": "996eebdf-e60c-4314-a673-fd3fac56ddf6" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "pfifo_fast_init", "pfifo_fast_change_tx_queue_len" ], "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+CgkJCTx0ZD4yMDI2LzA4LzIwIDEwOjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BmaWZvX2Zhc3RfaW5pdCYjMzQ7LAogICAgJiMzNDtwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW4mIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2FwIG9uIHRoZSByaW5nIHNpemUgKGBxbGVuYCBhbmQgYG5ld19sZW5gKSB0byA2NTUzNSBpbiBgcGZpZm9fZmFzdF9pbml0YCBhbmQgYHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbmAsIGFuZCBjaGFuZ2VzIHRoZSBhbGxvY2F0aW9uIGZsYWcgZnJvbSBgR0ZQX0tFUk5FTGAgdG8gYEdGUF9LRVJORUxfQUNDT1VOVGAuIFRoZXNlIGNoYW5nZXMgYXJlIGludGVuZGVkIHRvIHByZXZlbnQgZXhjZXNzaXZlIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBhZGQgbWVtb3J5IGFjY291bnRpbmcuIFRoZXkgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbW9kaWZ5IHBhZGRpbmcsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gQW55IGlzc3VlcyByZWxhdGVkIHRvIG1lbW9yeSBhbGxvY2F0aW9uIHNpemVzIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgd291bGQgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBtZW1vcnkgZGVidWdnaW5nIHRvb2xzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MsIHNvIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCB0eF9xdWV1ZV9sZW4gY2hhbmdlIGxvZ2ljIG9mIHRoZSBwZmlmb19mYXN0IHFkaXNjLCBjYXBwaW5nIHRoZSBxdWV1ZSBsZW5ndGggdG8gNjU1MzUgYW5kIGFkZGluZyBtZW1vcnkgYWNjb3VudGluZy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTA6MzA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5N2UyNWI2MDQ5YmY1NDlhYmMyMGM2ZTQ4MDU0ZTdkYzVjNTRjZTkyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjAgMTA6MzA6NDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmMgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1xuaW5kZXggZWYyYjRiZjUxNTY0MS4uZTk4ZmQyMzZhZmEwNCAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1xuQEAgLTkxMCwxMSAmIzQzOzkxMCwxNyBAQCBzdGF0aWMgaW50IHBmaWZvX2Zhc3RfaW5pdChzdHJ1Y3QgUWRpc2MgKnFkaXNjLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRpZiAoIXFsZW4pXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuJiM0MztcdGlmIChxbGVuIFx1MDAzZSA2NTUzNSkge1xuJiM0MztcdFx0cHJfd2Fybl9yYXRlbGltaXRlZChcJiMzNDtwZmlmb19mYXN0OiBjYXBwaW5nIHJpbmcgc2l6ZSAldSB0byA2NTUzNSBmb3IgZGV2ICVzXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCAgICBxbGVuLCBxZGlzY19kZXYocWRpc2MpLVx1MDAzZW5hbWUpO1xuJiM0MztcdFx0cWxlbiA9IDY1NTM1O1xuJiM0MztcdH1cbiYjNDM7XG4gXHRmb3IgKHByaW8gPSAwOyBwcmlvIFx1MDAzYyBQRklGT19GQVNUX0JBTkRTOyBwcmlvJiM0MzsmIzQzOykge1xuIFx0XHRzdHJ1Y3Qgc2tiX2FycmF5ICpxID0gYmFuZDJsaXN0KHByaXYsIHByaW8pO1xuIFx0XHRpbnQgZXJyO1xuIFxuLVx0XHRlcnIgPSBza2JfYXJyYXlfaW5pdChxLCBxbGVuLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRcdGVyciA9IHNrYl9hcnJheV9pbml0KHEsIHFsZW4sIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRcdGlmIChlcnIpXG4gXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHR9XG5AQCAtOTU3LDggJiM0Mzs5NjMsMTQgQEAgc3RhdGljIGludCBwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IFFkaXNjICpzY2gsXG4gXHRcdGJhbmRzW3ByaW9dID0gcTtcbiBcdH1cbiBcbiYjNDM7XHRpZiAobmV3X2xlbiBcdTAwM2UgNjU1MzUpIHtcbiYjNDM7XHRcdHByX3dhcm5fcmF0ZWxpbWl0ZWQoXCYjMzQ7cGZpZm9fZmFzdDogY2FwcGluZyByaW5nIHNpemUgJXUgdG8gNjU1MzUgZm9yIGRldiAlc1xcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgICAgbmV3X2xlbiwgcWRpc2NfZGV2KHNjaCktXHUwMDNlbmFtZSk7XG4mIzQzO1x0XHRuZXdfbGVuID0gNjU1MzU7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJldHVybiBza2JfYXJyYXlfcmVzaXplX211bHRpcGxlX2JoKGJhbmRzLCBQRklGT19GQVNUX0JBTkRTLCBuZXdfbGVuLFxuLVx0XHRcdFx0XHQgICAgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0XHRcdFx0XHQgICAgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiB9XG4gXG4gc3RydWN0IFFkaXNjX29wcyBwZmlmb19mYXN0X29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3BmaWZvX2Zhc3QuanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3BmaWZvX2Zhc3QuanNvblxuaW5kZXggMzBkYTI3ZmU4ODA2Ny4uYjM4MzAxNzJmZTRmNCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3BmaWZvX2Zhc3QuanNvblxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvcGZpZm9fZmFzdC5qc29uXG5AQCAtMTA1LDUgJiM0MzsxMDUsMjggQEBcbiAgICAgICAgIFwmIzM0O3RlYXJkb3duXCYjMzQ7OiBbXG4gICAgICAgICAgICAgXCYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290XCYjMzQ7XG4gICAgICAgICBdXG4mIzQzOyAgICB9LFxuJiM0MzsgICAge1xuJiM0MzsgICAgICAgIFwmIzM0O2lkXCYjMzQ7OiBcJiMzNDswMjQ5XCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O25hbWVcJiMzNDs6IFwmIzM0O0NyZWF0ZSBwZmlmb19mYXN0IHdpdGggaHVnZSB0eF9xdWV1ZV9sZW4gKHJpbmcgY2FwIHJlZ3Jlc3Npb24pXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O2NhdGVnb3J5XCYjMzQ7OiBbXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O3FkaXNjXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtwZmlmb19mYXN0XCYjMzQ7XG4mIzQzOyAgICAgICAgXSxcbiYjNDM7ICAgICAgICBcJiMzNDtwbHVnaW5zXCYjMzQ7OiB7XG4mIzQzOyAgICAgICAgICAgIFwmIzM0O3JlcXVpcmVzXCYjMzQ7OiBcJiMzNDtuc1BsdWdpblwmIzM0O1xuJiM0MzsgICAgICAgIH0sXG4mIzQzOyAgICAgICAgXCYjMzQ7c2V0dXBcJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7JElQIGxpbmsgc2V0IGRldiAkRFVNTVkgdHhxdWV1ZWxlbiAxMDAwMDAwMDBcJiMzNDtcbiYjNDM7ICAgICAgICBdLFxuJiM0MzsgICAgICAgIFwmIzM0O2NtZFVuZGVyVGVzdFwmIzM0OzogXCYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290IHBmaWZvX2Zhc3RcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7ZXhwRXhpdENvZGVcJiMzNDs6IFwmIzM0OzBcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7dmVyaWZ5Q21kXCYjMzQ7OiBcJiMzNDskVEMgcWRpc2Mgc2hvdyBkZXYgJERVTU1ZXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O21hdGNoUGF0dGVyblwmIzM0OzogXCYjMzQ7cWRpc2MgcGZpZm9fZmFzdCAxOiByb290XCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O21hdGNoQ291bnRcJiMzNDs6IFwmIzM0OzFcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7dGVhcmRvd25cJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7JElQIGxpbmsgc2V0IGRldiAkRFVNTVkgdHhxdWV1ZWxlbiAxMDAwXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkRFVNTVkgaGFuZGxlIDE6IHJvb3RcJiMzNDtcbiYjNDM7ICAgICAgICBdXG4gICAgIH1cbiBdXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTA6MzA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BmaWZvX2Zhc3RfaW5pdCYjMzQ7LAogICAgJiMzNDtwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCB0eF9xdWV1ZV9sZW4gY2hhbmdlIGxvZ2ljIG9mIHRoZSBwZmlmb19mYXN0IHFkaXNjLCBjYXBwaW5nIHRoZSBxdWV1ZSBsZW5ndGggdG8gNjU1MzUgYW5kIGFkZGluZyBtZW1vcnkgYWNjb3VudGluZy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5N2UyNWI2MDQ5YmY1NDlhYmMyMGM2ZTQ4MDU0ZTdkYzVjNTRjZTkyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgMjAgMTA6MzA6NDggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYyBiL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jCmluZGV4IGVmMmI0YmY1MTU2NDEuLmU5OGZkMjM2YWZhMDQgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jCkBAIC05MTAsMTEgJiM0Mzs5MTAsMTcgQEAgc3RhdGljIGludCBwZmlmb19mYXN0X2luaXQoc3RydWN0IFFkaXNjICpxZGlzYywgc3RydWN0IG5sYXR0ciAqb3B0LAogCWlmICghcWxlbikKIAkJcmV0dXJuIC1FSU5WQUw7CiAKJiM0MzsJaWYgKHFsZW4gJmd0OyA2NTUzNSkgewomIzQzOwkJcHJfd2Fybl9yYXRlbGltaXRlZCgmIzM0O3BmaWZvX2Zhc3Q6IGNhcHBpbmcgcmluZyBzaXplICV1IHRvIDY1NTM1IGZvciBkZXYgJXNcbiYjMzQ7LAomIzQzOwkJCQkgICAgcWxlbiwgcWRpc2NfZGV2KHFkaXNjKS0mZ3Q7bmFtZSk7CiYjNDM7CQlxbGVuID0gNjU1MzU7CiYjNDM7CX0KJiM0MzsKIAlmb3IgKHByaW8gPSAwOyBwcmlvICZsdDsgUEZJRk9fRkFTVF9CQU5EUzsgcHJpbyYjNDM7JiM0MzspIHsKIAkJc3RydWN0IHNrYl9hcnJheSAqcSA9IGJhbmQybGlzdChwcml2LCBwcmlvKTsKIAkJaW50IGVycjsKIAotCQllcnIgPSBza2JfYXJyYXlfaW5pdChxLCBxbGVuLCBHRlBfS0VSTkVMKTsKJiM0MzsJCWVyciA9IHNrYl9hcnJheV9pbml0KHEsIHFsZW4sIEdGUF9LRVJORUxfQUNDT1VOVCk7CiAJCWlmIChlcnIpCiAJCQlyZXR1cm4gLUVOT01FTTsKIAl9CkBAIC05NTcsOCAmIzQzOzk2MywxNCBAQCBzdGF0aWMgaW50IHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbihzdHJ1Y3QgUWRpc2MgKnNjaCwKIAkJYmFuZHNbcHJpb10gPSBxOwogCX0KIAomIzQzOwlpZiAobmV3X2xlbiAmZ3Q7IDY1NTM1KSB7CiYjNDM7CQlwcl93YXJuX3JhdGVsaW1pdGVkKCYjMzQ7cGZpZm9fZmFzdDogY2FwcGluZyByaW5nIHNpemUgJXUgdG8gNjU1MzUgZm9yIGRldiAlc1xuJiMzNDssCiYjNDM7CQkJCSAgICBuZXdfbGVuLCBxZGlzY19kZXYoc2NoKS0mZ3Q7bmFtZSk7CiYjNDM7CQluZXdfbGVuID0gNjU1MzU7CiYjNDM7CX0KJiM0MzsKIAlyZXR1cm4gc2tiX2FycmF5X3Jlc2l6ZV9tdWx0aXBsZV9iaChiYW5kcywgUEZJRk9fRkFTVF9CQU5EUywgbmV3X2xlbiwKLQkJCQkJICAgIEdGUF9LRVJORUwpOwomIzQzOwkJCQkJICAgIEdGUF9LRVJORUxfQUNDT1VOVCk7CiB9CiAKIHN0cnVjdCBRZGlzY19vcHMgcGZpZm9fZmFzdF9vcHMgX19yZWFkX21vc3RseSA9IHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3BmaWZvX2Zhc3QuanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3BmaWZvX2Zhc3QuanNvbgppbmRleCAzMGRhMjdmZTg4MDY3Li5iMzgzMDE3MmZlNGY0IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9wZmlmb19mYXN0Lmpzb24KJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvcGZpZm9fZmFzdC5qc29uCkBAIC0xMDUsNSAmIzQzOzEwNSwyOCBAQAogICAgICAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKICAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290JiMzNDsKICAgICAgICAgXQomIzQzOyAgICB9LAomIzQzOyAgICB7CiYjNDM7ICAgICAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7MDI0OSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7Q3JlYXRlIHBmaWZvX2Zhc3Qgd2l0aCBodWdlIHR4X3F1ZXVlX2xlbiAocmluZyBjYXAgcmVncmVzc2lvbikmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7cWRpc2MmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O3BmaWZvX2Zhc3QmIzM0OwomIzQzOyAgICAgICAgXSwKJiM0MzsgICAgICAgICYjMzQ7cGx1Z2lucyYjMzQ7OiB7CiYjNDM7ICAgICAgICAgICAgJiMzNDtyZXF1aXJlcyYjMzQ7OiAmIzM0O25zUGx1Z2luJiMzNDsKJiM0MzsgICAgICAgIH0sCiYjNDM7ICAgICAgICAmIzM0O3NldHVwJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0OyRJUCBsaW5rIHNldCBkZXYgJERVTU1ZIHR4cXVldWVsZW4gMTAwMDAwMDAwJiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O2NtZFVuZGVyVGVzdCYjMzQ7OiAmIzM0OyRUQyBxZGlzYyBhZGQgZGV2ICREVU1NWSBoYW5kbGUgMTogcm9vdCBwZmlmb19mYXN0JiMzNDssCiYjNDM7ICAgICAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDskVEMgcWRpc2Mgc2hvdyBkZXYgJERVTU1ZJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O3FkaXNjIHBmaWZvX2Zhc3QgMTogcm9vdCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaENvdW50JiMzNDs6ICYjMzQ7MSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDskSVAgbGluayBzZXQgZGV2ICREVU1NWSB0eHF1ZXVlbGVuIDEwMDAmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICREVU1NWSBoYW5kbGUgMTogcm9vdCYjMzQ7CiYjNDM7ICAgICAgICBdCiAgICAgfQogXQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMDozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODA5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IEV2YWx1YXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYG5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jYCwgc3BlY2lmaWNhbGx5IG1lc3Npbmcgd2l0aCBgcGZpZm9fZmFzdF9pbml0YCBhbmQgYHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbmAuIEl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgYWRkaW5nIGEgcXVldWUgbGVuZ3RoIGNhcCAoNjU1MzUsIGFzIGlmIEkgZGlkbiYjMzk7dCBrbm93KSwgYW5kIGl0JiMzOTtzIGFsc28gY2hhbmdpbmcgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGZsYWdzIGZyb20gYEdGUF9LRVJORUxgIHRvIGBHRlBfS0VSTkVMX0FDQ09VTlRgIGluIHRob3NlIGBza2JfYXJyYXlgIGZ1bmN0aW9ucy4gCgpNeSBpbml0aWFsIGd1dCBmZWVsaW5nPyBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vayBmb3IgZnV6emluZy4gYHBmaWZvX2Zhc3RgIGlzIHRoZSBkZWZhdWx0IHFkaXNjIG9uIGEgdG9uIG9mIG5ldHdvcmsgZGV2aWNlcywgc28gYW55IHBvdGVudGlhbCBpc3N1ZXMgdGhlcmUgY291bGQgaGF2ZSBhIHByZXR0eSB3aWRlIGltcGFjdC4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWw7IHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHF1ZXVlIGxlbmd0aCBsaW1pdHMgYW5kIG1lbW9yeSBhY2NvdW50aW5nLCB3aGljaCBhcmUgYm90aCBjcnVjaWFsIGZvciBzdGFiaWxpdHkgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQuIFRoYXQgc291bmRzIGxpa2UgcHJpbWUgZnV6emluZyB0ZXJyaXRvcnkuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGZ1enppbmcgc3RyYXRlZ3kuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEFuZCB0aGUgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZyB3aWxsIGJlIGBwZmlmb19mYXN0X2luaXRgIGFuZCBgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuYC4KClJpZ2h0LCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcyBpbiBgbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNgLiBJcyB0aGF0IGZpbGUgY29tcGlsZWQgdW5jb25kaXRpb25hbGx5IG9yIGRlcGVuZGVudCBvbiBgQ09ORklHX05FVF9TQ0hFRGA/IFdhaXQsIEkgdGhpbmsgSSYjMzk7bSB3cm9uZyB0aGVyZS4gQWN0dWFsbHksIGBzY2hfZ2VuZXJpYy5jYCBpcyBiYXNpY2FsbHkgYSBjb3JlIHBhcnQgb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2ssIGlzbiYjMzk7dCBpdD8gUHJvYmFibHkgZWl0aGVyIHVuY29uZGl0aW9uYWxseSBjb21waWxlZCB3aXRoIGBDT05GSUdfTkVUYCBvciBzaW1pbGFyLiBCZXR0ZXIgdmVyaWZ5IHRoYXQgaW4gdGhlIGBuZXQvc2NoZWQvTWFrZWZpbGVgIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTA6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2NoX2dlbmVyaWMubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvTWFrZWZpbGUtNS1cbm5ldC9zY2hlZC9NYWtlZmlsZTo2Om9iai15XHQ6PSBzY2hfZ2VuZXJpYy5vIHNjaF9tcS5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMDozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTUwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBgcGZpZm9fZmFzdF9pbml0YCBGdW5jdGlvbioqCgpPa2F5LCBzbyB0aGlzIGlzIHVuY29uZGl0aW9uYWxseSBjb21waWxlZCAoYG9iai15YCksIHdoaWNoIG1lYW5zIGFsbCB3ZSByZWFsbHkgbmVlZCB0byBmb2N1cyBvbiBpcyBgQ09ORklHX05FVGAuIEdvdCBpdC4KCk5vdywgbGV0JiMzOTtzIHNlZSBhYm91dCBgcGZpZm9fZmFzdF9pbml0YC4gSXMgaXQgc3RhdGljPyBZZXMsIGl0IGlzOiBgc3RhdGljIGludCBwZmlmb19mYXN0X2luaXQoc3RydWN0IFFkaXNjICpxZGlzYywgc3RydWN0IG5sYXR0ciAqb3B0LCAuLi4pYC4uLiBIbW0sIHdhaXQgYSBzZWNvbmQuIFRoYXQgcHJvbXB0Li4uICYjMzQ7UHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiYjMzQ7IFRoYXQmIzM5O3MgZ29vZCBwcmFjdGljZSwgYnV0Li4uIGhvbGQgb24uIGBwZmlmb19mYXN0X2luaXRgIGlzIGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gYHN0cnVjdCBRZGlzY19vcHMgcGZpZm9fZmFzdF9vcHNgLiBUaGF0IG1lYW5zIGl0ICp3b24mIzM5O3QqIGJlIGlubGluZWQgYmVjYXVzZSBpdHMgYWRkcmVzcyBpcyBiZWluZyB0YWtlbi4gVGhlIGNvbXBpbGVyIGhhcyB0byBnZW5lcmF0ZSBjb2RlIHRvIHBvaW50IHRvIGl0LiBTbywgdGhhdCYjMzk7cyBub3QgYSBjb25jZXJuIGhlcmUuIExldCBtZSBkb3VibGUtY2hlY2sgYHBmaWZvX2Zhc3Rfb3BzYCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGZpZm9fZmFzdF9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2dlbmVyaWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0zNi0vKiBRZGlzYyB0byB1c2UgYnkgZGVmYXVsdCAqL1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6Mzc6Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAqZGVmYXVsdF9xZGlzY19vcHMgPSBcdTAwMjZwZmlmb19mYXN0X29wcztcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTM4LUVYUE9SVF9TWU1CT0woZGVmYXVsdF9xZGlzY19vcHMpO1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTk1Mz1zdGF0aWMgaW50IHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbihzdHJ1Y3QgUWRpc2MgKnNjaCxcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05NzUtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo5NzY6c3RydWN0IFFkaXNjX29wcyBwZmlmb19mYXN0X29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTc3LVx0LmlkXHRcdD1cdFwmIzM0O3BmaWZvX2Zhc3RcJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTg5LX07XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo5OTA6RVhQT1JUX1NZTUJPTChwZmlmb19mYXN0X29wcyk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05OTEtXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTIxOT1zdGF0aWMgdm9pZCBhdHRhY2hfb25lX2RlZmF1bHRfcWRpc2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjI4LVx0ZWxzZSBpZihkZXYtXHUwMDNldHlwZSA9PSBBUlBIUkRfQ0FOKVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTIyOTpcdFx0b3BzID0gXHUwMDI2cGZpZm9fZmFzdF9vcHM7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjMwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDEwOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNDYKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHBmaWZvX2Zhc3QgT3BlcmF0aW9ucyBmb3IgUG90ZW50aWFsIEltcHJvdmVtZW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgcGZpZm9fZmFzdGAgc2V0dXAsIGFuZCBJJiMzOTt2ZSBub3RpY2VkIHNvbWV0aGluZy4gQmVjYXVzZSBgcGZpZm9fZmFzdF9pbml0YCBhbmQgYHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbmAgYXJlIHVzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIGBwZmlmb19mYXN0X29wc2AsIHRoZXkmIzM5O3JlIG5vdCBnZXR0aW5nIGlubGluZWQuIFRoaXMgcHJlc2VudHMgYSB1bmlxdWUgb3Bwb3J0dW5pdHksIHBvdGVudGlhbGx5IG1ha2luZyB0aGVtIHVzZWZ1bCBhcyBmb2N1cyBzeW1ib2xzIGR1cmluZyBhbmFseXNpcyBhbmQgb3B0aW1pemF0aW9uLiBUaGF0IHNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIGNydWNpYWwgY29uZmlndXJhdGlvbi13aXNlLiBJIHdvbmRlciBpZiBlbmFibGluZyBgQ09ORklHX05FVF9TQ0hFRGAgaXMgbmVjZXNzYXJ5IHRvIGZ1bGx5IGNvbmZpZ3VyZSB0aGVzZSBxZGlzY3MgdGhyb3VnaCBuZXRsaW5rLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIGBuZXQvc2NoZWQvTWFrZWZpbGVgIGFnYWluIHRvIGNvbmZpcm0gdGhlIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgZW52aXJvbm1lbnQgZm9yIHRoZXNlIGZlYXR1cmVzLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvYmotJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9NYWtlZmlsZS01LVxubmV0L3NjaGVkL01ha2VmaWxlOjY6b2JqLXlcdDo9IHNjaF9nZW5lcmljLm8gc2NoX21xLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS03LVxubmV0L3NjaGVkL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX0lORVQpXHRcdCYjNDM7PSBzY2hfZnJhZy5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfTkVUX1NDSEVEKVx0XHQmIzQzOz0gc2NoX2FwaS5vIHNjaF9ibGFja2hvbGUub1xubmV0L3NjaGVkL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19ORVRfQ0xTKVx0XHQmIzQzOz0gY2xzX2FwaS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX05FVF9DTFNfQUNUKVx0JiM0Mzs9IGFjdF9hcGkub1xubmV0L3NjaGVkL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19ORVRfQUNUX1BPTElDRSlcdCYjNDM7PSBhY3RfcG9saWNlLm9cbm5ldC9zY2hlZC9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfTkVUX0FDVF9HQUNUKVx0JiM0Mzs9IGFjdF9nYWN0Lm9cbm5ldC9zY2hlZC9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfTkVUX0FDVF9NSVJSRUQpXHQmIzQzOz0gYWN0X21pcnJlZC5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTU6b2JqLSQoQ09ORklHX05FVF9BQ1RfU0FNUExFKVx0JiM0Mzs9IGFjdF9zYW1wbGUub1xubmV0L3NjaGVkL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19ORVRfQUNUX05BVClcdCYjNDM7PSBhY3RfbmF0Lm9cbm5ldC9zY2hlZC9NYWtlZmlsZToxNzpvYmotJChDT05GSUdfTkVUX0FDVF9QRURJVClcdCYjNDM7PSBhY3RfcGVkaXQub1xubmV0L3NjaGVkL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19ORVRfQUNUX1NJTVApXHQmIzQzOz0gYWN0X3NpbXBsZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX05FVF9BQ1RfU0tCRURJVClcdCYjNDM7PSBhY3Rfc2tiZWRpdC5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX05FVF9BQ1RfQ1NVTSlcdCYjNDM7PSBhY3RfY3N1bS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MjE6b2JqLSQoQ09ORklHX05FVF9BQ1RfTVBMUylcdCYjNDM7PSBhY3RfbXBscy5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX05FVF9BQ1RfVkxBTilcdCYjNDM7PSBhY3Rfdmxhbi5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MjM6b2JqLSQoQ09ORklHX05FVF9BQ1RfQlBGKVx0JiM0Mzs9IGFjdF9icGYub1xubmV0L3NjaGVkL01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19ORVRfQUNUX0NPTk5NQVJLKVx0JiM0Mzs9IGFjdF9jb25ubWFyay5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX05FVF9BQ1RfQ1RJTkZPKVx0JiM0Mzs9IGFjdF9jdGluZm8ub1xubmV0L3NjaGVkL01ha2VmaWxlOjI2Om9iai0kKENPTkZJR19ORVRfQUNUX1NLQk1PRClcdCYjNDM7PSBhY3Rfc2tibW9kLm9cbm5ldC9zY2hlZC9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfTkVUX0FDVF9JRkUpXHQmIzQzOz0gYWN0X2lmZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6Mjg6b2JqLSQoQ09ORklHX05FVF9JRkVfU0tCTUFSSylcdCYjNDM7PSBhY3RfbWV0YV9tYXJrLm9cbm5ldC9zY2hlZC9NYWtlZmlsZToyOTpvYmotJChDT05GSUdfTkVUX0lGRV9TS0JQUklPKVx0JiM0Mzs9IGFjdF9tZXRhX3NrYnByaW8ub1xubmV0L3NjaGVkL01ha2VmaWxlOjMwOm9iai0kKENPTkZJR19ORVRfSUZFX1NLQlRDSU5ERVgpXHQmIzQzOz0gYWN0X21ldGFfc2tidGNpbmRleC5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX05FVF9BQ1RfVFVOTkVMX0tFWSkmIzQzOz0gYWN0X3R1bm5lbF9rZXkub1xubmV0L3NjaGVkL01ha2VmaWxlOjMyOm9iai0kKENPTkZJR19ORVRfQUNUX0NUKVx0JiM0Mzs9IGFjdF9jdC5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzM6b2JqLSQoQ09ORklHX05FVF9BQ1RfR0FURSlcdCYjNDM7PSBhY3RfZ2F0ZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfRklGTylcdCYjNDM7PSBzY2hfZmlmby5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzU6b2JqLSQoQ09ORklHX05FVF9TQ0hfSFRCKVx0JiM0Mzs9IHNjaF9odGIub1xubmV0L3NjaGVkL01ha2VmaWxlOjM2Om9iai0kKENPTkZJR19ORVRfU0NIX0hGU0MpXHQmIzQzOz0gc2NoX2hmc2Mub1xubmV0L3NjaGVkL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19ORVRfU0NIX1JFRClcdCYjNDM7PSBzY2hfcmVkLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTozODpvYmotJChDT05GSUdfTkVUX1NDSF9HUkVEKVx0JiM0Mzs9IHNjaF9ncmVkLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTozOTpvYmotJChDT05GSUdfTkVUX1NDSF9JTkdSRVNTKVx0JiM0Mzs9IHNjaF9pbmdyZXNzLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfTkVUX1NDSF9TRkIpXHQmIzQzOz0gc2NoX3NmYi5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDE6b2JqLSQoQ09ORklHX05FVF9TQ0hfU0ZRKVx0JiM0Mzs9IHNjaF9zZnEub1xubmV0L3NjaGVkL01ha2VmaWxlOjQyOm9iai0kKENPTkZJR19ORVRfU0NIX1RCRilcdCYjNDM7PSBzY2hfdGJmLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfTkVUX1NDSF9URVFMKVx0JiM0Mzs9IHNjaF90ZXFsLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0NDpvYmotJChDT05GSUdfTkVUX1NDSF9QUklPKVx0JiM0Mzs9IHNjaF9wcmlvLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfTkVUX1NDSF9NVUxUSVEpXHQmIzQzOz0gc2NoX211bHRpcS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDY6b2JqLSQoQ09ORklHX05FVF9TQ0hfTkVURU0pXHQmIzQzOz0gc2NoX25ldGVtLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0NzpvYmotJChDT05GSUdfTkVUX1NDSF9EUlIpXHQmIzQzOz0gc2NoX2Ryci5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDg6b2JqLSQoQ09ORklHX05FVF9TQ0hfUExVRylcdCYjNDM7PSBzY2hfcGx1Zy5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDk6b2JqLSQoQ09ORklHX05FVF9TQ0hfRVRTKVx0JiM0Mzs9IHNjaF9ldHMub1xubmV0L3NjaGVkL01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19ORVRfU0NIX01RUFJJTylcdCYjNDM7PSBzY2hfbXFwcmlvLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo1MTpvYmotJChDT05GSUdfTkVUX1NDSF9NUVBSSU9fTElCKSAmIzQzOz0gc2NoX21xcHJpb19saWIub1xubmV0L3NjaGVkL01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19ORVRfU0NIX1NLQlBSSU8pXHQmIzQzOz0gc2NoX3NrYnByaW8ub1xubmV0L3NjaGVkL01ha2VmaWxlOjUzOm9iai0kKENPTkZJR19ORVRfU0NIX0NIT0tFKVx0JiM0Mzs9IHNjaF9jaG9rZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfUUZRKVx0JiM0Mzs9IHNjaF9xZnEub1xubmV0L3NjaGVkL01ha2VmaWxlOjU1Om9iai0kKENPTkZJR19ORVRfU0NIX0NPREVMKVx0JiM0Mzs9IHNjaF9jb2RlbC5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTY6b2JqLSQoQ09ORklHX05FVF9TQ0hfRlFfQ09ERUwpXHQmIzQzOz0gc2NoX2ZxX2NvZGVsLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo1NzpvYmotJChDT05GSUdfTkVUX1NDSF9DQUtFKVx0JiM0Mzs9IHNjaF9jYWtlLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo1ODpvYmotJChDT05GSUdfTkVUX1NDSF9GUSlcdCYjNDM7PSBzY2hfZnEub1xubmV0L3NjaGVkL01ha2VmaWxlOjU5Om9iai0kKENPTkZJR19ORVRfU0NIX0hIRilcdCYjNDM7PSBzY2hfaGhmLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo2MDpvYmotJChDT05GSUdfTkVUX1NDSF9QSUUpXHQmIzQzOz0gc2NoX3BpZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjE6b2JqLSQoQ09ORklHX05FVF9TQ0hfRlFfUElFKVx0JiM0Mzs9IHNjaF9mcV9waWUub1xubmV0L3NjaGVkL01ha2VmaWxlOjYyOm9iai0kKENPTkZJR19ORVRfU0NIX0NCUylcdCYjNDM7PSBzY2hfY2JzLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfTkVUX1NDSF9FVEYpXHQmIzQzOz0gc2NoX2V0Zi5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfVEFQUklPKVx0JiM0Mzs9IHNjaF90YXByaW8ub1xubmV0L3NjaGVkL01ha2VmaWxlOjY1Om9iai0kKENPTkZJR19ORVRfU0NIX0JQRilcdCYjNDM7PSBicGZfcWRpc2Mub1xubmV0L3NjaGVkL01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19ORVRfU0NIX0RVQUxQSTIpXHQmIzQzOz0gc2NoX2R1YWxwaTIub1xubmV0L3NjaGVkL01ha2VmaWxlLTY3LVxubmV0L3NjaGVkL01ha2VmaWxlOjY4Om9iai0kKENPTkZJR19ORVRfQ0xTX1UzMilcdCYjNDM7PSBjbHNfdTMyLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo2OTpvYmotJChDT05GSUdfTkVUX0NMU19ST1VURTQpXHQmIzQzOz0gY2xzX3JvdXRlLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo3MDpvYmotJChDT05GSUdfTkVUX0NMU19GVylcdCYjNDM7PSBjbHNfZncub1xubmV0L3NjaGVkL01ha2VmaWxlOjcxOm9iai0kKENPTkZJR19ORVRfQ0xTX0JBU0lDKVx0JiM0Mzs9IGNsc19iYXNpYy5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NzI6b2JqLSQoQ09ORklHX05FVF9DTFNfRkxPVylcdCYjNDM7PSBjbHNfZmxvdy5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NzM6b2JqLSQoQ09ORklHX05FVF9DTFNfQ0dST1VQKVx0JiM0Mzs9IGNsc19jZ3JvdXAub1xubmV0L3NjaGVkL01ha2VmaWxlOjc0Om9iai0kKENPTkZJR19ORVRfQ0xTX0JQRilcdCYjNDM7PSBjbHNfYnBmLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo3NTpvYmotJChDT05GSUdfTkVUX0NMU19GTE9XRVIpXHQmIzQzOz0gY2xzX2Zsb3dlci5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NzY6b2JqLSQoQ09ORklHX05FVF9DTFNfTUFUQ0hBTEwpXHQmIzQzOz0gY2xzX21hdGNoYWxsLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo3NzpvYmotJChDT05GSUdfTkVUX0VNQVRDSClcdCYjNDM7PSBlbWF0Y2gub1xubmV0L3NjaGVkL01ha2VmaWxlOjc4Om9iai0kKENPTkZJR19ORVRfRU1BVENIX0NNUClcdCYjNDM7PSBlbV9jbXAub1xubmV0L3NjaGVkL01ha2VmaWxlOjc5Om9iai0kKENPTkZJR19ORVRfRU1BVENIX05CWVRFKVx0JiM0Mzs9IGVtX25ieXRlLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo4MDpvYmotJChDT05GSUdfTkVUX0VNQVRDSF9VMzIpXHQmIzQzOz0gZW1fdTMyLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo4MTpvYmotJChDT05GSUdfTkVUX0VNQVRDSF9NRVRBKVx0JiM0Mzs9IGVtX21ldGEub1xubmV0L3NjaGVkL01ha2VmaWxlOjgyOm9iai0kKENPTkZJR19ORVRfRU1BVENIX1RFWFQpXHQmIzQzOz0gZW1fdGV4dC5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6ODM6b2JqLSQoQ09ORklHX05FVF9FTUFUQ0hfQ0FOSUQpXHQmIzQzOz0gZW1fY2FuaWQub1xubmV0L3NjaGVkL01ha2VmaWxlOjg0Om9iai0kKENPTkZJR19ORVRfRU1BVENIX0lQU0VUKVx0JiM0Mzs9IGVtX2lwc2V0Lm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo4NTpvYmotJChDT05GSUdfTkVUX0VNQVRDSF9JUFQpXHQmIzQzOz0gZW1faXB0Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDE5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTmF2aWdhdGluZyB0aGUgS2VybmVsJiMzOTtzIE5ldHdvcmsgU2NoZWR1bGVyIEJ1aWxkIFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gaG93IHRoZSBuZXR3b3JrIHNjaGVkdWxlciBjb21wb25lbnRzIGFyZSBidWlsdCwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgYHNjaF9nZW5lcmljLmNgLiBSaWdodCwgc28gSSBzZWUgdGhhdCB0aGlzIGlzIGNvbXBpbGVkIGludG8gYG5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5vYC4gUHJldHR5IHN0YW5kYXJkLiBBbmQgdGhhdCBvYmplY3QgZmlsZSBpcyBkZWNsYXJlZCBhcyBgb2JqLXlgIHdpdGhpbiB0aGUgYG5ldC9zY2hlZC9NYWtlZmlsZWAuIFNvIGZhciwgc28gZ29vZC4gTm8gc3VycHJpc2VzIHRoZXJlLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gSSBrbm93IHRoYXQgYG5ldC9zY2hlZC9NYWtlZmlsZWAgaXMgKml0c2VsZiogaW5jbHVkZWQgZnJvbSBgbmV0L01ha2VmaWxlYC4gUmlnaHQuIFRoYXQmIzM5O3MgdGhlIGtleS4gSSBuZWVkIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmN5IGNoYWluIGJhY2sgdXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgaW5jbHVzaW9uIG9mIGBuZXQvc2NoZWQvTWFrZWZpbGVgIGFmZmVjdHMgdGhlIG92ZXJhbGwgYnVpbGQgcHJvY2Vzcy4gTGV0JiMzOTtzIHB1bGwgdXAgdGhhdCBgbmV0L01ha2VmaWxlYCBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gYXQgdGhlIGhpZ2hlciBsZXZlbC4gVGhpcyBzaG91bGQgaGVscCBtZSBwaW5wb2ludCB3aGVyZSBgc2NoX2dlbmVyaWMub2AgdWx0aW1hdGVseSBmaXRzIGludG8gdGhlIGJyb2FkZXIga2VybmVsIGJ1aWxkIGxhbmRzY2FwZSBhbmQgaG93IGl0cyBjb21waWxhdGlvbiBpcyBvcmNoZXN0cmF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDEwOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjaGVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9NYWtlZmlsZT0xND1vYmotJChDT05GSUdfTExDKVx0XHQmIzQzOz0gbGxjL1xubmV0L01ha2VmaWxlOjE1Om9iai15XHRcdFx0XHQmIzQzOz0gZXRoZXJuZXQvIDgwMi8gc2NoZWQvIG5ldGxpbmsvIGJwZi8gZXRodG9vbC9cbm5ldC9NYWtlZmlsZS0xNi1vYmotJChDT05GSUdfTkVURklMVEVSKVx0XHQmIzQzOz0gbmV0ZmlsdGVyL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDA1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIENvbXBpbGF0aW9uIGFuZCBJbml0aWFsaXphdGlvbiBvZiBgcGZpZm9fZmFzdGAqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gaG93IHRoZSBgbmV0L3NjaGVkL2AgZGlyZWN0b3J5IHdvcmtzIHdpdGhpbiB0aGUga2VybmVsLiBJdCBzZWVtcyBsaWtlIHRoZSBlbnRpcmUgZGlyZWN0b3J5LCBhdCBsZWFzdCB0aGUgY29yZSBjb21wb25lbnRzLCBhcmUgY29tcGlsZWQgaWYgYENPTkZJR19ORVRgIGlzIHNldC4gTm93LCB0aGUgYHBmaWZvX2Zhc3RgIHFkaXNjIGtlZXBzIGNvbWluZyB1cCwgc3BlY2lmaWNhbGx5IHdpdGggZnVuY3Rpb25zIGxpa2UgYHBmaWZvX2Zhc3RfaW5pdGAgYW5kIGBwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW5gLiBJIHdhcyBjdXJpb3VzIGlmIHRoZXJlIHdhcyBhIHNlcGFyYXRlIGNvbmZpZyBvcHRpb24gZm9yIGBwZmlmb19mYXN0YCBpdHNlbGYsIGJ1dCB0aGF0IHNlZW1zIG5vdCB0byBiZSB0aGUgY2FzZSwgYXMgaXQmIzM5O3MgZGlyZWN0bHkgaW5jbHVkZWQgYXMgYG9iai15YCB3aXRoaW4gYHNjaF9nZW5lcmljLmNgLgoKQSBrZXkgcG9pbnQgYXJpc2VzOiB0byBhY3R1YWxseSAqY29uZmlndXJlKiB0aGVzZSBxZGlzY3MgdXNpbmcgbmV0bGluaywgd2UgYWJzb2x1dGVseSBuZWVkIGBDT05GSUdfTkVUX1NDSEVEYC4gU28sIGhlcmUmIzM5O3MgbXkgY3JpdGljYWwgcXVlc3Rpb246IGNhbiBgcGZpZm9fZmFzdGAgc3RpbGwgYmUgKmluaXRpYWxpemVkKiBldmVuIGlmIGBDT05GSUdfTkVUX1NDSEVEYCBpcyBkaXNhYmxlZD8gUmVtZW1iZXIsIGluaXRpYWxpemF0aW9uIGlzIGRpc3RpbmN0IGZyb20gY29uZmlndXJhdGlvbi4gTG9va2luZyBhdCB0aGUgY29kZSBhZ2FpbiwgSSYjMzk7dmUgZ290IHRvIGZpbmQgd2hlbiBgcGZpZm9fZmFzdF9pbml0YCBpcyBjYWxsZWQgYW5kIGFzc2VzcyBpdHMgZGVwZW5kZW5jeSBvbiBgQ09ORklHX05FVF9TQ0hFRGAuIEl0JiMzOTtzIGNsZWFybHkgY2FsbGVkIGR1cmluZyB0aGUgcWRpc2MmIzM5O3MgaW5pdGlhbGl6YXRpb24sIHdoaWNoIGlzIGEga2V5IHByb2Nlc3MuIFRvIGNsYXJpZnksIEkgbmVlZCB0byBjaGVjayBgbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNgIGZvciBhbnkgY2x1ZXMgcmVnYXJkaW5nIHRoaXMgaW5pdGlhbGl6YXRpb24gbG9naWMuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGZpZm9fZmFzdF9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9nZW5lcmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9ODU5PXN0YXRpYyB2b2lkIHBmaWZvX2Zhc3RfcmVzZXQoc3RydWN0IFFkaXNjICpxZGlzYylcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy04NjgtXHRcdC8qIE5VTEwgcmluZyBpcyBwb3NzaWJsZSBpZiBkZXN0cm95IHBhdGggaXMgZHVlIHRvIGEgZmFpbGVkXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo4Njk6XHRcdCAqIHNrYl9hcnJheV9pbml0KCkgaW4gcGZpZm9fZmFzdF9pbml0KCkgY2FzZS5cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTg3MC1cdFx0ICovXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9ODg5PXN0YXRpYyBpbnQgcGZpZm9fZmFzdF9kdW1wKHN0cnVjdCBRZGlzYyAqcWRpc2MsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTAxLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTAyOnN0YXRpYyBpbnQgcGZpZm9fZmFzdF9pbml0KHN0cnVjdCBRZGlzYyAqcWRpc2MsIHN0cnVjdCBubGF0dHIgKm9wdCxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTkwMy1cdFx0XHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9OTMzPXN0YXRpYyB2b2lkIHBmaWZvX2Zhc3RfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05NDEtXHRcdC8qIE5VTEwgcmluZyBpcyBwb3NzaWJsZSBpZiBkZXN0cm95IHBhdGggaXMgZHVlIHRvIGEgZmFpbGVkXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo5NDI6XHRcdCAqIHNrYl9hcnJheV9pbml0KCkgaW4gcGZpZm9fZmFzdF9pbml0KCkgY2FzZS5cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk0My1cdFx0ICovXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9OTc2PXN0cnVjdCBRZGlzY19vcHMgcGZpZm9fZmFzdF9vcHMgX19yZWFkX21vc3RseSA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05ODEtXHQucGVla1x0XHQ9XHRwZmlmb19mYXN0X3BlZWssXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo5ODI6XHQuaW5pdFx0XHQ9XHRwZmlmb19mYXN0X2luaXQsXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05ODMtXHQuZGVzdHJveVx0PVx0cGZpZm9fZmFzdF9kZXN0cm95LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDM5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkluaXRpYWwgRGV2aWNlIENvbmZpZ3VyYXRpb24gVGhvdWdodHMqKgoKUmlnaHQsIHNvIGEgbmV0d29yayBkZXZpY2UgaXMgYnJvdWdodCBpbnRvIGV4aXN0ZW5jZSDigJMgbmF0dXJhbGx5LCBpdCBuZWVkcyBzb21lIGluaXRpYWwgcXVhbGl0eSBvZiBzZXJ2aWNlIChRb1MpIGhhbmRsaW5nLCBhIHF1ZXVlIGRpc2NpcGxpbmUgb3IgKnFkaXNjKi4gSSBpbW1lZGlhdGVseSBzdGFydCB0aGlua2luZyBhYm91dCBob3cgdGhhdCBnZXRzIHNldCB1cC4gTXkgbWluZCBnb2VzIHN0cmFpZ2h0IHRvIHRoZSBjb3JlOiBpcyBpdCBoYW5kbGVkIHRocm91Z2ggYGF0dGFjaF9vbmVfZGVmYXVsdF9xZGlzY2Agb3IgcGVyaGFwcyBgZGV2X2luaXRfc2NoZWR1bGVyYD8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBleGFjdCBmdW5jdGlvbiB0byB1bmRlcnN0YW5kIHRoZSBwcmVjaXNlIGRlZmF1bHQgaW5pdGlhbGl6YXRpb24gc3RlcHMgb24gZGV2aWNlIGNyZWF0aW9uLiBVbmRlcnN0YW5kaW5nIHRoaXMgaW5pdGlhbCBhc3NpZ25tZW50IGlzIGNydWNpYWwgZm9yIGRlYnVnZ2luZyBhbmQgb3B0aW1pemF0aW9uLiBJdCYjMzk7cyB0aGUgZm91bmRhdGlvbiBmb3IgYW55IGZ1cnRoZXIgdHJhZmZpYyBzaGFwaW5nIG9yIHNjaGVkdWxpbmcgSSBtaWdodCBhcHBseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2X2luaXRfc2NoZWR1bGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9nZW5lcmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTQ4MD1pbnQgZGV2X3FkaXNjX2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNTAxLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTUwMjpzdGF0aWMgdm9pZCBkZXZfaW5pdF9zY2hlZHVsZXJfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1MDMtXHRcdFx0XHQgICAgIHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSxcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNTExLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTUxMjp2b2lkIGRldl9pbml0X3NjaGVkdWxlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTUxMy17XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNTE0LVx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cdTAwM2VxZGlzYywgXHUwMDI2bm9vcF9xZGlzYyk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxNTE1Olx0bmV0ZGV2X2Zvcl9lYWNoX3R4X3F1ZXVlKGRldiwgZGV2X2luaXRfc2NoZWR1bGVyX3F1ZXVlLCBcdTAwMjZub29wX3FkaXNjKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1MTYtXHRpZiAoZGV2X2luZ3Jlc3NfcXVldWUoZGV2KSlcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE1MTc6XHRcdGRldl9pbml0X3NjaGVkdWxlcl9xdWV1ZShkZXYsIGRldl9pbmdyZXNzX3F1ZXVlKGRldiksIFx1MDAyNm5vb3BfcWRpc2MpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTUxOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTA6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTAxMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNoZWNraW5nIGBxZGlzY19jcmVhdGVfZGZsdGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgYHFkaXNjX2NyZWF0ZV9kZmx0YCBmdW5jdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBkZWZhdWx0IHF1ZXVlIGRpc2NpcGxpbmUgY3JlYXRpb24gcGF0aC4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGZvciBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIHRoZSBjcmVhdGlvbiBvZiBhIGRlZmF1bHQgcWRpc2Mgd2hlbiBubyBzcGVjaWZpYyB0eXBlIGlzIHNwZWNpZmllZCBkdXJpbmcgaW50ZXJmYWNlIHNldHVwLiBJcyBpdCB1c2luZyBhIGhhcmRjb2RlZCBkZWZhdWx0PyBPciBpcyB0aGVyZSBzb21lIGtpbmQgb2YgbmVnb3RpYXRpb24gaGFwcGVuaW5nIHdpdGggdGhlIG5ldHdvcmtpbmcgc3RhY2sgdG8gZGV0ZXJtaW5lIHRoZSBiZXN0IGNob2ljZSBiYXNlZCBvbiBhdmFpbGFibGUgbW9kdWxlcyBhbmQgc3lzdGVtIGNvbmZpZ3VyYXRpb24/IEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGludGVyYWN0cyB3aXRoIGRpZmZlcmVudCBsaW5rIGxheWVyIHRlY2hub2xvZ2llcyDigJMgaXMgdGhlcmUgc3BlY2lhbCBoYW5kbGluZyBmb3IgdGhpbmdzIGxpa2UgVkxBTnMsIGJvbmRpbmcsIG9yIGV2ZW4gbW9yZSBlc290ZXJpYyBkZXZpY2VzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHBhcmFtZXRlcnMgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gaW5mbHVlbmNlIHRoZSBhY3R1YWwgcWRpc2MgdGhhdCBnZXRzIGluc3RhbnRpYXRlZC4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGl0JiMzOTtzIHRvdWNoaW5nLCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgZXJyb3JzLCBhbmQgaWYgdGhlcmUmIzM5O3MgYW55IGFsbG9jYXRpb24gb3IgZGVhbGxvY2F0aW9uIG9mIHJlc291cmNlcyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZiB0byBwcmV2ZW50IG1lbW9yeSBsZWFrcyBvciByZXNvdXJjZSBleGhhdXN0aW9uIHNjZW5hcmlvcy4gSW4gZXNzZW5jZSwgSSB3YW50IHRvIGNvbmZpcm0gSSB1bmRlcnN0YW5kIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFuZCB3aGVyZSBpdCBmaXRzIGluIHRoZSBicm9hZGVyIHF1ZXVlaW5nIGRpc2NpcGxpbmUgZnJhbWV3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtxZGlzY19jcmVhdGVfZGZsdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTk5ND1zdHJ1Y3QgUWRpc2MgKnFkaXNjX2FsbG9jKHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSxcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDUyLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTA1MzpzdHJ1Y3QgUWRpc2MgKnFkaXNjX2NyZWF0ZV9kZmx0KHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwNTQtXHRcdFx0XHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTA3OS19XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMDgwOkVYUE9SVF9TWU1CT0wocWRpc2NfY3JlYXRlX2RmbHQpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTA4MS1cbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMjE5PXN0YXRpYyB2b2lkIGF0dGFjaF9vbmVfZGVmYXVsdF9xZGlzYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyMzAtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMjMxOlx0cWRpc2MgPSBxZGlzY19jcmVhdGVfZGZsdChkZXZfcXVldWUsIG9wcywgVENfSF9ST09ULCBOVUxMKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyMzItXHRpZiAoIXFkaXNjKVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTEyNDA9c3RhdGljIHZvaWQgYXR0YWNoX2RlZmF1bHRfcWRpc2NzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTI1My1cdH0gZWxzZSB7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMjU0Olx0XHRxZGlzYyA9IHFkaXNjX2NyZWF0ZV9kZmx0KHR4cSwgXHUwMDI2bXFfcWRpc2Nfb3BzLCBUQ19IX1JPT1QsIE5VTEwpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTI1NS1cdFx0aWYgKHFkaXNjKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDEwOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3NTgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBwZmlmb19mYXN0YCBJbml0aWFsaXphdGlvbiBhbmQgUXVldWUgTGVuZ3RoIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZSBgcGZpZm9fZmFzdGAgcXVldWluZyBkaXNjaXBsaW5lIGdldHMgc2V0IHVwIGFuZCBob3cgaXRzIHBhcmFtZXRlcnMsIHNwZWNpZmljYWxseSB0aGUgdHJhbnNtaXQgcXVldWUgbGVuZ3RoLCBjYW4gYmUgbW9kaWZpZWQuIEkgc2VlIHRoYXQgYHFkaXNjX2NyZWF0ZV9kZmx0YCBzZWVtcyB0byBiZSB0aGUgZW50cnkgcG9pbnQuIEl0IGNoZWNrcyBmb3IgYW4gYGluaXRgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYHFkaXNjLSZndDtvcHNgIHN0cnVjdHVyZSBhbmQgY2FsbHMgaXQsIHBhc3NpbmcgYWxvbmcgdGhlIHFkaXNjIGl0c2VsZiwgYWxvbmcgd2l0aCBhIHBvdGVudGlhbCBleHRlbmRlZCBhY2suIFRoaXMgbWVhbnMgdGhhdCBgcGZpZm9fZmFzdF9pbml0YCBnZXRzIGV4ZWN1dGVkIHdoZW5ldmVyIGEgbmV0d29yayBkZXZpY2UgaXMgYnJvdWdodCB1cCBhbmQgaGFzIHRoZSBkZWZhdWx0IHF1ZXVpbmcgZGlzY2lwbGluZSBhdHRhY2hlZCDigJMgdGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLgoKTm93LCBteSBuZXh0IHF1ZXN0aW9uIGlzIGFib3V0IGBwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW5gLiBXaGVuIGRvZXMgKnRoYXQqIGdldCBjYWxsZWQ/IE9idmlvdXNseSwgaXQgc3VnZ2VzdHMgYSBjaGFuZ2UgaW4gYHR4X3F1ZXVlX2xlbmAsIGJ1dCBJIHdhbnQgdG8gYmUgZXhwbGljaXQuIFRpbWUgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gYGNoYW5nZV90eF9xdWV1ZV9sZW5gIHRvIGJlIGNlcnRhaW4uIFVuZGVyc3RhbmRpbmcgd2hlbiBhbmQgd2h5IHRoYXQgdmFsdWUgaXMgbW9kaWZpZWQgaXMgY3J1Y2lhbCBmb3IgcHJlZGljdGluZyBpdHMgYmVoYXZpb3IgYW5kIHR1bmluZyBpdCBpZiBuZWVkZWQuIExldCYjMzk7cyBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoZXJlIHRoYXQgZnVuY3Rpb24gaXMgYWN0dWFsbHkgaW52b2tlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2hhbmdlX3R4X3F1ZXVlX2xlbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTkzMz1zdGF0aWMgdm9pZCBwZmlmb19mYXN0X2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTUyLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTUzOnN0YXRpYyBpbnQgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuKHN0cnVjdCBRZGlzYyAqc2NoLFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTU0LVx0XHRcdFx0XHQgIHVuc2lnbmVkIGludCBuZXdfbGVuKVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTk3Nj1zdHJ1Y3QgUWRpc2Nfb3BzIHBmaWZvX2Zhc3Rfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTg1LVx0LmR1bXBcdFx0PVx0cGZpZm9fZmFzdF9kdW1wLFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTg2Olx0LmNoYW5nZV90eF9xdWV1ZV9sZW4gPSAgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuLFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTg3LVx0Lm93bmVyXHRcdD1cdFRISVNfTU9EVUxFLFxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTE0MzQ9RVhQT1JUX1NZTUJPTChkZXZfZGVhY3RpdmF0ZSk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDM1LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTQzNjpzdGF0aWMgaW50IHFkaXNjX2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0MzctXHRcdFx0XHQgICAgIHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSlcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDQxLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTQ0MjpcdGlmIChvcHMtXHUwMDNlY2hhbmdlX3R4X3F1ZXVlX2xlbilcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0NDM6XHRcdHJldHVybiBvcHMtXHUwMDNlY2hhbmdlX3R4X3F1ZXVlX2xlbihxZGlzYywgZGV2LVx1MDAzZXR4X3F1ZXVlX2xlbik7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDQ0LVx0cmV0dXJuIDA7XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTQ3OD1FWFBPUlRfU1lNQk9MKG1xX2NoYW5nZV9yZWFsX251bV90eCk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDc5LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTQ4MDppbnQgZGV2X3FkaXNjX2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0ODEte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0ODktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkZXYtXHUwMDNlbnVtX3R4X3F1ZXVlczsgaSYjNDM7JiM0MzspIHtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0OTA6XHRcdHJldCA9IHFkaXNjX2NoYW5nZV90eF9xdWV1ZV9sZW4oZGV2LCBcdTAwMjZkZXYtXHUwMDNlX3R4W2ldKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0OTEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDEwOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODA5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gYGRldl9xZGlzY19jaGFuZ2VfdHhfcXVldWVfbGVuYCBhbmQgYHR4X3F1ZXVlX2xlbmAqKgoKT2theSwgc28gYGRldl9xZGlzY19jaGFuZ2VfdHhfcXVldWVfbGVuYC4gVGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkIHdoZW5ldmVyIHRoZSBgdHhfcXVldWVfbGVuYCAodHJhbnNtaXNzaW9uIHF1ZXVlIGxlbmd0aCkgb2YgYSBuZXR3b3JrIGRldmljZSBpcyBhbHRlcmVkLiAgQW5kLCB0aGlua2luZyBhYm91dCBpdCwgdGhhdCB1c3VhbGx5IGhhcHBlbnMgdmlhIGEgbmV0bGluayBpbnRlcmZhY2UsIHByb2JhYmx5IHVzaW5nIHNvbWV0aGluZyBsaWtlIGBpcCBsaW5rIHNldCBkZXYgZXRoMCB0eHF1ZXVlbGVuIDEwMDAwYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gVGhlIGludGVyZXN0aW5nIHBvaW50IGlzLCBpdCBkb2VzbiYjMzk7dCAqcmVxdWlyZSogdGhlIGBDT05GSUdfTkVUX1NDSEVEYCBvcHRpb24gdG8gYmUgZW5hYmxlZC4gTWFrZXMgc2Vuc2UsIGB0eF9xdWV1ZV9sZW5gIGlzIGEgZnVuZGFtZW50YWwgYXR0cmlidXRlIG9mIHRoZSBgbmV0X2RldmljZWAgc3RydWN0LiAgSXQmIzM5O3MgcHJldHR5IHN0YW5kYXJkLCBiYWtlZCBpbiwgcmF0aGVyIHRoYW4gYSBzcGVjaWFsaXplZCBzY2hlZHVsaW5nIGZlYXR1cmUuCgpCdXQgd2FpdCwgaG9sZCBvbiBhIHNlY29uZC4uLiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSBjYWxsZWQgZnJvbS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGluIGBuZXQvY29yZS9kZXYuY2AgdG8gbWFrZSBzdXJlIG15IGluaXRpYWwgYXNzZXNzbWVudCBpcyBjb3JyZWN0LiBOZWVkIHRvIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucyB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgc29tZXRoaW5nIGZ1bmRhbWVudGFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXZfcWRpc2NfY2hhbmdlX3R4X3F1ZXVlX2xlbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL2Rldi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL2Rldi5jPTk5MzA9aW50IG5ldGlmX2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBuZXdfbGVuKVxuLS1cbm5ldC9jb3JlL2Rldi5jLTk5NDMtXHRcdFx0Z290byBlcnJfcm9sbGJhY2s7XG5uZXQvY29yZS9kZXYuYzo5OTQ0Olx0XHRyZXMgPSBkZXZfcWRpc2NfY2hhbmdlX3R4X3F1ZXVlX2xlbihkZXYpO1xubmV0L2NvcmUvZGV2LmMtOTk0NS1cdFx0aWYgKHJlcylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTA6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzMzkKCQkJCQkJCW91dHB1dDogMTA1CgkJCQkJCQl0aG91Z2h0czogMTQyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgcGZpZm9fZmFzdCBRZGlzYyBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gYG5ldGlmX2NoYW5nZV90eF9xdWV1ZV9sZW5gIHRyaWdnZXJzIGNhbGxzIHRvIGBwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW5gIGFuZCwgYnkgaW1wbGljYXRpb24gZHVyaW5nIGluaXRpYWxpemF0aW9uLCBgcGZpZm9fZmFzdF9pbml0YC4gVGhpcyBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIGNyZWF0aW5nIGEgbmV0d29yayBkZXZpY2UgYW5kIHN1YnNlcXVlbnRseSBtb2RpZnlpbmcgaXRzIGB0eHF1ZXVlbGVuYCBkaXJlY3RseSByZWFjaGVzIHRoZXNlIGZ1bmN0aW9ucy4gVGhlIGJlYXV0eSBvZiB0aGlzIGlzIHRoYXQgdGhlIG9ubHkgcmVxdWlyZWQgY29uZmlndXJhdGlvbiBvcHRpb24gYXBwZWFycyB0byBiZSBgQ09ORklHX05FVGAg4oCTIG5vIGVzb3RlcmljIHNldHRpbmdzIG5lZWRlZC4KCk5vdywgaXMgYHBmaWZvX2Zhc3RgIGFjdHVhbGx5IHRoZSAqZGVmYXVsdCogcWRpc2M/IFllcyEgYGRlZmF1bHRfcWRpc2Nfb3BzYCBpcyBzZXQgdG8gYCZhbXA7cGZpZm9fZmFzdF9vcHNgLiBUaGF0IG1lYW5zIGEgbGFyZ2UgbnVtYmVyIG9mIGRldmljZXMgd2lsbCBiZSB1c2luZyB0aGlzIGJ5IGRlZmF1bHQsIHdoaWNoIG1ha2VzIHRoZSBwYXRjaCBoaWdobHkgcmVsZXZhbnQuCgpSZWdhcmRpbmcgdGhlIHBhdGNoIGl0c2VsZiwgaXQmIzM5O3MgbW9kaWZ5aW5nIGBwZmlmb19mYXN0X2luaXRgIGFuZCBgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuYC4gV2hpbGUgdGhlc2UgYXJlICpzdGF0aWMqIGZ1bmN0aW9ucywgdGhlaXIgYWRkcmVzc2VzIGFyZSBiZWluZyB0YWtlbiBhbmQgcGxhY2VkIGludG8gYHBmaWZvX2Zhc3Rfb3BzYCwgd2hpY2ggbWVhbnMgdGhleSBhcmUgbm90IGlubGluZWQgYW5kIGhhdmUgZGlzdGluY3Qgc3ltYm9scy4gVGhpcyBpcyBleGFjdGx5IHdoYXQgd2Ugd2FudCBmb3IgZm9jdXMgc3ltYm9scy4KCkkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBDT05GSUdfTkVUYCBpcyB0aGUgb25seSByZXF1aXJlbWVudCwgd2hpY2ggaXMgYSBncmVhdCBzdGFydGluZyBwb2ludCBmb3IgZnV6emluZy4gVGhlIHNlbGZ0ZXN0IHVzZXMgYHRjIHFkaXNjIGFkZCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290IHBmaWZvX2Zhc3RgLCB3aGljaCBjb25maXJtcyBpdHMgZGlyZWN0IHVzYWdlLiBIb3dldmVyLCB0aGUgZGVmYXVsdCBxZGlzYyBpbml0aWFsaXphdGlvbiBhbmQgYHR4cXVldWVsZW5gIGNoYW5nZXMgdmlhIGBpcCBsaW5rYCBkb24mIzM5O3QgbmVlZCBgQ09ORklHX05FVF9TQ0hFRGAuIFRoaXMgaXMgYSBjcnVjaWFsIHBvaW50OiB0aGUgYnVnIGNhbiBiZSB0cmlnZ2VyZWQgYnkgbWVyZWx5IG1vZGlmeWluZyBgdHhxdWV1ZWxlbmAgb24gYSBkZXZpY2UgKmFscmVhZHkqIHVzaW5nIGBwZmlmb19mYXN0YCBieSBkZWZhdWx0LgoKTG9va2luZyBhdCB0aGUgY29kZSBjaGFuZ2VzOiB0aGUgcGF0Y2ggbGltaXRzIHRoZSByaW5nIHNpemUgdG8gNjU1MzUgYW5kIHN3aXRjaGVzIHRoZSBhbGxvY2F0aW9uIGZsYWcgdG8gYEdGUF9LRVJORUxfQUNDT1VOVGAuIFRoaXMgaXMgYSBtZW1vcnkgdXNhZ2UgcHJldmVudGlvbiBtZWFzdXJlLCBndWFyZGluZyBhZ2FpbnN0IGV4dHJlbWUgYHR4cXVldWVsZW5gIHZhbHVlcy4gVGhpcyBzY3JlYW1zIGZvciBmdXp6aW5nLgoKTXkgZGVjaXNpb24gaXM6CiogICAqKldvcnRoRnV6emluZzogdHJ1ZSoqCiogICAqKkZvY3VzU3ltYm9sczoqKiBcWyYjMzQ7cGZpZm9cX2Zhc3RcX2luaXQmIzM0OywgJiMzNDtwZmlmb1xfZmFzdFxfY2hhbmdlXF90eFxfcXVldWVcX2xlbiYjMzQ7XQoqICAgKipFbmFibGVDb25maWdzOiBcW+KAnE5FVCYjMzQ7XSoqCiogICAqKlJlYXNvbmluZzoqKiAmIzM0O1RoZSBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBgdHhfcXVldWVfbGVuYCBjaGFuZ2Ugb2YgdGhlIGBwZmlmb19mYXN0YCBxZGlzYy4gU3BlY2lmaWNhbGx5LCBpdCBjYXBzIHRoZSBxdWV1ZSBsZW5ndGggdG8gNjU1MzUgYW5kIGludHJvZHVjZXMgbWVtb3J5IGFjY291bnRpbmcuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgd2l0aGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGZpZm9fZmFzdF9pbml0JiMzNDssCiAgICAmIzM0O3BmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHR4X3F1ZXVlX2xlbiBjaGFuZ2UgbG9naWMgb2YgdGhlIHBmaWZvX2Zhc3QgcWRpc2MsIGNhcHBpbmcgdGhlIHF1ZXVlIGxlbmd0aCB0byA2NTUzNSBhbmQgYWRkaW5nIG1lbW9yeSBhY2NvdW50aW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGZpZm9fZmFzdF9pbml0JiMzNDssCiAgICAmIzM0O3BmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHR4X3F1ZXVlX2xlbiBjaGFuZ2UgbG9naWMgb2YgdGhlIHBmaWZvX2Zhc3QgcWRpc2MsIGNhcHBpbmcgdGhlIHF1ZXVlIGxlbmd0aCB0byA2NTUzNSBhbmQgYWRkaW5nIG1lbW9yeSBhY2NvdW50aW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTA6MzE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMDozMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2FwIG9uIHRoZSByaW5nIHNpemUgKGBxbGVuYCBhbmQgYG5ld19sZW5gKSB0byA2NTUzNSBpbiBgcGZpZm9fZmFzdF9pbml0YCBhbmQgYHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbmAsIGFuZCBjaGFuZ2VzIHRoZSBhbGxvY2F0aW9uIGZsYWcgZnJvbSBgR0ZQX0tFUk5FTGAgdG8gYEdGUF9LRVJORUxfQUNDT1VOVGAuIFRoZXNlIGNoYW5nZXMgYXJlIGludGVuZGVkIHRvIHByZXZlbnQgZXhjZXNzaXZlIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBhZGQgbWVtb3J5IGFjY291bnRpbmcuIFRoZXkgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbW9kaWZ5IHBhZGRpbmcsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gQW55IGlzc3VlcyByZWxhdGVkIHRvIG1lbW9yeSBhbGxvY2F0aW9uIHNpemVzIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgd291bGQgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBtZW1vcnkgZGVidWdnaW5nIHRvb2xzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MsIHNvIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTdlMjViNjA0OWJmNTQ5YWJjMjBjNmU0ODA1NGU3ZGM1YzU0Y2U5MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDIwIDEwOjMwOjQ4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmMgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYwppbmRleCBlZjJiNGJmNTE1NjQxLi5lOThmZDIzNmFmYTA0IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYwpAQCAtOTEwLDExICYjNDM7OTEwLDE3IEBAIHN0YXRpYyBpbnQgcGZpZm9fZmFzdF9pbml0KHN0cnVjdCBRZGlzYyAqcWRpc2MsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAlpZiAoIXFsZW4pCiAJCXJldHVybiAtRUlOVkFMOwogCiYjNDM7CWlmIChxbGVuICZndDsgNjU1MzUpIHsKJiM0MzsJCXByX3dhcm5fcmF0ZWxpbWl0ZWQoJiMzNDtwZmlmb19mYXN0OiBjYXBwaW5nIHJpbmcgc2l6ZSAldSB0byA2NTUzNSBmb3IgZGV2ICVzXG4mIzM0OywKJiM0MzsJCQkJICAgIHFsZW4sIHFkaXNjX2RldihxZGlzYyktJmd0O25hbWUpOwomIzQzOwkJcWxlbiA9IDY1NTM1OwomIzQzOwl9CiYjNDM7CiAJZm9yIChwcmlvID0gMDsgcHJpbyAmbHQ7IFBGSUZPX0ZBU1RfQkFORFM7IHByaW8mIzQzOyYjNDM7KSB7CiAJCXN0cnVjdCBza2JfYXJyYXkgKnEgPSBiYW5kMmxpc3QocHJpdiwgcHJpbyk7CiAJCWludCBlcnI7CiAKLQkJZXJyID0gc2tiX2FycmF5X2luaXQocSwgcWxlbiwgR0ZQX0tFUk5FTCk7CiYjNDM7CQllcnIgPSBza2JfYXJyYXlfaW5pdChxLCBxbGVuLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwogCQlpZiAoZXJyKQogCQkJcmV0dXJuIC1FTk9NRU07CiAJfQpAQCAtOTU3LDggJiM0Mzs5NjMsMTQgQEAgc3RhdGljIGludCBwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IFFkaXNjICpzY2gsCiAJCWJhbmRzW3ByaW9dID0gcTsKIAl9CiAKJiM0MzsJaWYgKG5ld19sZW4gJmd0OyA2NTUzNSkgewomIzQzOwkJcHJfd2Fybl9yYXRlbGltaXRlZCgmIzM0O3BmaWZvX2Zhc3Q6IGNhcHBpbmcgcmluZyBzaXplICV1IHRvIDY1NTM1IGZvciBkZXYgJXNcbiYjMzQ7LAomIzQzOwkJCQkgICAgbmV3X2xlbiwgcWRpc2NfZGV2KHNjaCktJmd0O25hbWUpOwomIzQzOwkJbmV3X2xlbiA9IDY1NTM1OwomIzQzOwl9CiYjNDM7CiAJcmV0dXJuIHNrYl9hcnJheV9yZXNpemVfbXVsdGlwbGVfYmgoYmFuZHMsIFBGSUZPX0ZBU1RfQkFORFMsIG5ld19sZW4sCi0JCQkJCSAgICBHRlBfS0VSTkVMKTsKJiM0MzsJCQkJCSAgICBHRlBfS0VSTkVMX0FDQ09VTlQpOwogfQogCiBzdHJ1Y3QgUWRpc2Nfb3BzIHBmaWZvX2Zhc3Rfb3BzIF9fcmVhZF9tb3N0bHkgPSB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9wZmlmb19mYXN0Lmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9wZmlmb19mYXN0Lmpzb24KaW5kZXggMzBkYTI3ZmU4ODA2Ny4uYjM4MzAxNzJmZTRmNCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvcGZpZm9fZmFzdC5qc29uCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3BmaWZvX2Zhc3QuanNvbgpAQCAtMTA1LDUgJiM0MzsxMDUsMjggQEAKICAgICAgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiAgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICREVU1NWSBoYW5kbGUgMTogcm9vdCYjMzQ7CiAgICAgICAgIF0KJiM0MzsgICAgfSwKJiM0MzsgICAgewomIzQzOyAgICAgICAgJiMzNDtpZCYjMzQ7OiAmIzM0OzAyNDkmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0NyZWF0ZSBwZmlmb19mYXN0IHdpdGggaHVnZSB0eF9xdWV1ZV9sZW4gKHJpbmcgY2FwIHJlZ3Jlc3Npb24pJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O2NhdGVnb3J5JiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0O3FkaXNjJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtwZmlmb19mYXN0JiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O3BsdWdpbnMmIzM0OzogewomIzQzOyAgICAgICAgICAgICYjMzQ7cmVxdWlyZXMmIzM0OzogJiMzNDtuc1BsdWdpbiYjMzQ7CiYjNDM7ICAgICAgICB9LAomIzQzOyAgICAgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDskSVAgbGluayBzZXQgZGV2ICREVU1NWSB0eHF1ZXVlbGVuIDEwMDAwMDAwMCYjMzQ7CiYjNDM7ICAgICAgICBdLAomIzQzOyAgICAgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgcWRpc2MgYWRkIGRldiAkRFVNTVkgaGFuZGxlIDE6IHJvb3QgcGZpZm9fZmFzdCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7JFRDIHFkaXNjIHNob3cgZGV2ICREVU1NWSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDtxZGlzYyBwZmlmb19mYXN0IDE6IHJvb3QmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzEmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7JElQIGxpbmsgc2V0IGRldiAkRFVNTVkgdHhxdWV1ZWxlbiAxMDAwJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkRFVNTVkgaGFuZGxlIDE6IHJvb3QmIzM0OwomIzQzOyAgICAgICAgXQogICAgIH0KIF0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDEwOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MDYKCQkJCQkJCW91dHB1dDogMTgyCgkJCQkJCQl0aG91Z2h0czogNDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3RyYWlnaHRmb3J3YXJkLiBJdCB0YXJnZXRzIHRoZSBgcGZpZm9fZmFzdF9pbml0YCBhbmQgYHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbmAgZnVuY3Rpb25zIHdpdGhpbiBgbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlcyByZXZvbHZlIGFyb3VuZCByaW5nIGJ1ZmZlciBzaXplIGxpbWl0cyBhbmQgbWVtb3J5IGFjY291bnRpbmcuIEkmIzM5O20gc2VlaW5nIGJvdW5kcyBjaGVja3MgYWRkZWQgdG8gYHFsZW5gIGFuZCBgbmV3X2xlbmAsIGNhcHBpbmcgdGhlbSBhdCA2NTUzNSwgYW5kIHRoZSBhbGxvY2F0aW9uIGZsYWcgaW4gYHNrYl9hcnJheV9pbml0YCBhbmQgYHNrYl9hcnJheV9yZXNpemVfbXVsdGlwbGVfYmhgIGlzIGJlaW5nIHN3aXRjaGVkIGZyb20gYEdGUF9LRVJORUxgIHRvIGBHRlBfS0VSTkVMX0FDQ09VTlRgLgoKRXNzZW50aWFsbHksIHRoaXMgaXMgYSBkZWZlbnNpdmUgbWVhc3VyZS4gSXQgcHJldmVudHMgZXhjZXNzaXZlbHkgbGFyZ2UgbWVtb3J5IGFsbG9jYXRpb25zLCBhbmQgbGlrZWx5IG1pdGlnYXRlcyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgb3Igb3ZlcmZsb3cgdnVsbmVyYWJpbGl0aWVzLiAgVGhlIGNoYW5nZSB0byBgR0ZQX0tFUk5FTF9BQ0NPVU5UYCBpcyBhIGdvb2QgcHJhY3RpY2UsIGFkZGluZyBleHBsaWNpdCBtZW1vcnkgYWNjb3VudGluZy4KCkZyb20gbXkgcGVyc3BlY3RpdmUsIHRoaXMgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm9ybWF0aW9uIGxlYWtzLiBUaGUgY29kZSBpcyBjbGVhbjsgaXQmIzM5O3Mgc2ltcGx5IGltcGxlbWVudGluZyBib3VuZHMgY2hlY2tzIGFuZCBhZGp1c3RpbmcgYWxsb2NhdGlvbiBmbGFncy4gS0FTQU4gb3Igb3RoZXIgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyB3b3VsZCBsaWtlbHkgY2F0Y2ggYW55IG91dC1vZi1ib3VuZHMgb3IgYWxsb2NhdGlvbiBmYWlsdXJlcyBpZiB0aGV5IHdlcmUgdG8gb2NjdXIsIGJ1dCBLTVNBTiBpcyBkZXNpZ25lZCBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLCBhbmQgSSBkb24mIzM5O3Qgc2VlIGFueSByaXNrIG9mIHRob3NlIGhlcmUuIAoKTGV0IG1lIGp1c3QgcXVpY2tseSByZS1leGFtaW5lIHRoZSBjb2RlIHNuaXBwZXQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLi4uCgpgYGBjCiYjNDM7CWlmIChxbGVuICZndDsgNjU1MzUpIHsKJiM0MzsJCXByX3dhcm5fcmF0ZWxpbWl0ZWQoJiMzNDtwZmlmb19mYXN0OiBjYXBwaW5nIHJpbmcgc2l6ZSAldSB0byA2NTUzNSBmb3IgZGV2ICVzXG4mIzM0OywKJiM0MzsJCQkJICAgIHFsZW4sIHFkaXNjX2RldihxZGlzYyktJmd0O25hbWUpOwomIzQzOwkJcWxlbiA9IDY1NTM1OwomIzQzOwl9CiYjNDM7CiAJZm9yIChwcmlvID0gMDsgcHJpbyAmbHQ7IFBGSUZPX0ZBU1RfQkFORFM7IHByaW8mIzQzOyYjNDM7KSB7CiAJCXN0cnVjdCBza2JfYXJyYXkgKnEgPSBiYW5kMmxpc3QocHJpdiwgcHJpbyk7CiAJCWludCBlcnI7CiAKLQkJZXJyID0gc2tiX2FycmF5X2luaXQocSwgcWxlbiwgR0ZQX0tFUk5FTCk7CiYjNDM7CQllcnIgPSBza2JfYXJyYXlfaW5pdChxLCBxbGVuLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwpgYGAKClllcCwgYXMgZXhwZWN0ZWQuIFRoaXMgaXMgcHVyZWx5IGEgc2l6ZSBjYXBwaW5nIGFuZCBhbGxvY2F0aW9uIGZsYWcgdXBkYXRlLCBub3RoaW5nIG1vcmUuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGV4cG9zZWQgaGVyZS4gSSYjMzk7bSBjb21mb3J0YWJsZSBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTA6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNhcCBvbiB0aGUgcmluZyBzaXplIChgcWxlbmAgYW5kIGBuZXdfbGVuYCkgdG8gNjU1MzUgaW4gYHBmaWZvX2Zhc3RfaW5pdGAgYW5kIGBwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW5gLCBhbmQgY2hhbmdlcyB0aGUgYWxsb2NhdGlvbiBmbGFnIGZyb20gYEdGUF9LRVJORUxgIHRvIGBHRlBfS0VSTkVMX0FDQ09VTlRgLiBUaGVzZSBjaGFuZ2VzIGFyZSBpbnRlbmRlZCB0byBwcmV2ZW50IGV4Y2Vzc2l2ZSBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgYWRkIG1lbW9yeSBhY2NvdW50aW5nLiBUaGV5IGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBwYWRkaW5nLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciBjb250cm9sIGZsb3cuIEFueSBpc3N1ZXMgcmVsYXRlZCB0byBtZW1vcnkgYWxsb2NhdGlvbiBzaXplcyBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIHdvdWxkIGJlIGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgbWVtb3J5IGRlYnVnZ2luZyB0b29scy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2FwIG9uIHRoZSByaW5nIHNpemUgKGBxbGVuYCBhbmQgYG5ld19sZW5gKSB0byA2NTUzNSBpbiBgcGZpZm9fZmFzdF9pbml0YCBhbmQgYHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbmAsIGFuZCBjaGFuZ2VzIHRoZSBhbGxvY2F0aW9uIGZsYWcgZnJvbSBgR0ZQX0tFUk5FTGAgdG8gYEdGUF9LRVJORUxfQUNDT1VOVGAuIFRoZXNlIGNoYW5nZXMgYXJlIGludGVuZGVkIHRvIHByZXZlbnQgZXhjZXNzaXZlIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBhZGQgbWVtb3J5IGFjY291bnRpbmcuIFRoZXkgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbW9kaWZ5IHBhZGRpbmcsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gQW55IGlzc3VlcyByZWxhdGVkIHRvIG1lbW9yeSBhbGxvY2F0aW9uIHNpemVzIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgd291bGQgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBtZW1vcnkgZGVidWdnaW5nIHRvb2xzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MsIHNvIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTA6MzA6NDkuNTI4NDYxMjQ4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE0MDg5MTAzNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGZpZm9fZmFzdF9pbml0XCIsXG4gICAgXCJwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW5cIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjYXAgb24gdGhlIHJpbmcgc2l6ZSAoYHFsZW5gIGFuZCBgbmV3X2xlbmApIHRvIDY1NTM1IGluIGBwZmlmb19mYXN0X2luaXRgIGFuZCBgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuYCwgYW5kIGNoYW5nZXMgdGhlIGFsbG9jYXRpb24gZmxhZyBmcm9tIGBHRlBfS0VSTkVMYCB0byBgR0ZQX0tFUk5FTF9BQ0NPVU5UYC4gVGhlc2UgY2hhbmdlcyBhcmUgaW50ZW5kZWQgdG8gcHJldmVudCBleGNlc3NpdmUgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGFkZCBtZW1vcnkgYWNjb3VudGluZy4gVGhleSBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtb2RpZnkgcGFkZGluZywgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgY29udHJvbCBmbG93LiBBbnkgaXNzdWVzIHJlbGF0ZWQgdG8gbWVtb3J5IGFsbG9jYXRpb24gc2l6ZXMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG1lbW9yeSBkZWJ1Z2dpbmcgdG9vbHMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcywgc28gS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdHhfcXVldWVfbGVuIGNoYW5nZSBsb2dpYyBvZiB0aGUgcGZpZm9fZmFzdCBxZGlzYywgY2FwcGluZyB0aGUgcXVldWUgbGVuZ3RoIHRvIDY1NTM1IGFuZCBhZGRpbmcgbWVtb3J5IGFjY291bnRpbmcuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMDozMDo0OS41Mjg0NjY3NjhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDI3NDIxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDk3ZTI1YjYwNDliZjU0OWFiYzIwYzZlNDgwNTRlN2RjNWM1NGNlOTJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgMjAgMTA6MzA6NDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmMgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1xcbmluZGV4IGVmMmI0YmY1MTU2NDEuLmU5OGZkMjM2YWZhMDQgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNcXG4rKysgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1xcbkBAIC05MTAsMTEgKzkxMCwxNyBAQCBzdGF0aWMgaW50IHBmaWZvX2Zhc3RfaW5pdChzdHJ1Y3QgUWRpc2MgKnFkaXNjLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuIFxcdGlmICghcWxlbilcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHRpZiAocWxlbiBcXHUwMDNlIDY1NTM1KSB7XFxuK1xcdFxcdHByX3dhcm5fcmF0ZWxpbWl0ZWQoXFxcInBmaWZvX2Zhc3Q6IGNhcHBpbmcgcmluZyBzaXplICV1IHRvIDY1NTM1IGZvciBkZXYgJXNcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCAgICBxbGVuLCBxZGlzY19kZXYocWRpc2MpLVxcdTAwM2VuYW1lKTtcXG4rXFx0XFx0cWxlbiA9IDY1NTM1O1xcbitcXHR9XFxuK1xcbiBcXHRmb3IgKHByaW8gPSAwOyBwcmlvIFxcdTAwM2MgUEZJRk9fRkFTVF9CQU5EUzsgcHJpbysrKSB7XFxuIFxcdFxcdHN0cnVjdCBza2JfYXJyYXkgKnEgPSBiYW5kMmxpc3QocHJpdiwgcHJpbyk7XFxuIFxcdFxcdGludCBlcnI7XFxuIFxcbi1cXHRcXHRlcnIgPSBza2JfYXJyYXlfaW5pdChxLCBxbGVuLCBHRlBfS0VSTkVMKTtcXG4rXFx0XFx0ZXJyID0gc2tiX2FycmF5X2luaXQocSwgcWxlbiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4gXFx0XFx0aWYgKGVycilcXG4gXFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcdH1cXG5AQCAtOTU3LDggKzk2MywxNCBAQCBzdGF0aWMgaW50IHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbihzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4gXFx0XFx0YmFuZHNbcHJpb10gPSBxO1xcbiBcXHR9XFxuIFxcbitcXHRpZiAobmV3X2xlbiBcXHUwMDNlIDY1NTM1KSB7XFxuK1xcdFxcdHByX3dhcm5fcmF0ZWxpbWl0ZWQoXFxcInBmaWZvX2Zhc3Q6IGNhcHBpbmcgcmluZyBzaXplICV1IHRvIDY1NTM1IGZvciBkZXYgJXNcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCAgICBuZXdfbGVuLCBxZGlzY19kZXYoc2NoKS1cXHUwMDNlbmFtZSk7XFxuK1xcdFxcdG5ld19sZW4gPSA2NTUzNTtcXG4rXFx0fVxcbitcXG4gXFx0cmV0dXJuIHNrYl9hcnJheV9yZXNpemVfbXVsdGlwbGVfYmgoYmFuZHMsIFBGSUZPX0ZBU1RfQkFORFMsIG5ld19sZW4sXFxuLVxcdFxcdFxcdFxcdFxcdCAgICBHRlBfS0VSTkVMKTtcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuIH1cXG4gXFxuIHN0cnVjdCBRZGlzY19vcHMgcGZpZm9fZmFzdF9vcHMgX19yZWFkX21vc3RseSA9IHtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvcGZpZm9fZmFzdC5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvcGZpZm9fZmFzdC5qc29uXFxuaW5kZXggMzBkYTI3ZmU4ODA2Ny4uYjM4MzAxNzJmZTRmNCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9wZmlmb19mYXN0Lmpzb25cXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9wZmlmb19mYXN0Lmpzb25cXG5AQCAtMTA1LDUgKzEwNSwyOCBAQFxcbiAgICAgICAgIFxcXCJ0ZWFyZG93blxcXCI6IFtcXG4gICAgICAgICAgICAgXFxcIiRUQyBxZGlzYyBkZWwgZGV2ICREVU1NWSBoYW5kbGUgMTogcm9vdFxcXCJcXG4gICAgICAgICBdXFxuKyAgICB9LFxcbisgICAge1xcbisgICAgICAgIFxcXCJpZFxcXCI6IFxcXCIwMjQ5XFxcIixcXG4rICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCJDcmVhdGUgcGZpZm9fZmFzdCB3aXRoIGh1Z2UgdHhfcXVldWVfbGVuIChyaW5nIGNhcCByZWdyZXNzaW9uKVxcXCIsXFxuKyAgICAgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbisgICAgICAgICAgICBcXFwicWRpc2NcXFwiLFxcbisgICAgICAgICAgICBcXFwicGZpZm9fZmFzdFxcXCJcXG4rICAgICAgICBdLFxcbisgICAgICAgIFxcXCJwbHVnaW5zXFxcIjoge1xcbisgICAgICAgICAgICBcXFwicmVxdWlyZXNcXFwiOiBcXFwibnNQbHVnaW5cXFwiXFxuKyAgICAgICAgfSxcXG4rICAgICAgICBcXFwic2V0dXBcXFwiOiBbXFxuKyAgICAgICAgICAgIFxcXCIkSVAgbGluayBzZXQgZGV2ICREVU1NWSB0eHF1ZXVlbGVuIDEwMDAwMDAwMFxcXCJcXG4rICAgICAgICBdLFxcbisgICAgICAgIFxcXCJjbWRVbmRlclRlc3RcXFwiOiBcXFwiJFRDIHFkaXNjIGFkZCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290IHBmaWZvX2Zhc3RcXFwiLFxcbisgICAgICAgIFxcXCJleHBFeGl0Q29kZVxcXCI6IFxcXCIwXFxcIixcXG4rICAgICAgICBcXFwidmVyaWZ5Q21kXFxcIjogXFxcIiRUQyBxZGlzYyBzaG93IGRldiAkRFVNTVlcXFwiLFxcbisgICAgICAgIFxcXCJtYXRjaFBhdHRlcm5cXFwiOiBcXFwicWRpc2MgcGZpZm9fZmFzdCAxOiByb290XFxcIixcXG4rICAgICAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCIxXFxcIixcXG4rICAgICAgICBcXFwidGVhcmRvd25cXFwiOiBbXFxuKyAgICAgICAgICAgIFxcXCIkSVAgbGluayBzZXQgZGV2ICREVU1NWSB0eHF1ZXVlbGVuIDEwMDBcXFwiLFxcbisgICAgICAgICAgICBcXFwiJFRDIHFkaXNjIGRlbCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290XFxcIlxcbisgICAgICAgIF1cXG4gICAgIH1cXG4gXVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMDozMDo0OS45ODM0NTY4NDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2MjU0Mjg5ODk1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwZmlmb19mYXN0X2luaXRcIixcbiAgICBcInBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdHhfcXVldWVfbGVuIGNoYW5nZSBsb2dpYyBvZiB0aGUgcGZpZm9fZmFzdCBxZGlzYywgY2FwcGluZyB0aGUgcXVldWUgbGVuZ3RoIHRvIDY1NTM1IGFuZCBhZGRpbmcgbWVtb3J5IGFjY291bnRpbmcuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5N2UyNWI2MDQ5YmY1NDlhYmMyMGM2ZTQ4MDU0ZTdkYzVjNTRjZTkyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjAgMTA6MzA6NDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYyBiL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXG5pbmRleCBlZjJiNGJmNTE1NjQxLi5lOThmZDIzNmFmYTA0IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXG5AQCAtOTEwLDExICs5MTAsMTcgQEAgc3RhdGljIGludCBwZmlmb19mYXN0X2luaXQoc3RydWN0IFFkaXNjICpxZGlzYywgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0aWYgKCFxbGVuKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbitcdGlmIChxbGVuIFx1MDAzZSA2NTUzNSkge1xuK1x0XHRwcl93YXJuX3JhdGVsaW1pdGVkKFwicGZpZm9fZmFzdDogY2FwcGluZyByaW5nIHNpemUgJXUgdG8gNjU1MzUgZm9yIGRldiAlc1xcblwiLFxuK1x0XHRcdFx0ICAgIHFsZW4sIHFkaXNjX2RldihxZGlzYyktXHUwMDNlbmFtZSk7XG4rXHRcdHFsZW4gPSA2NTUzNTtcbitcdH1cbitcbiBcdGZvciAocHJpbyA9IDA7IHByaW8gXHUwMDNjIFBGSUZPX0ZBU1RfQkFORFM7IHByaW8rKykge1xuIFx0XHRzdHJ1Y3Qgc2tiX2FycmF5ICpxID0gYmFuZDJsaXN0KHByaXYsIHByaW8pO1xuIFx0XHRpbnQgZXJyO1xuIFxuLVx0XHRlcnIgPSBza2JfYXJyYXlfaW5pdChxLCBxbGVuLCBHRlBfS0VSTkVMKTtcbitcdFx0ZXJyID0gc2tiX2FycmF5X2luaXQocSwgcWxlbiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdH1cbkBAIC05NTcsOCArOTYzLDE0IEBAIHN0YXRpYyBpbnQgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuKHN0cnVjdCBRZGlzYyAqc2NoLFxuIFx0XHRiYW5kc1twcmlvXSA9IHE7XG4gXHR9XG4gXG4rXHRpZiAobmV3X2xlbiBcdTAwM2UgNjU1MzUpIHtcbitcdFx0cHJfd2Fybl9yYXRlbGltaXRlZChcInBmaWZvX2Zhc3Q6IGNhcHBpbmcgcmluZyBzaXplICV1IHRvIDY1NTM1IGZvciBkZXYgJXNcXG5cIixcbitcdFx0XHRcdCAgICBuZXdfbGVuLCBxZGlzY19kZXYoc2NoKS1cdTAwM2VuYW1lKTtcbitcdFx0bmV3X2xlbiA9IDY1NTM1O1xuK1x0fVxuK1xuIFx0cmV0dXJuIHNrYl9hcnJheV9yZXNpemVfbXVsdGlwbGVfYmgoYmFuZHMsIFBGSUZPX0ZBU1RfQkFORFMsIG5ld19sZW4sXG4tXHRcdFx0XHRcdCAgICBHRlBfS0VSTkVMKTtcbitcdFx0XHRcdFx0ICAgIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gfVxuIFxuIHN0cnVjdCBRZGlzY19vcHMgcGZpZm9fZmFzdF9vcHMgX19yZWFkX21vc3RseSA9IHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9wZmlmb19mYXN0Lmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9wZmlmb19mYXN0Lmpzb25cbmluZGV4IDMwZGEyN2ZlODgwNjcuLmIzODMwMTcyZmU0ZjQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9wZmlmb19mYXN0Lmpzb25cbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3BmaWZvX2Zhc3QuanNvblxuQEAgLTEwNSw1ICsxMDUsMjggQEBcbiAgICAgICAgIFwidGVhcmRvd25cIjogW1xuICAgICAgICAgICAgIFwiJFRDIHFkaXNjIGRlbCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290XCJcbiAgICAgICAgIF1cbisgICAgfSxcbisgICAge1xuKyAgICAgICAgXCJpZFwiOiBcIjAyNDlcIixcbisgICAgICAgIFwibmFtZVwiOiBcIkNyZWF0ZSBwZmlmb19mYXN0IHdpdGggaHVnZSB0eF9xdWV1ZV9sZW4gKHJpbmcgY2FwIHJlZ3Jlc3Npb24pXCIsXG4rICAgICAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICAgICAgICBcInFkaXNjXCIsXG4rICAgICAgICAgICAgXCJwZmlmb19mYXN0XCJcbisgICAgICAgIF0sXG4rICAgICAgICBcInBsdWdpbnNcIjoge1xuKyAgICAgICAgICAgIFwicmVxdWlyZXNcIjogXCJuc1BsdWdpblwiXG4rICAgICAgICB9LFxuKyAgICAgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgICAgICAgXCIkSVAgbGluayBzZXQgZGV2ICREVU1NWSB0eHF1ZXVlbGVuIDEwMDAwMDAwMFwiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgcWRpc2MgYWRkIGRldiAkRFVNTVkgaGFuZGxlIDE6IHJvb3QgcGZpZm9fZmFzdFwiLFxuKyAgICAgICAgXCJleHBFeGl0Q29kZVwiOiBcIjBcIixcbisgICAgICAgIFwidmVyaWZ5Q21kXCI6IFwiJFRDIHFkaXNjIHNob3cgZGV2ICREVU1NWVwiLFxuKyAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJxZGlzYyBwZmlmb19mYXN0IDE6IHJvb3RcIixcbisgICAgICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbisgICAgICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgICAgICAgIFwiJElQIGxpbmsgc2V0IGRldiAkRFVNTVkgdHhxdWV1ZWxlbiAxMDAwXCIsXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkRFVNTVkgaGFuZGxlIDE6IHJvb3RcIlxuKyAgICAgICAgXVxuICAgICB9XG4gXVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTA6MzA6NDkuOTgzNDU4NDIyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjAzNTg1MDM1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBFdmFsdWF0aW9uKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNgLCBzcGVjaWZpY2FsbHkgbWVzc2luZyB3aXRoIGBwZmlmb19mYXN0X2luaXRgIGFuZCBgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuYC4gSXQgc2VlbXMgbGlrZSBpdCdzIGFkZGluZyBhIHF1ZXVlIGxlbmd0aCBjYXAgKDY1NTM1LCBhcyBpZiBJIGRpZG4ndCBrbm93KSwgYW5kIGl0J3MgYWxzbyBjaGFuZ2luZyB0aGUgbWVtb3J5IGFsbG9jYXRpb24gZmxhZ3MgZnJvbSBgR0ZQX0tFUk5FTGAgdG8gYEdGUF9LRVJORUxfQUNDT1VOVGAgaW4gdGhvc2UgYHNrYl9hcnJheWAgZnVuY3Rpb25zLiBcblxuTXkgaW5pdGlhbCBndXQgZmVlbGluZz8gVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGEgY2xvc2VyIGxvb2sgZm9yIGZ1enppbmcuIGBwZmlmb19mYXN0YCBpcyB0aGUgZGVmYXVsdCBxZGlzYyBvbiBhIHRvbiBvZiBuZXR3b3JrIGRldmljZXMsIHNvIGFueSBwb3RlbnRpYWwgaXNzdWVzIHRoZXJlIGNvdWxkIGhhdmUgYSBwcmV0dHkgd2lkZSBpbXBhY3QuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsOyB3ZSdyZSB0YWxraW5nIGFib3V0IHF1ZXVlIGxlbmd0aCBsaW1pdHMgYW5kIG1lbW9yeSBhY2NvdW50aW5nLCB3aGljaCBhcmUgYm90aCBjcnVjaWFsIGZvciBzdGFiaWxpdHkgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQuIFRoYXQgc291bmRzIGxpa2UgcHJpbWUgZnV6emluZyB0ZXJyaXRvcnkuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBmdXp6aW5nIHN0cmF0ZWd5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBBbmQgdGhlIGZvY3VzIHN5bWJvbHMgZm9yIGZ1enppbmcgd2lsbCBiZSBgcGZpZm9fZmFzdF9pbml0YCBhbmQgYHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbmAuXG5cblJpZ2h0LCBsZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIGluIGBuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY2AuIElzIHRoYXQgZmlsZSBjb21waWxlZCB1bmNvbmRpdGlvbmFsbHkgb3IgZGVwZW5kZW50IG9uIGBDT05GSUdfTkVUX1NDSEVEYD8gV2FpdCwgSSB0aGluayBJJ20gd3JvbmcgdGhlcmUuIEFjdHVhbGx5LCBgc2NoX2dlbmVyaWMuY2AgaXMgYmFzaWNhbGx5IGEgY29yZSBwYXJ0IG9mIHRoZSBuZXR3b3JraW5nIHN0YWNrLCBpc24ndCBpdD8gUHJvYmFibHkgZWl0aGVyIHVuY29uZGl0aW9uYWxseSBjb21waWxlZCB3aXRoIGBDT05GSUdfTkVUYCBvciBzaW1pbGFyLiBCZXR0ZXIgdmVyaWZ5IHRoYXQgaW4gdGhlIGBuZXQvc2NoZWQvTWFrZWZpbGVgIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MDksIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMDozMDo1Ni4wMTkzMTEzMDJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5MDQ4OTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjaF9nZW5lcmljLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9NYWtlZmlsZS01LVxcbm5ldC9zY2hlZC9NYWtlZmlsZTo2Om9iai15XFx0Oj0gc2NoX2dlbmVyaWMubyBzY2hfbXEub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS03LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMDozMDo1Ni4xODgzNjcyMzRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzAxMjEwOTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgcGZpZm9fZmFzdF9pbml0YCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgaXMgdW5jb25kaXRpb25hbGx5IGNvbXBpbGVkIChgb2JqLXlgKSwgd2hpY2ggbWVhbnMgYWxsIHdlIHJlYWxseSBuZWVkIHRvIGZvY3VzIG9uIGlzIGBDT05GSUdfTkVUYC4gR290IGl0LlxuXG5Ob3csIGxldCdzIHNlZSBhYm91dCBgcGZpZm9fZmFzdF9pbml0YC4gSXMgaXQgc3RhdGljPyBZZXMsIGl0IGlzOiBgc3RhdGljIGludCBwZmlmb19mYXN0X2luaXQoc3RydWN0IFFkaXNjICpxZGlzYywgc3RydWN0IG5sYXR0ciAqb3B0LCAuLi4pYC4uLiBIbW0sIHdhaXQgYSBzZWNvbmQuIFRoYXQgcHJvbXB0Li4uIFwiUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLlwiIFRoYXQncyBnb29kIHByYWN0aWNlLCBidXQuLi4gaG9sZCBvbi4gYHBmaWZvX2Zhc3RfaW5pdGAgaXMgYSBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiBgc3RydWN0IFFkaXNjX29wcyBwZmlmb19mYXN0X29wc2AuIFRoYXQgbWVhbnMgaXQgKndvbid0KiBiZSBpbmxpbmVkIGJlY2F1c2UgaXRzIGFkZHJlc3MgaXMgYmVpbmcgdGFrZW4uIFRoZSBjb21waWxlciBoYXMgdG8gZ2VuZXJhdGUgY29kZSB0byBwb2ludCB0byBpdC4gU28sIHRoYXQncyBub3QgYSBjb25jZXJuIGhlcmUuIExldCBtZSBkb3VibGUtY2hlY2sgYHBmaWZvX2Zhc3Rfb3BzYCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NTAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTA6MzE6MDAuODg5NTgxNzM0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NDg2Mzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBmaWZvX2Zhc3Rfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTM2LS8qIFFkaXNjIHRvIHVzZSBieSBkZWZhdWx0ICovXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6Mzc6Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAqZGVmYXVsdF9xZGlzY19vcHMgPSBcXHUwMDI2cGZpZm9fZmFzdF9vcHM7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMzgtRVhQT1JUX1NZTUJPTChkZWZhdWx0X3FkaXNjX29wcyk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz05NTM9c3RhdGljIGludCBwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IFFkaXNjICpzY2gsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05NzUtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTc2OnN0cnVjdCBRZGlzY19vcHMgcGZpZm9fZmFzdF9vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05NzctXFx0LmlkXFx0XFx0PVxcdFxcXCJwZmlmb19mYXN0XFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk4OS19O1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjk5MDpFWFBPUlRfU1lNQk9MKHBmaWZvX2Zhc3Rfb3BzKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05OTEtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMjE5PXN0YXRpYyB2b2lkIGF0dGFjaF9vbmVfZGVmYXVsdF9xZGlzYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTIyOC1cXHRlbHNlIGlmKGRldi1cXHUwMDNldHlwZSA9PSBBUlBIUkRfQ0FOKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEyMjk6XFx0XFx0b3BzID0gXFx1MDAyNnBmaWZvX2Zhc3Rfb3BzO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyMzAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDEwOjMxOjAwLjkzODA3Mjc2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUwMjk4NDE1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgcGZpZm9fZmFzdCBPcGVyYXRpb25zIGZvciBQb3RlbnRpYWwgSW1wcm92ZW1lbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgcGZpZm9fZmFzdGAgc2V0dXAsIGFuZCBJJ3ZlIG5vdGljZWQgc29tZXRoaW5nLiBCZWNhdXNlIGBwZmlmb19mYXN0X2luaXRgIGFuZCBgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuYCBhcmUgdXNlZCBhcyBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gYHBmaWZvX2Zhc3Rfb3BzYCwgdGhleSdyZSBub3QgZ2V0dGluZyBpbmxpbmVkLiBUaGlzIHByZXNlbnRzIGEgdW5pcXVlIG9wcG9ydHVuaXR5LCBwb3RlbnRpYWxseSBtYWtpbmcgdGhlbSB1c2VmdWwgYXMgZm9jdXMgc3ltYm9scyBkdXJpbmcgYW5hbHlzaXMgYW5kIG9wdGltaXphdGlvbi4gVGhhdCBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCBjb25maWd1cmF0aW9uLXdpc2UuIEkgd29uZGVyIGlmIGVuYWJsaW5nIGBDT05GSUdfTkVUX1NDSEVEYCBpcyBuZWNlc3NhcnkgdG8gZnVsbHkgY29uZmlndXJlIHRoZXNlIHFkaXNjcyB0aHJvdWdoIG5ldGxpbmsuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGUgYG5ldC9zY2hlZC9NYWtlZmlsZWAgYWdhaW4gdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBidWlsZCBlbnZpcm9ubWVudCBmb3IgdGhlc2UgZmVhdHVyZXMuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzQ2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDEwOjMxOjA1LjQ0MTA1OTg3NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODc3OTkxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYmotXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvTWFrZWZpbGUtNS1cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjpvYmoteVxcdDo9IHNjaF9nZW5lcmljLm8gc2NoX21xLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtNy1cXG5uZXQvc2NoZWQvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfSU5FVClcXHRcXHQrPSBzY2hfZnJhZy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX05FVF9TQ0hFRClcXHRcXHQrPSBzY2hfYXBpLm8gc2NoX2JsYWNraG9sZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19ORVRfQ0xTKVxcdFxcdCs9IGNsc19hcGkub1xcbm5ldC9zY2hlZC9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfTkVUX0NMU19BQ1QpXFx0Kz0gYWN0X2FwaS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19ORVRfQUNUX1BPTElDRSlcXHQrPSBhY3RfcG9saWNlLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX05FVF9BQ1RfR0FDVClcXHQrPSBhY3RfZ2FjdC5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjE0Om9iai0kKENPTkZJR19ORVRfQUNUX01JUlJFRClcXHQrPSBhY3RfbWlycmVkLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTU6b2JqLSQoQ09ORklHX05FVF9BQ1RfU0FNUExFKVxcdCs9IGFjdF9zYW1wbGUub1xcbm5ldC9zY2hlZC9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfTkVUX0FDVF9OQVQpXFx0Kz0gYWN0X25hdC5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19ORVRfQUNUX1BFRElUKVxcdCs9IGFjdF9wZWRpdC5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19ORVRfQUNUX1NJTVApXFx0Kz0gYWN0X3NpbXBsZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjE5Om9iai0kKENPTkZJR19ORVRfQUNUX1NLQkVESVQpXFx0Kz0gYWN0X3NrYmVkaXQub1xcbm5ldC9zY2hlZC9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfTkVUX0FDVF9DU1VNKVxcdCs9IGFjdF9jc3VtLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MjE6b2JqLSQoQ09ORklHX05FVF9BQ1RfTVBMUylcXHQrPSBhY3RfbXBscy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjIyOm9iai0kKENPTkZJR19ORVRfQUNUX1ZMQU4pXFx0Kz0gYWN0X3ZsYW4ub1xcbm5ldC9zY2hlZC9NYWtlZmlsZToyMzpvYmotJChDT05GSUdfTkVUX0FDVF9CUEYpXFx0Kz0gYWN0X2JwZi5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19ORVRfQUNUX0NPTk5NQVJLKVxcdCs9IGFjdF9jb25ubWFyay5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19ORVRfQUNUX0NUSU5GTylcXHQrPSBhY3RfY3RpbmZvLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MjY6b2JqLSQoQ09ORklHX05FVF9BQ1RfU0tCTU9EKVxcdCs9IGFjdF9za2Jtb2Qub1xcbm5ldC9zY2hlZC9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfTkVUX0FDVF9JRkUpXFx0Kz0gYWN0X2lmZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjI4Om9iai0kKENPTkZJR19ORVRfSUZFX1NLQk1BUkspXFx0Kz0gYWN0X21ldGFfbWFyay5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjI5Om9iai0kKENPTkZJR19ORVRfSUZFX1NLQlBSSU8pXFx0Kz0gYWN0X21ldGFfc2ticHJpby5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjMwOm9iai0kKENPTkZJR19ORVRfSUZFX1NLQlRDSU5ERVgpXFx0Kz0gYWN0X21ldGFfc2tidGNpbmRleC5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19ORVRfQUNUX1RVTk5FTF9LRVkpKz0gYWN0X3R1bm5lbF9rZXkub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTozMjpvYmotJChDT05GSUdfTkVUX0FDVF9DVClcXHQrPSBhY3RfY3Qub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTozMzpvYmotJChDT05GSUdfTkVUX0FDVF9HQVRFKVxcdCs9IGFjdF9nYXRlLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfRklGTylcXHQrPSBzY2hfZmlmby5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19ORVRfU0NIX0hUQilcXHQrPSBzY2hfaHRiLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX05FVF9TQ0hfSEZTQylcXHQrPSBzY2hfaGZzYy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19ORVRfU0NIX1JFRClcXHQrPSBzY2hfcmVkLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX05FVF9TQ0hfR1JFRClcXHQrPSBzY2hfZ3JlZC5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjM5Om9iai0kKENPTkZJR19ORVRfU0NIX0lOR1JFU1MpXFx0Kz0gc2NoX2luZ3Jlc3Mub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfTkVUX1NDSF9TRkIpXFx0Kz0gc2NoX3NmYi5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjQxOm9iai0kKENPTkZJR19ORVRfU0NIX1NGUSlcXHQrPSBzY2hfc2ZxLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDI6b2JqLSQoQ09ORklHX05FVF9TQ0hfVEJGKVxcdCs9IHNjaF90YmYub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfTkVUX1NDSF9URVFMKVxcdCs9IHNjaF90ZXFsLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfUFJJTylcXHQrPSBzY2hfcHJpby5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjQ1Om9iai0kKENPTkZJR19ORVRfU0NIX01VTFRJUSlcXHQrPSBzY2hfbXVsdGlxLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDY6b2JqLSQoQ09ORklHX05FVF9TQ0hfTkVURU0pXFx0Kz0gc2NoX25ldGVtLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDc6b2JqLSQoQ09ORklHX05FVF9TQ0hfRFJSKVxcdCs9IHNjaF9kcnIub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo0ODpvYmotJChDT05GSUdfTkVUX1NDSF9QTFVHKVxcdCs9IHNjaF9wbHVnLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDk6b2JqLSQoQ09ORklHX05FVF9TQ0hfRVRTKVxcdCs9IHNjaF9ldHMub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo1MDpvYmotJChDT05GSUdfTkVUX1NDSF9NUVBSSU8pXFx0Kz0gc2NoX21xcHJpby5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjUxOm9iai0kKENPTkZJR19ORVRfU0NIX01RUFJJT19MSUIpICs9IHNjaF9tcXByaW9fbGliLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTI6b2JqLSQoQ09ORklHX05FVF9TQ0hfU0tCUFJJTylcXHQrPSBzY2hfc2ticHJpby5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjUzOm9iai0kKENPTkZJR19ORVRfU0NIX0NIT0tFKVxcdCs9IHNjaF9jaG9rZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjU0Om9iai0kKENPTkZJR19ORVRfU0NIX1FGUSlcXHQrPSBzY2hfcWZxLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTU6b2JqLSQoQ09ORklHX05FVF9TQ0hfQ09ERUwpXFx0Kz0gc2NoX2NvZGVsLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTY6b2JqLSQoQ09ORklHX05FVF9TQ0hfRlFfQ09ERUwpXFx0Kz0gc2NoX2ZxX2NvZGVsLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTc6b2JqLSQoQ09ORklHX05FVF9TQ0hfQ0FLRSlcXHQrPSBzY2hfY2FrZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19ORVRfU0NIX0ZRKVxcdCs9IHNjaF9mcS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjU5Om9iai0kKENPTkZJR19ORVRfU0NIX0hIRilcXHQrPSBzY2hfaGhmLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjA6b2JqLSQoQ09ORklHX05FVF9TQ0hfUElFKVxcdCs9IHNjaF9waWUub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo2MTpvYmotJChDT05GSUdfTkVUX1NDSF9GUV9QSUUpXFx0Kz0gc2NoX2ZxX3BpZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjYyOm9iai0kKENPTkZJR19ORVRfU0NIX0NCUylcXHQrPSBzY2hfY2JzLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjM6b2JqLSQoQ09ORklHX05FVF9TQ0hfRVRGKVxcdCs9IHNjaF9ldGYub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo2NDpvYmotJChDT05GSUdfTkVUX1NDSF9UQVBSSU8pXFx0Kz0gc2NoX3RhcHJpby5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjY1Om9iai0kKENPTkZJR19ORVRfU0NIX0JQRilcXHQrPSBicGZfcWRpc2Mub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo2NjpvYmotJChDT05GSUdfTkVUX1NDSF9EVUFMUEkyKVxcdCs9IHNjaF9kdWFscGkyLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtNjctXFxubmV0L3NjaGVkL01ha2VmaWxlOjY4Om9iai0kKENPTkZJR19ORVRfQ0xTX1UzMilcXHQrPSBjbHNfdTMyLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6Njk6b2JqLSQoQ09ORklHX05FVF9DTFNfUk9VVEU0KVxcdCs9IGNsc19yb3V0ZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjcwOm9iai0kKENPTkZJR19ORVRfQ0xTX0ZXKVxcdCs9IGNsc19mdy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjcxOm9iai0kKENPTkZJR19ORVRfQ0xTX0JBU0lDKVxcdCs9IGNsc19iYXNpYy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjcyOm9iai0kKENPTkZJR19ORVRfQ0xTX0ZMT1cpXFx0Kz0gY2xzX2Zsb3cub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo3MzpvYmotJChDT05GSUdfTkVUX0NMU19DR1JPVVApXFx0Kz0gY2xzX2Nncm91cC5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjc0Om9iai0kKENPTkZJR19ORVRfQ0xTX0JQRilcXHQrPSBjbHNfYnBmLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NzU6b2JqLSQoQ09ORklHX05FVF9DTFNfRkxPV0VSKVxcdCs9IGNsc19mbG93ZXIub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo3NjpvYmotJChDT05GSUdfTkVUX0NMU19NQVRDSEFMTClcXHQrPSBjbHNfbWF0Y2hhbGwub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo3NzpvYmotJChDT05GSUdfTkVUX0VNQVRDSClcXHQrPSBlbWF0Y2gub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo3ODpvYmotJChDT05GSUdfTkVUX0VNQVRDSF9DTVApXFx0Kz0gZW1fY21wLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6Nzk6b2JqLSQoQ09ORklHX05FVF9FTUFUQ0hfTkJZVEUpXFx0Kz0gZW1fbmJ5dGUub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo4MDpvYmotJChDT05GSUdfTkVUX0VNQVRDSF9VMzIpXFx0Kz0gZW1fdTMyLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6ODE6b2JqLSQoQ09ORklHX05FVF9FTUFUQ0hfTUVUQSlcXHQrPSBlbV9tZXRhLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6ODI6b2JqLSQoQ09ORklHX05FVF9FTUFUQ0hfVEVYVClcXHQrPSBlbV90ZXh0Lm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6ODM6b2JqLSQoQ09ORklHX05FVF9FTUFUQ0hfQ0FOSUQpXFx0Kz0gZW1fY2FuaWQub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo4NDpvYmotJChDT05GSUdfTkVUX0VNQVRDSF9JUFNFVClcXHQrPSBlbV9pcHNldC5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjg1Om9iai0kKENPTkZJR19ORVRfRU1BVENIX0lQVClcXHQrPSBlbV9pcHQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMDozMTowNS40ODk4NDUxNDFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTk2ODI2OTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5hdmlnYXRpbmcgdGhlIEtlcm5lbCdzIE5ldHdvcmsgU2NoZWR1bGVyIEJ1aWxkIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0aGUgbmV0d29yayBzY2hlZHVsZXIgY29tcG9uZW50cyBhcmUgYnVpbHQsIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGBzY2hfZ2VuZXJpYy5jYC4gUmlnaHQsIHNvIEkgc2VlIHRoYXQgdGhpcyBpcyBjb21waWxlZCBpbnRvIGBuZXQvc2NoZWQvc2NoX2dlbmVyaWMub2AuIFByZXR0eSBzdGFuZGFyZC4gQW5kIHRoYXQgb2JqZWN0IGZpbGUgaXMgZGVjbGFyZWQgYXMgYG9iai15YCB3aXRoaW4gdGhlIGBuZXQvc2NoZWQvTWFrZWZpbGVgLiBTbyBmYXIsIHNvIGdvb2QuIE5vIHN1cnByaXNlcyB0aGVyZS4gQnV0LCBob2xkIG9uIGEgc2Vjb25kLi4uIEkga25vdyB0aGF0IGBuZXQvc2NoZWQvTWFrZWZpbGVgIGlzICppdHNlbGYqIGluY2x1ZGVkIGZyb20gYG5ldC9NYWtlZmlsZWAuIFJpZ2h0LiBUaGF0J3MgdGhlIGtleS4gSSBuZWVkIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmN5IGNoYWluIGJhY2sgdXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgaW5jbHVzaW9uIG9mIGBuZXQvc2NoZWQvTWFrZWZpbGVgIGFmZmVjdHMgdGhlIG92ZXJhbGwgYnVpbGQgcHJvY2Vzcy4gTGV0J3MgcHVsbCB1cCB0aGF0IGBuZXQvTWFrZWZpbGVgIGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uIGF0IHRoZSBoaWdoZXIgbGV2ZWwuIFRoaXMgc2hvdWxkIGhlbHAgbWUgcGlucG9pbnQgd2hlcmUgYHNjaF9nZW5lcmljLm9gIHVsdGltYXRlbHkgZml0cyBpbnRvIHRoZSBicm9hZGVyIGtlcm5lbCBidWlsZCBsYW5kc2NhcGUgYW5kIGhvdyBpdHMgY29tcGlsYXRpb24gaXMgb3JjaGVzdHJhdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDE5LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTA6MzE6MTQuNDg2Njc0NTgyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTU5MzEyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY2hlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19MTEMpXFx0XFx0Kz0gbGxjL1xcbm5ldC9NYWtlZmlsZToxNTpvYmoteVxcdFxcdFxcdFxcdCs9IGV0aGVybmV0LyA4MDIvIHNjaGVkLyBuZXRsaW5rLyBicGYvIGV0aHRvb2wvXFxubmV0L01ha2VmaWxlLTE2LW9iai0kKENPTkZJR19ORVRGSUxURVIpXFx0XFx0Kz0gbmV0ZmlsdGVyL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMDozMToxNC41MzYyNzU2NTdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUxMTU0NjQyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBDb21waWxhdGlvbiBhbmQgSW5pdGlhbGl6YXRpb24gb2YgYHBmaWZvX2Zhc3RgKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBob3cgdGhlIGBuZXQvc2NoZWQvYCBkaXJlY3Rvcnkgd29ya3Mgd2l0aGluIHRoZSBrZXJuZWwuIEl0IHNlZW1zIGxpa2UgdGhlIGVudGlyZSBkaXJlY3RvcnksIGF0IGxlYXN0IHRoZSBjb3JlIGNvbXBvbmVudHMsIGFyZSBjb21waWxlZCBpZiBgQ09ORklHX05FVGAgaXMgc2V0LiBOb3csIHRoZSBgcGZpZm9fZmFzdGAgcWRpc2Mga2VlcHMgY29taW5nIHVwLCBzcGVjaWZpY2FsbHkgd2l0aCBmdW5jdGlvbnMgbGlrZSBgcGZpZm9fZmFzdF9pbml0YCBhbmQgYHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbmAuIEkgd2FzIGN1cmlvdXMgaWYgdGhlcmUgd2FzIGEgc2VwYXJhdGUgY29uZmlnIG9wdGlvbiBmb3IgYHBmaWZvX2Zhc3RgIGl0c2VsZiwgYnV0IHRoYXQgc2VlbXMgbm90IHRvIGJlIHRoZSBjYXNlLCBhcyBpdCdzIGRpcmVjdGx5IGluY2x1ZGVkIGFzIGBvYmoteWAgd2l0aGluIGBzY2hfZ2VuZXJpYy5jYC5cblxuQSBrZXkgcG9pbnQgYXJpc2VzOiB0byBhY3R1YWxseSAqY29uZmlndXJlKiB0aGVzZSBxZGlzY3MgdXNpbmcgbmV0bGluaywgd2UgYWJzb2x1dGVseSBuZWVkIGBDT05GSUdfTkVUX1NDSEVEYC4gU28sIGhlcmUncyBteSBjcml0aWNhbCBxdWVzdGlvbjogY2FuIGBwZmlmb19mYXN0YCBzdGlsbCBiZSAqaW5pdGlhbGl6ZWQqIGV2ZW4gaWYgYENPTkZJR19ORVRfU0NIRURgIGlzIGRpc2FibGVkPyBSZW1lbWJlciwgaW5pdGlhbGl6YXRpb24gaXMgZGlzdGluY3QgZnJvbSBjb25maWd1cmF0aW9uLiBMb29raW5nIGF0IHRoZSBjb2RlIGFnYWluLCBJJ3ZlIGdvdCB0byBmaW5kIHdoZW4gYHBmaWZvX2Zhc3RfaW5pdGAgaXMgY2FsbGVkIGFuZCBhc3Nlc3MgaXRzIGRlcGVuZGVuY3kgb24gYENPTkZJR19ORVRfU0NIRURgLiBJdCdzIGNsZWFybHkgY2FsbGVkIGR1cmluZyB0aGUgcWRpc2MncyBpbml0aWFsaXphdGlvbiwgd2hpY2ggaXMgYSBrZXkgcHJvY2Vzcy4gVG8gY2xhcmlmeSwgSSBuZWVkIHRvIGNoZWNrIGBuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY2AgZm9yIGFueSBjbHVlcyByZWdhcmRpbmcgdGhpcyBpbml0aWFsaXphdGlvbiBsb2dpYy4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0MDUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTA6MzE6MjAuMDQ3ODI0NjExWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODI5NTA5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwZmlmb19mYXN0X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF9nZW5lcmljLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9ODU5PXN0YXRpYyB2b2lkIHBmaWZvX2Zhc3RfcmVzZXQoc3RydWN0IFFkaXNjICpxZGlzYylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTg2OC1cXHRcXHQvKiBOVUxMIHJpbmcgaXMgcG9zc2libGUgaWYgZGVzdHJveSBwYXRoIGlzIGR1ZSB0byBhIGZhaWxlZFxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjg2OTpcXHRcXHQgKiBza2JfYXJyYXlfaW5pdCgpIGluIHBmaWZvX2Zhc3RfaW5pdCgpIGNhc2UuXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtODcwLVxcdFxcdCAqL1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9ODg5PXN0YXRpYyBpbnQgcGZpZm9fZmFzdF9kdW1wKHN0cnVjdCBRZGlzYyAqcWRpc2MsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05MDEtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTAyOnN0YXRpYyBpbnQgcGZpZm9fZmFzdF9pbml0KHN0cnVjdCBRZGlzYyAqcWRpc2MsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05MDMtXFx0XFx0XFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9OTMzPXN0YXRpYyB2b2lkIHBmaWZvX2Zhc3RfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk0MS1cXHRcXHQvKiBOVUxMIHJpbmcgaXMgcG9zc2libGUgaWYgZGVzdHJveSBwYXRoIGlzIGR1ZSB0byBhIGZhaWxlZFxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjk0MjpcXHRcXHQgKiBza2JfYXJyYXlfaW5pdCgpIGluIHBmaWZvX2Zhc3RfaW5pdCgpIGNhc2UuXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTQzLVxcdFxcdCAqL1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9OTc2PXN0cnVjdCBRZGlzY19vcHMgcGZpZm9fZmFzdF9vcHMgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk4MS1cXHQucGVla1xcdFxcdD1cXHRwZmlmb19mYXN0X3BlZWssXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTgyOlxcdC5pbml0XFx0XFx0PVxcdHBmaWZvX2Zhc3RfaW5pdCxcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05ODMtXFx0LmRlc3Ryb3lcXHQ9XFx0cGZpZm9fZmFzdF9kZXN0cm95LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMDozMToyMC4wOTYxMjUzMjZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg3NTQ4OTE2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkluaXRpYWwgRGV2aWNlIENvbmZpZ3VyYXRpb24gVGhvdWdodHMqKlxuXG5SaWdodCwgc28gYSBuZXR3b3JrIGRldmljZSBpcyBicm91Z2h0IGludG8gZXhpc3RlbmNlIOKAkyBuYXR1cmFsbHksIGl0IG5lZWRzIHNvbWUgaW5pdGlhbCBxdWFsaXR5IG9mIHNlcnZpY2UgKFFvUykgaGFuZGxpbmcsIGEgcXVldWUgZGlzY2lwbGluZSBvciAqcWRpc2MqLiBJIGltbWVkaWF0ZWx5IHN0YXJ0IHRoaW5raW5nIGFib3V0IGhvdyB0aGF0IGdldHMgc2V0IHVwLiBNeSBtaW5kIGdvZXMgc3RyYWlnaHQgdG8gdGhlIGNvcmU6IGlzIGl0IGhhbmRsZWQgdGhyb3VnaCBgYXR0YWNoX29uZV9kZWZhdWx0X3FkaXNjYCBvciBwZXJoYXBzIGBkZXZfaW5pdF9zY2hlZHVsZXJgPyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGV4YWN0IGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIHByZWNpc2UgZGVmYXVsdCBpbml0aWFsaXphdGlvbiBzdGVwcyBvbiBkZXZpY2UgY3JlYXRpb24uIFVuZGVyc3RhbmRpbmcgdGhpcyBpbml0aWFsIGFzc2lnbm1lbnQgaXMgY3J1Y2lhbCBmb3IgZGVidWdnaW5nIGFuZCBvcHRpbWl6YXRpb24uIEl0J3MgdGhlIGZvdW5kYXRpb24gZm9yIGFueSBmdXJ0aGVyIHRyYWZmaWMgc2hhcGluZyBvciBzY2hlZHVsaW5nIEkgbWlnaHQgYXBwbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0MzksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMDozMToyMy45NzE2MTc4NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgyMzgyNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGV2X2luaXRfc2NoZWR1bGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTE0ODA9aW50IGRldl9xZGlzY19jaGFuZ2VfdHhfcXVldWVfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNTAxLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE1MDI6c3RhdGljIHZvaWQgZGV2X2luaXRfc2NoZWR1bGVyX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTUwMy1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1MTEtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTUxMjp2b2lkIGRldl9pbml0X3NjaGVkdWxlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1MTMte1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1MTQtXFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cXHUwMDNlcWRpc2MsIFxcdTAwMjZub29wX3FkaXNjKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxNTE1OlxcdG5ldGRldl9mb3JfZWFjaF90eF9xdWV1ZShkZXYsIGRldl9pbml0X3NjaGVkdWxlcl9xdWV1ZSwgXFx1MDAyNm5vb3BfcWRpc2MpO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1MTYtXFx0aWYgKGRldl9pbmdyZXNzX3F1ZXVlKGRldikpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTUxNzpcXHRcXHRkZXZfaW5pdF9zY2hlZHVsZXJfcXVldWUoZGV2LCBkZXZfaW5ncmVzc19xdWV1ZShkZXYpLCBcXHUwMDI2bm9vcF9xZGlzYyk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTUxOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTA6MzE6MjQuMDE5ODYxNzE1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NDgyNzk1NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNoZWNraW5nIGBxZGlzY19jcmVhdGVfZGZsdGAqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhlIGBxZGlzY19jcmVhdGVfZGZsdGAgZnVuY3Rpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgZGVmYXVsdCBxdWV1ZSBkaXNjaXBsaW5lIGNyZWF0aW9uIHBhdGguIEknbSBwcm9iYWJseSBsb29raW5nIGZvciBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIHRoZSBjcmVhdGlvbiBvZiBhIGRlZmF1bHQgcWRpc2Mgd2hlbiBubyBzcGVjaWZpYyB0eXBlIGlzIHNwZWNpZmllZCBkdXJpbmcgaW50ZXJmYWNlIHNldHVwLiBJcyBpdCB1c2luZyBhIGhhcmRjb2RlZCBkZWZhdWx0PyBPciBpcyB0aGVyZSBzb21lIGtpbmQgb2YgbmVnb3RpYXRpb24gaGFwcGVuaW5nIHdpdGggdGhlIG5ldHdvcmtpbmcgc3RhY2sgdG8gZGV0ZXJtaW5lIHRoZSBiZXN0IGNob2ljZSBiYXNlZCBvbiBhdmFpbGFibGUgbW9kdWxlcyBhbmQgc3lzdGVtIGNvbmZpZ3VyYXRpb24/IEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgaXQgaW50ZXJhY3RzIHdpdGggZGlmZmVyZW50IGxpbmsgbGF5ZXIgdGVjaG5vbG9naWVzIOKAkyBpcyB0aGVyZSBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGluZ3MgbGlrZSBWTEFOcywgYm9uZGluZywgb3IgZXZlbiBtb3JlIGVzb3RlcmljIGRldmljZXM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbiBpbmZsdWVuY2UgdGhlIGFjdHVhbCBxZGlzYyB0aGF0IGdldHMgaW5zdGFudGlhdGVkLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCB3aGF0IGRhdGEgc3RydWN0dXJlcyBpdCdzIHRvdWNoaW5nLCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgZXJyb3JzLCBhbmQgaWYgdGhlcmUncyBhbnkgYWxsb2NhdGlvbiBvciBkZWFsbG9jYXRpb24gb2YgcmVzb3VyY2VzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzIG9yIHJlc291cmNlIGV4aGF1c3Rpb24gc2NlbmFyaW9zLiBJbiBlc3NlbmNlLCBJIHdhbnQgdG8gY29uZmlybSBJIHVuZGVyc3RhbmQgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kIHdoZXJlIGl0IGZpdHMgaW4gdGhlIGJyb2FkZXIgcXVldWVpbmcgZGlzY2lwbGluZSBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwMTMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMDozMToyOC41NjgxNDMzNDZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MzE5MjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInFkaXNjX2NyZWF0ZV9kZmx0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTk5ND1zdHJ1Y3QgUWRpc2MgKnFkaXNjX2FsbG9jKHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwNTItXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTA1MzpzdHJ1Y3QgUWRpc2MgKnFkaXNjX2NyZWF0ZV9kZmx0KHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSxcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDU0LVxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBRZGlzY19vcHMgKm9wcyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwNzktfVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEwODA6RVhQT1JUX1NZTUJPTChxZGlzY19jcmVhdGVfZGZsdCk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTA4MS1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTEyMTk9c3RhdGljIHZvaWQgYXR0YWNoX29uZV9kZWZhdWx0X3FkaXNjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjMwLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEyMzE6XFx0cWRpc2MgPSBxZGlzY19jcmVhdGVfZGZsdChkZXZfcXVldWUsIG9wcywgVENfSF9ST09ULCBOVUxMKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjMyLVxcdGlmICghcWRpc2MpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMjQwPXN0YXRpYyB2b2lkIGF0dGFjaF9kZWZhdWx0X3FkaXNjcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTI1My1cXHR9IGVsc2Uge1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEyNTQ6XFx0XFx0cWRpc2MgPSBxZGlzY19jcmVhdGVfZGZsdCh0eHEsIFxcdTAwMjZtcV9xZGlzY19vcHMsIFRDX0hfUk9PVCwgTlVMTCk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTI1NS1cXHRcXHRpZiAocWRpc2MpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTA6MzE6MjguNjE0NDY3NjYxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0Mzc5Mjc4OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBwZmlmb19mYXN0YCBJbml0aWFsaXphdGlvbiBhbmQgUXVldWUgTGVuZ3RoIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGUgYHBmaWZvX2Zhc3RgIHF1ZXVpbmcgZGlzY2lwbGluZSBnZXRzIHNldCB1cCBhbmQgaG93IGl0cyBwYXJhbWV0ZXJzLCBzcGVjaWZpY2FsbHkgdGhlIHRyYW5zbWl0IHF1ZXVlIGxlbmd0aCwgY2FuIGJlIG1vZGlmaWVkLiBJIHNlZSB0aGF0IGBxZGlzY19jcmVhdGVfZGZsdGAgc2VlbXMgdG8gYmUgdGhlIGVudHJ5IHBvaW50LiBJdCBjaGVja3MgZm9yIGFuIGBpbml0YCBmdW5jdGlvbiB3aXRoaW4gdGhlIGBxZGlzYy1cdTAwM2VvcHNgIHN0cnVjdHVyZSBhbmQgY2FsbHMgaXQsIHBhc3NpbmcgYWxvbmcgdGhlIHFkaXNjIGl0c2VsZiwgYWxvbmcgd2l0aCBhIHBvdGVudGlhbCBleHRlbmRlZCBhY2suIFRoaXMgbWVhbnMgdGhhdCBgcGZpZm9fZmFzdF9pbml0YCBnZXRzIGV4ZWN1dGVkIHdoZW5ldmVyIGEgbmV0d29yayBkZXZpY2UgaXMgYnJvdWdodCB1cCBhbmQgaGFzIHRoZSBkZWZhdWx0IHF1ZXVpbmcgZGlzY2lwbGluZSBhdHRhY2hlZCDigJMgdGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLlxuXG5Ob3csIG15IG5leHQgcXVlc3Rpb24gaXMgYWJvdXQgYHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbmAuIFdoZW4gZG9lcyAqdGhhdCogZ2V0IGNhbGxlZD8gT2J2aW91c2x5LCBpdCBzdWdnZXN0cyBhIGNoYW5nZSBpbiBgdHhfcXVldWVfbGVuYCwgYnV0IEkgd2FudCB0byBiZSBleHBsaWNpdC4gVGltZSB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBgY2hhbmdlX3R4X3F1ZXVlX2xlbmAgdG8gYmUgY2VydGFpbi4gVW5kZXJzdGFuZGluZyB3aGVuIGFuZCB3aHkgdGhhdCB2YWx1ZSBpcyBtb2RpZmllZCBpcyBjcnVjaWFsIGZvciBwcmVkaWN0aW5nIGl0cyBiZWhhdmlvciBhbmQgdHVuaW5nIGl0IGlmIG5lZWRlZC4gTGV0J3MgZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSB3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGludm9rZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3NTgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTA6MzE6MzMuMDUyMzk3OTA3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTcyMzM0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjaGFuZ2VfdHhfcXVldWVfbGVuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTkzMz1zdGF0aWMgdm9pZCBwZmlmb19mYXN0X2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05NTItXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTUzOnN0YXRpYyBpbnQgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuKHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk1NC1cXHRcXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGludCBuZXdfbGVuKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9OTc2PXN0cnVjdCBRZGlzY19vcHMgcGZpZm9fZmFzdF9vcHMgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk4NS1cXHQuZHVtcFxcdFxcdD1cXHRwZmlmb19mYXN0X2R1bXAsXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTg2OlxcdC5jaGFuZ2VfdHhfcXVldWVfbGVuID0gIHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbixcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05ODctXFx0Lm93bmVyXFx0XFx0PVxcdFRISVNfTU9EVUxFLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTQzND1FWFBPUlRfU1lNQk9MKGRldl9kZWFjdGl2YXRlKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDM1LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0MzY6c3RhdGljIGludCBxZGlzY19jaGFuZ2VfdHhfcXVldWVfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTQzNy1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSlcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0NDEtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTQ0MjpcXHRpZiAob3BzLVxcdTAwM2VjaGFuZ2VfdHhfcXVldWVfbGVuKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0NDM6XFx0XFx0cmV0dXJuIG9wcy1cXHUwMDNlY2hhbmdlX3R4X3F1ZXVlX2xlbihxZGlzYywgZGV2LVxcdTAwM2V0eF9xdWV1ZV9sZW4pO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0NDQtXFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xNDc4PUVYUE9SVF9TWU1CT0wobXFfY2hhbmdlX3JlYWxfbnVtX3R4KTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDc5LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0ODA6aW50IGRldl9xZGlzY19jaGFuZ2VfdHhfcXVldWVfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTQ4MS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDg5LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBkZXYtXFx1MDAzZW51bV90eF9xdWV1ZXM7IGkrKykge1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0OTA6XFx0XFx0cmV0ID0gcWRpc2NfY2hhbmdlX3R4X3F1ZXVlX2xlbihkZXYsIFxcdTAwMjZkZXYtXFx1MDAzZV90eFtpXSk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTQ5MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTA6MzE6MzMuMDk4MTI2MTYyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTIwMzgyMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBgZGV2X3FkaXNjX2NoYW5nZV90eF9xdWV1ZV9sZW5gIGFuZCBgdHhfcXVldWVfbGVuYCoqXG5cbk9rYXksIHNvIGBkZXZfcWRpc2NfY2hhbmdlX3R4X3F1ZXVlX2xlbmAuIFRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZCB3aGVuZXZlciB0aGUgYHR4X3F1ZXVlX2xlbmAgKHRyYW5zbWlzc2lvbiBxdWV1ZSBsZW5ndGgpIG9mIGEgbmV0d29yayBkZXZpY2UgaXMgYWx0ZXJlZC4gIEFuZCwgdGhpbmtpbmcgYWJvdXQgaXQsIHRoYXQgdXN1YWxseSBoYXBwZW5zIHZpYSBhIG5ldGxpbmsgaW50ZXJmYWNlLCBwcm9iYWJseSB1c2luZyBzb21ldGhpbmcgbGlrZSBgaXAgbGluayBzZXQgZGV2IGV0aDAgdHhxdWV1ZWxlbiAxMDAwMGAuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIFRoZSBpbnRlcmVzdGluZyBwb2ludCBpcywgaXQgZG9lc24ndCAqcmVxdWlyZSogdGhlIGBDT05GSUdfTkVUX1NDSEVEYCBvcHRpb24gdG8gYmUgZW5hYmxlZC4gTWFrZXMgc2Vuc2UsIGB0eF9xdWV1ZV9sZW5gIGlzIGEgZnVuZGFtZW50YWwgYXR0cmlidXRlIG9mIHRoZSBgbmV0X2RldmljZWAgc3RydWN0LiAgSXQncyBwcmV0dHkgc3RhbmRhcmQsIGJha2VkIGluLCByYXRoZXIgdGhhbiBhIHNwZWNpYWxpemVkIHNjaGVkdWxpbmcgZmVhdHVyZS5cblxuQnV0IHdhaXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgY2FsbGVkIGZyb20uIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGluIGBuZXQvY29yZS9kZXYuY2AgdG8gbWFrZSBzdXJlIG15IGluaXRpYWwgYXNzZXNzbWVudCBpcyBjb3JyZWN0LiBOZWVkIHRvIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucyB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBzb21ldGhpbmcgZnVuZGFtZW50YWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODA5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDEwOjMxOjM3LjQ5MDE2NjUyNloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA2Mzc0NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGV2X3FkaXNjX2NoYW5nZV90eF9xdWV1ZV9sZW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NvcmUvZGV2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUvZGV2LmM9OTkzMD1pbnQgbmV0aWZfY2hhbmdlX3R4X3F1ZXVlX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG5ld19sZW4pXFxuLS1cXG5uZXQvY29yZS9kZXYuYy05OTQzLVxcdFxcdFxcdGdvdG8gZXJyX3JvbGxiYWNrO1xcbm5ldC9jb3JlL2Rldi5jOjk5NDQ6XFx0XFx0cmVzID0gZGV2X3FkaXNjX2NoYW5nZV90eF9xdWV1ZV9sZW4oZGV2KTtcXG5uZXQvY29yZS9kZXYuYy05OTQ1LVxcdFxcdGlmIChyZXMpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDEwOjMxOjM3LjU0MDgwOTUyMVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDkwNTYzMTA0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgcGZpZm9fZmFzdCBRZGlzYyBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIGBuZXRpZl9jaGFuZ2VfdHhfcXVldWVfbGVuYCB0cmlnZ2VycyBjYWxscyB0byBgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuYCBhbmQsIGJ5IGltcGxpY2F0aW9uIGR1cmluZyBpbml0aWFsaXphdGlvbiwgYHBmaWZvX2Zhc3RfaW5pdGAuIFRoaXMgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBjcmVhdGluZyBhIG5ldHdvcmsgZGV2aWNlIGFuZCBzdWJzZXF1ZW50bHkgbW9kaWZ5aW5nIGl0cyBgdHhxdWV1ZWxlbmAgZGlyZWN0bHkgcmVhY2hlcyB0aGVzZSBmdW5jdGlvbnMuIFRoZSBiZWF1dHkgb2YgdGhpcyBpcyB0aGF0IHRoZSBvbmx5IHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGFwcGVhcnMgdG8gYmUgYENPTkZJR19ORVRgIOKAkyBubyBlc290ZXJpYyBzZXR0aW5ncyBuZWVkZWQuXG5cbk5vdywgaXMgYHBmaWZvX2Zhc3RgIGFjdHVhbGx5IHRoZSAqZGVmYXVsdCogcWRpc2M/IFllcyEgYGRlZmF1bHRfcWRpc2Nfb3BzYCBpcyBzZXQgdG8gYFx1MDAyNnBmaWZvX2Zhc3Rfb3BzYC4gVGhhdCBtZWFucyBhIGxhcmdlIG51bWJlciBvZiBkZXZpY2VzIHdpbGwgYmUgdXNpbmcgdGhpcyBieSBkZWZhdWx0LCB3aGljaCBtYWtlcyB0aGUgcGF0Y2ggaGlnaGx5IHJlbGV2YW50LlxuXG5SZWdhcmRpbmcgdGhlIHBhdGNoIGl0c2VsZiwgaXQncyBtb2RpZnlpbmcgYHBmaWZvX2Zhc3RfaW5pdGAgYW5kIGBwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW5gLiBXaGlsZSB0aGVzZSBhcmUgKnN0YXRpYyogZnVuY3Rpb25zLCB0aGVpciBhZGRyZXNzZXMgYXJlIGJlaW5nIHRha2VuIGFuZCBwbGFjZWQgaW50byBgcGZpZm9fZmFzdF9vcHNgLCB3aGljaCBtZWFucyB0aGV5IGFyZSBub3QgaW5saW5lZCBhbmQgaGF2ZSBkaXN0aW5jdCBzeW1ib2xzLiBUaGlzIGlzIGV4YWN0bHkgd2hhdCB3ZSB3YW50IGZvciBmb2N1cyBzeW1ib2xzLlxuXG5JJ3ZlIGNvbmZpcm1lZCB0aGF0IGBDT05GSUdfTkVUYCBpcyB0aGUgb25seSByZXF1aXJlbWVudCwgd2hpY2ggaXMgYSBncmVhdCBzdGFydGluZyBwb2ludCBmb3IgZnV6emluZy4gVGhlIHNlbGZ0ZXN0IHVzZXMgYHRjIHFkaXNjIGFkZCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290IHBmaWZvX2Zhc3RgLCB3aGljaCBjb25maXJtcyBpdHMgZGlyZWN0IHVzYWdlLiBIb3dldmVyLCB0aGUgZGVmYXVsdCBxZGlzYyBpbml0aWFsaXphdGlvbiBhbmQgYHR4cXVldWVsZW5gIGNoYW5nZXMgdmlhIGBpcCBsaW5rYCBkb24ndCBuZWVkIGBDT05GSUdfTkVUX1NDSEVEYC4gVGhpcyBpcyBhIGNydWNpYWwgcG9pbnQ6IHRoZSBidWcgY2FuIGJlIHRyaWdnZXJlZCBieSBtZXJlbHkgbW9kaWZ5aW5nIGB0eHF1ZXVlbGVuYCBvbiBhIGRldmljZSAqYWxyZWFkeSogdXNpbmcgYHBmaWZvX2Zhc3RgIGJ5IGRlZmF1bHQuXG5cbkxvb2tpbmcgYXQgdGhlIGNvZGUgY2hhbmdlczogdGhlIHBhdGNoIGxpbWl0cyB0aGUgcmluZyBzaXplIHRvIDY1NTM1IGFuZCBzd2l0Y2hlcyB0aGUgYWxsb2NhdGlvbiBmbGFnIHRvIGBHRlBfS0VSTkVMX0FDQ09VTlRgLiBUaGlzIGlzIGEgbWVtb3J5IHVzYWdlIHByZXZlbnRpb24gbWVhc3VyZSwgZ3VhcmRpbmcgYWdhaW5zdCBleHRyZW1lIGB0eHF1ZXVlbGVuYCB2YWx1ZXMuIFRoaXMgc2NyZWFtcyBmb3IgZnV6emluZy5cblxuTXkgZGVjaXNpb24gaXM6XG4qICAgKipXb3J0aEZ1enppbmc6IHRydWUqKlxuKiAgICoqRm9jdXNTeW1ib2xzOioqIFxcW1wicGZpZm9cXF9mYXN0XFxfaW5pdFwiLCBcInBmaWZvXFxfZmFzdFxcX2NoYW5nZVxcX3R4XFxfcXVldWVcXF9sZW5cIl1cbiogICAqKkVuYWJsZUNvbmZpZ3M6IFxcW+KAnE5FVFwiXSoqXG4qICAgKipSZWFzb25pbmc6KiogXCJUaGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgYHR4X3F1ZXVlX2xlbmAgY2hhbmdlIG9mIHRoZSBgcGZpZm9fZmFzdGAgcWRpc2MuIFNwZWNpZmljYWxseSwgaXQgY2FwcyB0aGUgcXVldWUgbGVuZ3RoIHRvIDY1NTM1IGFuZCBpbnRyb2R1Y2VzIG1lbW9yeSBhY2NvdW50aW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHdpdGhpbiByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuXCJcblxuXG4iLCJJbnB1dFRva2VucyI6MTEzMzksIk91dHB1dFRva2VucyI6MTA1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMDozMTo1Mi40NDY0NDMyMloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5OTA5NjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwZmlmb19mYXN0X2luaXRcIixcbiAgICBcInBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdHhfcXVldWVfbGVuIGNoYW5nZSBsb2dpYyBvZiB0aGUgcGZpZm9fZmFzdCBxZGlzYywgY2FwcGluZyB0aGUgcXVldWUgbGVuZ3RoIHRvIDY1NTM1IGFuZCBhZGRpbmcgbWVtb3J5IGFjY291bnRpbmcuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBmaWZvX2Zhc3RfaW5pdFwiLFxuICAgIFwicGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCB0eF9xdWV1ZV9sZW4gY2hhbmdlIGxvZ2ljIG9mIHRoZSBwZmlmb19mYXN0IHFkaXNjLCBjYXBwaW5nIHRoZSBxdWV1ZSBsZW5ndGggdG8gNjU1MzUgYW5kIGFkZGluZyBtZW1vcnkgYWNjb3VudGluZy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDEwOjMxOjUyLjUyNjM1OTU3MloiLCJTZXEiOjIzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQxMTAwMjg5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDEwOjMxOjUyLjUyNjkwNTIzMloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4NDEwNDUzMDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2FwIG9uIHRoZSByaW5nIHNpemUgKGBxbGVuYCBhbmQgYG5ld19sZW5gKSB0byA2NTUzNSBpbiBgcGZpZm9fZmFzdF9pbml0YCBhbmQgYHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbmAsIGFuZCBjaGFuZ2VzIHRoZSBhbGxvY2F0aW9uIGZsYWcgZnJvbSBgR0ZQX0tFUk5FTGAgdG8gYEdGUF9LRVJORUxfQUNDT1VOVGAuIFRoZXNlIGNoYW5nZXMgYXJlIGludGVuZGVkIHRvIHByZXZlbnQgZXhjZXNzaXZlIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBhZGQgbWVtb3J5IGFjY291bnRpbmcuIFRoZXkgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbW9kaWZ5IHBhZGRpbmcsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gQW55IGlzc3VlcyByZWxhdGVkIHRvIG1lbW9yeSBhbGxvY2F0aW9uIHNpemVzIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgd291bGQgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBtZW1vcnkgZGVidWdnaW5nIHRvb2xzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MsIHNvIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5N2UyNWI2MDQ5YmY1NDlhYmMyMGM2ZTQ4MDU0ZTdkYzVjNTRjZTkyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjAgMTA6MzA6NDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYyBiL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXG5pbmRleCBlZjJiNGJmNTE1NjQxLi5lOThmZDIzNmFmYTA0IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXG5AQCAtOTEwLDExICs5MTAsMTcgQEAgc3RhdGljIGludCBwZmlmb19mYXN0X2luaXQoc3RydWN0IFFkaXNjICpxZGlzYywgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0aWYgKCFxbGVuKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbitcdGlmIChxbGVuIFx1MDAzZSA2NTUzNSkge1xuK1x0XHRwcl93YXJuX3JhdGVsaW1pdGVkKFwicGZpZm9fZmFzdDogY2FwcGluZyByaW5nIHNpemUgJXUgdG8gNjU1MzUgZm9yIGRldiAlc1xcblwiLFxuK1x0XHRcdFx0ICAgIHFsZW4sIHFkaXNjX2RldihxZGlzYyktXHUwMDNlbmFtZSk7XG4rXHRcdHFsZW4gPSA2NTUzNTtcbitcdH1cbitcbiBcdGZvciAocHJpbyA9IDA7IHByaW8gXHUwMDNjIFBGSUZPX0ZBU1RfQkFORFM7IHByaW8rKykge1xuIFx0XHRzdHJ1Y3Qgc2tiX2FycmF5ICpxID0gYmFuZDJsaXN0KHByaXYsIHByaW8pO1xuIFx0XHRpbnQgZXJyO1xuIFxuLVx0XHRlcnIgPSBza2JfYXJyYXlfaW5pdChxLCBxbGVuLCBHRlBfS0VSTkVMKTtcbitcdFx0ZXJyID0gc2tiX2FycmF5X2luaXQocSwgcWxlbiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdH1cbkBAIC05NTcsOCArOTYzLDE0IEBAIHN0YXRpYyBpbnQgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuKHN0cnVjdCBRZGlzYyAqc2NoLFxuIFx0XHRiYW5kc1twcmlvXSA9IHE7XG4gXHR9XG4gXG4rXHRpZiAobmV3X2xlbiBcdTAwM2UgNjU1MzUpIHtcbitcdFx0cHJfd2Fybl9yYXRlbGltaXRlZChcInBmaWZvX2Zhc3Q6IGNhcHBpbmcgcmluZyBzaXplICV1IHRvIDY1NTM1IGZvciBkZXYgJXNcXG5cIixcbitcdFx0XHRcdCAgICBuZXdfbGVuLCBxZGlzY19kZXYoc2NoKS1cdTAwM2VuYW1lKTtcbitcdFx0bmV3X2xlbiA9IDY1NTM1O1xuK1x0fVxuK1xuIFx0cmV0dXJuIHNrYl9hcnJheV9yZXNpemVfbXVsdGlwbGVfYmgoYmFuZHMsIFBGSUZPX0ZBU1RfQkFORFMsIG5ld19sZW4sXG4tXHRcdFx0XHRcdCAgICBHRlBfS0VSTkVMKTtcbitcdFx0XHRcdFx0ICAgIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gfVxuIFxuIHN0cnVjdCBRZGlzY19vcHMgcGZpZm9fZmFzdF9vcHMgX19yZWFkX21vc3RseSA9IHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9wZmlmb19mYXN0Lmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9wZmlmb19mYXN0Lmpzb25cbmluZGV4IDMwZGEyN2ZlODgwNjcuLmIzODMwMTcyZmU0ZjQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9wZmlmb19mYXN0Lmpzb25cbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3BmaWZvX2Zhc3QuanNvblxuQEAgLTEwNSw1ICsxMDUsMjggQEBcbiAgICAgICAgIFwidGVhcmRvd25cIjogW1xuICAgICAgICAgICAgIFwiJFRDIHFkaXNjIGRlbCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290XCJcbiAgICAgICAgIF1cbisgICAgfSxcbisgICAge1xuKyAgICAgICAgXCJpZFwiOiBcIjAyNDlcIixcbisgICAgICAgIFwibmFtZVwiOiBcIkNyZWF0ZSBwZmlmb19mYXN0IHdpdGggaHVnZSB0eF9xdWV1ZV9sZW4gKHJpbmcgY2FwIHJlZ3Jlc3Npb24pXCIsXG4rICAgICAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICAgICAgICBcInFkaXNjXCIsXG4rICAgICAgICAgICAgXCJwZmlmb19mYXN0XCJcbisgICAgICAgIF0sXG4rICAgICAgICBcInBsdWdpbnNcIjoge1xuKyAgICAgICAgICAgIFwicmVxdWlyZXNcIjogXCJuc1BsdWdpblwiXG4rICAgICAgICB9LFxuKyAgICAgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgICAgICAgXCIkSVAgbGluayBzZXQgZGV2ICREVU1NWSB0eHF1ZXVlbGVuIDEwMDAwMDAwMFwiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgcWRpc2MgYWRkIGRldiAkRFVNTVkgaGFuZGxlIDE6IHJvb3QgcGZpZm9fZmFzdFwiLFxuKyAgICAgICAgXCJleHBFeGl0Q29kZVwiOiBcIjBcIixcbisgICAgICAgIFwidmVyaWZ5Q21kXCI6IFwiJFRDIHFkaXNjIHNob3cgZGV2ICREVU1NWVwiLFxuKyAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJxZGlzYyBwZmlmb19mYXN0IDE6IHJvb3RcIixcbisgICAgICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbisgICAgICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgICAgICAgIFwiJElQIGxpbmsgc2V0IGRldiAkRFVNTVkgdHhxdWV1ZWxlbiAxMDAwXCIsXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkRFVNTVkgaGFuZGxlIDE6IHJvb3RcIlxuKyAgICAgICAgXVxuICAgICB9XG4gXVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTA6MzE6NTIuNTI2OTA2MTMyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0MTA0MzA2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gSXQgdGFyZ2V0cyB0aGUgYHBmaWZvX2Zhc3RfaW5pdGAgYW5kIGBwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW5gIGZ1bmN0aW9ucyB3aXRoaW4gYG5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZXMgcmV2b2x2ZSBhcm91bmQgcmluZyBidWZmZXIgc2l6ZSBsaW1pdHMgYW5kIG1lbW9yeSBhY2NvdW50aW5nLiBJJ20gc2VlaW5nIGJvdW5kcyBjaGVja3MgYWRkZWQgdG8gYHFsZW5gIGFuZCBgbmV3X2xlbmAsIGNhcHBpbmcgdGhlbSBhdCA2NTUzNSwgYW5kIHRoZSBhbGxvY2F0aW9uIGZsYWcgaW4gYHNrYl9hcnJheV9pbml0YCBhbmQgYHNrYl9hcnJheV9yZXNpemVfbXVsdGlwbGVfYmhgIGlzIGJlaW5nIHN3aXRjaGVkIGZyb20gYEdGUF9LRVJORUxgIHRvIGBHRlBfS0VSTkVMX0FDQ09VTlRgLlxuXG5Fc3NlbnRpYWxseSwgdGhpcyBpcyBhIGRlZmVuc2l2ZSBtZWFzdXJlLiBJdCBwcmV2ZW50cyBleGNlc3NpdmVseSBsYXJnZSBtZW1vcnkgYWxsb2NhdGlvbnMsIGFuZCBsaWtlbHkgbWl0aWdhdGVzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2VzcyBvciBvdmVyZmxvdyB2dWxuZXJhYmlsaXRpZXMuICBUaGUgY2hhbmdlIHRvIGBHRlBfS0VSTkVMX0FDQ09VTlRgIGlzIGEgZ29vZCBwcmFjdGljZSwgYWRkaW5nIGV4cGxpY2l0IG1lbW9yeSBhY2NvdW50aW5nLlxuXG5Gcm9tIG15IHBlcnNwZWN0aXZlLCB0aGlzIGRvZXNuJ3QgaW50cm9kdWNlIGFueSByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm9ybWF0aW9uIGxlYWtzLiBUaGUgY29kZSBpcyBjbGVhbjsgaXQncyBzaW1wbHkgaW1wbGVtZW50aW5nIGJvdW5kcyBjaGVja3MgYW5kIGFkanVzdGluZyBhbGxvY2F0aW9uIGZsYWdzLiBLQVNBTiBvciBvdGhlciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzIHdvdWxkIGxpa2VseSBjYXRjaCBhbnkgb3V0LW9mLWJvdW5kcyBvciBhbGxvY2F0aW9uIGZhaWx1cmVzIGlmIHRoZXkgd2VyZSB0byBvY2N1ciwgYnV0IEtNU0FOIGlzIGRlc2lnbmVkIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMsIGFuZCBJIGRvbid0IHNlZSBhbnkgcmlzayBvZiB0aG9zZSBoZXJlLiBcblxuTGV0IG1lIGp1c3QgcXVpY2tseSByZS1leGFtaW5lIHRoZSBjb2RlIHNuaXBwZXQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLi4uXG5cbmBgYGNcbitcdGlmIChxbGVuIFx1MDAzZSA2NTUzNSkge1xuK1x0XHRwcl93YXJuX3JhdGVsaW1pdGVkKFwicGZpZm9fZmFzdDogY2FwcGluZyByaW5nIHNpemUgJXUgdG8gNjU1MzUgZm9yIGRldiAlc1xcblwiLFxuK1x0XHRcdFx0ICAgIHFsZW4sIHFkaXNjX2RldihxZGlzYyktXHUwMDNlbmFtZSk7XG4rXHRcdHFsZW4gPSA2NTUzNTtcbitcdH1cbitcbiBcdGZvciAocHJpbyA9IDA7IHByaW8gXHUwMDNjIFBGSUZPX0ZBU1RfQkFORFM7IHByaW8rKykge1xuIFx0XHRzdHJ1Y3Qgc2tiX2FycmF5ICpxID0gYmFuZDJsaXN0KHByaXYsIHByaW8pO1xuIFx0XHRpbnQgZXJyO1xuIFxuLVx0XHRlcnIgPSBza2JfYXJyYXlfaW5pdChxLCBxbGVuLCBHRlBfS0VSTkVMKTtcbitcdFx0ZXJyID0gc2tiX2FycmF5X2luaXQocSwgcWxlbiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbmBgYFxuXG5ZZXAsIGFzIGV4cGVjdGVkLiBUaGlzIGlzIHB1cmVseSBhIHNpemUgY2FwcGluZyBhbmQgYWxsb2NhdGlvbiBmbGFnIHVwZGF0ZSwgbm90aGluZyBtb3JlLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBleHBvc2VkIGhlcmUuIEknbSBjb21mb3J0YWJsZSBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgwNiwiT3V0cHV0VG9rZW5zIjoxODIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMDozMjowMC45MzczNDA0MzlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjEyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjYXAgb24gdGhlIHJpbmcgc2l6ZSAoYHFsZW5gIGFuZCBgbmV3X2xlbmApIHRvIDY1NTM1IGluIGBwZmlmb19mYXN0X2luaXRgIGFuZCBgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuYCwgYW5kIGNoYW5nZXMgdGhlIGFsbG9jYXRpb24gZmxhZyBmcm9tIGBHRlBfS0VSTkVMYCB0byBgR0ZQX0tFUk5FTF9BQ0NPVU5UYC4gVGhlc2UgY2hhbmdlcyBhcmUgaW50ZW5kZWQgdG8gcHJldmVudCBleGNlc3NpdmUgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGFkZCBtZW1vcnkgYWNjb3VudGluZy4gVGhleSBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtb2RpZnkgcGFkZGluZywgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgY29udHJvbCBmbG93LiBBbnkgaXNzdWVzIHJlbGF0ZWQgdG8gbWVtb3J5IGFsbG9jYXRpb24gc2l6ZXMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG1lbW9yeSBkZWJ1Z2dpbmcgdG9vbHMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcywgc28gS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjYXAgb24gdGhlIHJpbmcgc2l6ZSAoYHFsZW5gIGFuZCBgbmV3X2xlbmApIHRvIDY1NTM1IGluIGBwZmlmb19mYXN0X2luaXRgIGFuZCBgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuYCwgYW5kIGNoYW5nZXMgdGhlIGFsbG9jYXRpb24gZmxhZyBmcm9tIGBHRlBfS0VSTkVMYCB0byBgR0ZQX0tFUk5FTF9BQ0NPVU5UYC4gVGhlc2UgY2hhbmdlcyBhcmUgaW50ZW5kZWQgdG8gcHJldmVudCBleGNlc3NpdmUgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGFkZCBtZW1vcnkgYWNjb3VudGluZy4gVGhleSBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtb2RpZnkgcGFkZGluZywgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgY29udHJvbCBmbG93LiBBbnkgaXNzdWVzIHJlbGF0ZWQgdG8gbWVtb3J5IGFsbG9jYXRpb24gc2l6ZXMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG1lbW9yeSBkZWJ1Z2dpbmcgdG9vbHMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcywgc28gS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowdqvtd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-20 10:09:49 +0000 UTC FinishedAt: 2026-08-20 10:32:01 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "564973a259ec76f2dad0853420e7034cc43994c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "564973a259ec76f2dad0853420e7034cc43994c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET" ], "series_id": "996eebdf-e60c-4314-a673-fd3fac56ddf6" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "pfifo_fast_init", "pfifo_fast_change_tx_queue_len" ], "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+CgkJCTx0ZD4yMDI2LzA4LzIwIDEwOjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BmaWZvX2Zhc3RfaW5pdCYjMzQ7LAogICAgJiMzNDtwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW4mIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2FwIG9uIHRoZSByaW5nIHNpemUgKGBxbGVuYCBhbmQgYG5ld19sZW5gKSB0byA2NTUzNSBpbiBgcGZpZm9fZmFzdF9pbml0YCBhbmQgYHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbmAsIGFuZCBjaGFuZ2VzIHRoZSBhbGxvY2F0aW9uIGZsYWcgZnJvbSBgR0ZQX0tFUk5FTGAgdG8gYEdGUF9LRVJORUxfQUNDT1VOVGAuIFRoZXNlIGNoYW5nZXMgYXJlIGludGVuZGVkIHRvIHByZXZlbnQgZXhjZXNzaXZlIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBhZGQgbWVtb3J5IGFjY291bnRpbmcuIFRoZXkgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbW9kaWZ5IHBhZGRpbmcsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gQW55IGlzc3VlcyByZWxhdGVkIHRvIG1lbW9yeSBhbGxvY2F0aW9uIHNpemVzIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgd291bGQgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBtZW1vcnkgZGVidWdnaW5nIHRvb2xzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MsIHNvIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCB0eF9xdWV1ZV9sZW4gY2hhbmdlIGxvZ2ljIG9mIHRoZSBwZmlmb19mYXN0IHFkaXNjLCBjYXBwaW5nIHRoZSBxdWV1ZSBsZW5ndGggdG8gNjU1MzUgYW5kIGFkZGluZyBtZW1vcnkgYWNjb3VudGluZy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTA6MzA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5N2UyNWI2MDQ5YmY1NDlhYmMyMGM2ZTQ4MDU0ZTdkYzVjNTRjZTkyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjAgMTA6MzA6NDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmMgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1xuaW5kZXggZWYyYjRiZjUxNTY0MS4uZTk4ZmQyMzZhZmEwNCAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1xuQEAgLTkxMCwxMSAmIzQzOzkxMCwxNyBAQCBzdGF0aWMgaW50IHBmaWZvX2Zhc3RfaW5pdChzdHJ1Y3QgUWRpc2MgKnFkaXNjLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4gXHRpZiAoIXFsZW4pXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuJiM0MztcdGlmIChxbGVuIFx1MDAzZSA2NTUzNSkge1xuJiM0MztcdFx0cHJfd2Fybl9yYXRlbGltaXRlZChcJiMzNDtwZmlmb19mYXN0OiBjYXBwaW5nIHJpbmcgc2l6ZSAldSB0byA2NTUzNSBmb3IgZGV2ICVzXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCAgICBxbGVuLCBxZGlzY19kZXYocWRpc2MpLVx1MDAzZW5hbWUpO1xuJiM0MztcdFx0cWxlbiA9IDY1NTM1O1xuJiM0MztcdH1cbiYjNDM7XG4gXHRmb3IgKHByaW8gPSAwOyBwcmlvIFx1MDAzYyBQRklGT19GQVNUX0JBTkRTOyBwcmlvJiM0MzsmIzQzOykge1xuIFx0XHRzdHJ1Y3Qgc2tiX2FycmF5ICpxID0gYmFuZDJsaXN0KHByaXYsIHByaW8pO1xuIFx0XHRpbnQgZXJyO1xuIFxuLVx0XHRlcnIgPSBza2JfYXJyYXlfaW5pdChxLCBxbGVuLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRcdGVyciA9IHNrYl9hcnJheV9pbml0KHEsIHFsZW4sIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRcdGlmIChlcnIpXG4gXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHR9XG5AQCAtOTU3LDggJiM0Mzs5NjMsMTQgQEAgc3RhdGljIGludCBwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IFFkaXNjICpzY2gsXG4gXHRcdGJhbmRzW3ByaW9dID0gcTtcbiBcdH1cbiBcbiYjNDM7XHRpZiAobmV3X2xlbiBcdTAwM2UgNjU1MzUpIHtcbiYjNDM7XHRcdHByX3dhcm5fcmF0ZWxpbWl0ZWQoXCYjMzQ7cGZpZm9fZmFzdDogY2FwcGluZyByaW5nIHNpemUgJXUgdG8gNjU1MzUgZm9yIGRldiAlc1xcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgICAgbmV3X2xlbiwgcWRpc2NfZGV2KHNjaCktXHUwMDNlbmFtZSk7XG4mIzQzO1x0XHRuZXdfbGVuID0gNjU1MzU7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJldHVybiBza2JfYXJyYXlfcmVzaXplX211bHRpcGxlX2JoKGJhbmRzLCBQRklGT19GQVNUX0JBTkRTLCBuZXdfbGVuLFxuLVx0XHRcdFx0XHQgICAgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0XHRcdFx0XHQgICAgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiB9XG4gXG4gc3RydWN0IFFkaXNjX29wcyBwZmlmb19mYXN0X29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3BmaWZvX2Zhc3QuanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3BmaWZvX2Zhc3QuanNvblxuaW5kZXggMzBkYTI3ZmU4ODA2Ny4uYjM4MzAxNzJmZTRmNCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3BmaWZvX2Zhc3QuanNvblxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvcGZpZm9fZmFzdC5qc29uXG5AQCAtMTA1LDUgJiM0MzsxMDUsMjggQEBcbiAgICAgICAgIFwmIzM0O3RlYXJkb3duXCYjMzQ7OiBbXG4gICAgICAgICAgICAgXCYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290XCYjMzQ7XG4gICAgICAgICBdXG4mIzQzOyAgICB9LFxuJiM0MzsgICAge1xuJiM0MzsgICAgICAgIFwmIzM0O2lkXCYjMzQ7OiBcJiMzNDswMjQ5XCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O25hbWVcJiMzNDs6IFwmIzM0O0NyZWF0ZSBwZmlmb19mYXN0IHdpdGggaHVnZSB0eF9xdWV1ZV9sZW4gKHJpbmcgY2FwIHJlZ3Jlc3Npb24pXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O2NhdGVnb3J5XCYjMzQ7OiBbXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O3FkaXNjXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDtwZmlmb19mYXN0XCYjMzQ7XG4mIzQzOyAgICAgICAgXSxcbiYjNDM7ICAgICAgICBcJiMzNDtwbHVnaW5zXCYjMzQ7OiB7XG4mIzQzOyAgICAgICAgICAgIFwmIzM0O3JlcXVpcmVzXCYjMzQ7OiBcJiMzNDtuc1BsdWdpblwmIzM0O1xuJiM0MzsgICAgICAgIH0sXG4mIzQzOyAgICAgICAgXCYjMzQ7c2V0dXBcJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7JElQIGxpbmsgc2V0IGRldiAkRFVNTVkgdHhxdWV1ZWxlbiAxMDAwMDAwMDBcJiMzNDtcbiYjNDM7ICAgICAgICBdLFxuJiM0MzsgICAgICAgIFwmIzM0O2NtZFVuZGVyVGVzdFwmIzM0OzogXCYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290IHBmaWZvX2Zhc3RcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7ZXhwRXhpdENvZGVcJiMzNDs6IFwmIzM0OzBcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7dmVyaWZ5Q21kXCYjMzQ7OiBcJiMzNDskVEMgcWRpc2Mgc2hvdyBkZXYgJERVTU1ZXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O21hdGNoUGF0dGVyblwmIzM0OzogXCYjMzQ7cWRpc2MgcGZpZm9fZmFzdCAxOiByb290XCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O21hdGNoQ291bnRcJiMzNDs6IFwmIzM0OzFcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7dGVhcmRvd25cJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7JElQIGxpbmsgc2V0IGRldiAkRFVNTVkgdHhxdWV1ZWxlbiAxMDAwXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkRFVNTVkgaGFuZGxlIDE6IHJvb3RcJiMzNDtcbiYjNDM7ICAgICAgICBdXG4gICAgIH1cbiBdXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTA6MzA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BmaWZvX2Zhc3RfaW5pdCYjMzQ7LAogICAgJiMzNDtwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCB0eF9xdWV1ZV9sZW4gY2hhbmdlIGxvZ2ljIG9mIHRoZSBwZmlmb19mYXN0IHFkaXNjLCBjYXBwaW5nIHRoZSBxdWV1ZSBsZW5ndGggdG8gNjU1MzUgYW5kIGFkZGluZyBtZW1vcnkgYWNjb3VudGluZy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5N2UyNWI2MDQ5YmY1NDlhYmMyMGM2ZTQ4MDU0ZTdkYzVjNTRjZTkyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgMjAgMTA6MzA6NDggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYyBiL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jCmluZGV4IGVmMmI0YmY1MTU2NDEuLmU5OGZkMjM2YWZhMDQgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jCkBAIC05MTAsMTEgJiM0Mzs5MTAsMTcgQEAgc3RhdGljIGludCBwZmlmb19mYXN0X2luaXQoc3RydWN0IFFkaXNjICpxZGlzYywgc3RydWN0IG5sYXR0ciAqb3B0LAogCWlmICghcWxlbikKIAkJcmV0dXJuIC1FSU5WQUw7CiAKJiM0MzsJaWYgKHFsZW4gJmd0OyA2NTUzNSkgewomIzQzOwkJcHJfd2Fybl9yYXRlbGltaXRlZCgmIzM0O3BmaWZvX2Zhc3Q6IGNhcHBpbmcgcmluZyBzaXplICV1IHRvIDY1NTM1IGZvciBkZXYgJXNcbiYjMzQ7LAomIzQzOwkJCQkgICAgcWxlbiwgcWRpc2NfZGV2KHFkaXNjKS0mZ3Q7bmFtZSk7CiYjNDM7CQlxbGVuID0gNjU1MzU7CiYjNDM7CX0KJiM0MzsKIAlmb3IgKHByaW8gPSAwOyBwcmlvICZsdDsgUEZJRk9fRkFTVF9CQU5EUzsgcHJpbyYjNDM7JiM0MzspIHsKIAkJc3RydWN0IHNrYl9hcnJheSAqcSA9IGJhbmQybGlzdChwcml2LCBwcmlvKTsKIAkJaW50IGVycjsKIAotCQllcnIgPSBza2JfYXJyYXlfaW5pdChxLCBxbGVuLCBHRlBfS0VSTkVMKTsKJiM0MzsJCWVyciA9IHNrYl9hcnJheV9pbml0KHEsIHFsZW4sIEdGUF9LRVJORUxfQUNDT1VOVCk7CiAJCWlmIChlcnIpCiAJCQlyZXR1cm4gLUVOT01FTTsKIAl9CkBAIC05NTcsOCAmIzQzOzk2MywxNCBAQCBzdGF0aWMgaW50IHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbihzdHJ1Y3QgUWRpc2MgKnNjaCwKIAkJYmFuZHNbcHJpb10gPSBxOwogCX0KIAomIzQzOwlpZiAobmV3X2xlbiAmZ3Q7IDY1NTM1KSB7CiYjNDM7CQlwcl93YXJuX3JhdGVsaW1pdGVkKCYjMzQ7cGZpZm9fZmFzdDogY2FwcGluZyByaW5nIHNpemUgJXUgdG8gNjU1MzUgZm9yIGRldiAlc1xuJiMzNDssCiYjNDM7CQkJCSAgICBuZXdfbGVuLCBxZGlzY19kZXYoc2NoKS0mZ3Q7bmFtZSk7CiYjNDM7CQluZXdfbGVuID0gNjU1MzU7CiYjNDM7CX0KJiM0MzsKIAlyZXR1cm4gc2tiX2FycmF5X3Jlc2l6ZV9tdWx0aXBsZV9iaChiYW5kcywgUEZJRk9fRkFTVF9CQU5EUywgbmV3X2xlbiwKLQkJCQkJICAgIEdGUF9LRVJORUwpOwomIzQzOwkJCQkJICAgIEdGUF9LRVJORUxfQUNDT1VOVCk7CiB9CiAKIHN0cnVjdCBRZGlzY19vcHMgcGZpZm9fZmFzdF9vcHMgX19yZWFkX21vc3RseSA9IHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3BmaWZvX2Zhc3QuanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3BmaWZvX2Zhc3QuanNvbgppbmRleCAzMGRhMjdmZTg4MDY3Li5iMzgzMDE3MmZlNGY0IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9wZmlmb19mYXN0Lmpzb24KJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvcGZpZm9fZmFzdC5qc29uCkBAIC0xMDUsNSAmIzQzOzEwNSwyOCBAQAogICAgICAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKICAgICAgICAgICAgICYjMzQ7JFRDIHFkaXNjIGRlbCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290JiMzNDsKICAgICAgICAgXQomIzQzOyAgICB9LAomIzQzOyAgICB7CiYjNDM7ICAgICAgICAmIzM0O2lkJiMzNDs6ICYjMzQ7MDI0OSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7Q3JlYXRlIHBmaWZvX2Zhc3Qgd2l0aCBodWdlIHR4X3F1ZXVlX2xlbiAocmluZyBjYXAgcmVncmVzc2lvbikmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7cWRpc2MmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O3BmaWZvX2Zhc3QmIzM0OwomIzQzOyAgICAgICAgXSwKJiM0MzsgICAgICAgICYjMzQ7cGx1Z2lucyYjMzQ7OiB7CiYjNDM7ICAgICAgICAgICAgJiMzNDtyZXF1aXJlcyYjMzQ7OiAmIzM0O25zUGx1Z2luJiMzNDsKJiM0MzsgICAgICAgIH0sCiYjNDM7ICAgICAgICAmIzM0O3NldHVwJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0OyRJUCBsaW5rIHNldCBkZXYgJERVTU1ZIHR4cXVldWVsZW4gMTAwMDAwMDAwJiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O2NtZFVuZGVyVGVzdCYjMzQ7OiAmIzM0OyRUQyBxZGlzYyBhZGQgZGV2ICREVU1NWSBoYW5kbGUgMTogcm9vdCBwZmlmb19mYXN0JiMzNDssCiYjNDM7ICAgICAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDskVEMgcWRpc2Mgc2hvdyBkZXYgJERVTU1ZJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O21hdGNoUGF0dGVybiYjMzQ7OiAmIzM0O3FkaXNjIHBmaWZvX2Zhc3QgMTogcm9vdCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaENvdW50JiMzNDs6ICYjMzQ7MSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDskSVAgbGluayBzZXQgZGV2ICREVU1NWSB0eHF1ZXVlbGVuIDEwMDAmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICREVU1NWSBoYW5kbGUgMTogcm9vdCYjMzQ7CiYjNDM7ICAgICAgICBdCiAgICAgfQogXQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMDozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODA5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IEV2YWx1YXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYG5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jYCwgc3BlY2lmaWNhbGx5IG1lc3Npbmcgd2l0aCBgcGZpZm9fZmFzdF9pbml0YCBhbmQgYHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbmAuIEl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgYWRkaW5nIGEgcXVldWUgbGVuZ3RoIGNhcCAoNjU1MzUsIGFzIGlmIEkgZGlkbiYjMzk7dCBrbm93KSwgYW5kIGl0JiMzOTtzIGFsc28gY2hhbmdpbmcgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGZsYWdzIGZyb20gYEdGUF9LRVJORUxgIHRvIGBHRlBfS0VSTkVMX0FDQ09VTlRgIGluIHRob3NlIGBza2JfYXJyYXlgIGZ1bmN0aW9ucy4gCgpNeSBpbml0aWFsIGd1dCBmZWVsaW5nPyBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vayBmb3IgZnV6emluZy4gYHBmaWZvX2Zhc3RgIGlzIHRoZSBkZWZhdWx0IHFkaXNjIG9uIGEgdG9uIG9mIG5ldHdvcmsgZGV2aWNlcywgc28gYW55IHBvdGVudGlhbCBpc3N1ZXMgdGhlcmUgY291bGQgaGF2ZSBhIHByZXR0eSB3aWRlIGltcGFjdC4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWw7IHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHF1ZXVlIGxlbmd0aCBsaW1pdHMgYW5kIG1lbW9yeSBhY2NvdW50aW5nLCB3aGljaCBhcmUgYm90aCBjcnVjaWFsIGZvciBzdGFiaWxpdHkgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQuIFRoYXQgc291bmRzIGxpa2UgcHJpbWUgZnV6emluZyB0ZXJyaXRvcnkuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGZ1enppbmcgc3RyYXRlZ3kuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEFuZCB0aGUgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZyB3aWxsIGJlIGBwZmlmb19mYXN0X2luaXRgIGFuZCBgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuYC4KClJpZ2h0LCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcyBpbiBgbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNgLiBJcyB0aGF0IGZpbGUgY29tcGlsZWQgdW5jb25kaXRpb25hbGx5IG9yIGRlcGVuZGVudCBvbiBgQ09ORklHX05FVF9TQ0hFRGA/IFdhaXQsIEkgdGhpbmsgSSYjMzk7bSB3cm9uZyB0aGVyZS4gQWN0dWFsbHksIGBzY2hfZ2VuZXJpYy5jYCBpcyBiYXNpY2FsbHkgYSBjb3JlIHBhcnQgb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2ssIGlzbiYjMzk7dCBpdD8gUHJvYmFibHkgZWl0aGVyIHVuY29uZGl0aW9uYWxseSBjb21waWxlZCB3aXRoIGBDT05GSUdfTkVUYCBvciBzaW1pbGFyLiBCZXR0ZXIgdmVyaWZ5IHRoYXQgaW4gdGhlIGBuZXQvc2NoZWQvTWFrZWZpbGVgIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTA6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2NoX2dlbmVyaWMubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvTWFrZWZpbGUtNS1cbm5ldC9zY2hlZC9NYWtlZmlsZTo2Om9iai15XHQ6PSBzY2hfZ2VuZXJpYy5vIHNjaF9tcS5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMDozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTUwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBgcGZpZm9fZmFzdF9pbml0YCBGdW5jdGlvbioqCgpPa2F5LCBzbyB0aGlzIGlzIHVuY29uZGl0aW9uYWxseSBjb21waWxlZCAoYG9iai15YCksIHdoaWNoIG1lYW5zIGFsbCB3ZSByZWFsbHkgbmVlZCB0byBmb2N1cyBvbiBpcyBgQ09ORklHX05FVGAuIEdvdCBpdC4KCk5vdywgbGV0JiMzOTtzIHNlZSBhYm91dCBgcGZpZm9fZmFzdF9pbml0YC4gSXMgaXQgc3RhdGljPyBZZXMsIGl0IGlzOiBgc3RhdGljIGludCBwZmlmb19mYXN0X2luaXQoc3RydWN0IFFkaXNjICpxZGlzYywgc3RydWN0IG5sYXR0ciAqb3B0LCAuLi4pYC4uLiBIbW0sIHdhaXQgYSBzZWNvbmQuIFRoYXQgcHJvbXB0Li4uICYjMzQ7UHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiYjMzQ7IFRoYXQmIzM5O3MgZ29vZCBwcmFjdGljZSwgYnV0Li4uIGhvbGQgb24uIGBwZmlmb19mYXN0X2luaXRgIGlzIGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gYHN0cnVjdCBRZGlzY19vcHMgcGZpZm9fZmFzdF9vcHNgLiBUaGF0IG1lYW5zIGl0ICp3b24mIzM5O3QqIGJlIGlubGluZWQgYmVjYXVzZSBpdHMgYWRkcmVzcyBpcyBiZWluZyB0YWtlbi4gVGhlIGNvbXBpbGVyIGhhcyB0byBnZW5lcmF0ZSBjb2RlIHRvIHBvaW50IHRvIGl0LiBTbywgdGhhdCYjMzk7cyBub3QgYSBjb25jZXJuIGhlcmUuIExldCBtZSBkb3VibGUtY2hlY2sgYHBmaWZvX2Zhc3Rfb3BzYCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGZpZm9fZmFzdF9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2dlbmVyaWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0zNi0vKiBRZGlzYyB0byB1c2UgYnkgZGVmYXVsdCAqL1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6Mzc6Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAqZGVmYXVsdF9xZGlzY19vcHMgPSBcdTAwMjZwZmlmb19mYXN0X29wcztcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTM4LUVYUE9SVF9TWU1CT0woZGVmYXVsdF9xZGlzY19vcHMpO1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTk1Mz1zdGF0aWMgaW50IHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbihzdHJ1Y3QgUWRpc2MgKnNjaCxcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05NzUtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo5NzY6c3RydWN0IFFkaXNjX29wcyBwZmlmb19mYXN0X29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTc3LVx0LmlkXHRcdD1cdFwmIzM0O3BmaWZvX2Zhc3RcJiMzNDssXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTg5LX07XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo5OTA6RVhQT1JUX1NZTUJPTChwZmlmb19mYXN0X29wcyk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05OTEtXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTIxOT1zdGF0aWMgdm9pZCBhdHRhY2hfb25lX2RlZmF1bHRfcWRpc2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjI4LVx0ZWxzZSBpZihkZXYtXHUwMDNldHlwZSA9PSBBUlBIUkRfQ0FOKVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTIyOTpcdFx0b3BzID0gXHUwMDI2cGZpZm9fZmFzdF9vcHM7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjMwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDEwOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNDYKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHBmaWZvX2Zhc3QgT3BlcmF0aW9ucyBmb3IgUG90ZW50aWFsIEltcHJvdmVtZW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgcGZpZm9fZmFzdGAgc2V0dXAsIGFuZCBJJiMzOTt2ZSBub3RpY2VkIHNvbWV0aGluZy4gQmVjYXVzZSBgcGZpZm9fZmFzdF9pbml0YCBhbmQgYHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbmAgYXJlIHVzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIGBwZmlmb19mYXN0X29wc2AsIHRoZXkmIzM5O3JlIG5vdCBnZXR0aW5nIGlubGluZWQuIFRoaXMgcHJlc2VudHMgYSB1bmlxdWUgb3Bwb3J0dW5pdHksIHBvdGVudGlhbGx5IG1ha2luZyB0aGVtIHVzZWZ1bCBhcyBmb2N1cyBzeW1ib2xzIGR1cmluZyBhbmFseXNpcyBhbmQgb3B0aW1pemF0aW9uLiBUaGF0IHNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIGNydWNpYWwgY29uZmlndXJhdGlvbi13aXNlLiBJIHdvbmRlciBpZiBlbmFibGluZyBgQ09ORklHX05FVF9TQ0hFRGAgaXMgbmVjZXNzYXJ5IHRvIGZ1bGx5IGNvbmZpZ3VyZSB0aGVzZSBxZGlzY3MgdGhyb3VnaCBuZXRsaW5rLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIGBuZXQvc2NoZWQvTWFrZWZpbGVgIGFnYWluIHRvIGNvbmZpcm0gdGhlIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgZW52aXJvbm1lbnQgZm9yIHRoZXNlIGZlYXR1cmVzLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvYmotJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9NYWtlZmlsZS01LVxubmV0L3NjaGVkL01ha2VmaWxlOjY6b2JqLXlcdDo9IHNjaF9nZW5lcmljLm8gc2NoX21xLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS03LVxubmV0L3NjaGVkL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX0lORVQpXHRcdCYjNDM7PSBzY2hfZnJhZy5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfTkVUX1NDSEVEKVx0XHQmIzQzOz0gc2NoX2FwaS5vIHNjaF9ibGFja2hvbGUub1xubmV0L3NjaGVkL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19ORVRfQ0xTKVx0XHQmIzQzOz0gY2xzX2FwaS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX05FVF9DTFNfQUNUKVx0JiM0Mzs9IGFjdF9hcGkub1xubmV0L3NjaGVkL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19ORVRfQUNUX1BPTElDRSlcdCYjNDM7PSBhY3RfcG9saWNlLm9cbm5ldC9zY2hlZC9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfTkVUX0FDVF9HQUNUKVx0JiM0Mzs9IGFjdF9nYWN0Lm9cbm5ldC9zY2hlZC9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfTkVUX0FDVF9NSVJSRUQpXHQmIzQzOz0gYWN0X21pcnJlZC5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTU6b2JqLSQoQ09ORklHX05FVF9BQ1RfU0FNUExFKVx0JiM0Mzs9IGFjdF9zYW1wbGUub1xubmV0L3NjaGVkL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19ORVRfQUNUX05BVClcdCYjNDM7PSBhY3RfbmF0Lm9cbm5ldC9zY2hlZC9NYWtlZmlsZToxNzpvYmotJChDT05GSUdfTkVUX0FDVF9QRURJVClcdCYjNDM7PSBhY3RfcGVkaXQub1xubmV0L3NjaGVkL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19ORVRfQUNUX1NJTVApXHQmIzQzOz0gYWN0X3NpbXBsZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX05FVF9BQ1RfU0tCRURJVClcdCYjNDM7PSBhY3Rfc2tiZWRpdC5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX05FVF9BQ1RfQ1NVTSlcdCYjNDM7PSBhY3RfY3N1bS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MjE6b2JqLSQoQ09ORklHX05FVF9BQ1RfTVBMUylcdCYjNDM7PSBhY3RfbXBscy5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX05FVF9BQ1RfVkxBTilcdCYjNDM7PSBhY3Rfdmxhbi5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MjM6b2JqLSQoQ09ORklHX05FVF9BQ1RfQlBGKVx0JiM0Mzs9IGFjdF9icGYub1xubmV0L3NjaGVkL01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19ORVRfQUNUX0NPTk5NQVJLKVx0JiM0Mzs9IGFjdF9jb25ubWFyay5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX05FVF9BQ1RfQ1RJTkZPKVx0JiM0Mzs9IGFjdF9jdGluZm8ub1xubmV0L3NjaGVkL01ha2VmaWxlOjI2Om9iai0kKENPTkZJR19ORVRfQUNUX1NLQk1PRClcdCYjNDM7PSBhY3Rfc2tibW9kLm9cbm5ldC9zY2hlZC9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfTkVUX0FDVF9JRkUpXHQmIzQzOz0gYWN0X2lmZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6Mjg6b2JqLSQoQ09ORklHX05FVF9JRkVfU0tCTUFSSylcdCYjNDM7PSBhY3RfbWV0YV9tYXJrLm9cbm5ldC9zY2hlZC9NYWtlZmlsZToyOTpvYmotJChDT05GSUdfTkVUX0lGRV9TS0JQUklPKVx0JiM0Mzs9IGFjdF9tZXRhX3NrYnByaW8ub1xubmV0L3NjaGVkL01ha2VmaWxlOjMwOm9iai0kKENPTkZJR19ORVRfSUZFX1NLQlRDSU5ERVgpXHQmIzQzOz0gYWN0X21ldGFfc2tidGNpbmRleC5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX05FVF9BQ1RfVFVOTkVMX0tFWSkmIzQzOz0gYWN0X3R1bm5lbF9rZXkub1xubmV0L3NjaGVkL01ha2VmaWxlOjMyOm9iai0kKENPTkZJR19ORVRfQUNUX0NUKVx0JiM0Mzs9IGFjdF9jdC5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzM6b2JqLSQoQ09ORklHX05FVF9BQ1RfR0FURSlcdCYjNDM7PSBhY3RfZ2F0ZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfRklGTylcdCYjNDM7PSBzY2hfZmlmby5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzU6b2JqLSQoQ09ORklHX05FVF9TQ0hfSFRCKVx0JiM0Mzs9IHNjaF9odGIub1xubmV0L3NjaGVkL01ha2VmaWxlOjM2Om9iai0kKENPTkZJR19ORVRfU0NIX0hGU0MpXHQmIzQzOz0gc2NoX2hmc2Mub1xubmV0L3NjaGVkL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19ORVRfU0NIX1JFRClcdCYjNDM7PSBzY2hfcmVkLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTozODpvYmotJChDT05GSUdfTkVUX1NDSF9HUkVEKVx0JiM0Mzs9IHNjaF9ncmVkLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTozOTpvYmotJChDT05GSUdfTkVUX1NDSF9JTkdSRVNTKVx0JiM0Mzs9IHNjaF9pbmdyZXNzLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfTkVUX1NDSF9TRkIpXHQmIzQzOz0gc2NoX3NmYi5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDE6b2JqLSQoQ09ORklHX05FVF9TQ0hfU0ZRKVx0JiM0Mzs9IHNjaF9zZnEub1xubmV0L3NjaGVkL01ha2VmaWxlOjQyOm9iai0kKENPTkZJR19ORVRfU0NIX1RCRilcdCYjNDM7PSBzY2hfdGJmLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfTkVUX1NDSF9URVFMKVx0JiM0Mzs9IHNjaF90ZXFsLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0NDpvYmotJChDT05GSUdfTkVUX1NDSF9QUklPKVx0JiM0Mzs9IHNjaF9wcmlvLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfTkVUX1NDSF9NVUxUSVEpXHQmIzQzOz0gc2NoX211bHRpcS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDY6b2JqLSQoQ09ORklHX05FVF9TQ0hfTkVURU0pXHQmIzQzOz0gc2NoX25ldGVtLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo0NzpvYmotJChDT05GSUdfTkVUX1NDSF9EUlIpXHQmIzQzOz0gc2NoX2Ryci5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDg6b2JqLSQoQ09ORklHX05FVF9TQ0hfUExVRylcdCYjNDM7PSBzY2hfcGx1Zy5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDk6b2JqLSQoQ09ORklHX05FVF9TQ0hfRVRTKVx0JiM0Mzs9IHNjaF9ldHMub1xubmV0L3NjaGVkL01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19ORVRfU0NIX01RUFJJTylcdCYjNDM7PSBzY2hfbXFwcmlvLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo1MTpvYmotJChDT05GSUdfTkVUX1NDSF9NUVBSSU9fTElCKSAmIzQzOz0gc2NoX21xcHJpb19saWIub1xubmV0L3NjaGVkL01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19ORVRfU0NIX1NLQlBSSU8pXHQmIzQzOz0gc2NoX3NrYnByaW8ub1xubmV0L3NjaGVkL01ha2VmaWxlOjUzOm9iai0kKENPTkZJR19ORVRfU0NIX0NIT0tFKVx0JiM0Mzs9IHNjaF9jaG9rZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfUUZRKVx0JiM0Mzs9IHNjaF9xZnEub1xubmV0L3NjaGVkL01ha2VmaWxlOjU1Om9iai0kKENPTkZJR19ORVRfU0NIX0NPREVMKVx0JiM0Mzs9IHNjaF9jb2RlbC5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTY6b2JqLSQoQ09ORklHX05FVF9TQ0hfRlFfQ09ERUwpXHQmIzQzOz0gc2NoX2ZxX2NvZGVsLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo1NzpvYmotJChDT05GSUdfTkVUX1NDSF9DQUtFKVx0JiM0Mzs9IHNjaF9jYWtlLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo1ODpvYmotJChDT05GSUdfTkVUX1NDSF9GUSlcdCYjNDM7PSBzY2hfZnEub1xubmV0L3NjaGVkL01ha2VmaWxlOjU5Om9iai0kKENPTkZJR19ORVRfU0NIX0hIRilcdCYjNDM7PSBzY2hfaGhmLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo2MDpvYmotJChDT05GSUdfTkVUX1NDSF9QSUUpXHQmIzQzOz0gc2NoX3BpZS5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjE6b2JqLSQoQ09ORklHX05FVF9TQ0hfRlFfUElFKVx0JiM0Mzs9IHNjaF9mcV9waWUub1xubmV0L3NjaGVkL01ha2VmaWxlOjYyOm9iai0kKENPTkZJR19ORVRfU0NIX0NCUylcdCYjNDM7PSBzY2hfY2JzLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfTkVUX1NDSF9FVEYpXHQmIzQzOz0gc2NoX2V0Zi5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfVEFQUklPKVx0JiM0Mzs9IHNjaF90YXByaW8ub1xubmV0L3NjaGVkL01ha2VmaWxlOjY1Om9iai0kKENPTkZJR19ORVRfU0NIX0JQRilcdCYjNDM7PSBicGZfcWRpc2Mub1xubmV0L3NjaGVkL01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19ORVRfU0NIX0RVQUxQSTIpXHQmIzQzOz0gc2NoX2R1YWxwaTIub1xubmV0L3NjaGVkL01ha2VmaWxlLTY3LVxubmV0L3NjaGVkL01ha2VmaWxlOjY4Om9iai0kKENPTkZJR19ORVRfQ0xTX1UzMilcdCYjNDM7PSBjbHNfdTMyLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo2OTpvYmotJChDT05GSUdfTkVUX0NMU19ST1VURTQpXHQmIzQzOz0gY2xzX3JvdXRlLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo3MDpvYmotJChDT05GSUdfTkVUX0NMU19GVylcdCYjNDM7PSBjbHNfZncub1xubmV0L3NjaGVkL01ha2VmaWxlOjcxOm9iai0kKENPTkZJR19ORVRfQ0xTX0JBU0lDKVx0JiM0Mzs9IGNsc19iYXNpYy5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NzI6b2JqLSQoQ09ORklHX05FVF9DTFNfRkxPVylcdCYjNDM7PSBjbHNfZmxvdy5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NzM6b2JqLSQoQ09ORklHX05FVF9DTFNfQ0dST1VQKVx0JiM0Mzs9IGNsc19jZ3JvdXAub1xubmV0L3NjaGVkL01ha2VmaWxlOjc0Om9iai0kKENPTkZJR19ORVRfQ0xTX0JQRilcdCYjNDM7PSBjbHNfYnBmLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo3NTpvYmotJChDT05GSUdfTkVUX0NMU19GTE9XRVIpXHQmIzQzOz0gY2xzX2Zsb3dlci5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NzY6b2JqLSQoQ09ORklHX05FVF9DTFNfTUFUQ0hBTEwpXHQmIzQzOz0gY2xzX21hdGNoYWxsLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo3NzpvYmotJChDT05GSUdfTkVUX0VNQVRDSClcdCYjNDM7PSBlbWF0Y2gub1xubmV0L3NjaGVkL01ha2VmaWxlOjc4Om9iai0kKENPTkZJR19ORVRfRU1BVENIX0NNUClcdCYjNDM7PSBlbV9jbXAub1xubmV0L3NjaGVkL01ha2VmaWxlOjc5Om9iai0kKENPTkZJR19ORVRfRU1BVENIX05CWVRFKVx0JiM0Mzs9IGVtX25ieXRlLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo4MDpvYmotJChDT05GSUdfTkVUX0VNQVRDSF9VMzIpXHQmIzQzOz0gZW1fdTMyLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo4MTpvYmotJChDT05GSUdfTkVUX0VNQVRDSF9NRVRBKVx0JiM0Mzs9IGVtX21ldGEub1xubmV0L3NjaGVkL01ha2VmaWxlOjgyOm9iai0kKENPTkZJR19ORVRfRU1BVENIX1RFWFQpXHQmIzQzOz0gZW1fdGV4dC5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6ODM6b2JqLSQoQ09ORklHX05FVF9FTUFUQ0hfQ0FOSUQpXHQmIzQzOz0gZW1fY2FuaWQub1xubmV0L3NjaGVkL01ha2VmaWxlOjg0Om9iai0kKENPTkZJR19ORVRfRU1BVENIX0lQU0VUKVx0JiM0Mzs9IGVtX2lwc2V0Lm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo4NTpvYmotJChDT05GSUdfTkVUX0VNQVRDSF9JUFQpXHQmIzQzOz0gZW1faXB0Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDE5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTmF2aWdhdGluZyB0aGUgS2VybmVsJiMzOTtzIE5ldHdvcmsgU2NoZWR1bGVyIEJ1aWxkIFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gaG93IHRoZSBuZXR3b3JrIHNjaGVkdWxlciBjb21wb25lbnRzIGFyZSBidWlsdCwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgYXQgYHNjaF9nZW5lcmljLmNgLiBSaWdodCwgc28gSSBzZWUgdGhhdCB0aGlzIGlzIGNvbXBpbGVkIGludG8gYG5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5vYC4gUHJldHR5IHN0YW5kYXJkLiBBbmQgdGhhdCBvYmplY3QgZmlsZSBpcyBkZWNsYXJlZCBhcyBgb2JqLXlgIHdpdGhpbiB0aGUgYG5ldC9zY2hlZC9NYWtlZmlsZWAuIFNvIGZhciwgc28gZ29vZC4gTm8gc3VycHJpc2VzIHRoZXJlLiBCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gSSBrbm93IHRoYXQgYG5ldC9zY2hlZC9NYWtlZmlsZWAgaXMgKml0c2VsZiogaW5jbHVkZWQgZnJvbSBgbmV0L01ha2VmaWxlYC4gUmlnaHQuIFRoYXQmIzM5O3MgdGhlIGtleS4gSSBuZWVkIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmN5IGNoYWluIGJhY2sgdXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgaW5jbHVzaW9uIG9mIGBuZXQvc2NoZWQvTWFrZWZpbGVgIGFmZmVjdHMgdGhlIG92ZXJhbGwgYnVpbGQgcHJvY2Vzcy4gTGV0JiMzOTtzIHB1bGwgdXAgdGhhdCBgbmV0L01ha2VmaWxlYCBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gYXQgdGhlIGhpZ2hlciBsZXZlbC4gVGhpcyBzaG91bGQgaGVscCBtZSBwaW5wb2ludCB3aGVyZSBgc2NoX2dlbmVyaWMub2AgdWx0aW1hdGVseSBmaXRzIGludG8gdGhlIGJyb2FkZXIga2VybmVsIGJ1aWxkIGxhbmRzY2FwZSBhbmQgaG93IGl0cyBjb21waWxhdGlvbiBpcyBvcmNoZXN0cmF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDEwOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjaGVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9NYWtlZmlsZT0xND1vYmotJChDT05GSUdfTExDKVx0XHQmIzQzOz0gbGxjL1xubmV0L01ha2VmaWxlOjE1Om9iai15XHRcdFx0XHQmIzQzOz0gZXRoZXJuZXQvIDgwMi8gc2NoZWQvIG5ldGxpbmsvIGJwZi8gZXRodG9vbC9cbm5ldC9NYWtlZmlsZS0xNi1vYmotJChDT05GSUdfTkVURklMVEVSKVx0XHQmIzQzOz0gbmV0ZmlsdGVyL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDA1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIENvbXBpbGF0aW9uIGFuZCBJbml0aWFsaXphdGlvbiBvZiBgcGZpZm9fZmFzdGAqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gaG93IHRoZSBgbmV0L3NjaGVkL2AgZGlyZWN0b3J5IHdvcmtzIHdpdGhpbiB0aGUga2VybmVsLiBJdCBzZWVtcyBsaWtlIHRoZSBlbnRpcmUgZGlyZWN0b3J5LCBhdCBsZWFzdCB0aGUgY29yZSBjb21wb25lbnRzLCBhcmUgY29tcGlsZWQgaWYgYENPTkZJR19ORVRgIGlzIHNldC4gTm93LCB0aGUgYHBmaWZvX2Zhc3RgIHFkaXNjIGtlZXBzIGNvbWluZyB1cCwgc3BlY2lmaWNhbGx5IHdpdGggZnVuY3Rpb25zIGxpa2UgYHBmaWZvX2Zhc3RfaW5pdGAgYW5kIGBwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW5gLiBJIHdhcyBjdXJpb3VzIGlmIHRoZXJlIHdhcyBhIHNlcGFyYXRlIGNvbmZpZyBvcHRpb24gZm9yIGBwZmlmb19mYXN0YCBpdHNlbGYsIGJ1dCB0aGF0IHNlZW1zIG5vdCB0byBiZSB0aGUgY2FzZSwgYXMgaXQmIzM5O3MgZGlyZWN0bHkgaW5jbHVkZWQgYXMgYG9iai15YCB3aXRoaW4gYHNjaF9nZW5lcmljLmNgLgoKQSBrZXkgcG9pbnQgYXJpc2VzOiB0byBhY3R1YWxseSAqY29uZmlndXJlKiB0aGVzZSBxZGlzY3MgdXNpbmcgbmV0bGluaywgd2UgYWJzb2x1dGVseSBuZWVkIGBDT05GSUdfTkVUX1NDSEVEYC4gU28sIGhlcmUmIzM5O3MgbXkgY3JpdGljYWwgcXVlc3Rpb246IGNhbiBgcGZpZm9fZmFzdGAgc3RpbGwgYmUgKmluaXRpYWxpemVkKiBldmVuIGlmIGBDT05GSUdfTkVUX1NDSEVEYCBpcyBkaXNhYmxlZD8gUmVtZW1iZXIsIGluaXRpYWxpemF0aW9uIGlzIGRpc3RpbmN0IGZyb20gY29uZmlndXJhdGlvbi4gTG9va2luZyBhdCB0aGUgY29kZSBhZ2FpbiwgSSYjMzk7dmUgZ290IHRvIGZpbmQgd2hlbiBgcGZpZm9fZmFzdF9pbml0YCBpcyBjYWxsZWQgYW5kIGFzc2VzcyBpdHMgZGVwZW5kZW5jeSBvbiBgQ09ORklHX05FVF9TQ0hFRGAuIEl0JiMzOTtzIGNsZWFybHkgY2FsbGVkIGR1cmluZyB0aGUgcWRpc2MmIzM5O3MgaW5pdGlhbGl6YXRpb24sIHdoaWNoIGlzIGEga2V5IHByb2Nlc3MuIFRvIGNsYXJpZnksIEkgbmVlZCB0byBjaGVjayBgbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNgIGZvciBhbnkgY2x1ZXMgcmVnYXJkaW5nIHRoaXMgaW5pdGlhbGl6YXRpb24gbG9naWMuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGZpZm9fZmFzdF9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9nZW5lcmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9ODU5PXN0YXRpYyB2b2lkIHBmaWZvX2Zhc3RfcmVzZXQoc3RydWN0IFFkaXNjICpxZGlzYylcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy04NjgtXHRcdC8qIE5VTEwgcmluZyBpcyBwb3NzaWJsZSBpZiBkZXN0cm95IHBhdGggaXMgZHVlIHRvIGEgZmFpbGVkXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo4Njk6XHRcdCAqIHNrYl9hcnJheV9pbml0KCkgaW4gcGZpZm9fZmFzdF9pbml0KCkgY2FzZS5cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTg3MC1cdFx0ICovXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9ODg5PXN0YXRpYyBpbnQgcGZpZm9fZmFzdF9kdW1wKHN0cnVjdCBRZGlzYyAqcWRpc2MsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTAxLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTAyOnN0YXRpYyBpbnQgcGZpZm9fZmFzdF9pbml0KHN0cnVjdCBRZGlzYyAqcWRpc2MsIHN0cnVjdCBubGF0dHIgKm9wdCxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTkwMy1cdFx0XHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9OTMzPXN0YXRpYyB2b2lkIHBmaWZvX2Zhc3RfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05NDEtXHRcdC8qIE5VTEwgcmluZyBpcyBwb3NzaWJsZSBpZiBkZXN0cm95IHBhdGggaXMgZHVlIHRvIGEgZmFpbGVkXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo5NDI6XHRcdCAqIHNrYl9hcnJheV9pbml0KCkgaW4gcGZpZm9fZmFzdF9pbml0KCkgY2FzZS5cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk0My1cdFx0ICovXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9OTc2PXN0cnVjdCBRZGlzY19vcHMgcGZpZm9fZmFzdF9vcHMgX19yZWFkX21vc3RseSA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05ODEtXHQucGVla1x0XHQ9XHRwZmlmb19mYXN0X3BlZWssXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo5ODI6XHQuaW5pdFx0XHQ9XHRwZmlmb19mYXN0X2luaXQsXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05ODMtXHQuZGVzdHJveVx0PVx0cGZpZm9fZmFzdF9kZXN0cm95LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMDozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDM5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkluaXRpYWwgRGV2aWNlIENvbmZpZ3VyYXRpb24gVGhvdWdodHMqKgoKUmlnaHQsIHNvIGEgbmV0d29yayBkZXZpY2UgaXMgYnJvdWdodCBpbnRvIGV4aXN0ZW5jZSDigJMgbmF0dXJhbGx5LCBpdCBuZWVkcyBzb21lIGluaXRpYWwgcXVhbGl0eSBvZiBzZXJ2aWNlIChRb1MpIGhhbmRsaW5nLCBhIHF1ZXVlIGRpc2NpcGxpbmUgb3IgKnFkaXNjKi4gSSBpbW1lZGlhdGVseSBzdGFydCB0aGlua2luZyBhYm91dCBob3cgdGhhdCBnZXRzIHNldCB1cC4gTXkgbWluZCBnb2VzIHN0cmFpZ2h0IHRvIHRoZSBjb3JlOiBpcyBpdCBoYW5kbGVkIHRocm91Z2ggYGF0dGFjaF9vbmVfZGVmYXVsdF9xZGlzY2Agb3IgcGVyaGFwcyBgZGV2X2luaXRfc2NoZWR1bGVyYD8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBleGFjdCBmdW5jdGlvbiB0byB1bmRlcnN0YW5kIHRoZSBwcmVjaXNlIGRlZmF1bHQgaW5pdGlhbGl6YXRpb24gc3RlcHMgb24gZGV2aWNlIGNyZWF0aW9uLiBVbmRlcnN0YW5kaW5nIHRoaXMgaW5pdGlhbCBhc3NpZ25tZW50IGlzIGNydWNpYWwgZm9yIGRlYnVnZ2luZyBhbmQgb3B0aW1pemF0aW9uLiBJdCYjMzk7cyB0aGUgZm91bmRhdGlvbiBmb3IgYW55IGZ1cnRoZXIgdHJhZmZpYyBzaGFwaW5nIG9yIHNjaGVkdWxpbmcgSSBtaWdodCBhcHBseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2X2luaXRfc2NoZWR1bGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9nZW5lcmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTQ4MD1pbnQgZGV2X3FkaXNjX2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNTAxLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTUwMjpzdGF0aWMgdm9pZCBkZXZfaW5pdF9zY2hlZHVsZXJfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1MDMtXHRcdFx0XHQgICAgIHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSxcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNTExLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTUxMjp2b2lkIGRldl9pbml0X3NjaGVkdWxlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTUxMy17XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNTE0LVx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cdTAwM2VxZGlzYywgXHUwMDI2bm9vcF9xZGlzYyk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxNTE1Olx0bmV0ZGV2X2Zvcl9lYWNoX3R4X3F1ZXVlKGRldiwgZGV2X2luaXRfc2NoZWR1bGVyX3F1ZXVlLCBcdTAwMjZub29wX3FkaXNjKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1MTYtXHRpZiAoZGV2X2luZ3Jlc3NfcXVldWUoZGV2KSlcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE1MTc6XHRcdGRldl9pbml0X3NjaGVkdWxlcl9xdWV1ZShkZXYsIGRldl9pbmdyZXNzX3F1ZXVlKGRldiksIFx1MDAyNm5vb3BfcWRpc2MpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTUxOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTA6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTAxMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNoZWNraW5nIGBxZGlzY19jcmVhdGVfZGZsdGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgYHFkaXNjX2NyZWF0ZV9kZmx0YCBmdW5jdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBkZWZhdWx0IHF1ZXVlIGRpc2NpcGxpbmUgY3JlYXRpb24gcGF0aC4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGZvciBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIHRoZSBjcmVhdGlvbiBvZiBhIGRlZmF1bHQgcWRpc2Mgd2hlbiBubyBzcGVjaWZpYyB0eXBlIGlzIHNwZWNpZmllZCBkdXJpbmcgaW50ZXJmYWNlIHNldHVwLiBJcyBpdCB1c2luZyBhIGhhcmRjb2RlZCBkZWZhdWx0PyBPciBpcyB0aGVyZSBzb21lIGtpbmQgb2YgbmVnb3RpYXRpb24gaGFwcGVuaW5nIHdpdGggdGhlIG5ldHdvcmtpbmcgc3RhY2sgdG8gZGV0ZXJtaW5lIHRoZSBiZXN0IGNob2ljZSBiYXNlZCBvbiBhdmFpbGFibGUgbW9kdWxlcyBhbmQgc3lzdGVtIGNvbmZpZ3VyYXRpb24/IEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGludGVyYWN0cyB3aXRoIGRpZmZlcmVudCBsaW5rIGxheWVyIHRlY2hub2xvZ2llcyDigJMgaXMgdGhlcmUgc3BlY2lhbCBoYW5kbGluZyBmb3IgdGhpbmdzIGxpa2UgVkxBTnMsIGJvbmRpbmcsIG9yIGV2ZW4gbW9yZSBlc290ZXJpYyBkZXZpY2VzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHBhcmFtZXRlcnMgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gaW5mbHVlbmNlIHRoZSBhY3R1YWwgcWRpc2MgdGhhdCBnZXRzIGluc3RhbnRpYXRlZC4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGl0JiMzOTtzIHRvdWNoaW5nLCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgZXJyb3JzLCBhbmQgaWYgdGhlcmUmIzM5O3MgYW55IGFsbG9jYXRpb24gb3IgZGVhbGxvY2F0aW9uIG9mIHJlc291cmNlcyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZiB0byBwcmV2ZW50IG1lbW9yeSBsZWFrcyBvciByZXNvdXJjZSBleGhhdXN0aW9uIHNjZW5hcmlvcy4gSW4gZXNzZW5jZSwgSSB3YW50IHRvIGNvbmZpcm0gSSB1bmRlcnN0YW5kIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFuZCB3aGVyZSBpdCBmaXRzIGluIHRoZSBicm9hZGVyIHF1ZXVlaW5nIGRpc2NpcGxpbmUgZnJhbWV3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtxZGlzY19jcmVhdGVfZGZsdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTk5ND1zdHJ1Y3QgUWRpc2MgKnFkaXNjX2FsbG9jKHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSxcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDUyLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTA1MzpzdHJ1Y3QgUWRpc2MgKnFkaXNjX2NyZWF0ZV9kZmx0KHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwNTQtXHRcdFx0XHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTA3OS19XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMDgwOkVYUE9SVF9TWU1CT0wocWRpc2NfY3JlYXRlX2RmbHQpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTA4MS1cbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMjE5PXN0YXRpYyB2b2lkIGF0dGFjaF9vbmVfZGVmYXVsdF9xZGlzYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyMzAtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMjMxOlx0cWRpc2MgPSBxZGlzY19jcmVhdGVfZGZsdChkZXZfcXVldWUsIG9wcywgVENfSF9ST09ULCBOVUxMKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyMzItXHRpZiAoIXFkaXNjKVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTEyNDA9c3RhdGljIHZvaWQgYXR0YWNoX2RlZmF1bHRfcWRpc2NzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTI1My1cdH0gZWxzZSB7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMjU0Olx0XHRxZGlzYyA9IHFkaXNjX2NyZWF0ZV9kZmx0KHR4cSwgXHUwMDI2bXFfcWRpc2Nfb3BzLCBUQ19IX1JPT1QsIE5VTEwpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTI1NS1cdFx0aWYgKHFkaXNjKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDEwOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3NTgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBwZmlmb19mYXN0YCBJbml0aWFsaXphdGlvbiBhbmQgUXVldWUgTGVuZ3RoIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZSBgcGZpZm9fZmFzdGAgcXVldWluZyBkaXNjaXBsaW5lIGdldHMgc2V0IHVwIGFuZCBob3cgaXRzIHBhcmFtZXRlcnMsIHNwZWNpZmljYWxseSB0aGUgdHJhbnNtaXQgcXVldWUgbGVuZ3RoLCBjYW4gYmUgbW9kaWZpZWQuIEkgc2VlIHRoYXQgYHFkaXNjX2NyZWF0ZV9kZmx0YCBzZWVtcyB0byBiZSB0aGUgZW50cnkgcG9pbnQuIEl0IGNoZWNrcyBmb3IgYW4gYGluaXRgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYHFkaXNjLSZndDtvcHNgIHN0cnVjdHVyZSBhbmQgY2FsbHMgaXQsIHBhc3NpbmcgYWxvbmcgdGhlIHFkaXNjIGl0c2VsZiwgYWxvbmcgd2l0aCBhIHBvdGVudGlhbCBleHRlbmRlZCBhY2suIFRoaXMgbWVhbnMgdGhhdCBgcGZpZm9fZmFzdF9pbml0YCBnZXRzIGV4ZWN1dGVkIHdoZW5ldmVyIGEgbmV0d29yayBkZXZpY2UgaXMgYnJvdWdodCB1cCBhbmQgaGFzIHRoZSBkZWZhdWx0IHF1ZXVpbmcgZGlzY2lwbGluZSBhdHRhY2hlZCDigJMgdGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLgoKTm93LCBteSBuZXh0IHF1ZXN0aW9uIGlzIGFib3V0IGBwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW5gLiBXaGVuIGRvZXMgKnRoYXQqIGdldCBjYWxsZWQ/IE9idmlvdXNseSwgaXQgc3VnZ2VzdHMgYSBjaGFuZ2UgaW4gYHR4X3F1ZXVlX2xlbmAsIGJ1dCBJIHdhbnQgdG8gYmUgZXhwbGljaXQuIFRpbWUgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gYGNoYW5nZV90eF9xdWV1ZV9sZW5gIHRvIGJlIGNlcnRhaW4uIFVuZGVyc3RhbmRpbmcgd2hlbiBhbmQgd2h5IHRoYXQgdmFsdWUgaXMgbW9kaWZpZWQgaXMgY3J1Y2lhbCBmb3IgcHJlZGljdGluZyBpdHMgYmVoYXZpb3IgYW5kIHR1bmluZyBpdCBpZiBuZWVkZWQuIExldCYjMzk7cyBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoZXJlIHRoYXQgZnVuY3Rpb24gaXMgYWN0dWFsbHkgaW52b2tlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2hhbmdlX3R4X3F1ZXVlX2xlbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTkzMz1zdGF0aWMgdm9pZCBwZmlmb19mYXN0X2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTUyLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTUzOnN0YXRpYyBpbnQgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuKHN0cnVjdCBRZGlzYyAqc2NoLFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTU0LVx0XHRcdFx0XHQgIHVuc2lnbmVkIGludCBuZXdfbGVuKVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTk3Nj1zdHJ1Y3QgUWRpc2Nfb3BzIHBmaWZvX2Zhc3Rfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTg1LVx0LmR1bXBcdFx0PVx0cGZpZm9fZmFzdF9kdW1wLFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTg2Olx0LmNoYW5nZV90eF9xdWV1ZV9sZW4gPSAgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuLFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTg3LVx0Lm93bmVyXHRcdD1cdFRISVNfTU9EVUxFLFxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTE0MzQ9RVhQT1JUX1NZTUJPTChkZXZfZGVhY3RpdmF0ZSk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDM1LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTQzNjpzdGF0aWMgaW50IHFkaXNjX2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0MzctXHRcdFx0XHQgICAgIHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSlcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDQxLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTQ0MjpcdGlmIChvcHMtXHUwMDNlY2hhbmdlX3R4X3F1ZXVlX2xlbilcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0NDM6XHRcdHJldHVybiBvcHMtXHUwMDNlY2hhbmdlX3R4X3F1ZXVlX2xlbihxZGlzYywgZGV2LVx1MDAzZXR4X3F1ZXVlX2xlbik7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDQ0LVx0cmV0dXJuIDA7XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTQ3OD1FWFBPUlRfU1lNQk9MKG1xX2NoYW5nZV9yZWFsX251bV90eCk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDc5LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTQ4MDppbnQgZGV2X3FkaXNjX2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0ODEte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0ODktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkZXYtXHUwMDNlbnVtX3R4X3F1ZXVlczsgaSYjNDM7JiM0MzspIHtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0OTA6XHRcdHJldCA9IHFkaXNjX2NoYW5nZV90eF9xdWV1ZV9sZW4oZGV2LCBcdTAwMjZkZXYtXHUwMDNlX3R4W2ldKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0OTEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDEwOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODA5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gYGRldl9xZGlzY19jaGFuZ2VfdHhfcXVldWVfbGVuYCBhbmQgYHR4X3F1ZXVlX2xlbmAqKgoKT2theSwgc28gYGRldl9xZGlzY19jaGFuZ2VfdHhfcXVldWVfbGVuYC4gVGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkIHdoZW5ldmVyIHRoZSBgdHhfcXVldWVfbGVuYCAodHJhbnNtaXNzaW9uIHF1ZXVlIGxlbmd0aCkgb2YgYSBuZXR3b3JrIGRldmljZSBpcyBhbHRlcmVkLiAgQW5kLCB0aGlua2luZyBhYm91dCBpdCwgdGhhdCB1c3VhbGx5IGhhcHBlbnMgdmlhIGEgbmV0bGluayBpbnRlcmZhY2UsIHByb2JhYmx5IHVzaW5nIHNvbWV0aGluZyBsaWtlIGBpcCBsaW5rIHNldCBkZXYgZXRoMCB0eHF1ZXVlbGVuIDEwMDAwYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gVGhlIGludGVyZXN0aW5nIHBvaW50IGlzLCBpdCBkb2VzbiYjMzk7dCAqcmVxdWlyZSogdGhlIGBDT05GSUdfTkVUX1NDSEVEYCBvcHRpb24gdG8gYmUgZW5hYmxlZC4gTWFrZXMgc2Vuc2UsIGB0eF9xdWV1ZV9sZW5gIGlzIGEgZnVuZGFtZW50YWwgYXR0cmlidXRlIG9mIHRoZSBgbmV0X2RldmljZWAgc3RydWN0LiAgSXQmIzM5O3MgcHJldHR5IHN0YW5kYXJkLCBiYWtlZCBpbiwgcmF0aGVyIHRoYW4gYSBzcGVjaWFsaXplZCBzY2hlZHVsaW5nIGZlYXR1cmUuCgpCdXQgd2FpdCwgaG9sZCBvbiBhIHNlY29uZC4uLiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSBjYWxsZWQgZnJvbS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGluIGBuZXQvY29yZS9kZXYuY2AgdG8gbWFrZSBzdXJlIG15IGluaXRpYWwgYXNzZXNzbWVudCBpcyBjb3JyZWN0LiBOZWVkIHRvIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucyB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgc29tZXRoaW5nIGZ1bmRhbWVudGFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXZfcWRpc2NfY2hhbmdlX3R4X3F1ZXVlX2xlbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL2Rldi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL2Rldi5jPTk5MzA9aW50IG5ldGlmX2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBuZXdfbGVuKVxuLS1cbm5ldC9jb3JlL2Rldi5jLTk5NDMtXHRcdFx0Z290byBlcnJfcm9sbGJhY2s7XG5uZXQvY29yZS9kZXYuYzo5OTQ0Olx0XHRyZXMgPSBkZXZfcWRpc2NfY2hhbmdlX3R4X3F1ZXVlX2xlbihkZXYpO1xubmV0L2NvcmUvZGV2LmMtOTk0NS1cdFx0aWYgKHJlcylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTA6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzMzkKCQkJCQkJCW91dHB1dDogMTA1CgkJCQkJCQl0aG91Z2h0czogMTQyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgcGZpZm9fZmFzdCBRZGlzYyBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gYG5ldGlmX2NoYW5nZV90eF9xdWV1ZV9sZW5gIHRyaWdnZXJzIGNhbGxzIHRvIGBwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW5gIGFuZCwgYnkgaW1wbGljYXRpb24gZHVyaW5nIGluaXRpYWxpemF0aW9uLCBgcGZpZm9fZmFzdF9pbml0YC4gVGhpcyBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIGNyZWF0aW5nIGEgbmV0d29yayBkZXZpY2UgYW5kIHN1YnNlcXVlbnRseSBtb2RpZnlpbmcgaXRzIGB0eHF1ZXVlbGVuYCBkaXJlY3RseSByZWFjaGVzIHRoZXNlIGZ1bmN0aW9ucy4gVGhlIGJlYXV0eSBvZiB0aGlzIGlzIHRoYXQgdGhlIG9ubHkgcmVxdWlyZWQgY29uZmlndXJhdGlvbiBvcHRpb24gYXBwZWFycyB0byBiZSBgQ09ORklHX05FVGAg4oCTIG5vIGVzb3RlcmljIHNldHRpbmdzIG5lZWRlZC4KCk5vdywgaXMgYHBmaWZvX2Zhc3RgIGFjdHVhbGx5IHRoZSAqZGVmYXVsdCogcWRpc2M/IFllcyEgYGRlZmF1bHRfcWRpc2Nfb3BzYCBpcyBzZXQgdG8gYCZhbXA7cGZpZm9fZmFzdF9vcHNgLiBUaGF0IG1lYW5zIGEgbGFyZ2UgbnVtYmVyIG9mIGRldmljZXMgd2lsbCBiZSB1c2luZyB0aGlzIGJ5IGRlZmF1bHQsIHdoaWNoIG1ha2VzIHRoZSBwYXRjaCBoaWdobHkgcmVsZXZhbnQuCgpSZWdhcmRpbmcgdGhlIHBhdGNoIGl0c2VsZiwgaXQmIzM5O3MgbW9kaWZ5aW5nIGBwZmlmb19mYXN0X2luaXRgIGFuZCBgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuYC4gV2hpbGUgdGhlc2UgYXJlICpzdGF0aWMqIGZ1bmN0aW9ucywgdGhlaXIgYWRkcmVzc2VzIGFyZSBiZWluZyB0YWtlbiBhbmQgcGxhY2VkIGludG8gYHBmaWZvX2Zhc3Rfb3BzYCwgd2hpY2ggbWVhbnMgdGhleSBhcmUgbm90IGlubGluZWQgYW5kIGhhdmUgZGlzdGluY3Qgc3ltYm9scy4gVGhpcyBpcyBleGFjdGx5IHdoYXQgd2Ugd2FudCBmb3IgZm9jdXMgc3ltYm9scy4KCkkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBDT05GSUdfTkVUYCBpcyB0aGUgb25seSByZXF1aXJlbWVudCwgd2hpY2ggaXMgYSBncmVhdCBzdGFydGluZyBwb2ludCBmb3IgZnV6emluZy4gVGhlIHNlbGZ0ZXN0IHVzZXMgYHRjIHFkaXNjIGFkZCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290IHBmaWZvX2Zhc3RgLCB3aGljaCBjb25maXJtcyBpdHMgZGlyZWN0IHVzYWdlLiBIb3dldmVyLCB0aGUgZGVmYXVsdCBxZGlzYyBpbml0aWFsaXphdGlvbiBhbmQgYHR4cXVldWVsZW5gIGNoYW5nZXMgdmlhIGBpcCBsaW5rYCBkb24mIzM5O3QgbmVlZCBgQ09ORklHX05FVF9TQ0hFRGAuIFRoaXMgaXMgYSBjcnVjaWFsIHBvaW50OiB0aGUgYnVnIGNhbiBiZSB0cmlnZ2VyZWQgYnkgbWVyZWx5IG1vZGlmeWluZyBgdHhxdWV1ZWxlbmAgb24gYSBkZXZpY2UgKmFscmVhZHkqIHVzaW5nIGBwZmlmb19mYXN0YCBieSBkZWZhdWx0LgoKTG9va2luZyBhdCB0aGUgY29kZSBjaGFuZ2VzOiB0aGUgcGF0Y2ggbGltaXRzIHRoZSByaW5nIHNpemUgdG8gNjU1MzUgYW5kIHN3aXRjaGVzIHRoZSBhbGxvY2F0aW9uIGZsYWcgdG8gYEdGUF9LRVJORUxfQUNDT1VOVGAuIFRoaXMgaXMgYSBtZW1vcnkgdXNhZ2UgcHJldmVudGlvbiBtZWFzdXJlLCBndWFyZGluZyBhZ2FpbnN0IGV4dHJlbWUgYHR4cXVldWVsZW5gIHZhbHVlcy4gVGhpcyBzY3JlYW1zIGZvciBmdXp6aW5nLgoKTXkgZGVjaXNpb24gaXM6CiogICAqKldvcnRoRnV6emluZzogdHJ1ZSoqCiogICAqKkZvY3VzU3ltYm9sczoqKiBcWyYjMzQ7cGZpZm9cX2Zhc3RcX2luaXQmIzM0OywgJiMzNDtwZmlmb1xfZmFzdFxfY2hhbmdlXF90eFxfcXVldWVcX2xlbiYjMzQ7XQoqICAgKipFbmFibGVDb25maWdzOiBcW+KAnE5FVCYjMzQ7XSoqCiogICAqKlJlYXNvbmluZzoqKiAmIzM0O1RoZSBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBgdHhfcXVldWVfbGVuYCBjaGFuZ2Ugb2YgdGhlIGBwZmlmb19mYXN0YCBxZGlzYy4gU3BlY2lmaWNhbGx5LCBpdCBjYXBzIHRoZSBxdWV1ZSBsZW5ndGggdG8gNjU1MzUgYW5kIGludHJvZHVjZXMgbWVtb3J5IGFjY291bnRpbmcuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgd2l0aGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMDozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGZpZm9fZmFzdF9pbml0JiMzNDssCiAgICAmIzM0O3BmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHR4X3F1ZXVlX2xlbiBjaGFuZ2UgbG9naWMgb2YgdGhlIHBmaWZvX2Zhc3QgcWRpc2MsIGNhcHBpbmcgdGhlIHF1ZXVlIGxlbmd0aCB0byA2NTUzNSBhbmQgYWRkaW5nIG1lbW9yeSBhY2NvdW50aW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGZpZm9fZmFzdF9pbml0JiMzNDssCiAgICAmIzM0O3BmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHR4X3F1ZXVlX2xlbiBjaGFuZ2UgbG9naWMgb2YgdGhlIHBmaWZvX2Zhc3QgcWRpc2MsIGNhcHBpbmcgdGhlIHF1ZXVlIGxlbmd0aCB0byA2NTUzNSBhbmQgYWRkaW5nIG1lbW9yeSBhY2NvdW50aW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTA6MzE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMDozMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2FwIG9uIHRoZSByaW5nIHNpemUgKGBxbGVuYCBhbmQgYG5ld19sZW5gKSB0byA2NTUzNSBpbiBgcGZpZm9fZmFzdF9pbml0YCBhbmQgYHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbmAsIGFuZCBjaGFuZ2VzIHRoZSBhbGxvY2F0aW9uIGZsYWcgZnJvbSBgR0ZQX0tFUk5FTGAgdG8gYEdGUF9LRVJORUxfQUNDT1VOVGAuIFRoZXNlIGNoYW5nZXMgYXJlIGludGVuZGVkIHRvIHByZXZlbnQgZXhjZXNzaXZlIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBhZGQgbWVtb3J5IGFjY291bnRpbmcuIFRoZXkgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbW9kaWZ5IHBhZGRpbmcsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gQW55IGlzc3VlcyByZWxhdGVkIHRvIG1lbW9yeSBhbGxvY2F0aW9uIHNpemVzIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgd291bGQgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBtZW1vcnkgZGVidWdnaW5nIHRvb2xzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MsIHNvIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTdlMjViNjA0OWJmNTQ5YWJjMjBjNmU0ODA1NGU3ZGM1YzU0Y2U5MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDIwIDEwOjMwOjQ4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmMgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYwppbmRleCBlZjJiNGJmNTE1NjQxLi5lOThmZDIzNmFmYTA0IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYwpAQCAtOTEwLDExICYjNDM7OTEwLDE3IEBAIHN0YXRpYyBpbnQgcGZpZm9fZmFzdF9pbml0KHN0cnVjdCBRZGlzYyAqcWRpc2MsIHN0cnVjdCBubGF0dHIgKm9wdCwKIAlpZiAoIXFsZW4pCiAJCXJldHVybiAtRUlOVkFMOwogCiYjNDM7CWlmIChxbGVuICZndDsgNjU1MzUpIHsKJiM0MzsJCXByX3dhcm5fcmF0ZWxpbWl0ZWQoJiMzNDtwZmlmb19mYXN0OiBjYXBwaW5nIHJpbmcgc2l6ZSAldSB0byA2NTUzNSBmb3IgZGV2ICVzXG4mIzM0OywKJiM0MzsJCQkJICAgIHFsZW4sIHFkaXNjX2RldihxZGlzYyktJmd0O25hbWUpOwomIzQzOwkJcWxlbiA9IDY1NTM1OwomIzQzOwl9CiYjNDM7CiAJZm9yIChwcmlvID0gMDsgcHJpbyAmbHQ7IFBGSUZPX0ZBU1RfQkFORFM7IHByaW8mIzQzOyYjNDM7KSB7CiAJCXN0cnVjdCBza2JfYXJyYXkgKnEgPSBiYW5kMmxpc3QocHJpdiwgcHJpbyk7CiAJCWludCBlcnI7CiAKLQkJZXJyID0gc2tiX2FycmF5X2luaXQocSwgcWxlbiwgR0ZQX0tFUk5FTCk7CiYjNDM7CQllcnIgPSBza2JfYXJyYXlfaW5pdChxLCBxbGVuLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwogCQlpZiAoZXJyKQogCQkJcmV0dXJuIC1FTk9NRU07CiAJfQpAQCAtOTU3LDggJiM0Mzs5NjMsMTQgQEAgc3RhdGljIGludCBwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IFFkaXNjICpzY2gsCiAJCWJhbmRzW3ByaW9dID0gcTsKIAl9CiAKJiM0MzsJaWYgKG5ld19sZW4gJmd0OyA2NTUzNSkgewomIzQzOwkJcHJfd2Fybl9yYXRlbGltaXRlZCgmIzM0O3BmaWZvX2Zhc3Q6IGNhcHBpbmcgcmluZyBzaXplICV1IHRvIDY1NTM1IGZvciBkZXYgJXNcbiYjMzQ7LAomIzQzOwkJCQkgICAgbmV3X2xlbiwgcWRpc2NfZGV2KHNjaCktJmd0O25hbWUpOwomIzQzOwkJbmV3X2xlbiA9IDY1NTM1OwomIzQzOwl9CiYjNDM7CiAJcmV0dXJuIHNrYl9hcnJheV9yZXNpemVfbXVsdGlwbGVfYmgoYmFuZHMsIFBGSUZPX0ZBU1RfQkFORFMsIG5ld19sZW4sCi0JCQkJCSAgICBHRlBfS0VSTkVMKTsKJiM0MzsJCQkJCSAgICBHRlBfS0VSTkVMX0FDQ09VTlQpOwogfQogCiBzdHJ1Y3QgUWRpc2Nfb3BzIHBmaWZvX2Zhc3Rfb3BzIF9fcmVhZF9tb3N0bHkgPSB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9wZmlmb19mYXN0Lmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9wZmlmb19mYXN0Lmpzb24KaW5kZXggMzBkYTI3ZmU4ODA2Ny4uYjM4MzAxNzJmZTRmNCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvcGZpZm9fZmFzdC5qc29uCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3BmaWZvX2Zhc3QuanNvbgpAQCAtMTA1LDUgJiM0MzsxMDUsMjggQEAKICAgICAgICAgJiMzNDt0ZWFyZG93biYjMzQ7OiBbCiAgICAgICAgICAgICAmIzM0OyRUQyBxZGlzYyBkZWwgZGV2ICREVU1NWSBoYW5kbGUgMTogcm9vdCYjMzQ7CiAgICAgICAgIF0KJiM0MzsgICAgfSwKJiM0MzsgICAgewomIzQzOyAgICAgICAgJiMzNDtpZCYjMzQ7OiAmIzM0OzAyNDkmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0NyZWF0ZSBwZmlmb19mYXN0IHdpdGggaHVnZSB0eF9xdWV1ZV9sZW4gKHJpbmcgY2FwIHJlZ3Jlc3Npb24pJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O2NhdGVnb3J5JiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0O3FkaXNjJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDtwZmlmb19mYXN0JiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O3BsdWdpbnMmIzM0OzogewomIzQzOyAgICAgICAgICAgICYjMzQ7cmVxdWlyZXMmIzM0OzogJiMzNDtuc1BsdWdpbiYjMzQ7CiYjNDM7ICAgICAgICB9LAomIzQzOyAgICAgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDskSVAgbGluayBzZXQgZGV2ICREVU1NWSB0eHF1ZXVlbGVuIDEwMDAwMDAwMCYjMzQ7CiYjNDM7ICAgICAgICBdLAomIzQzOyAgICAgICAgJiMzNDtjbWRVbmRlclRlc3QmIzM0OzogJiMzNDskVEMgcWRpc2MgYWRkIGRldiAkRFVNTVkgaGFuZGxlIDE6IHJvb3QgcGZpZm9fZmFzdCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7JFRDIHFkaXNjIHNob3cgZGV2ICREVU1NWSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDtxZGlzYyBwZmlmb19mYXN0IDE6IHJvb3QmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzEmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7JElQIGxpbmsgc2V0IGRldiAkRFVNTVkgdHhxdWV1ZWxlbiAxMDAwJiMzNDssCiYjNDM7ICAgICAgICAgICAgJiMzNDskVEMgcWRpc2MgZGVsIGRldiAkRFVNTVkgaGFuZGxlIDE6IHJvb3QmIzM0OwomIzQzOyAgICAgICAgXQogICAgIH0KIF0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDEwOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MDYKCQkJCQkJCW91dHB1dDogMTgyCgkJCQkJCQl0aG91Z2h0czogNDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3RyYWlnaHRmb3J3YXJkLiBJdCB0YXJnZXRzIHRoZSBgcGZpZm9fZmFzdF9pbml0YCBhbmQgYHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbmAgZnVuY3Rpb25zIHdpdGhpbiBgbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlcyByZXZvbHZlIGFyb3VuZCByaW5nIGJ1ZmZlciBzaXplIGxpbWl0cyBhbmQgbWVtb3J5IGFjY291bnRpbmcuIEkmIzM5O20gc2VlaW5nIGJvdW5kcyBjaGVja3MgYWRkZWQgdG8gYHFsZW5gIGFuZCBgbmV3X2xlbmAsIGNhcHBpbmcgdGhlbSBhdCA2NTUzNSwgYW5kIHRoZSBhbGxvY2F0aW9uIGZsYWcgaW4gYHNrYl9hcnJheV9pbml0YCBhbmQgYHNrYl9hcnJheV9yZXNpemVfbXVsdGlwbGVfYmhgIGlzIGJlaW5nIHN3aXRjaGVkIGZyb20gYEdGUF9LRVJORUxgIHRvIGBHRlBfS0VSTkVMX0FDQ09VTlRgLgoKRXNzZW50aWFsbHksIHRoaXMgaXMgYSBkZWZlbnNpdmUgbWVhc3VyZS4gSXQgcHJldmVudHMgZXhjZXNzaXZlbHkgbGFyZ2UgbWVtb3J5IGFsbG9jYXRpb25zLCBhbmQgbGlrZWx5IG1pdGlnYXRlcyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgb3Igb3ZlcmZsb3cgdnVsbmVyYWJpbGl0aWVzLiAgVGhlIGNoYW5nZSB0byBgR0ZQX0tFUk5FTF9BQ0NPVU5UYCBpcyBhIGdvb2QgcHJhY3RpY2UsIGFkZGluZyBleHBsaWNpdCBtZW1vcnkgYWNjb3VudGluZy4KCkZyb20gbXkgcGVyc3BlY3RpdmUsIHRoaXMgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm9ybWF0aW9uIGxlYWtzLiBUaGUgY29kZSBpcyBjbGVhbjsgaXQmIzM5O3Mgc2ltcGx5IGltcGxlbWVudGluZyBib3VuZHMgY2hlY2tzIGFuZCBhZGp1c3RpbmcgYWxsb2NhdGlvbiBmbGFncy4gS0FTQU4gb3Igb3RoZXIgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyB3b3VsZCBsaWtlbHkgY2F0Y2ggYW55IG91dC1vZi1ib3VuZHMgb3IgYWxsb2NhdGlvbiBmYWlsdXJlcyBpZiB0aGV5IHdlcmUgdG8gb2NjdXIsIGJ1dCBLTVNBTiBpcyBkZXNpZ25lZCBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLCBhbmQgSSBkb24mIzM5O3Qgc2VlIGFueSByaXNrIG9mIHRob3NlIGhlcmUuIAoKTGV0IG1lIGp1c3QgcXVpY2tseSByZS1leGFtaW5lIHRoZSBjb2RlIHNuaXBwZXQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLi4uCgpgYGBjCiYjNDM7CWlmIChxbGVuICZndDsgNjU1MzUpIHsKJiM0MzsJCXByX3dhcm5fcmF0ZWxpbWl0ZWQoJiMzNDtwZmlmb19mYXN0OiBjYXBwaW5nIHJpbmcgc2l6ZSAldSB0byA2NTUzNSBmb3IgZGV2ICVzXG4mIzM0OywKJiM0MzsJCQkJICAgIHFsZW4sIHFkaXNjX2RldihxZGlzYyktJmd0O25hbWUpOwomIzQzOwkJcWxlbiA9IDY1NTM1OwomIzQzOwl9CiYjNDM7CiAJZm9yIChwcmlvID0gMDsgcHJpbyAmbHQ7IFBGSUZPX0ZBU1RfQkFORFM7IHByaW8mIzQzOyYjNDM7KSB7CiAJCXN0cnVjdCBza2JfYXJyYXkgKnEgPSBiYW5kMmxpc3QocHJpdiwgcHJpbyk7CiAJCWludCBlcnI7CiAKLQkJZXJyID0gc2tiX2FycmF5X2luaXQocSwgcWxlbiwgR0ZQX0tFUk5FTCk7CiYjNDM7CQllcnIgPSBza2JfYXJyYXlfaW5pdChxLCBxbGVuLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwpgYGAKClllcCwgYXMgZXhwZWN0ZWQuIFRoaXMgaXMgcHVyZWx5IGEgc2l6ZSBjYXBwaW5nIGFuZCBhbGxvY2F0aW9uIGZsYWcgdXBkYXRlLCBub3RoaW5nIG1vcmUuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGV4cG9zZWQgaGVyZS4gSSYjMzk7bSBjb21mb3J0YWJsZSBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTA6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNhcCBvbiB0aGUgcmluZyBzaXplIChgcWxlbmAgYW5kIGBuZXdfbGVuYCkgdG8gNjU1MzUgaW4gYHBmaWZvX2Zhc3RfaW5pdGAgYW5kIGBwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW5gLCBhbmQgY2hhbmdlcyB0aGUgYWxsb2NhdGlvbiBmbGFnIGZyb20gYEdGUF9LRVJORUxgIHRvIGBHRlBfS0VSTkVMX0FDQ09VTlRgLiBUaGVzZSBjaGFuZ2VzIGFyZSBpbnRlbmRlZCB0byBwcmV2ZW50IGV4Y2Vzc2l2ZSBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgYWRkIG1lbW9yeSBhY2NvdW50aW5nLiBUaGV5IGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBwYWRkaW5nLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciBjb250cm9sIGZsb3cuIEFueSBpc3N1ZXMgcmVsYXRlZCB0byBtZW1vcnkgYWxsb2NhdGlvbiBzaXplcyBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIHdvdWxkIGJlIGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgbWVtb3J5IGRlYnVnZ2luZyB0b29scy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLCBzbyBLTVNBTiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2FwIG9uIHRoZSByaW5nIHNpemUgKGBxbGVuYCBhbmQgYG5ld19sZW5gKSB0byA2NTUzNSBpbiBgcGZpZm9fZmFzdF9pbml0YCBhbmQgYHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbmAsIGFuZCBjaGFuZ2VzIHRoZSBhbGxvY2F0aW9uIGZsYWcgZnJvbSBgR0ZQX0tFUk5FTGAgdG8gYEdGUF9LRVJORUxfQUNDT1VOVGAuIFRoZXNlIGNoYW5nZXMgYXJlIGludGVuZGVkIHRvIHByZXZlbnQgZXhjZXNzaXZlIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBhZGQgbWVtb3J5IGFjY291bnRpbmcuIFRoZXkgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbW9kaWZ5IHBhZGRpbmcsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gQW55IGlzc3VlcyByZWxhdGVkIHRvIG1lbW9yeSBhbGxvY2F0aW9uIHNpemVzIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgd291bGQgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBtZW1vcnkgZGVidWdnaW5nIHRvb2xzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MsIHNvIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTA6MzA6NDkuNTI4NDYxMjQ4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE0MDg5MTAzNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGZpZm9fZmFzdF9pbml0XCIsXG4gICAgXCJwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW5cIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjYXAgb24gdGhlIHJpbmcgc2l6ZSAoYHFsZW5gIGFuZCBgbmV3X2xlbmApIHRvIDY1NTM1IGluIGBwZmlmb19mYXN0X2luaXRgIGFuZCBgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuYCwgYW5kIGNoYW5nZXMgdGhlIGFsbG9jYXRpb24gZmxhZyBmcm9tIGBHRlBfS0VSTkVMYCB0byBgR0ZQX0tFUk5FTF9BQ0NPVU5UYC4gVGhlc2UgY2hhbmdlcyBhcmUgaW50ZW5kZWQgdG8gcHJldmVudCBleGNlc3NpdmUgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGFkZCBtZW1vcnkgYWNjb3VudGluZy4gVGhleSBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtb2RpZnkgcGFkZGluZywgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgY29udHJvbCBmbG93LiBBbnkgaXNzdWVzIHJlbGF0ZWQgdG8gbWVtb3J5IGFsbG9jYXRpb24gc2l6ZXMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG1lbW9yeSBkZWJ1Z2dpbmcgdG9vbHMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcywgc28gS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdHhfcXVldWVfbGVuIGNoYW5nZSBsb2dpYyBvZiB0aGUgcGZpZm9fZmFzdCBxZGlzYywgY2FwcGluZyB0aGUgcXVldWUgbGVuZ3RoIHRvIDY1NTM1IGFuZCBhZGRpbmcgbWVtb3J5IGFjY291bnRpbmcuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMDozMDo0OS41Mjg0NjY3NjhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDI3NDIxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDk3ZTI1YjYwNDliZjU0OWFiYzIwYzZlNDgwNTRlN2RjNWM1NGNlOTJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgMjAgMTA6MzA6NDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmMgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1xcbmluZGV4IGVmMmI0YmY1MTU2NDEuLmU5OGZkMjM2YWZhMDQgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNcXG4rKysgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1xcbkBAIC05MTAsMTEgKzkxMCwxNyBAQCBzdGF0aWMgaW50IHBmaWZvX2Zhc3RfaW5pdChzdHJ1Y3QgUWRpc2MgKnFkaXNjLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuIFxcdGlmICghcWxlbilcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHRpZiAocWxlbiBcXHUwMDNlIDY1NTM1KSB7XFxuK1xcdFxcdHByX3dhcm5fcmF0ZWxpbWl0ZWQoXFxcInBmaWZvX2Zhc3Q6IGNhcHBpbmcgcmluZyBzaXplICV1IHRvIDY1NTM1IGZvciBkZXYgJXNcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCAgICBxbGVuLCBxZGlzY19kZXYocWRpc2MpLVxcdTAwM2VuYW1lKTtcXG4rXFx0XFx0cWxlbiA9IDY1NTM1O1xcbitcXHR9XFxuK1xcbiBcXHRmb3IgKHByaW8gPSAwOyBwcmlvIFxcdTAwM2MgUEZJRk9fRkFTVF9CQU5EUzsgcHJpbysrKSB7XFxuIFxcdFxcdHN0cnVjdCBza2JfYXJyYXkgKnEgPSBiYW5kMmxpc3QocHJpdiwgcHJpbyk7XFxuIFxcdFxcdGludCBlcnI7XFxuIFxcbi1cXHRcXHRlcnIgPSBza2JfYXJyYXlfaW5pdChxLCBxbGVuLCBHRlBfS0VSTkVMKTtcXG4rXFx0XFx0ZXJyID0gc2tiX2FycmF5X2luaXQocSwgcWxlbiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4gXFx0XFx0aWYgKGVycilcXG4gXFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcdH1cXG5AQCAtOTU3LDggKzk2MywxNCBAQCBzdGF0aWMgaW50IHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbihzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4gXFx0XFx0YmFuZHNbcHJpb10gPSBxO1xcbiBcXHR9XFxuIFxcbitcXHRpZiAobmV3X2xlbiBcXHUwMDNlIDY1NTM1KSB7XFxuK1xcdFxcdHByX3dhcm5fcmF0ZWxpbWl0ZWQoXFxcInBmaWZvX2Zhc3Q6IGNhcHBpbmcgcmluZyBzaXplICV1IHRvIDY1NTM1IGZvciBkZXYgJXNcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCAgICBuZXdfbGVuLCBxZGlzY19kZXYoc2NoKS1cXHUwMDNlbmFtZSk7XFxuK1xcdFxcdG5ld19sZW4gPSA2NTUzNTtcXG4rXFx0fVxcbitcXG4gXFx0cmV0dXJuIHNrYl9hcnJheV9yZXNpemVfbXVsdGlwbGVfYmgoYmFuZHMsIFBGSUZPX0ZBU1RfQkFORFMsIG5ld19sZW4sXFxuLVxcdFxcdFxcdFxcdFxcdCAgICBHRlBfS0VSTkVMKTtcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuIH1cXG4gXFxuIHN0cnVjdCBRZGlzY19vcHMgcGZpZm9fZmFzdF9vcHMgX19yZWFkX21vc3RseSA9IHtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvcGZpZm9fZmFzdC5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvcGZpZm9fZmFzdC5qc29uXFxuaW5kZXggMzBkYTI3ZmU4ODA2Ny4uYjM4MzAxNzJmZTRmNCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9wZmlmb19mYXN0Lmpzb25cXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9wZmlmb19mYXN0Lmpzb25cXG5AQCAtMTA1LDUgKzEwNSwyOCBAQFxcbiAgICAgICAgIFxcXCJ0ZWFyZG93blxcXCI6IFtcXG4gICAgICAgICAgICAgXFxcIiRUQyBxZGlzYyBkZWwgZGV2ICREVU1NWSBoYW5kbGUgMTogcm9vdFxcXCJcXG4gICAgICAgICBdXFxuKyAgICB9LFxcbisgICAge1xcbisgICAgICAgIFxcXCJpZFxcXCI6IFxcXCIwMjQ5XFxcIixcXG4rICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCJDcmVhdGUgcGZpZm9fZmFzdCB3aXRoIGh1Z2UgdHhfcXVldWVfbGVuIChyaW5nIGNhcCByZWdyZXNzaW9uKVxcXCIsXFxuKyAgICAgICAgXFxcImNhdGVnb3J5XFxcIjogW1xcbisgICAgICAgICAgICBcXFwicWRpc2NcXFwiLFxcbisgICAgICAgICAgICBcXFwicGZpZm9fZmFzdFxcXCJcXG4rICAgICAgICBdLFxcbisgICAgICAgIFxcXCJwbHVnaW5zXFxcIjoge1xcbisgICAgICAgICAgICBcXFwicmVxdWlyZXNcXFwiOiBcXFwibnNQbHVnaW5cXFwiXFxuKyAgICAgICAgfSxcXG4rICAgICAgICBcXFwic2V0dXBcXFwiOiBbXFxuKyAgICAgICAgICAgIFxcXCIkSVAgbGluayBzZXQgZGV2ICREVU1NWSB0eHF1ZXVlbGVuIDEwMDAwMDAwMFxcXCJcXG4rICAgICAgICBdLFxcbisgICAgICAgIFxcXCJjbWRVbmRlclRlc3RcXFwiOiBcXFwiJFRDIHFkaXNjIGFkZCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290IHBmaWZvX2Zhc3RcXFwiLFxcbisgICAgICAgIFxcXCJleHBFeGl0Q29kZVxcXCI6IFxcXCIwXFxcIixcXG4rICAgICAgICBcXFwidmVyaWZ5Q21kXFxcIjogXFxcIiRUQyBxZGlzYyBzaG93IGRldiAkRFVNTVlcXFwiLFxcbisgICAgICAgIFxcXCJtYXRjaFBhdHRlcm5cXFwiOiBcXFwicWRpc2MgcGZpZm9fZmFzdCAxOiByb290XFxcIixcXG4rICAgICAgICBcXFwibWF0Y2hDb3VudFxcXCI6IFxcXCIxXFxcIixcXG4rICAgICAgICBcXFwidGVhcmRvd25cXFwiOiBbXFxuKyAgICAgICAgICAgIFxcXCIkSVAgbGluayBzZXQgZGV2ICREVU1NWSB0eHF1ZXVlbGVuIDEwMDBcXFwiLFxcbisgICAgICAgICAgICBcXFwiJFRDIHFkaXNjIGRlbCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290XFxcIlxcbisgICAgICAgIF1cXG4gICAgIH1cXG4gXVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMDozMDo0OS45ODM0NTY4NDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2MjU0Mjg5ODk1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwZmlmb19mYXN0X2luaXRcIixcbiAgICBcInBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdHhfcXVldWVfbGVuIGNoYW5nZSBsb2dpYyBvZiB0aGUgcGZpZm9fZmFzdCBxZGlzYywgY2FwcGluZyB0aGUgcXVldWUgbGVuZ3RoIHRvIDY1NTM1IGFuZCBhZGRpbmcgbWVtb3J5IGFjY291bnRpbmcuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5N2UyNWI2MDQ5YmY1NDlhYmMyMGM2ZTQ4MDU0ZTdkYzVjNTRjZTkyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjAgMTA6MzA6NDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYyBiL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXG5pbmRleCBlZjJiNGJmNTE1NjQxLi5lOThmZDIzNmFmYTA0IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXG5AQCAtOTEwLDExICs5MTAsMTcgQEAgc3RhdGljIGludCBwZmlmb19mYXN0X2luaXQoc3RydWN0IFFkaXNjICpxZGlzYywgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0aWYgKCFxbGVuKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbitcdGlmIChxbGVuIFx1MDAzZSA2NTUzNSkge1xuK1x0XHRwcl93YXJuX3JhdGVsaW1pdGVkKFwicGZpZm9fZmFzdDogY2FwcGluZyByaW5nIHNpemUgJXUgdG8gNjU1MzUgZm9yIGRldiAlc1xcblwiLFxuK1x0XHRcdFx0ICAgIHFsZW4sIHFkaXNjX2RldihxZGlzYyktXHUwMDNlbmFtZSk7XG4rXHRcdHFsZW4gPSA2NTUzNTtcbitcdH1cbitcbiBcdGZvciAocHJpbyA9IDA7IHByaW8gXHUwMDNjIFBGSUZPX0ZBU1RfQkFORFM7IHByaW8rKykge1xuIFx0XHRzdHJ1Y3Qgc2tiX2FycmF5ICpxID0gYmFuZDJsaXN0KHByaXYsIHByaW8pO1xuIFx0XHRpbnQgZXJyO1xuIFxuLVx0XHRlcnIgPSBza2JfYXJyYXlfaW5pdChxLCBxbGVuLCBHRlBfS0VSTkVMKTtcbitcdFx0ZXJyID0gc2tiX2FycmF5X2luaXQocSwgcWxlbiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdH1cbkBAIC05NTcsOCArOTYzLDE0IEBAIHN0YXRpYyBpbnQgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuKHN0cnVjdCBRZGlzYyAqc2NoLFxuIFx0XHRiYW5kc1twcmlvXSA9IHE7XG4gXHR9XG4gXG4rXHRpZiAobmV3X2xlbiBcdTAwM2UgNjU1MzUpIHtcbitcdFx0cHJfd2Fybl9yYXRlbGltaXRlZChcInBmaWZvX2Zhc3Q6IGNhcHBpbmcgcmluZyBzaXplICV1IHRvIDY1NTM1IGZvciBkZXYgJXNcXG5cIixcbitcdFx0XHRcdCAgICBuZXdfbGVuLCBxZGlzY19kZXYoc2NoKS1cdTAwM2VuYW1lKTtcbitcdFx0bmV3X2xlbiA9IDY1NTM1O1xuK1x0fVxuK1xuIFx0cmV0dXJuIHNrYl9hcnJheV9yZXNpemVfbXVsdGlwbGVfYmgoYmFuZHMsIFBGSUZPX0ZBU1RfQkFORFMsIG5ld19sZW4sXG4tXHRcdFx0XHRcdCAgICBHRlBfS0VSTkVMKTtcbitcdFx0XHRcdFx0ICAgIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gfVxuIFxuIHN0cnVjdCBRZGlzY19vcHMgcGZpZm9fZmFzdF9vcHMgX19yZWFkX21vc3RseSA9IHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9wZmlmb19mYXN0Lmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9wZmlmb19mYXN0Lmpzb25cbmluZGV4IDMwZGEyN2ZlODgwNjcuLmIzODMwMTcyZmU0ZjQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9wZmlmb19mYXN0Lmpzb25cbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3BmaWZvX2Zhc3QuanNvblxuQEAgLTEwNSw1ICsxMDUsMjggQEBcbiAgICAgICAgIFwidGVhcmRvd25cIjogW1xuICAgICAgICAgICAgIFwiJFRDIHFkaXNjIGRlbCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290XCJcbiAgICAgICAgIF1cbisgICAgfSxcbisgICAge1xuKyAgICAgICAgXCJpZFwiOiBcIjAyNDlcIixcbisgICAgICAgIFwibmFtZVwiOiBcIkNyZWF0ZSBwZmlmb19mYXN0IHdpdGggaHVnZSB0eF9xdWV1ZV9sZW4gKHJpbmcgY2FwIHJlZ3Jlc3Npb24pXCIsXG4rICAgICAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICAgICAgICBcInFkaXNjXCIsXG4rICAgICAgICAgICAgXCJwZmlmb19mYXN0XCJcbisgICAgICAgIF0sXG4rICAgICAgICBcInBsdWdpbnNcIjoge1xuKyAgICAgICAgICAgIFwicmVxdWlyZXNcIjogXCJuc1BsdWdpblwiXG4rICAgICAgICB9LFxuKyAgICAgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgICAgICAgXCIkSVAgbGluayBzZXQgZGV2ICREVU1NWSB0eHF1ZXVlbGVuIDEwMDAwMDAwMFwiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgcWRpc2MgYWRkIGRldiAkRFVNTVkgaGFuZGxlIDE6IHJvb3QgcGZpZm9fZmFzdFwiLFxuKyAgICAgICAgXCJleHBFeGl0Q29kZVwiOiBcIjBcIixcbisgICAgICAgIFwidmVyaWZ5Q21kXCI6IFwiJFRDIHFkaXNjIHNob3cgZGV2ICREVU1NWVwiLFxuKyAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJxZGlzYyBwZmlmb19mYXN0IDE6IHJvb3RcIixcbisgICAgICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbisgICAgICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgICAgICAgIFwiJElQIGxpbmsgc2V0IGRldiAkRFVNTVkgdHhxdWV1ZWxlbiAxMDAwXCIsXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkRFVNTVkgaGFuZGxlIDE6IHJvb3RcIlxuKyAgICAgICAgXVxuICAgICB9XG4gXVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTA6MzA6NDkuOTgzNDU4NDIyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjAzNTg1MDM1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBFdmFsdWF0aW9uKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNgLCBzcGVjaWZpY2FsbHkgbWVzc2luZyB3aXRoIGBwZmlmb19mYXN0X2luaXRgIGFuZCBgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuYC4gSXQgc2VlbXMgbGlrZSBpdCdzIGFkZGluZyBhIHF1ZXVlIGxlbmd0aCBjYXAgKDY1NTM1LCBhcyBpZiBJIGRpZG4ndCBrbm93KSwgYW5kIGl0J3MgYWxzbyBjaGFuZ2luZyB0aGUgbWVtb3J5IGFsbG9jYXRpb24gZmxhZ3MgZnJvbSBgR0ZQX0tFUk5FTGAgdG8gYEdGUF9LRVJORUxfQUNDT1VOVGAgaW4gdGhvc2UgYHNrYl9hcnJheWAgZnVuY3Rpb25zLiBcblxuTXkgaW5pdGlhbCBndXQgZmVlbGluZz8gVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGEgY2xvc2VyIGxvb2sgZm9yIGZ1enppbmcuIGBwZmlmb19mYXN0YCBpcyB0aGUgZGVmYXVsdCBxZGlzYyBvbiBhIHRvbiBvZiBuZXR3b3JrIGRldmljZXMsIHNvIGFueSBwb3RlbnRpYWwgaXNzdWVzIHRoZXJlIGNvdWxkIGhhdmUgYSBwcmV0dHkgd2lkZSBpbXBhY3QuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsOyB3ZSdyZSB0YWxraW5nIGFib3V0IHF1ZXVlIGxlbmd0aCBsaW1pdHMgYW5kIG1lbW9yeSBhY2NvdW50aW5nLCB3aGljaCBhcmUgYm90aCBjcnVjaWFsIGZvciBzdGFiaWxpdHkgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQuIFRoYXQgc291bmRzIGxpa2UgcHJpbWUgZnV6emluZyB0ZXJyaXRvcnkuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBmdXp6aW5nIHN0cmF0ZWd5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBBbmQgdGhlIGZvY3VzIHN5bWJvbHMgZm9yIGZ1enppbmcgd2lsbCBiZSBgcGZpZm9fZmFzdF9pbml0YCBhbmQgYHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbmAuXG5cblJpZ2h0LCBsZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIGluIGBuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY2AuIElzIHRoYXQgZmlsZSBjb21waWxlZCB1bmNvbmRpdGlvbmFsbHkgb3IgZGVwZW5kZW50IG9uIGBDT05GSUdfTkVUX1NDSEVEYD8gV2FpdCwgSSB0aGluayBJJ20gd3JvbmcgdGhlcmUuIEFjdHVhbGx5LCBgc2NoX2dlbmVyaWMuY2AgaXMgYmFzaWNhbGx5IGEgY29yZSBwYXJ0IG9mIHRoZSBuZXR3b3JraW5nIHN0YWNrLCBpc24ndCBpdD8gUHJvYmFibHkgZWl0aGVyIHVuY29uZGl0aW9uYWxseSBjb21waWxlZCB3aXRoIGBDT05GSUdfTkVUYCBvciBzaW1pbGFyLiBCZXR0ZXIgdmVyaWZ5IHRoYXQgaW4gdGhlIGBuZXQvc2NoZWQvTWFrZWZpbGVgIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MDksIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMDozMDo1Ni4wMTkzMTEzMDJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5MDQ4OTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjaF9nZW5lcmljLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9NYWtlZmlsZS01LVxcbm5ldC9zY2hlZC9NYWtlZmlsZTo2Om9iai15XFx0Oj0gc2NoX2dlbmVyaWMubyBzY2hfbXEub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS03LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMDozMDo1Ni4xODgzNjcyMzRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzAxMjEwOTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgcGZpZm9fZmFzdF9pbml0YCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgaXMgdW5jb25kaXRpb25hbGx5IGNvbXBpbGVkIChgb2JqLXlgKSwgd2hpY2ggbWVhbnMgYWxsIHdlIHJlYWxseSBuZWVkIHRvIGZvY3VzIG9uIGlzIGBDT05GSUdfTkVUYC4gR290IGl0LlxuXG5Ob3csIGxldCdzIHNlZSBhYm91dCBgcGZpZm9fZmFzdF9pbml0YC4gSXMgaXQgc3RhdGljPyBZZXMsIGl0IGlzOiBgc3RhdGljIGludCBwZmlmb19mYXN0X2luaXQoc3RydWN0IFFkaXNjICpxZGlzYywgc3RydWN0IG5sYXR0ciAqb3B0LCAuLi4pYC4uLiBIbW0sIHdhaXQgYSBzZWNvbmQuIFRoYXQgcHJvbXB0Li4uIFwiUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLlwiIFRoYXQncyBnb29kIHByYWN0aWNlLCBidXQuLi4gaG9sZCBvbi4gYHBmaWZvX2Zhc3RfaW5pdGAgaXMgYSBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiBgc3RydWN0IFFkaXNjX29wcyBwZmlmb19mYXN0X29wc2AuIFRoYXQgbWVhbnMgaXQgKndvbid0KiBiZSBpbmxpbmVkIGJlY2F1c2UgaXRzIGFkZHJlc3MgaXMgYmVpbmcgdGFrZW4uIFRoZSBjb21waWxlciBoYXMgdG8gZ2VuZXJhdGUgY29kZSB0byBwb2ludCB0byBpdC4gU28sIHRoYXQncyBub3QgYSBjb25jZXJuIGhlcmUuIExldCBtZSBkb3VibGUtY2hlY2sgYHBmaWZvX2Zhc3Rfb3BzYCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NTAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTA6MzE6MDAuODg5NTgxNzM0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NDg2Mzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBmaWZvX2Zhc3Rfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTM2LS8qIFFkaXNjIHRvIHVzZSBieSBkZWZhdWx0ICovXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6Mzc6Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAqZGVmYXVsdF9xZGlzY19vcHMgPSBcXHUwMDI2cGZpZm9fZmFzdF9vcHM7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMzgtRVhQT1JUX1NZTUJPTChkZWZhdWx0X3FkaXNjX29wcyk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz05NTM9c3RhdGljIGludCBwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IFFkaXNjICpzY2gsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05NzUtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTc2OnN0cnVjdCBRZGlzY19vcHMgcGZpZm9fZmFzdF9vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05NzctXFx0LmlkXFx0XFx0PVxcdFxcXCJwZmlmb19mYXN0XFxcIixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk4OS19O1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjk5MDpFWFBPUlRfU1lNQk9MKHBmaWZvX2Zhc3Rfb3BzKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05OTEtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMjE5PXN0YXRpYyB2b2lkIGF0dGFjaF9vbmVfZGVmYXVsdF9xZGlzYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTIyOC1cXHRlbHNlIGlmKGRldi1cXHUwMDNldHlwZSA9PSBBUlBIUkRfQ0FOKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEyMjk6XFx0XFx0b3BzID0gXFx1MDAyNnBmaWZvX2Zhc3Rfb3BzO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyMzAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDEwOjMxOjAwLjkzODA3Mjc2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUwMjk4NDE1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgcGZpZm9fZmFzdCBPcGVyYXRpb25zIGZvciBQb3RlbnRpYWwgSW1wcm92ZW1lbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgcGZpZm9fZmFzdGAgc2V0dXAsIGFuZCBJJ3ZlIG5vdGljZWQgc29tZXRoaW5nLiBCZWNhdXNlIGBwZmlmb19mYXN0X2luaXRgIGFuZCBgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuYCBhcmUgdXNlZCBhcyBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gYHBmaWZvX2Zhc3Rfb3BzYCwgdGhleSdyZSBub3QgZ2V0dGluZyBpbmxpbmVkLiBUaGlzIHByZXNlbnRzIGEgdW5pcXVlIG9wcG9ydHVuaXR5LCBwb3RlbnRpYWxseSBtYWtpbmcgdGhlbSB1c2VmdWwgYXMgZm9jdXMgc3ltYm9scyBkdXJpbmcgYW5hbHlzaXMgYW5kIG9wdGltaXphdGlvbi4gVGhhdCBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCBjb25maWd1cmF0aW9uLXdpc2UuIEkgd29uZGVyIGlmIGVuYWJsaW5nIGBDT05GSUdfTkVUX1NDSEVEYCBpcyBuZWNlc3NhcnkgdG8gZnVsbHkgY29uZmlndXJlIHRoZXNlIHFkaXNjcyB0aHJvdWdoIG5ldGxpbmsuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGUgYG5ldC9zY2hlZC9NYWtlZmlsZWAgYWdhaW4gdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBidWlsZCBlbnZpcm9ubWVudCBmb3IgdGhlc2UgZmVhdHVyZXMuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzQ2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDEwOjMxOjA1LjQ0MTA1OTg3NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODc3OTkxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYmotXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvTWFrZWZpbGUtNS1cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjpvYmoteVxcdDo9IHNjaF9nZW5lcmljLm8gc2NoX21xLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtNy1cXG5uZXQvc2NoZWQvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfSU5FVClcXHRcXHQrPSBzY2hfZnJhZy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX05FVF9TQ0hFRClcXHRcXHQrPSBzY2hfYXBpLm8gc2NoX2JsYWNraG9sZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19ORVRfQ0xTKVxcdFxcdCs9IGNsc19hcGkub1xcbm5ldC9zY2hlZC9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfTkVUX0NMU19BQ1QpXFx0Kz0gYWN0X2FwaS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19ORVRfQUNUX1BPTElDRSlcXHQrPSBhY3RfcG9saWNlLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX05FVF9BQ1RfR0FDVClcXHQrPSBhY3RfZ2FjdC5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjE0Om9iai0kKENPTkZJR19ORVRfQUNUX01JUlJFRClcXHQrPSBhY3RfbWlycmVkLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MTU6b2JqLSQoQ09ORklHX05FVF9BQ1RfU0FNUExFKVxcdCs9IGFjdF9zYW1wbGUub1xcbm5ldC9zY2hlZC9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfTkVUX0FDVF9OQVQpXFx0Kz0gYWN0X25hdC5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19ORVRfQUNUX1BFRElUKVxcdCs9IGFjdF9wZWRpdC5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19ORVRfQUNUX1NJTVApXFx0Kz0gYWN0X3NpbXBsZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjE5Om9iai0kKENPTkZJR19ORVRfQUNUX1NLQkVESVQpXFx0Kz0gYWN0X3NrYmVkaXQub1xcbm5ldC9zY2hlZC9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfTkVUX0FDVF9DU1VNKVxcdCs9IGFjdF9jc3VtLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MjE6b2JqLSQoQ09ORklHX05FVF9BQ1RfTVBMUylcXHQrPSBhY3RfbXBscy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjIyOm9iai0kKENPTkZJR19ORVRfQUNUX1ZMQU4pXFx0Kz0gYWN0X3ZsYW4ub1xcbm5ldC9zY2hlZC9NYWtlZmlsZToyMzpvYmotJChDT05GSUdfTkVUX0FDVF9CUEYpXFx0Kz0gYWN0X2JwZi5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19ORVRfQUNUX0NPTk5NQVJLKVxcdCs9IGFjdF9jb25ubWFyay5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19ORVRfQUNUX0NUSU5GTylcXHQrPSBhY3RfY3RpbmZvLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MjY6b2JqLSQoQ09ORklHX05FVF9BQ1RfU0tCTU9EKVxcdCs9IGFjdF9za2Jtb2Qub1xcbm5ldC9zY2hlZC9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfTkVUX0FDVF9JRkUpXFx0Kz0gYWN0X2lmZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjI4Om9iai0kKENPTkZJR19ORVRfSUZFX1NLQk1BUkspXFx0Kz0gYWN0X21ldGFfbWFyay5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjI5Om9iai0kKENPTkZJR19ORVRfSUZFX1NLQlBSSU8pXFx0Kz0gYWN0X21ldGFfc2ticHJpby5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjMwOm9iai0kKENPTkZJR19ORVRfSUZFX1NLQlRDSU5ERVgpXFx0Kz0gYWN0X21ldGFfc2tidGNpbmRleC5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19ORVRfQUNUX1RVTk5FTF9LRVkpKz0gYWN0X3R1bm5lbF9rZXkub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTozMjpvYmotJChDT05GSUdfTkVUX0FDVF9DVClcXHQrPSBhY3RfY3Qub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTozMzpvYmotJChDT05GSUdfTkVUX0FDVF9HQVRFKVxcdCs9IGFjdF9nYXRlLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfRklGTylcXHQrPSBzY2hfZmlmby5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19ORVRfU0NIX0hUQilcXHQrPSBzY2hfaHRiLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX05FVF9TQ0hfSEZTQylcXHQrPSBzY2hfaGZzYy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19ORVRfU0NIX1JFRClcXHQrPSBzY2hfcmVkLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX05FVF9TQ0hfR1JFRClcXHQrPSBzY2hfZ3JlZC5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjM5Om9iai0kKENPTkZJR19ORVRfU0NIX0lOR1JFU1MpXFx0Kz0gc2NoX2luZ3Jlc3Mub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfTkVUX1NDSF9TRkIpXFx0Kz0gc2NoX3NmYi5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjQxOm9iai0kKENPTkZJR19ORVRfU0NIX1NGUSlcXHQrPSBzY2hfc2ZxLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDI6b2JqLSQoQ09ORklHX05FVF9TQ0hfVEJGKVxcdCs9IHNjaF90YmYub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfTkVUX1NDSF9URVFMKVxcdCs9IHNjaF90ZXFsLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfUFJJTylcXHQrPSBzY2hfcHJpby5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjQ1Om9iai0kKENPTkZJR19ORVRfU0NIX01VTFRJUSlcXHQrPSBzY2hfbXVsdGlxLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDY6b2JqLSQoQ09ORklHX05FVF9TQ0hfTkVURU0pXFx0Kz0gc2NoX25ldGVtLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDc6b2JqLSQoQ09ORklHX05FVF9TQ0hfRFJSKVxcdCs9IHNjaF9kcnIub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo0ODpvYmotJChDT05GSUdfTkVUX1NDSF9QTFVHKVxcdCs9IHNjaF9wbHVnLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NDk6b2JqLSQoQ09ORklHX05FVF9TQ0hfRVRTKVxcdCs9IHNjaF9ldHMub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo1MDpvYmotJChDT05GSUdfTkVUX1NDSF9NUVBSSU8pXFx0Kz0gc2NoX21xcHJpby5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjUxOm9iai0kKENPTkZJR19ORVRfU0NIX01RUFJJT19MSUIpICs9IHNjaF9tcXByaW9fbGliLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTI6b2JqLSQoQ09ORklHX05FVF9TQ0hfU0tCUFJJTylcXHQrPSBzY2hfc2ticHJpby5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjUzOm9iai0kKENPTkZJR19ORVRfU0NIX0NIT0tFKVxcdCs9IHNjaF9jaG9rZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjU0Om9iai0kKENPTkZJR19ORVRfU0NIX1FGUSlcXHQrPSBzY2hfcWZxLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTU6b2JqLSQoQ09ORklHX05FVF9TQ0hfQ09ERUwpXFx0Kz0gc2NoX2NvZGVsLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTY6b2JqLSQoQ09ORklHX05FVF9TQ0hfRlFfQ09ERUwpXFx0Kz0gc2NoX2ZxX2NvZGVsLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NTc6b2JqLSQoQ09ORklHX05FVF9TQ0hfQ0FLRSlcXHQrPSBzY2hfY2FrZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19ORVRfU0NIX0ZRKVxcdCs9IHNjaF9mcS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjU5Om9iai0kKENPTkZJR19ORVRfU0NIX0hIRilcXHQrPSBzY2hfaGhmLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjA6b2JqLSQoQ09ORklHX05FVF9TQ0hfUElFKVxcdCs9IHNjaF9waWUub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo2MTpvYmotJChDT05GSUdfTkVUX1NDSF9GUV9QSUUpXFx0Kz0gc2NoX2ZxX3BpZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjYyOm9iai0kKENPTkZJR19ORVRfU0NIX0NCUylcXHQrPSBzY2hfY2JzLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjM6b2JqLSQoQ09ORklHX05FVF9TQ0hfRVRGKVxcdCs9IHNjaF9ldGYub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo2NDpvYmotJChDT05GSUdfTkVUX1NDSF9UQVBSSU8pXFx0Kz0gc2NoX3RhcHJpby5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjY1Om9iai0kKENPTkZJR19ORVRfU0NIX0JQRilcXHQrPSBicGZfcWRpc2Mub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo2NjpvYmotJChDT05GSUdfTkVUX1NDSF9EVUFMUEkyKVxcdCs9IHNjaF9kdWFscGkyLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtNjctXFxubmV0L3NjaGVkL01ha2VmaWxlOjY4Om9iai0kKENPTkZJR19ORVRfQ0xTX1UzMilcXHQrPSBjbHNfdTMyLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6Njk6b2JqLSQoQ09ORklHX05FVF9DTFNfUk9VVEU0KVxcdCs9IGNsc19yb3V0ZS5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjcwOm9iai0kKENPTkZJR19ORVRfQ0xTX0ZXKVxcdCs9IGNsc19mdy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjcxOm9iai0kKENPTkZJR19ORVRfQ0xTX0JBU0lDKVxcdCs9IGNsc19iYXNpYy5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjcyOm9iai0kKENPTkZJR19ORVRfQ0xTX0ZMT1cpXFx0Kz0gY2xzX2Zsb3cub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo3MzpvYmotJChDT05GSUdfTkVUX0NMU19DR1JPVVApXFx0Kz0gY2xzX2Nncm91cC5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjc0Om9iai0kKENPTkZJR19ORVRfQ0xTX0JQRilcXHQrPSBjbHNfYnBmLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NzU6b2JqLSQoQ09ORklHX05FVF9DTFNfRkxPV0VSKVxcdCs9IGNsc19mbG93ZXIub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo3NjpvYmotJChDT05GSUdfTkVUX0NMU19NQVRDSEFMTClcXHQrPSBjbHNfbWF0Y2hhbGwub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo3NzpvYmotJChDT05GSUdfTkVUX0VNQVRDSClcXHQrPSBlbWF0Y2gub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo3ODpvYmotJChDT05GSUdfTkVUX0VNQVRDSF9DTVApXFx0Kz0gZW1fY21wLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6Nzk6b2JqLSQoQ09ORklHX05FVF9FTUFUQ0hfTkJZVEUpXFx0Kz0gZW1fbmJ5dGUub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo4MDpvYmotJChDT05GSUdfTkVUX0VNQVRDSF9VMzIpXFx0Kz0gZW1fdTMyLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6ODE6b2JqLSQoQ09ORklHX05FVF9FTUFUQ0hfTUVUQSlcXHQrPSBlbV9tZXRhLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6ODI6b2JqLSQoQ09ORklHX05FVF9FTUFUQ0hfVEVYVClcXHQrPSBlbV90ZXh0Lm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6ODM6b2JqLSQoQ09ORklHX05FVF9FTUFUQ0hfQ0FOSUQpXFx0Kz0gZW1fY2FuaWQub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo4NDpvYmotJChDT05GSUdfTkVUX0VNQVRDSF9JUFNFVClcXHQrPSBlbV9pcHNldC5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjg1Om9iai0kKENPTkZJR19ORVRfRU1BVENIX0lQVClcXHQrPSBlbV9pcHQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMDozMTowNS40ODk4NDUxNDFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTk2ODI2OTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5hdmlnYXRpbmcgdGhlIEtlcm5lbCdzIE5ldHdvcmsgU2NoZWR1bGVyIEJ1aWxkIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0aGUgbmV0d29yayBzY2hlZHVsZXIgY29tcG9uZW50cyBhcmUgYnVpbHQsIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGBzY2hfZ2VuZXJpYy5jYC4gUmlnaHQsIHNvIEkgc2VlIHRoYXQgdGhpcyBpcyBjb21waWxlZCBpbnRvIGBuZXQvc2NoZWQvc2NoX2dlbmVyaWMub2AuIFByZXR0eSBzdGFuZGFyZC4gQW5kIHRoYXQgb2JqZWN0IGZpbGUgaXMgZGVjbGFyZWQgYXMgYG9iai15YCB3aXRoaW4gdGhlIGBuZXQvc2NoZWQvTWFrZWZpbGVgLiBTbyBmYXIsIHNvIGdvb2QuIE5vIHN1cnByaXNlcyB0aGVyZS4gQnV0LCBob2xkIG9uIGEgc2Vjb25kLi4uIEkga25vdyB0aGF0IGBuZXQvc2NoZWQvTWFrZWZpbGVgIGlzICppdHNlbGYqIGluY2x1ZGVkIGZyb20gYG5ldC9NYWtlZmlsZWAuIFJpZ2h0LiBUaGF0J3MgdGhlIGtleS4gSSBuZWVkIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmN5IGNoYWluIGJhY2sgdXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgaW5jbHVzaW9uIG9mIGBuZXQvc2NoZWQvTWFrZWZpbGVgIGFmZmVjdHMgdGhlIG92ZXJhbGwgYnVpbGQgcHJvY2Vzcy4gTGV0J3MgcHVsbCB1cCB0aGF0IGBuZXQvTWFrZWZpbGVgIGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uIGF0IHRoZSBoaWdoZXIgbGV2ZWwuIFRoaXMgc2hvdWxkIGhlbHAgbWUgcGlucG9pbnQgd2hlcmUgYHNjaF9nZW5lcmljLm9gIHVsdGltYXRlbHkgZml0cyBpbnRvIHRoZSBicm9hZGVyIGtlcm5lbCBidWlsZCBsYW5kc2NhcGUgYW5kIGhvdyBpdHMgY29tcGlsYXRpb24gaXMgb3JjaGVzdHJhdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDE5LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTA6MzE6MTQuNDg2Njc0NTgyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTU5MzEyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY2hlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19MTEMpXFx0XFx0Kz0gbGxjL1xcbm5ldC9NYWtlZmlsZToxNTpvYmoteVxcdFxcdFxcdFxcdCs9IGV0aGVybmV0LyA4MDIvIHNjaGVkLyBuZXRsaW5rLyBicGYvIGV0aHRvb2wvXFxubmV0L01ha2VmaWxlLTE2LW9iai0kKENPTkZJR19ORVRGSUxURVIpXFx0XFx0Kz0gbmV0ZmlsdGVyL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMDozMToxNC41MzYyNzU2NTdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUxMTU0NjQyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBDb21waWxhdGlvbiBhbmQgSW5pdGlhbGl6YXRpb24gb2YgYHBmaWZvX2Zhc3RgKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBob3cgdGhlIGBuZXQvc2NoZWQvYCBkaXJlY3Rvcnkgd29ya3Mgd2l0aGluIHRoZSBrZXJuZWwuIEl0IHNlZW1zIGxpa2UgdGhlIGVudGlyZSBkaXJlY3RvcnksIGF0IGxlYXN0IHRoZSBjb3JlIGNvbXBvbmVudHMsIGFyZSBjb21waWxlZCBpZiBgQ09ORklHX05FVGAgaXMgc2V0LiBOb3csIHRoZSBgcGZpZm9fZmFzdGAgcWRpc2Mga2VlcHMgY29taW5nIHVwLCBzcGVjaWZpY2FsbHkgd2l0aCBmdW5jdGlvbnMgbGlrZSBgcGZpZm9fZmFzdF9pbml0YCBhbmQgYHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbmAuIEkgd2FzIGN1cmlvdXMgaWYgdGhlcmUgd2FzIGEgc2VwYXJhdGUgY29uZmlnIG9wdGlvbiBmb3IgYHBmaWZvX2Zhc3RgIGl0c2VsZiwgYnV0IHRoYXQgc2VlbXMgbm90IHRvIGJlIHRoZSBjYXNlLCBhcyBpdCdzIGRpcmVjdGx5IGluY2x1ZGVkIGFzIGBvYmoteWAgd2l0aGluIGBzY2hfZ2VuZXJpYy5jYC5cblxuQSBrZXkgcG9pbnQgYXJpc2VzOiB0byBhY3R1YWxseSAqY29uZmlndXJlKiB0aGVzZSBxZGlzY3MgdXNpbmcgbmV0bGluaywgd2UgYWJzb2x1dGVseSBuZWVkIGBDT05GSUdfTkVUX1NDSEVEYC4gU28sIGhlcmUncyBteSBjcml0aWNhbCBxdWVzdGlvbjogY2FuIGBwZmlmb19mYXN0YCBzdGlsbCBiZSAqaW5pdGlhbGl6ZWQqIGV2ZW4gaWYgYENPTkZJR19ORVRfU0NIRURgIGlzIGRpc2FibGVkPyBSZW1lbWJlciwgaW5pdGlhbGl6YXRpb24gaXMgZGlzdGluY3QgZnJvbSBjb25maWd1cmF0aW9uLiBMb29raW5nIGF0IHRoZSBjb2RlIGFnYWluLCBJJ3ZlIGdvdCB0byBmaW5kIHdoZW4gYHBmaWZvX2Zhc3RfaW5pdGAgaXMgY2FsbGVkIGFuZCBhc3Nlc3MgaXRzIGRlcGVuZGVuY3kgb24gYENPTkZJR19ORVRfU0NIRURgLiBJdCdzIGNsZWFybHkgY2FsbGVkIGR1cmluZyB0aGUgcWRpc2MncyBpbml0aWFsaXphdGlvbiwgd2hpY2ggaXMgYSBrZXkgcHJvY2Vzcy4gVG8gY2xhcmlmeSwgSSBuZWVkIHRvIGNoZWNrIGBuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY2AgZm9yIGFueSBjbHVlcyByZWdhcmRpbmcgdGhpcyBpbml0aWFsaXphdGlvbiBsb2dpYy4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0MDUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTA6MzE6MjAuMDQ3ODI0NjExWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODI5NTA5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwZmlmb19mYXN0X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF9nZW5lcmljLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9ODU5PXN0YXRpYyB2b2lkIHBmaWZvX2Zhc3RfcmVzZXQoc3RydWN0IFFkaXNjICpxZGlzYylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTg2OC1cXHRcXHQvKiBOVUxMIHJpbmcgaXMgcG9zc2libGUgaWYgZGVzdHJveSBwYXRoIGlzIGR1ZSB0byBhIGZhaWxlZFxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjg2OTpcXHRcXHQgKiBza2JfYXJyYXlfaW5pdCgpIGluIHBmaWZvX2Zhc3RfaW5pdCgpIGNhc2UuXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtODcwLVxcdFxcdCAqL1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9ODg5PXN0YXRpYyBpbnQgcGZpZm9fZmFzdF9kdW1wKHN0cnVjdCBRZGlzYyAqcWRpc2MsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05MDEtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTAyOnN0YXRpYyBpbnQgcGZpZm9fZmFzdF9pbml0KHN0cnVjdCBRZGlzYyAqcWRpc2MsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05MDMtXFx0XFx0XFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9OTMzPXN0YXRpYyB2b2lkIHBmaWZvX2Zhc3RfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk0MS1cXHRcXHQvKiBOVUxMIHJpbmcgaXMgcG9zc2libGUgaWYgZGVzdHJveSBwYXRoIGlzIGR1ZSB0byBhIGZhaWxlZFxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjk0MjpcXHRcXHQgKiBza2JfYXJyYXlfaW5pdCgpIGluIHBmaWZvX2Zhc3RfaW5pdCgpIGNhc2UuXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTQzLVxcdFxcdCAqL1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9OTc2PXN0cnVjdCBRZGlzY19vcHMgcGZpZm9fZmFzdF9vcHMgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk4MS1cXHQucGVla1xcdFxcdD1cXHRwZmlmb19mYXN0X3BlZWssXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTgyOlxcdC5pbml0XFx0XFx0PVxcdHBmaWZvX2Zhc3RfaW5pdCxcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05ODMtXFx0LmRlc3Ryb3lcXHQ9XFx0cGZpZm9fZmFzdF9kZXN0cm95LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMDozMToyMC4wOTYxMjUzMjZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg3NTQ4OTE2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkluaXRpYWwgRGV2aWNlIENvbmZpZ3VyYXRpb24gVGhvdWdodHMqKlxuXG5SaWdodCwgc28gYSBuZXR3b3JrIGRldmljZSBpcyBicm91Z2h0IGludG8gZXhpc3RlbmNlIOKAkyBuYXR1cmFsbHksIGl0IG5lZWRzIHNvbWUgaW5pdGlhbCBxdWFsaXR5IG9mIHNlcnZpY2UgKFFvUykgaGFuZGxpbmcsIGEgcXVldWUgZGlzY2lwbGluZSBvciAqcWRpc2MqLiBJIGltbWVkaWF0ZWx5IHN0YXJ0IHRoaW5raW5nIGFib3V0IGhvdyB0aGF0IGdldHMgc2V0IHVwLiBNeSBtaW5kIGdvZXMgc3RyYWlnaHQgdG8gdGhlIGNvcmU6IGlzIGl0IGhhbmRsZWQgdGhyb3VnaCBgYXR0YWNoX29uZV9kZWZhdWx0X3FkaXNjYCBvciBwZXJoYXBzIGBkZXZfaW5pdF9zY2hlZHVsZXJgPyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGV4YWN0IGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIHByZWNpc2UgZGVmYXVsdCBpbml0aWFsaXphdGlvbiBzdGVwcyBvbiBkZXZpY2UgY3JlYXRpb24uIFVuZGVyc3RhbmRpbmcgdGhpcyBpbml0aWFsIGFzc2lnbm1lbnQgaXMgY3J1Y2lhbCBmb3IgZGVidWdnaW5nIGFuZCBvcHRpbWl6YXRpb24uIEl0J3MgdGhlIGZvdW5kYXRpb24gZm9yIGFueSBmdXJ0aGVyIHRyYWZmaWMgc2hhcGluZyBvciBzY2hlZHVsaW5nIEkgbWlnaHQgYXBwbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0MzksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMDozMToyMy45NzE2MTc4NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgyMzgyNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGV2X2luaXRfc2NoZWR1bGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTE0ODA9aW50IGRldl9xZGlzY19jaGFuZ2VfdHhfcXVldWVfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNTAxLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE1MDI6c3RhdGljIHZvaWQgZGV2X2luaXRfc2NoZWR1bGVyX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTUwMy1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1MTEtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTUxMjp2b2lkIGRldl9pbml0X3NjaGVkdWxlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1MTMte1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1MTQtXFx0cmN1X2Fzc2lnbl9wb2ludGVyKGRldi1cXHUwMDNlcWRpc2MsIFxcdTAwMjZub29wX3FkaXNjKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxNTE1OlxcdG5ldGRldl9mb3JfZWFjaF90eF9xdWV1ZShkZXYsIGRldl9pbml0X3NjaGVkdWxlcl9xdWV1ZSwgXFx1MDAyNm5vb3BfcWRpc2MpO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1MTYtXFx0aWYgKGRldl9pbmdyZXNzX3F1ZXVlKGRldikpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTUxNzpcXHRcXHRkZXZfaW5pdF9zY2hlZHVsZXJfcXVldWUoZGV2LCBkZXZfaW5ncmVzc19xdWV1ZShkZXYpLCBcXHUwMDI2bm9vcF9xZGlzYyk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTUxOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTA6MzE6MjQuMDE5ODYxNzE1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NDgyNzk1NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNoZWNraW5nIGBxZGlzY19jcmVhdGVfZGZsdGAqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhlIGBxZGlzY19jcmVhdGVfZGZsdGAgZnVuY3Rpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgZGVmYXVsdCBxdWV1ZSBkaXNjaXBsaW5lIGNyZWF0aW9uIHBhdGguIEknbSBwcm9iYWJseSBsb29raW5nIGZvciBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIHRoZSBjcmVhdGlvbiBvZiBhIGRlZmF1bHQgcWRpc2Mgd2hlbiBubyBzcGVjaWZpYyB0eXBlIGlzIHNwZWNpZmllZCBkdXJpbmcgaW50ZXJmYWNlIHNldHVwLiBJcyBpdCB1c2luZyBhIGhhcmRjb2RlZCBkZWZhdWx0PyBPciBpcyB0aGVyZSBzb21lIGtpbmQgb2YgbmVnb3RpYXRpb24gaGFwcGVuaW5nIHdpdGggdGhlIG5ldHdvcmtpbmcgc3RhY2sgdG8gZGV0ZXJtaW5lIHRoZSBiZXN0IGNob2ljZSBiYXNlZCBvbiBhdmFpbGFibGUgbW9kdWxlcyBhbmQgc3lzdGVtIGNvbmZpZ3VyYXRpb24/IEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgaXQgaW50ZXJhY3RzIHdpdGggZGlmZmVyZW50IGxpbmsgbGF5ZXIgdGVjaG5vbG9naWVzIOKAkyBpcyB0aGVyZSBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGluZ3MgbGlrZSBWTEFOcywgYm9uZGluZywgb3IgZXZlbiBtb3JlIGVzb3RlcmljIGRldmljZXM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbiBpbmZsdWVuY2UgdGhlIGFjdHVhbCBxZGlzYyB0aGF0IGdldHMgaW5zdGFudGlhdGVkLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCB3aGF0IGRhdGEgc3RydWN0dXJlcyBpdCdzIHRvdWNoaW5nLCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgZXJyb3JzLCBhbmQgaWYgdGhlcmUncyBhbnkgYWxsb2NhdGlvbiBvciBkZWFsbG9jYXRpb24gb2YgcmVzb3VyY2VzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzIG9yIHJlc291cmNlIGV4aGF1c3Rpb24gc2NlbmFyaW9zLiBJbiBlc3NlbmNlLCBJIHdhbnQgdG8gY29uZmlybSBJIHVuZGVyc3RhbmQgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kIHdoZXJlIGl0IGZpdHMgaW4gdGhlIGJyb2FkZXIgcXVldWVpbmcgZGlzY2lwbGluZSBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwMTMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMDozMToyOC41NjgxNDMzNDZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MzE5MjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInFkaXNjX2NyZWF0ZV9kZmx0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTk5ND1zdHJ1Y3QgUWRpc2MgKnFkaXNjX2FsbG9jKHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwNTItXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTA1MzpzdHJ1Y3QgUWRpc2MgKnFkaXNjX2NyZWF0ZV9kZmx0KHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSxcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDU0LVxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBRZGlzY19vcHMgKm9wcyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwNzktfVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEwODA6RVhQT1JUX1NZTUJPTChxZGlzY19jcmVhdGVfZGZsdCk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTA4MS1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTEyMTk9c3RhdGljIHZvaWQgYXR0YWNoX29uZV9kZWZhdWx0X3FkaXNjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjMwLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEyMzE6XFx0cWRpc2MgPSBxZGlzY19jcmVhdGVfZGZsdChkZXZfcXVldWUsIG9wcywgVENfSF9ST09ULCBOVUxMKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjMyLVxcdGlmICghcWRpc2MpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMjQwPXN0YXRpYyB2b2lkIGF0dGFjaF9kZWZhdWx0X3FkaXNjcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTI1My1cXHR9IGVsc2Uge1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEyNTQ6XFx0XFx0cWRpc2MgPSBxZGlzY19jcmVhdGVfZGZsdCh0eHEsIFxcdTAwMjZtcV9xZGlzY19vcHMsIFRDX0hfUk9PVCwgTlVMTCk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTI1NS1cXHRcXHRpZiAocWRpc2MpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTA6MzE6MjguNjE0NDY3NjYxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0Mzc5Mjc4OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBwZmlmb19mYXN0YCBJbml0aWFsaXphdGlvbiBhbmQgUXVldWUgTGVuZ3RoIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGUgYHBmaWZvX2Zhc3RgIHF1ZXVpbmcgZGlzY2lwbGluZSBnZXRzIHNldCB1cCBhbmQgaG93IGl0cyBwYXJhbWV0ZXJzLCBzcGVjaWZpY2FsbHkgdGhlIHRyYW5zbWl0IHF1ZXVlIGxlbmd0aCwgY2FuIGJlIG1vZGlmaWVkLiBJIHNlZSB0aGF0IGBxZGlzY19jcmVhdGVfZGZsdGAgc2VlbXMgdG8gYmUgdGhlIGVudHJ5IHBvaW50LiBJdCBjaGVja3MgZm9yIGFuIGBpbml0YCBmdW5jdGlvbiB3aXRoaW4gdGhlIGBxZGlzYy1cdTAwM2VvcHNgIHN0cnVjdHVyZSBhbmQgY2FsbHMgaXQsIHBhc3NpbmcgYWxvbmcgdGhlIHFkaXNjIGl0c2VsZiwgYWxvbmcgd2l0aCBhIHBvdGVudGlhbCBleHRlbmRlZCBhY2suIFRoaXMgbWVhbnMgdGhhdCBgcGZpZm9fZmFzdF9pbml0YCBnZXRzIGV4ZWN1dGVkIHdoZW5ldmVyIGEgbmV0d29yayBkZXZpY2UgaXMgYnJvdWdodCB1cCBhbmQgaGFzIHRoZSBkZWZhdWx0IHF1ZXVpbmcgZGlzY2lwbGluZSBhdHRhY2hlZCDigJMgdGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLlxuXG5Ob3csIG15IG5leHQgcXVlc3Rpb24gaXMgYWJvdXQgYHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbmAuIFdoZW4gZG9lcyAqdGhhdCogZ2V0IGNhbGxlZD8gT2J2aW91c2x5LCBpdCBzdWdnZXN0cyBhIGNoYW5nZSBpbiBgdHhfcXVldWVfbGVuYCwgYnV0IEkgd2FudCB0byBiZSBleHBsaWNpdC4gVGltZSB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBgY2hhbmdlX3R4X3F1ZXVlX2xlbmAgdG8gYmUgY2VydGFpbi4gVW5kZXJzdGFuZGluZyB3aGVuIGFuZCB3aHkgdGhhdCB2YWx1ZSBpcyBtb2RpZmllZCBpcyBjcnVjaWFsIGZvciBwcmVkaWN0aW5nIGl0cyBiZWhhdmlvciBhbmQgdHVuaW5nIGl0IGlmIG5lZWRlZC4gTGV0J3MgZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSB3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGludm9rZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3NTgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTA6MzE6MzMuMDUyMzk3OTA3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTcyMzM0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjaGFuZ2VfdHhfcXVldWVfbGVuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTkzMz1zdGF0aWMgdm9pZCBwZmlmb19mYXN0X2Rlc3Ryb3koc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05NTItXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTUzOnN0YXRpYyBpbnQgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuKHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk1NC1cXHRcXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGludCBuZXdfbGVuKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9OTc2PXN0cnVjdCBRZGlzY19vcHMgcGZpZm9fZmFzdF9vcHMgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk4NS1cXHQuZHVtcFxcdFxcdD1cXHRwZmlmb19mYXN0X2R1bXAsXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTg2OlxcdC5jaGFuZ2VfdHhfcXVldWVfbGVuID0gIHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbixcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05ODctXFx0Lm93bmVyXFx0XFx0PVxcdFRISVNfTU9EVUxFLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTQzND1FWFBPUlRfU1lNQk9MKGRldl9kZWFjdGl2YXRlKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDM1LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0MzY6c3RhdGljIGludCBxZGlzY19jaGFuZ2VfdHhfcXVldWVfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTQzNy1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSlcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0NDEtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTQ0MjpcXHRpZiAob3BzLVxcdTAwM2VjaGFuZ2VfdHhfcXVldWVfbGVuKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0NDM6XFx0XFx0cmV0dXJuIG9wcy1cXHUwMDNlY2hhbmdlX3R4X3F1ZXVlX2xlbihxZGlzYywgZGV2LVxcdTAwM2V0eF9xdWV1ZV9sZW4pO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0NDQtXFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xNDc4PUVYUE9SVF9TWU1CT0wobXFfY2hhbmdlX3JlYWxfbnVtX3R4KTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDc5LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0ODA6aW50IGRldl9xZGlzY19jaGFuZ2VfdHhfcXVldWVfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTQ4MS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDg5LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBkZXYtXFx1MDAzZW51bV90eF9xdWV1ZXM7IGkrKykge1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0OTA6XFx0XFx0cmV0ID0gcWRpc2NfY2hhbmdlX3R4X3F1ZXVlX2xlbihkZXYsIFxcdTAwMjZkZXYtXFx1MDAzZV90eFtpXSk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTQ5MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTA6MzE6MzMuMDk4MTI2MTYyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTIwMzgyMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBgZGV2X3FkaXNjX2NoYW5nZV90eF9xdWV1ZV9sZW5gIGFuZCBgdHhfcXVldWVfbGVuYCoqXG5cbk9rYXksIHNvIGBkZXZfcWRpc2NfY2hhbmdlX3R4X3F1ZXVlX2xlbmAuIFRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZCB3aGVuZXZlciB0aGUgYHR4X3F1ZXVlX2xlbmAgKHRyYW5zbWlzc2lvbiBxdWV1ZSBsZW5ndGgpIG9mIGEgbmV0d29yayBkZXZpY2UgaXMgYWx0ZXJlZC4gIEFuZCwgdGhpbmtpbmcgYWJvdXQgaXQsIHRoYXQgdXN1YWxseSBoYXBwZW5zIHZpYSBhIG5ldGxpbmsgaW50ZXJmYWNlLCBwcm9iYWJseSB1c2luZyBzb21ldGhpbmcgbGlrZSBgaXAgbGluayBzZXQgZGV2IGV0aDAgdHhxdWV1ZWxlbiAxMDAwMGAuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIFRoZSBpbnRlcmVzdGluZyBwb2ludCBpcywgaXQgZG9lc24ndCAqcmVxdWlyZSogdGhlIGBDT05GSUdfTkVUX1NDSEVEYCBvcHRpb24gdG8gYmUgZW5hYmxlZC4gTWFrZXMgc2Vuc2UsIGB0eF9xdWV1ZV9sZW5gIGlzIGEgZnVuZGFtZW50YWwgYXR0cmlidXRlIG9mIHRoZSBgbmV0X2RldmljZWAgc3RydWN0LiAgSXQncyBwcmV0dHkgc3RhbmRhcmQsIGJha2VkIGluLCByYXRoZXIgdGhhbiBhIHNwZWNpYWxpemVkIHNjaGVkdWxpbmcgZmVhdHVyZS5cblxuQnV0IHdhaXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgY2FsbGVkIGZyb20uIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGluIGBuZXQvY29yZS9kZXYuY2AgdG8gbWFrZSBzdXJlIG15IGluaXRpYWwgYXNzZXNzbWVudCBpcyBjb3JyZWN0LiBOZWVkIHRvIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucyB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBzb21ldGhpbmcgZnVuZGFtZW50YWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODA5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDEwOjMxOjM3LjQ5MDE2NjUyNloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA2Mzc0NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGV2X3FkaXNjX2NoYW5nZV90eF9xdWV1ZV9sZW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NvcmUvZGV2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUvZGV2LmM9OTkzMD1pbnQgbmV0aWZfY2hhbmdlX3R4X3F1ZXVlX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG5ld19sZW4pXFxuLS1cXG5uZXQvY29yZS9kZXYuYy05OTQzLVxcdFxcdFxcdGdvdG8gZXJyX3JvbGxiYWNrO1xcbm5ldC9jb3JlL2Rldi5jOjk5NDQ6XFx0XFx0cmVzID0gZGV2X3FkaXNjX2NoYW5nZV90eF9xdWV1ZV9sZW4oZGV2KTtcXG5uZXQvY29yZS9kZXYuYy05OTQ1LVxcdFxcdGlmIChyZXMpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDEwOjMxOjM3LjU0MDgwOTUyMVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDkwNTYzMTA0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgcGZpZm9fZmFzdCBRZGlzYyBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIGBuZXRpZl9jaGFuZ2VfdHhfcXVldWVfbGVuYCB0cmlnZ2VycyBjYWxscyB0byBgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuYCBhbmQsIGJ5IGltcGxpY2F0aW9uIGR1cmluZyBpbml0aWFsaXphdGlvbiwgYHBmaWZvX2Zhc3RfaW5pdGAuIFRoaXMgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBjcmVhdGluZyBhIG5ldHdvcmsgZGV2aWNlIGFuZCBzdWJzZXF1ZW50bHkgbW9kaWZ5aW5nIGl0cyBgdHhxdWV1ZWxlbmAgZGlyZWN0bHkgcmVhY2hlcyB0aGVzZSBmdW5jdGlvbnMuIFRoZSBiZWF1dHkgb2YgdGhpcyBpcyB0aGF0IHRoZSBvbmx5IHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGFwcGVhcnMgdG8gYmUgYENPTkZJR19ORVRgIOKAkyBubyBlc290ZXJpYyBzZXR0aW5ncyBuZWVkZWQuXG5cbk5vdywgaXMgYHBmaWZvX2Zhc3RgIGFjdHVhbGx5IHRoZSAqZGVmYXVsdCogcWRpc2M/IFllcyEgYGRlZmF1bHRfcWRpc2Nfb3BzYCBpcyBzZXQgdG8gYFx1MDAyNnBmaWZvX2Zhc3Rfb3BzYC4gVGhhdCBtZWFucyBhIGxhcmdlIG51bWJlciBvZiBkZXZpY2VzIHdpbGwgYmUgdXNpbmcgdGhpcyBieSBkZWZhdWx0LCB3aGljaCBtYWtlcyB0aGUgcGF0Y2ggaGlnaGx5IHJlbGV2YW50LlxuXG5SZWdhcmRpbmcgdGhlIHBhdGNoIGl0c2VsZiwgaXQncyBtb2RpZnlpbmcgYHBmaWZvX2Zhc3RfaW5pdGAgYW5kIGBwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW5gLiBXaGlsZSB0aGVzZSBhcmUgKnN0YXRpYyogZnVuY3Rpb25zLCB0aGVpciBhZGRyZXNzZXMgYXJlIGJlaW5nIHRha2VuIGFuZCBwbGFjZWQgaW50byBgcGZpZm9fZmFzdF9vcHNgLCB3aGljaCBtZWFucyB0aGV5IGFyZSBub3QgaW5saW5lZCBhbmQgaGF2ZSBkaXN0aW5jdCBzeW1ib2xzLiBUaGlzIGlzIGV4YWN0bHkgd2hhdCB3ZSB3YW50IGZvciBmb2N1cyBzeW1ib2xzLlxuXG5JJ3ZlIGNvbmZpcm1lZCB0aGF0IGBDT05GSUdfTkVUYCBpcyB0aGUgb25seSByZXF1aXJlbWVudCwgd2hpY2ggaXMgYSBncmVhdCBzdGFydGluZyBwb2ludCBmb3IgZnV6emluZy4gVGhlIHNlbGZ0ZXN0IHVzZXMgYHRjIHFkaXNjIGFkZCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290IHBmaWZvX2Zhc3RgLCB3aGljaCBjb25maXJtcyBpdHMgZGlyZWN0IHVzYWdlLiBIb3dldmVyLCB0aGUgZGVmYXVsdCBxZGlzYyBpbml0aWFsaXphdGlvbiBhbmQgYHR4cXVldWVsZW5gIGNoYW5nZXMgdmlhIGBpcCBsaW5rYCBkb24ndCBuZWVkIGBDT05GSUdfTkVUX1NDSEVEYC4gVGhpcyBpcyBhIGNydWNpYWwgcG9pbnQ6IHRoZSBidWcgY2FuIGJlIHRyaWdnZXJlZCBieSBtZXJlbHkgbW9kaWZ5aW5nIGB0eHF1ZXVlbGVuYCBvbiBhIGRldmljZSAqYWxyZWFkeSogdXNpbmcgYHBmaWZvX2Zhc3RgIGJ5IGRlZmF1bHQuXG5cbkxvb2tpbmcgYXQgdGhlIGNvZGUgY2hhbmdlczogdGhlIHBhdGNoIGxpbWl0cyB0aGUgcmluZyBzaXplIHRvIDY1NTM1IGFuZCBzd2l0Y2hlcyB0aGUgYWxsb2NhdGlvbiBmbGFnIHRvIGBHRlBfS0VSTkVMX0FDQ09VTlRgLiBUaGlzIGlzIGEgbWVtb3J5IHVzYWdlIHByZXZlbnRpb24gbWVhc3VyZSwgZ3VhcmRpbmcgYWdhaW5zdCBleHRyZW1lIGB0eHF1ZXVlbGVuYCB2YWx1ZXMuIFRoaXMgc2NyZWFtcyBmb3IgZnV6emluZy5cblxuTXkgZGVjaXNpb24gaXM6XG4qICAgKipXb3J0aEZ1enppbmc6IHRydWUqKlxuKiAgICoqRm9jdXNTeW1ib2xzOioqIFxcW1wicGZpZm9cXF9mYXN0XFxfaW5pdFwiLCBcInBmaWZvXFxfZmFzdFxcX2NoYW5nZVxcX3R4XFxfcXVldWVcXF9sZW5cIl1cbiogICAqKkVuYWJsZUNvbmZpZ3M6IFxcW+KAnE5FVFwiXSoqXG4qICAgKipSZWFzb25pbmc6KiogXCJUaGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgYHR4X3F1ZXVlX2xlbmAgY2hhbmdlIG9mIHRoZSBgcGZpZm9fZmFzdGAgcWRpc2MuIFNwZWNpZmljYWxseSwgaXQgY2FwcyB0aGUgcXVldWUgbGVuZ3RoIHRvIDY1NTM1IGFuZCBpbnRyb2R1Y2VzIG1lbW9yeSBhY2NvdW50aW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHdpdGhpbiByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuXCJcblxuXG4iLCJJbnB1dFRva2VucyI6MTEzMzksIk91dHB1dFRva2VucyI6MTA1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMDozMTo1Mi40NDY0NDMyMloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5OTA5NjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwZmlmb19mYXN0X2luaXRcIixcbiAgICBcInBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdHhfcXVldWVfbGVuIGNoYW5nZSBsb2dpYyBvZiB0aGUgcGZpZm9fZmFzdCBxZGlzYywgY2FwcGluZyB0aGUgcXVldWUgbGVuZ3RoIHRvIDY1NTM1IGFuZCBhZGRpbmcgbWVtb3J5IGFjY291bnRpbmcuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBmaWZvX2Zhc3RfaW5pdFwiLFxuICAgIFwicGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCB0eF9xdWV1ZV9sZW4gY2hhbmdlIGxvZ2ljIG9mIHRoZSBwZmlmb19mYXN0IHFkaXNjLCBjYXBwaW5nIHRoZSBxdWV1ZSBsZW5ndGggdG8gNjU1MzUgYW5kIGFkZGluZyBtZW1vcnkgYWNjb3VudGluZy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDEwOjMxOjUyLjUyNjM1OTU3MloiLCJTZXEiOjIzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQxMTAwMjg5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDEwOjMxOjUyLjUyNjkwNTIzMloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4NDEwNDUzMDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2FwIG9uIHRoZSByaW5nIHNpemUgKGBxbGVuYCBhbmQgYG5ld19sZW5gKSB0byA2NTUzNSBpbiBgcGZpZm9fZmFzdF9pbml0YCBhbmQgYHBmaWZvX2Zhc3RfY2hhbmdlX3R4X3F1ZXVlX2xlbmAsIGFuZCBjaGFuZ2VzIHRoZSBhbGxvY2F0aW9uIGZsYWcgZnJvbSBgR0ZQX0tFUk5FTGAgdG8gYEdGUF9LRVJORUxfQUNDT1VOVGAuIFRoZXNlIGNoYW5nZXMgYXJlIGludGVuZGVkIHRvIHByZXZlbnQgZXhjZXNzaXZlIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBhZGQgbWVtb3J5IGFjY291bnRpbmcuIFRoZXkgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbW9kaWZ5IHBhZGRpbmcsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gQW55IGlzc3VlcyByZWxhdGVkIHRvIG1lbW9yeSBhbGxvY2F0aW9uIHNpemVzIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgd291bGQgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBtZW1vcnkgZGVidWdnaW5nIHRvb2xzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MsIHNvIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5N2UyNWI2MDQ5YmY1NDlhYmMyMGM2ZTQ4MDU0ZTdkYzVjNTRjZTkyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjAgMTA6MzA6NDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYyBiL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXG5pbmRleCBlZjJiNGJmNTE1NjQxLi5lOThmZDIzNmFmYTA0IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXG5AQCAtOTEwLDExICs5MTAsMTcgQEAgc3RhdGljIGludCBwZmlmb19mYXN0X2luaXQoc3RydWN0IFFkaXNjICpxZGlzYywgc3RydWN0IG5sYXR0ciAqb3B0LFxuIFx0aWYgKCFxbGVuKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbitcdGlmIChxbGVuIFx1MDAzZSA2NTUzNSkge1xuK1x0XHRwcl93YXJuX3JhdGVsaW1pdGVkKFwicGZpZm9fZmFzdDogY2FwcGluZyByaW5nIHNpemUgJXUgdG8gNjU1MzUgZm9yIGRldiAlc1xcblwiLFxuK1x0XHRcdFx0ICAgIHFsZW4sIHFkaXNjX2RldihxZGlzYyktXHUwMDNlbmFtZSk7XG4rXHRcdHFsZW4gPSA2NTUzNTtcbitcdH1cbitcbiBcdGZvciAocHJpbyA9IDA7IHByaW8gXHUwMDNjIFBGSUZPX0ZBU1RfQkFORFM7IHByaW8rKykge1xuIFx0XHRzdHJ1Y3Qgc2tiX2FycmF5ICpxID0gYmFuZDJsaXN0KHByaXYsIHByaW8pO1xuIFx0XHRpbnQgZXJyO1xuIFxuLVx0XHRlcnIgPSBza2JfYXJyYXlfaW5pdChxLCBxbGVuLCBHRlBfS0VSTkVMKTtcbitcdFx0ZXJyID0gc2tiX2FycmF5X2luaXQocSwgcWxlbiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdH1cbkBAIC05NTcsOCArOTYzLDE0IEBAIHN0YXRpYyBpbnQgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuKHN0cnVjdCBRZGlzYyAqc2NoLFxuIFx0XHRiYW5kc1twcmlvXSA9IHE7XG4gXHR9XG4gXG4rXHRpZiAobmV3X2xlbiBcdTAwM2UgNjU1MzUpIHtcbitcdFx0cHJfd2Fybl9yYXRlbGltaXRlZChcInBmaWZvX2Zhc3Q6IGNhcHBpbmcgcmluZyBzaXplICV1IHRvIDY1NTM1IGZvciBkZXYgJXNcXG5cIixcbitcdFx0XHRcdCAgICBuZXdfbGVuLCBxZGlzY19kZXYoc2NoKS1cdTAwM2VuYW1lKTtcbitcdFx0bmV3X2xlbiA9IDY1NTM1O1xuK1x0fVxuK1xuIFx0cmV0dXJuIHNrYl9hcnJheV9yZXNpemVfbXVsdGlwbGVfYmgoYmFuZHMsIFBGSUZPX0ZBU1RfQkFORFMsIG5ld19sZW4sXG4tXHRcdFx0XHRcdCAgICBHRlBfS0VSTkVMKTtcbitcdFx0XHRcdFx0ICAgIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gfVxuIFxuIHN0cnVjdCBRZGlzY19vcHMgcGZpZm9fZmFzdF9vcHMgX19yZWFkX21vc3RseSA9IHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9wZmlmb19mYXN0Lmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9wZmlmb19mYXN0Lmpzb25cbmluZGV4IDMwZGEyN2ZlODgwNjcuLmIzODMwMTcyZmU0ZjQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy9wZmlmb19mYXN0Lmpzb25cbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3BmaWZvX2Zhc3QuanNvblxuQEAgLTEwNSw1ICsxMDUsMjggQEBcbiAgICAgICAgIFwidGVhcmRvd25cIjogW1xuICAgICAgICAgICAgIFwiJFRDIHFkaXNjIGRlbCBkZXYgJERVTU1ZIGhhbmRsZSAxOiByb290XCJcbiAgICAgICAgIF1cbisgICAgfSxcbisgICAge1xuKyAgICAgICAgXCJpZFwiOiBcIjAyNDlcIixcbisgICAgICAgIFwibmFtZVwiOiBcIkNyZWF0ZSBwZmlmb19mYXN0IHdpdGggaHVnZSB0eF9xdWV1ZV9sZW4gKHJpbmcgY2FwIHJlZ3Jlc3Npb24pXCIsXG4rICAgICAgICBcImNhdGVnb3J5XCI6IFtcbisgICAgICAgICAgICBcInFkaXNjXCIsXG4rICAgICAgICAgICAgXCJwZmlmb19mYXN0XCJcbisgICAgICAgIF0sXG4rICAgICAgICBcInBsdWdpbnNcIjoge1xuKyAgICAgICAgICAgIFwicmVxdWlyZXNcIjogXCJuc1BsdWdpblwiXG4rICAgICAgICB9LFxuKyAgICAgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgICAgICAgXCIkSVAgbGluayBzZXQgZGV2ICREVU1NWSB0eHF1ZXVlbGVuIDEwMDAwMDAwMFwiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgcWRpc2MgYWRkIGRldiAkRFVNTVkgaGFuZGxlIDE6IHJvb3QgcGZpZm9fZmFzdFwiLFxuKyAgICAgICAgXCJleHBFeGl0Q29kZVwiOiBcIjBcIixcbisgICAgICAgIFwidmVyaWZ5Q21kXCI6IFwiJFRDIHFkaXNjIHNob3cgZGV2ICREVU1NWVwiLFxuKyAgICAgICAgXCJtYXRjaFBhdHRlcm5cIjogXCJxZGlzYyBwZmlmb19mYXN0IDE6IHJvb3RcIixcbisgICAgICAgIFwibWF0Y2hDb3VudFwiOiBcIjFcIixcbisgICAgICAgIFwidGVhcmRvd25cIjogW1xuKyAgICAgICAgICAgIFwiJElQIGxpbmsgc2V0IGRldiAkRFVNTVkgdHhxdWV1ZWxlbiAxMDAwXCIsXG4rICAgICAgICAgICAgXCIkVEMgcWRpc2MgZGVsIGRldiAkRFVNTVkgaGFuZGxlIDE6IHJvb3RcIlxuKyAgICAgICAgXVxuICAgICB9XG4gXVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTA6MzE6NTIuNTI2OTA2MTMyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0MTA0MzA2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gSXQgdGFyZ2V0cyB0aGUgYHBmaWZvX2Zhc3RfaW5pdGAgYW5kIGBwZmlmb19mYXN0X2NoYW5nZV90eF9xdWV1ZV9sZW5gIGZ1bmN0aW9ucyB3aXRoaW4gYG5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZXMgcmV2b2x2ZSBhcm91bmQgcmluZyBidWZmZXIgc2l6ZSBsaW1pdHMgYW5kIG1lbW9yeSBhY2NvdW50aW5nLiBJJ20gc2VlaW5nIGJvdW5kcyBjaGVja3MgYWRkZWQgdG8gYHFsZW5gIGFuZCBgbmV3X2xlbmAsIGNhcHBpbmcgdGhlbSBhdCA2NTUzNSwgYW5kIHRoZSBhbGxvY2F0aW9uIGZsYWcgaW4gYHNrYl9hcnJheV9pbml0YCBhbmQgYHNrYl9hcnJheV9yZXNpemVfbXVsdGlwbGVfYmhgIGlzIGJlaW5nIHN3aXRjaGVkIGZyb20gYEdGUF9LRVJORUxgIHRvIGBHRlBfS0VSTkVMX0FDQ09VTlRgLlxuXG5Fc3NlbnRpYWxseSwgdGhpcyBpcyBhIGRlZmVuc2l2ZSBtZWFzdXJlLiBJdCBwcmV2ZW50cyBleGNlc3NpdmVseSBsYXJnZSBtZW1vcnkgYWxsb2NhdGlvbnMsIGFuZCBsaWtlbHkgbWl0aWdhdGVzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2VzcyBvciBvdmVyZmxvdyB2dWxuZXJhYmlsaXRpZXMuICBUaGUgY2hhbmdlIHRvIGBHRlBfS0VSTkVMX0FDQ09VTlRgIGlzIGEgZ29vZCBwcmFjdGljZSwgYWRkaW5nIGV4cGxpY2l0IG1lbW9yeSBhY2NvdW50aW5nLlxuXG5Gcm9tIG15IHBlcnNwZWN0aXZlLCB0aGlzIGRvZXNuJ3QgaW50cm9kdWNlIGFueSByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGNyZWF0aW5nIGluZm9ybWF0aW9uIGxlYWtzLiBUaGUgY29kZSBpcyBjbGVhbjsgaXQncyBzaW1wbHkgaW1wbGVtZW50aW5nIGJvdW5kcyBjaGVja3MgYW5kIGFkanVzdGluZyBhbGxvY2F0aW9uIGZsYWdzLiBLQVNBTiBvciBvdGhlciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzIHdvdWxkIGxpa2VseSBjYXRjaCBhbnkgb3V0LW9mLWJvdW5kcyBvciBhbGxvY2F0aW9uIGZhaWx1cmVzIGlmIHRoZXkgd2VyZSB0byBvY2N1ciwgYnV0IEtNU0FOIGlzIGRlc2lnbmVkIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMsIGFuZCBJIGRvbid0IHNlZSBhbnkgcmlzayBvZiB0aG9zZSBoZXJlLiBcblxuTGV0IG1lIGp1c3QgcXVpY2tseSByZS1leGFtaW5lIHRoZSBjb2RlIHNuaXBwZXQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLi4uXG5cbmBgYGNcbitcdGlmIChxbGVuIFx1MDAzZSA2NTUzNSkge1xuK1x0XHRwcl93YXJuX3JhdGVsaW1pdGVkKFwicGZpZm9fZmFzdDogY2FwcGluZyByaW5nIHNpemUgJXUgdG8gNjU1MzUgZm9yIGRldiAlc1xcblwiLFxuK1x0XHRcdFx0ICAgIHFsZW4sIHFkaXNjX2RldihxZGlzYyktXHUwMDNlbmFtZSk7XG4rXHRcdHFsZW4gPSA2NTUzNTtcbitcdH1cbitcbiBcdGZvciAocHJpbyA9IDA7IHByaW8gXHUwMDNjIFBGSUZPX0ZBU1RfQkFORFM7IHByaW8rKykge1xuIFx0XHRzdHJ1Y3Qgc2tiX2FycmF5ICpxID0gYmFuZDJsaXN0KHByaXYsIHByaW8pO1xuIFx0XHRpbnQgZXJyO1xuIFxuLVx0XHRlcnIgPSBza2JfYXJyYXlfaW5pdChxLCBxbGVuLCBHRlBfS0VSTkVMKTtcbitcdFx0ZXJyID0gc2tiX2FycmF5X2luaXQocSwgcWxlbiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbmBgYFxuXG5ZZXAsIGFzIGV4cGVjdGVkLiBUaGlzIGlzIHB1cmVseSBhIHNpemUgY2FwcGluZyBhbmQgYWxsb2NhdGlvbiBmbGFnIHVwZGF0ZSwgbm90aGluZyBtb3JlLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBleHBvc2VkIGhlcmUuIEknbSBjb21mb3J0YWJsZSBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgwNiwiT3V0cHV0VG9rZW5zIjoxODIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMDozMjowMC45MzczNDA0MzlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjEyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjYXAgb24gdGhlIHJpbmcgc2l6ZSAoYHFsZW5gIGFuZCBgbmV3X2xlbmApIHRvIDY1NTM1IGluIGBwZmlmb19mYXN0X2luaXRgIGFuZCBgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuYCwgYW5kIGNoYW5nZXMgdGhlIGFsbG9jYXRpb24gZmxhZyBmcm9tIGBHRlBfS0VSTkVMYCB0byBgR0ZQX0tFUk5FTF9BQ0NPVU5UYC4gVGhlc2UgY2hhbmdlcyBhcmUgaW50ZW5kZWQgdG8gcHJldmVudCBleGNlc3NpdmUgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGFkZCBtZW1vcnkgYWNjb3VudGluZy4gVGhleSBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtb2RpZnkgcGFkZGluZywgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgY29udHJvbCBmbG93LiBBbnkgaXNzdWVzIHJlbGF0ZWQgdG8gbWVtb3J5IGFsbG9jYXRpb24gc2l6ZXMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG1lbW9yeSBkZWJ1Z2dpbmcgdG9vbHMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcywgc28gS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjYXAgb24gdGhlIHJpbmcgc2l6ZSAoYHFsZW5gIGFuZCBgbmV3X2xlbmApIHRvIDY1NTM1IGluIGBwZmlmb19mYXN0X2luaXRgIGFuZCBgcGZpZm9fZmFzdF9jaGFuZ2VfdHhfcXVldWVfbGVuYCwgYW5kIGNoYW5nZXMgdGhlIGFsbG9jYXRpb24gZmxhZyBmcm9tIGBHRlBfS0VSTkVMYCB0byBgR0ZQX0tFUk5FTF9BQ0NPVU5UYC4gVGhlc2UgY2hhbmdlcyBhcmUgaW50ZW5kZWQgdG8gcHJldmVudCBleGNlc3NpdmUgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGFkZCBtZW1vcnkgYWNjb3VudGluZy4gVGhleSBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtb2RpZnkgcGFkZGluZywgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgY29udHJvbCBmbG93LiBBbnkgaXNzdWVzIHJlbGF0ZWQgdG8gbWVtb3J5IGFsbG9jYXRpb24gc2l6ZXMgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG1lbW9yeSBkZWJ1Z2dpbmcgdG9vbHMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcywgc28gS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowdqvtd[1] Phase: Succeeded StartedAt: 2026-08-20 10:32:11 +0000 UTC FinishedAt: 2026-08-20 10:32:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-20 10:32:11 +0000 UTC FinishedAt: 2026-08-20 10:32:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[2] Phase: Succeeded StartedAt: 2026-08-20 10:32:11 +0000 UTC FinishedAt: 2026-08-20 14:12:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-20 10:32:11 +0000 UTC FinishedAt: 2026-08-20 14:12:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-20 10:32:11 +0000 UTC FinishedAt: 2026-08-20 10:32:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-20 10:32:11 +0000 UTC FinishedAt: 2026-08-20 10:32:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowdqvtd/series-workflowdqvtd-convert-artifact-487259394/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-20 10:32:21 +0000 UTC FinishedAt: 2026-08-20 10:49:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-20 10:32:21 +0000 UTC FinishedAt: 2026-08-20 10:49:26 +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:*bb8daf3b-207d-4a4b-93a6-0254c27e4b16,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-workflowdqvtd/series-workflowdqvtd-convert-artifact-487259394/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": "5753cdcd-aeb0-4aa2-be89-8bcfc685186d", "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-workflowdqvtd/series-workflowdqvtd-build-action-2162854848/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-20 10:32:21 +0000 UTC FinishedAt: 2026-08-20 10:49:16 +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:*bb8daf3b-207d-4a4b-93a6-0254c27e4b16,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-workflowdqvtd/series-workflowdqvtd-convert-artifact-487259394/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": "5753cdcd-aeb0-4aa2-be89-8bcfc685186d", "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-workflowdqvtd/series-workflowdqvtd-build-action-2162854848/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-20 10:49:26 +0000 UTC FinishedAt: 2026-08-20 10:49:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-20 10:49:26 +0000 UTC FinishedAt: 2026-08-20 10:49:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-20 10:49:26 +0000 UTC FinishedAt: 2026-08-20 10:49:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-20 10:49:26 +0000 UTC FinishedAt: 2026-08-20 10:49:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowdqvtd/series-workflowdqvtd-convert-artifact-3096774493/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-20 10:49:36 +0000 UTC FinishedAt: 2026-08-20 10:51:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-20 10:49:36 +0000 UTC FinishedAt: 2026-08-20 10:51:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5753cdcd-aeb0-4aa2-be89-8bcfc685186d,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-workflowdqvtd/series-workflowdqvtd-build-action-2162854848/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-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-20 10:51:36 +0000 UTC FinishedAt: 2026-08-20 10:51:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-20 10:51:36 +0000 UTC FinishedAt: 2026-08-20 10:51:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-20 10:51:36 +0000 UTC FinishedAt: 2026-08-20 11:08:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-20 10:51:36 +0000 UTC FinishedAt: 2026-08-20 11:08:30 +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:*bb8daf3b-207d-4a4b-93a6-0254c27e4b16,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-workflowdqvtd/series-workflowdqvtd-convert-artifact-3096774493/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": "1d72e106-66a7-4f1a-9f5e-8baf5060d83a", "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-workflowdqvtd/series-workflowdqvtd-build-action-3823781945/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-20 10:51:36 +0000 UTC FinishedAt: 2026-08-20 11:08:20 +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:*bb8daf3b-207d-4a4b-93a6-0254c27e4b16,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-workflowdqvtd/series-workflowdqvtd-convert-artifact-3096774493/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": "1d72e106-66a7-4f1a-9f5e-8baf5060d83a", "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-workflowdqvtd/series-workflowdqvtd-build-action-3823781945/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-20 11:08:30 +0000 UTC FinishedAt: 2026-08-20 11:08:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-20 11:08:30 +0000 UTC FinishedAt: 2026-08-20 11:08:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-20 11:08:30 +0000 UTC FinishedAt: 2026-08-20 11:10:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-20 11:08:30 +0000 UTC FinishedAt: 2026-08-20 11:10:21 +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:*1d72e106-66a7-4f1a-9f5e-8baf5060d83a,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-workflowdqvtd/series-workflowdqvtd-build-action-3823781945/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-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-20 11:10:31 +0000 UTC FinishedAt: 2026-08-20 14:12:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-20 11:10:31 +0000 UTC FinishedAt: 2026-08-20 14:12:44 +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":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"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:*5753cdcd-aeb0-4aa2-be89-8bcfc685186d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1d72e106-66a7-4f1a-9f5e-8baf5060d83a,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-workflowdqvtd/series-workflowdqvtd-build-action-2162854848/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-workflowdqvtd/series-workflowdqvtd-build-action-3823781945/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-20 11:10:31 +0000 UTC FinishedAt: 2026-08-20 11:10:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-20 11:10:31 +0000 UTC FinishedAt: 2026-08-20 11:10:36 +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":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"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-workflowdqvtd/series-workflowdqvtd-convert-artifact-1387959266/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-20 11:10:31 +0000 UTC FinishedAt: 2026-08-20 11:10:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-20 11:10:31 +0000 UTC FinishedAt: 2026-08-20 11:10:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-20 11:10:31 +0000 UTC FinishedAt: 2026-08-20 11:10:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-20 11:10:41 +0000 UTC FinishedAt: 2026-08-20 14:12:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqvtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pfifo_fast_init","pfifo_fast_change_tx_queue_len"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET"],"series_id":"996eebdf-e60c-4314-a673-fd3fac56ddf6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-20 11:10:41 +0000 UTC FinishedAt: 2026-08-20 14:12:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5753cdcd-aeb0-4aa2-be89-8bcfc685186d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1d72e106-66a7-4f1a-9f5e-8baf5060d83a,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-workflowdqvtd/series-workflowdqvtd-build-action-2162854848/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-workflowdqvtd/series-workflowdqvtd-build-action-3823781945/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-workflowdqvtd/series-workflowdqvtd-convert-artifact-1387959266/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,}