Name: series-workflow8cm9x Phase: Succeeded StartedAt: 2026-07-15 19:49:27 +0000 UTC FinishedAt: 2026-07-15 21:40:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[0] Phase: Succeeded StartedAt: 2026-07-15 19:49:27 +0000 UTC FinishedAt: 2026-07-15 20:11:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[0].run-triage Phase: Succeeded StartedAt: 2026-07-15 19:49:27 +0000 UTC FinishedAt: 2026-07-15 20:11:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IWLWIFI", "EFI", "IWLMVM", "IWLMLD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IWLWIFI", "EFI", "IWLMVM", "IWLMLD" ], "series_id": "7154841b-ca2b-4c9f-9d8e-affc90f92a0f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "iwl_uefi_reduce_power_parse", "iwl_pnvm_load_reduce_power_to_trans", "iwl_uefi_get_reduced_power" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lXTFdJRkkmIzM0OywKICAgICYjMzQ7RUZJJiMzNDssCiAgICAmIzM0O0lXTE1WTSYjMzQ7LAogICAgJiMzNDtJV0xNTEQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2UmIzM0OywKICAgICYjMzQ7aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnMmIzM0OywKICAgICYjMzQ7aXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHdoZW4gcGFyc2luZyBVRUZJIHZhcmlhYmxlcyBmb3IgcmVkdWNlZCBwb3dlciBzZXR0aW5ncyBpbiB0aGUgaXdsd2lmaSBkcml2ZXIuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uIHdoZW4gc3BlY2lmaWMgVUVGSSB2YXJpYWJsZXMgYXJlIHByZXNlbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzZjcxN2QyOTU4YzIyYjYwM2RkMzg1MmE1MjRkNzljNmEyODM1Njc3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMjA6MDg6NDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1xuaW5kZXggMmVmMGE3YTkyMGFkYjUuLjRjZDM2YjQyMjYyYzM3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXG5AQCAtMjQ4LDYgJiM0MzsyNDgsMTIgQEAgaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbiBcdFx0XHRJV0xfREVCVUdfRlcodHJhbnMsXG4gXHRcdFx0XHQgICAgIFwmIzM0O0dvdCBJV0xfVUNPREVfVExWX1BOVk1fU0tVIGxlbiAlZFxcblwmIzM0OyxcbiBcdFx0XHRcdCAgICAgdGx2X2xlbik7XG4mIzQzO1x0XHRcdGlmICh0bHZfbGVuIFx1MDAzYyBzaXplb2YoKnRsdl9za3VfaWQpKSB7XG4mIzQzO1x0XHRcdFx0SVdMX0VSUih0cmFucywgXCYjMzQ7aW52YWxpZCBQTlZNIFNLVSBUTFYgbGVuOiAldVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdHRsdl9sZW4pO1xuJiM0MztcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0XHR9XG4mIzQzO1xuIFx0XHRcdElXTF9ERUJVR19GVyh0cmFucywgXCYjMzQ7c2t1X2lkIDB4JTB4IDB4JTB4IDB4JTB4XFxuXCYjMzQ7LFxuIFx0XHRcdFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMF0pLFxuIFx0XHRcdFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMV0pLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjA4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lXTFdJRkkmIzM0OywKICAgICYjMzQ7RUZJJiMzNDssCiAgICAmIzM0O0lXTE1WTSYjMzQ7LAogICAgJiMzNDtJV0xNTEQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2UmIzM0OywKICAgICYjMzQ7aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnMmIzM0OywKICAgICYjMzQ7aXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHdoZW4gcGFyc2luZyBVRUZJIHZhcmlhYmxlcyBmb3IgcmVkdWNlZCBwb3dlciBzZXR0aW5ncyBpbiB0aGUgaXdsd2lmaSBkcml2ZXIuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uIHdoZW4gc3BlY2lmaWMgVUVGSSB2YXJpYWJsZXMgYXJlIHByZXNlbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNmNzE3ZDI5NThjMjJiNjAzZGQzODUyYTUyNGQ3OWM2YTI4MzU2NzcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxNSAyMDowODo0MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMKaW5kZXggMmVmMGE3YTkyMGFkYjUuLjRjZDM2YjQyMjYyYzM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYwpAQCAtMjQ4LDYgJiM0MzsyNDgsMTIgQEAgaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywKIAkJCUlXTF9ERUJVR19GVyh0cmFucywKIAkJCQkgICAgICYjMzQ7R290IElXTF9VQ09ERV9UTFZfUE5WTV9TS1UgbGVuICVkXG4mIzM0OywKIAkJCQkgICAgIHRsdl9sZW4pOwomIzQzOwkJCWlmICh0bHZfbGVuICZsdDsgc2l6ZW9mKCp0bHZfc2t1X2lkKSkgewomIzQzOwkJCQlJV0xfRVJSKHRyYW5zLCAmIzM0O2ludmFsaWQgUE5WTSBTS1UgVExWIGxlbjogJXVcbiYjMzQ7LAomIzQzOwkJCQkJdGx2X2xlbik7CiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJCX0KJiM0MzsKIAkJCUlXTF9ERUJVR19GVyh0cmFucywgJiMzNDtza3VfaWQgMHglMHggMHglMHggMHglMHhcbiYjMzQ7LAogCQkJCSAgICAgbGUzMl90b19jcHUodGx2X3NrdV9pZC0mZ3Q7ZGF0YVswXSksCiAJCQkJICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLSZndDtkYXRhWzFdKSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4MgoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDEyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBGaXJtd2FyZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jYC4gU3BlY2lmaWNhbGx5LCBpdCBhcHBlYXJzIHRvIGJlIGFkZGluZyBhIGNydWNpYWwgYm91bmRzIGNoZWNrIHdpdGhpbiB0aGUgYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgZnVuY3Rpb24uIFRoZSBpbnRlbnQgaXMgY2xlYXI6IHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93IGJ5IHZlcmlmeWluZyB0aGUgdmFsaWRpdHkgb2YgdGhlIHJlY2VpdmVkIGRhdGEuCgpJdCYjMzk7cyBhZGRpbmcgYSBjb21wYXJpc29uOiBgdGx2X2xlbmAgbmVlZHMgdG8gYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBzaXplb2YoKnRsdl9za3VfaWQpYC4gSWYgYHRsdl9sZW5gIGlzIHNtYWxsZXIgdGhhbiBleHBlY3RlZCwgdGhlIGZ1bmN0aW9uIG5vdyBjb3JyZWN0bHkgcmV0dXJucyBgLUVJTlZBTGAuIFRoaXMgaXMgYSBjbGFzc2ljIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyB0ZWNobmlxdWUsIGFuZCBhIHNlbnNpYmxlIGFkZGl0aW9uIHRvIHNhZmVndWFyZCBhZ2FpbnN0IG1hbGZvcm1lZCBkYXRhIGR1cmluZyBmaXJtd2FyZSBwcm9jZXNzaW5nLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQsIGJ1dCB0aGlzIHBhdGNoIGxvb2tzIGxpa2UgYSBnb29kIHN0ZXAgdG93YXJkIGVuaGFuY2VkIHJvYnVzdG5lc3MuIEkmIzM5O2xsIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgZGF0YSBzdHJ1Y3R1cmUgaW52b2x2ZWQgdG9vLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTE2Nj1zdGF0aWMgaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9zZWN0aW9uKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTIxOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjIyMDppbnQgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjIxLVx0XHRcdFx0Y29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU0MAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZywgdGhpbmtpbmcgdGhyb3VnaCBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYDoKCioqQW5hbHl6aW5nIGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZSoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgdGhpcyBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYCBmdW5jdGlvbiBpcyBhY3R1YWxseSBkb2luZy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gcmVhZCB0aHJvdWdoIHRoZSBjb2RlIHRvIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UuIEkmIzM5O2xsIG5lZWQgdG8gcGlucG9pbnQgaXRzIGZ1bmN0aW9uIGFuZCBob3cgaXQgY29udHJpYnV0ZXMgdG8gcG93ZXIgbWFuYWdlbWVudCB3aXRoaW4gdGhlIFVFRkkgZW52aXJvbm1lbnQsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIEludGVsIHdpcmVsZXNzIGRldmljZXMuIERvZXMgaXQgcGFyc2UgY29uZmlndXJhdGlvbiBkYXRhPyBEb2VzIGl0IGludGVyYWN0IHdpdGggdGhlIGZpcm13YXJlIGluIGFueSB3YXk/IERvZXMgaXQgZGVhbCB3aXRoIGRldmljZS1zcGVjaWZpYyByZWdpc3RlcnM/IEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3Iga2V5IGRhdGEgc3RydWN0dXJlcywgZnVuY3Rpb24gY2FsbHMgdG8gb3RoZXIgcGFydHMgb2YgdGhlIGRyaXZlciwgYW5kIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgVUVGSSBzeXN0ZW0uIEkmIzM5O2xsIGJlIHdhdGNoaW5nIGZvciBhbnkgZXZpZGVuY2Ugb2Y6CgoqICAgKipDb25maWd1cmF0aW9uIFBhcnNpbmcqKjogSXMgaXQgcmVhZGluZyBhIHNldHVwIHRhYmxlPyBBIHNwZWNpZmljIEVGSSB2YXJpYWJsZT8KKiAgICoqUG93ZXIgU3RhdGUgVHJhbnNpdGlvbnMqKjogRG9lcyB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5IHNldCBwb3dlciBtYW5hZ2VtZW50IHJlbGF0ZWQgcmVnaXN0ZXJzLCBvciBtYWtlIGZ1bmN0aW9uIGNhbGxzIHRoYXQgd2lsbD8KKiAgICoqRXJyb3IgSGFuZGxpbmcqKjogSG93IGRvZXMgaXQgbWFuYWdlIGZhaWx1cmUgY29uZGl0aW9ucz8gQXJlIHRoZXJlIHNwZWNpZmljIGVycm9yIGNvZGVzPyBBcmUgdGhlcmUgYW55IHJldHVybiB2YWx1ZXMgaW5kaWNhdGluZyBzdWNjZXNzIG9yIGZhaWx1cmU/CiogICAqKkludGVyYWN0aW9uIHdpdGggSGFyZHdhcmUqKjogSXMgaXQgcHJvYmluZyBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgb3Igb25seSBkZWFsaW5nIHdpdGggYSBzcGVjaWZpYyBwb3dlciBzdGF0ZSByZXF1ZXN0PwoqICAgKipTZWN1cml0eSBDb25jZXJucyoqOiBEb2VzIHRoaXMgZnVuY3Rpb24gaW50ZXJhY3Qgd2l0aCBhbnkgc2Vuc2l0aXZlIGRhdGEgb3IgY29uZmlndXJhdGlvbnM/CgpJJiMzOTtsbCBiZSBzcGVjaWZpY2FsbHkgbG9va2luZyB0byBzZWUgaWYgdGhlcmUgYXJlIG9wdGltaXphdGlvbnMgb3IgcG93ZXItc2F2aW5nIGFkanVzdG1lbnRzLiBJdCBpcyBpbXBvcnRhbnQgdG8ga25vdyB3aGljaCBwb3dlciBzZXR0aW5ncywgYW5kIHRoZWlyIHJlc3VsdGluZyBlZmZlY3Qgb24gdGhlIGRldmljZSwgYXJlIGJlaW5nIGNvbmZpZ3VyZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgZnVuY3Rpb24mIzM5O3Mgcm9sZSBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgcG93ZXIgbWFuYWdlbWVudCBmb3IgSW50ZWwgd2lyZWxlc3MgZGV2aWNlcyB3aXRoaW4gdGhlIFVFRkkgZW52aXJvbm1lbnQuIEkmIzM5O2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55dGhpbmcgbm9uLW9idmlvdXMsIHBlcmhhcHMgc29tZXRoaW5nIHRoYXQgaXNuJiMzOTt0IGltbWVkaWF0ZWx5IGFwcGFyZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMjA6XHRpbnQgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuIDIyMTpcdFx0XHRcdFx0Y29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4sXG4gMjIyOlx0XHRcdFx0XHRzdHJ1Y3QgaXdsX3Budm1faW1hZ2UgKnBudm1fZGF0YSxcbiAyMjM6XHRcdFx0XHRcdF9fbGUzMiBza3VfaWRbM10pXG4gMjI0Olx0e1xuIDIyNTpcdFx0Y29uc3Qgc3RydWN0IGl3bF91Y29kZV90bHYgKnRsdjtcbiAyMjY6XHRcbiAyMjc6XHRcdElXTF9ERUJVR19GVyh0cmFucywgXCYjMzQ7UGFyc2luZyBSRURVQ0VfUE9XRVIgZGF0YVxcblwmIzM0Oyk7XG4gMjI4Olx0XG4gMjI5Olx0XHR3aGlsZSAobGVuIFx1MDAzZT0gc2l6ZW9mKCp0bHYpKSB7XG4gMjMwOlx0XHRcdHUzMiB0bHZfbGVuLCB0bHZfdHlwZTtcbiAyMzE6XHRcbiAyMzI6XHRcdFx0bGVuIC09IHNpemVvZigqdGx2KTtcbiAyMzM6XHRcdFx0dGx2ID0gKGNvbnN0IHZvaWQgKilkYXRhO1xuIDIzNDpcdFxuIDIzNTpcdFx0XHR0bHZfbGVuID0gbGUzMl90b19jcHUodGx2LVx1MDAzZWxlbmd0aCk7XG4gMjM2Olx0XHRcdHRsdl90eXBlID0gbGUzMl90b19jcHUodGx2LVx1MDAzZXR5cGUpO1xuIDIzNzpcdFxuIDIzODpcdFx0XHRpZiAobGVuIFx1MDAzYyB0bHZfbGVuKSB7XG4gMjM5Olx0XHRcdFx0SVdMX0VSUih0cmFucywgXCYjMzQ7aW52YWxpZCBUTFYgbGVuOiAlemQvJXVcXG5cJiMzNDssXG4gMjQwOlx0XHRcdFx0XHRsZW4sIHRsdl9sZW4pO1xuIDI0MTpcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDI0MjpcdFx0XHR9XG4gMjQzOlx0XG4gMjQ0Olx0XHRcdGlmICh0bHZfdHlwZSA9PSBJV0xfVUNPREVfVExWX1BOVk1fU0tVKSB7XG4gMjQ1Olx0XHRcdFx0Y29uc3Qgc3RydWN0IGl3bF9za3VfaWQgKnRsdl9za3VfaWQgPVxuIDI0NjpcdFx0XHRcdFx0KGNvbnN0IHZvaWQgKikoZGF0YSAmIzQzOyBzaXplb2YoKnRsdikpO1xuIDI0NzpcdFxuIDI0ODpcdFx0XHRcdElXTF9ERUJVR19GVyh0cmFucyxcbiAyNDk6XHRcdFx0XHRcdCAgICAgXCYjMzQ7R290IElXTF9VQ09ERV9UTFZfUE5WTV9TS1UgbGVuICVkXFxuXCYjMzQ7LFxuIDI1MDpcdFx0XHRcdFx0ICAgICB0bHZfbGVuKTtcbiAyNTE6XHRcdFx0XHRpZiAodGx2X2xlbiBcdTAwM2Mgc2l6ZW9mKCp0bHZfc2t1X2lkKSkge1xuIDI1MjpcdFx0XHRcdFx0SVdMX0VSUih0cmFucywgXCYjMzQ7aW52YWxpZCBQTlZNIFNLVSBUTFYgbGVuOiAldVxcblwmIzM0OyxcbiAyNTM6XHRcdFx0XHRcdFx0dGx2X2xlbik7XG4gMjU0Olx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAyNTU6XHRcdFx0XHR9XG4gMjU2Olx0XG4gMjU3Olx0XHRcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcJiMzNDtza3VfaWQgMHglMHggMHglMHggMHglMHhcXG5cJiMzNDssXG4gMjU4Olx0XHRcdFx0XHQgICAgIGxlMzJfdG9fY3B1KHRsdl9za3VfaWQtXHUwMDNlZGF0YVswXSksXG4gMjU5Olx0XHRcdFx0XHQgICAgIGxlMzJfdG9fY3B1KHRsdl9za3VfaWQtXHUwMDNlZGF0YVsxXSksXG4gMjYwOlx0XHRcdFx0XHQgICAgIGxlMzJfdG9fY3B1KHRsdl9za3VfaWQtXHUwMDNlZGF0YVsyXSkpO1xuIDI2MTpcdFxuIDI2MjpcdFx0XHRcdGRhdGEgJiM0Mzs9IHNpemVvZigqdGx2KSAmIzQzOyBBTElHTih0bHZfbGVuLCA0KTtcbiAyNjM6XHRcdFx0XHRsZW4gLT0gQUxJR04odGx2X2xlbiwgNCk7XG4gMjY0Olx0XG4gMjY1Olx0XHRcdFx0aWYgKHNrdV9pZFswXSA9PSB0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMF0gXHUwMDI2XHUwMDI2XG4gMjY2Olx0XHRcdFx0ICAgIHNrdV9pZFsxXSA9PSB0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMV0gXHUwMDI2XHUwMDI2XG4gMjY3Olx0XHRcdFx0ICAgIHNrdV9pZFsyXSA9PSB0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMl0pIHtcbiAyNjg6XHRcdFx0XHRcdGludCByZXQgPSBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfc2VjdGlvbih0cmFucyxcbiAyNjk6XHRcdFx0XHRcdFx0XHRcdFx0ICAgIGRhdGEsIGxlbixcbiAyNzA6XHRcdFx0XHRcdFx0XHRcdFx0ICAgIHBudm1fZGF0YSk7XG4gMjcxOlx0XHRcdFx0XHRpZiAoIXJldClcbiAyNzI6XHRcdFx0XHRcdFx0cmV0dXJuIDA7XG4gMjczOlx0XHRcdFx0fSBlbHNlIHtcbiAyNzQ6XHRcdFx0XHRcdElXTF9ERUJVR19GVyh0cmFucywgXCYjMzQ7U0tVIElEIGRpZG4mIzM5O3QgbWF0Y2ghXFxuXCYjMzQ7KTtcbiAyNzU6XHRcdFx0XHR9XG4gMjc2Olx0XHRcdH0gZWxzZSB7XG4gMjc3Olx0XHRcdFx0ZGF0YSAmIzQzOz0gc2l6ZW9mKCp0bHYpICYjNDM7IEFMSUdOKHRsdl9sZW4sIDQpO1xuIDI3ODpcdFx0XHRcdGxlbiAtPSBBTElHTih0bHZfbGVuLCA0KTtcbiAyNzk6XHRcdFx0fVxuIDI4MDpcdFx0fVxuIDI4MTpcdFxuIDI4MjpcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gMjgzOlx0fVxuIDI4NDpcdFxuIDI4NTpcdHU4ICppd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXG4gMjg2Olx0e1xuIDI4NzpcdFx0c3RydWN0IHBudm1fc2t1X3BhY2thZ2UgKnBhY2thZ2U7XG4gMjg4Olx0XHR1bnNpZ25lZCBsb25nIHBhY2thZ2Vfc2l6ZTtcbiAyODk6XHRcdHU4ICpkYXRhO1xuIDI5MDpcdFxuIDI5MTpcdFx0cGFja2FnZSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZSh0cmFucyxcbiAyOTI6XHRcdFx0XHRcdFx0XHQgSVdMX1VFRklfUkVEVUNFRF9QT1dFUl9OQU1FLFxuIDI5MzpcdFx0XHRcdFx0XHRcdCBcJiMzNDtSZWR1Y2VkIFBvd2VyXCYjMzQ7LFxuIDI5NDpcdFx0XHRcdFx0XHRcdCBzaXplb2YoKnBhY2thZ2UpLFxuIDI5NTpcdFx0XHRcdFx0XHRcdCBcdTAwMjZwYWNrYWdlX3NpemUpO1xuIDI5NjpcdFx0aWYgKElTX0VSUihwYWNrYWdlKSlcbiAyOTc6XHRcdFx0cmV0dXJuIEVSUl9DQVNUKHBhY2thZ2UpO1xuIDI5ODpcdFxuIDI5OTpcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcJiMzNDtyZXYgJWQsIHRvdGFsX3NpemUgJWQsIG5fc2t1cyAlZFxcblwmIzM0OyxcbiAzMDA6XHRcdFx0ICAgICBwYWNrYWdlLVx1MDAzZXJldiwgcGFja2FnZS1cdTAwM2V0b3RhbF9zaXplLCBwYWNrYWdlLVx1MDAzZW5fc2t1cyk7XG4gMzAxOlx0XG4gMzAyOlx0XHQqbGVuID0gcGFja2FnZV9zaXplIC0gc2l6ZW9mKCpwYWNrYWdlKTtcbiAzMDM6XHRcdGRhdGEgPSBrbWVtZHVwKHBhY2thZ2UtXHUwMDNlZGF0YSwgKmxlbiwgR0ZQX0tFUk5FTCk7XG4gMzA0Olx0XHRpZiAoIWRhdGEpIHtcbiAzMDU6XHRcdFx0a2ZyZWUocGFja2FnZSk7XG4gMzA2Olx0XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuIDMwNzpcdFx0fVxuIDMwODpcdFxuIDMwOTpcdFx0a2ZyZWUocGFja2FnZSk7XG4gMzEwOlx0XG4gMzExOlx0XHRyZXR1cm4gZGF0YTtcbiAzMTI6XHR9XG4gMzEzOlx0XG4gMzE0Olx0c3RhdGljIGludCBpd2xfdWVmaV9zdGVwX3BhcnNlKHN0cnVjdCB1ZWZpX2Nudl9jb21tb25fc3RlcF9kYXRhICpjb21tb25fc3RlcF9kYXRhLFxuIDMxNTpcdFx0XHRcdCAgICAgICBzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcbiAzMTY6XHR7XG4gMzE3Olx0XHRpZiAoY29tbW9uX3N0ZXBfZGF0YS1cdTAwM2VyZXZpc2lvbiAhPSAxKVxuIDMxODpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAzMTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjEwCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2UgRnVuY3Rpb24qKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYC4gVGhlIG5hbWUgaXRzZWxmIHN1Z2dlc3RzIGl0JiMzOTtzIGhhbmRsaW5nIHRoZSBwYXJzaW5nIG9mIFVFRkkgdmFyaWFibGVzLCBzcGVjaWZpY2FsbHkgaW4gcmVsYXRpb24gdG8gcG93ZXIgcmVkdWN0aW9uLCBwcmVzdW1hYmx5IGZvciBhbiBJbnRlbCB3aXJlbGVzcyBkZXZpY2UuIExldCYjMzk7cyBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBzbyB0aGUgbmF0dXJhbCBuZXh0IHN0ZXAgaXMgdG8gdHJhY2UgdGhlIGNhbGwgZ3JhcGguIEkmIzM5O2xsIG5lZWQgdG8gaWRlbnRpZnkgcHJlY2lzZWx5ICp3aGVyZSogdGhpcyBmdW5jdGlvbiwgYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAsIGlzIGJlaW5nIGludm9rZWQgd2l0aGluIHRoZSBkcml2ZXIuIERldGVybWluaW5nIHRoZSBjYWxsIHNpdGVzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IHdpdGhpbiB3aGljaCBwb3dlciBtYW5hZ2VtZW50IGRlY2lzaW9ucyBhcmUgbWFkZSBhbmQgaG93IHRoZXNlIFVFRkkgdmFyaWFibGVzIGFyZSB1bHRpbWF0ZWx5IHV0aWxpemVkLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgcGFyc2VkIGRhdGEgaXMgdXNlZCB0byBvcHRpbWl6ZSB0aGUgcG93ZXIgY29uc3VtcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDA3PWl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQzMjpcdHJldCA9IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZSh0cmFucywgZGF0YSwgbGVuZ3RoLCBwbnZtX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MzMtXHRcdFx0XHRcdCAgc2t1X2lkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0xNjY9c3RhdGljIGludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfc2VjdGlvbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyMjA6aW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTIyMS1cdFx0XHRcdGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oPTMyNT11OCAqaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjMyNjppbnQgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMzI3LVx0XHRcdFx0Y29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg9MzYwPXN0YXRpYyBpbmxpbmUgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozNjE6aXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMzYyLVx0XHRcdCAgICBjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDQ2CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczoKCioqVHJhY2luZyBEb3duIHRoZSBDYWxsIENoYWluKioKCkFscmlnaHQsIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIGZ1bmN0aW9uLCBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBidXJpZWQgZGVlcCB3aXRoaW4gdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doZXJlIHRoZSBoZWNrIGlzIHRoaXMgY2FsbGVkIGZyb20/JiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhpcyBmdW5jdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGVyZSB0aGUgY2FsbCB0byBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgIG9yaWdpbmF0ZXMuIFRpbWUgdG8gc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSBjYWxsIGdyYXBoIHRvIGZpZ3VyZSBvdXQgaXRzIHB1cnBvc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDA2PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0MDc6aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MDgtXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IGl3bF91Y29kZV9jYXBhYmlsaXRpZXMgKmNhcGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDU1PWludCBpd2xfcG52bV9sb2FkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ2Ny1cdGl3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyh0cmFucywgZncsIHNrdV9pZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0Njg6XHRpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyh0cmFucywgXHUwMDI2ZnctXHUwMDNldWNvZGVfY2FwYSwgc2t1X2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ2OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjAxNwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHNpdHVhdGlvbjoKCioqSW52ZXN0aWdhdGluZyB0aGUgSW50ZWwgV2lyZWxlc3MgRmlybXdhcmUgTG9hZGluZyBQcm9jZXNzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIEludGVsIHdpcmVsZXNzIGZpcm13YXJlIGdldHMgbG9hZGVkLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZm9jdXNpbmcgb24gYGl3bF9wbnZtX2xvYWRgLiBJIGtub3cgdGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkIGZyb20gYGl3bF9tdm1fbG9hZF91Y29kZV93YWl0X2FsaXZlYCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMsIGJ1dCBJIG5lZWQgdG8gcGlucG9pbnQgZXZlcnkgY2FsbCBzaXRlLiBJJiMzOTttIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBkZXRlcm1pbmUgZXZlcnkgaW5zdGFuY2Ugd2hlcmUgYGl3bF9wbnZtX2xvYWRgIGlzIGFjdHVhbGx5IGNhbGxlZC4gR290dGEgdW5kZXJzdGFuZCB0aGUgZW50aXJlIGNoYWluIG9mIGV2ZW50cyB0byBoYXZlIGEgZ29vZCBwaWN0dXJlIG9mIHdoYXQmIzM5O3MgaGFwcGVuaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfcG52bV9sb2FkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzU5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzozNjA6aXdsX3Budm1fbG9hZF9wbnZtX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzYxLVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgaXdsX2Z3ICpmdyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz00MDY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQwNzppd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQwOC1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgaXdsX3Vjb2RlX2NhcGFiaWxpdGllcyAqY2FwYSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0NTU6aW50IGl3bF9wbnZtX2xvYWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NTYtXHRcdCAgc3RydWN0IGl3bF9ub3RpZl93YWl0X2RhdGEgKm5vdGlmX3dhaXQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDY3Olx0aXdsX3Budm1fbG9hZF9wbnZtX3RvX3RyYW5zKHRyYW5zLCBmdywgc2t1X2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ2ODpcdGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHRyYW5zLCBcdTAwMjZmdy1cdTAwM2V1Y29kZV9jYXBhLCBza3VfaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDY5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ4MC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0ODE6SVdMX0VYUE9SVF9TWU1CT0woaXdsX3Budm1fbG9hZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmgtMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uaDoxNjppbnQgaXdsX3Budm1fbG9hZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5oLTE3LVx0XHQgIHN0cnVjdCBpd2xfbm90aWZfd2FpdF9kYXRhICpub3RpZl93YWl0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2Z3LmM9MjcyPXN0YXRpYyBpbnQgaXdsX21sZF9ydW5fZndfaW5pdF9zZXF1ZW5jZShzdHJ1Y3QgaXdsX21sZCAqbWxkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2Z3LmMtMjg5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvZncuYzoyOTA6XHRyZXQgPSBpd2xfcG52bV9sb2FkKG1sZC1cdTAwM2V0cmFucywgXHUwMDI2bWxkLVx1MDAzZW5vdGlmX3dhaXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9mdy5jLTI5MS1cdFx0XHQgICAgbWxkLVx1MDAzZWZ3LCBhbGl2ZV9kYXRhLnNrdV9pZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYz0yODY9c3RhdGljIGludCBpd2xfbXZtX2xvYWRfdWNvZGVfd2FpdF9hbGl2ZShzdHJ1Y3QgaXdsX212bSAqbXZtLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMtNDA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYzo0MDc6XHRyZXQgPSBpd2xfcG52bV9sb2FkKG12bS1cdTAwM2V0cmFucywgXHUwMDI2bXZtLVx1MDAzZW5vdGlmX3dhaXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jLTQwOC1cdFx0XHQgICAgbXZtLVx1MDAzZWZ3LCBhbGl2ZV9kYXRhLnNrdV9pZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNDIKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpd2x3aWZpIEZpcm13YXJlIExvYWRpbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIGl3bHdpZmkgZmlybXdhcmUgbG9hZGluZyBzZXF1ZW5jZSwgc3BlY2lmaWNhbGx5IGhvdyB0aGUgcmVkdWNlZCBwb3dlciBQTlZNIGRhdGEgaXMgaGFuZGxlZC4gTXkgcHJpbWFyeSBpbnRlcmVzdCBpcyBpbiB1bmRlcnN0YW5kaW5nIHRoZSBkYXRhIHNvdXJjZS4gRmlyc3QsIEkgc2VlIHRoaXMgaXMgcGFydCBvZiB0aGUgb3ZlcmFsbCBmaXJtd2FyZSBsb2FkaW5nLCBuYXR1cmFsbHkuIEJ1dCwgd2hlcmUgaXMgdGhlIGRhdGEgYWN0dWFsbHkgY29taW5nIGZyb20/CgpJIGZpbmQgYGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zYCwgYW5kIHRoYXQmIzM5O3MgdGhlIGtleS4gSW5zaWRlLCB0aGUgY29kZSB0cmllcyBgaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIodHJhbnMsICZhbXA7bGVuZ3RoKWAuIEludGVyZXN0aW5nLiBJZiB0aGF0IGZhaWxzLCBpdCBmYWxscyBiYWNrIHRvIGBpd2xfcG52bV9nZXRfZnJvbV9mcyh0cmFucywgJmFtcDtkYXRhLCAmYW1wO2xlbmd0aClgLiBBaGEhIE5vdyBpdCYjMzk7cyBjbGVhcjogYGl3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyYCBpcyByZWFkaW5nIGZyb20gVUVGSSB2YXJpYWJsZXMsIEkmIzM5O20gc3VyZSBvZiBpdC4gQW5kIGBpd2xfcG52bV9nZXRfZnJvbV9mc2AgaXMgdGhlIGZhbGxiYWNrLCB3aGljaCwgbmF0dXJhbGx5LCB1c2VzIGZpcm13YXJlIGZpbGVzIGxpa2UgYGl3bHdpZmktKi5wbnZtYC4KCldhaXQgYSBtaW51dGUsIGlmIGl0JiMzOTtzIFVFRkksIGl0IG11c3QgYmUgdXNpbmcgc29tZXRoaW5nIGxpa2UgYGVmaXZhcl9lbnRyeV9nZXRgIG9yIGEgc2ltaWxhciBmdW5jdGlvbiB0byBhY2Nlc3MgdGhlIHZhcmlhYmxlLiBJIG5lZWQgdG8gYmUgc3VyZTsgbGV0IG1lIGxvb2sgYXQgYGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZWAgdG8gdmVyaWZ5IHRoZSBsb3ctbGV2ZWwgdmFyaWFibGUgYWNjZXNzLiBUaGlzIGlzIGltcG9ydGFudCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgc2VjdXJpdHkgaW1wbGljYXRpb25zIG9mIHRoaXMgcHJvY2VzcywgaG93IHVwZGF0ZXMgYXJlIGhhbmRsZWQsIGFuZCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz04Mj1zdGF0aWMgdm9pZCAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4Mzppd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg0LVx0XHRcdFx0ICAgIGVmaV9ndWlkX3QgKmd1aWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MTE4PXN0YXRpYyB2b2lkICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjExOTppd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMjAtXHRcdFx0ICAgICAgIGVmaV9jaGFyMTZfdCAqdWVmaV92YXJfbmFtZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMjQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTI1Olx0cmV0dXJuIGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKHRyYW5zLCBcdTAwMjZJV0xfRUZJX1dJRklfR1VJRCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEyNi1cdFx0XHRcdFx0XHQgICB1ZWZpX3Zhcl9uYW1lLCB2YXJfbmFtZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0yODU9dTggKml3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBzaXplX3QgKmxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyOTE6XHRwYWNrYWdlID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjkyLVx0XHRcdFx0XHRcdCBJV0xfVUVGSV9SRURVQ0VEX1BPV0VSX05BTUUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MzI5PXZvaWQgaXdsX3VlZmlfZ2V0X3N0ZXBfdGFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MzM3Olx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKHRyYW5zLCBcdTAwMjZJV0xfRUZJX1dJRklfQlRfR1VJRCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTMzOC1cdFx0XHRcdFx0XHQgICBJV0xfVUVGSV9TVEVQX05BTUUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MzgzPXZvaWQgaXdsX3VlZmlfZ2V0X3Nnb21fdGFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MzkyOlx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZSh0cmFucywgSVdMX1VFRklfU0dPTV9OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzkzLVx0XHRcdFx0XHQgICAgICBcJiMzNDtTR09NXCYjMzQ7LCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz00MjA9dm9pZCBpd2xfdWVmaV9nZXRfdWF0c190YWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo0MjY6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHRyYW5zLCBJV0xfVUVGSV9VQVRTX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MjctXHRcdFx0XHRcdCAgICAgIFwmIzM0O1VBVFNcJiMzNDssIHNpemVvZigqZGF0YSksIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTQzOD12b2lkIGl3bF91ZWZpX2dldF91bmViX3RhYmxlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQ0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjQ0MzpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUodHJhbnMsIElXTF9VRUZJX1VORUJfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQ0NC1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7VU5FQlwmIzM0Oywgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9NDk3PWludCBpd2xfdWVmaV9nZXRfd3Jkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NTA1Olx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVx1MDAzZXRyYW5zLCBJV0xfVUVGSV9XUkRTX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01MDYtXHRcdFx0XHRcdCAgICAgIFwmIzM0O1dSRFNcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9NTQ1PWludCBpd2xfdWVmaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NTU0Olx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVx1MDAzZXRyYW5zLCBJV0xfVUVGSV9FV1JEX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01NTUtXHRcdFx0XHRcdCAgICAgIFwmIzM0O0VXUkRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9NTk5PWludCBpd2xfdWVmaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NjA4Olx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVx1MDAzZXRyYW5zLCBJV0xfVUVGSV9XR0RTX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02MDktXHRcdFx0XHRcdCAgICAgIFwmIzM0O1dHRFNcJiMzNDssIFVFRklfV0dEU19UQUJMRV9TSVpFX1JFVjMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9Njc2PWludCBpd2xfdWVmaV9nZXRfcHBhZ190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NjgzOlx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVx1MDAzZXRyYW5zLCBJV0xfVUVGSV9QUEFHX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02ODQtXHRcdFx0XHRcdCAgICAgIFwmIzM0O1BQQUdcJiMzNDssIFVFRklfUFBBR19EQVRBX1NJWkVfVjUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NjkzOlx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVx1MDAzZXRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjk0LVx0XHRcdFx0XHQgICAgICBJV0xfVUVGSV9QUEFHX05BTUUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9NzQ1PWludCBpd2xfdWVmaV9nZXRfdGFzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3NTE6XHR1ZWZpX3RhcyA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVx1MDAzZXRyYW5zLCBJV0xfVUVGSV9XVEFTX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NTItXHRcdFx0XHRcdFx0ICBcJiMzNDtXVEFTXCYjMzQ7LCBzaXplb2YoKnVlZmlfdGFzKSwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9Nzk4PWludCBpd2xfdWVmaV9nZXRfcHdyX2xpbWl0KHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4MDQ6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX1NQTENfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTgwNS1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7U1BMQ1wmIzM0Oywgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9ODIxPWludCBpd2xfdWVmaV9nZXRfbWNjKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwgY2hhciAqbWNjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTgyNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjgyNjpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cdTAwM2V0cmFucywgSVdMX1VFRklfV1JERF9OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODI3LVx0XHRcdFx0XHQgICAgICBcJiMzNDtXUkREXCYjMzQ7LCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz04NTI9aW50IGl3bF91ZWZpX2dldF9lY2t2KHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwgdTMyICpleHRsX2Nsaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04NTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4NTc6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQoZndydC1cdTAwM2V0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg1OC1cdFx0XHRcdFx0XHQgICBcdTAwMjZJV0xfRUZJX1dJRklfQlRfR1VJRCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz04NzY9aW50IGl3bF91ZWZpX2dldF93YmVtKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwgdTMyICp2YWx1ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04ODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4ODE6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX1dCRU1fTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg4Mi1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7V0JFTVwmIzM0Oywgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9ODk5PXN0YXRpYyBpbnQgaXdsX3VlZmlfbG9hZF9kc21fdmFsdWVzKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05MDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo5MDY6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX0RTTV9OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTA3LVx0XHRcdFx0XHQgICAgICBcJiMzNDtEU01cJiMzNDssIHNpemVvZigqZGF0YSksIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTk3Nj1pbnQgaXdsX3VlZmlfZ2V0X3B1bmN0dXJpbmcoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTk4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjk4NDpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cdTAwM2V0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTk4NS1cdFx0XHRcdFx0ICAgICAgSVdMX1VFRklfUFVOQ1RVUklOR19OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTEwMDU9aW50IGl3bF91ZWZpX2dldF9kc2JyKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwgdTMyICp2YWx1ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTAxMDpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZChmd3J0LVx1MDAzZXRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAxMS1cdFx0XHRcdFx0XHQgICBcdTAwMjZJV0xfRUZJX1dJRklfQlRfR1VJRCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0xMDMxPWludCBpd2xfdWVmaV9nZXRfcGh5X2ZpbHRlcnMoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMDM2Olx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVx1MDAzZXRyYW5zLCBJV0xfVUVGSV9XUEZDX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDM3LVx0XHRcdFx0XHQgICAgICBcJiMzNDtXUEZDXCYjMzQ7LCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNDEKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guCgoqKkZ1enppbmcgdGhlIFVFRkkgVmFyaWFibGUgUmVhZHMgaW4gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQqKgoKQWxyaWdodCwgc28gYGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkYCBpcyByZWFkaW5nIFVFRkkgdmFyaWFibGVzLiBJbnRlcmVzdGluZy4gVGhlIHF1ZXN0aW9uIG5vdyBpczogY2FuIEkgZnV6eiB0aGlzPyBUaGUgYW5zd2VyICpzaG91bGQqIGJlIHllcywgZ2l2ZW4gdGhhdCB0aGUga2VybmVsIHJlYWRzIHRoZW0uIE5vdywgdGhlcmUgYXJlIGEgY291cGxlIG9mIHdheXMgdGhpcyBjb3VsZCBoYXBwZW4sIHJpZ2h0PyBTeXprYWxsZXIgY291bGQgbW9jayB0aGUgRUZJIHN1YnN5c3RlbSBhbmQgcHJvdmlkZSBmdXp6ZWQgdmFyaWFibGVzLCBvciB0aGVyZSYjMzk7cyBzb21lICpvdGhlciogcGF0aCB0aGF0IGxlYWRzIHRvIHRoaXMuIEJ1dCBoYW5nIG9uLi4uIEkgZG9uJiMzOTt0IHRoaW5rIHN5emthbGxlciBkaXJlY3RseSBtb2NrcyBFRkkgdmFyaWFibGVzIHVubGVzcyB0aGVyZSYjMzk7cyBzb21lIGV4cGxpY2l0IG1lY2hhbmlzbSBkZWZpbmVkIGZvciBpdCwgYXQgbGVhc3Qgbm90IHRoYXQgSSBjYW4gcmVjYWxsIG9mZiB0aGUgdG9wIG9mIG15IGhlYWQuIAoKV2FpdCBhIG1pbnV0ZS4uLiBkaWRuJiMzOTt0IEkgc2VlIHNvbWV0aGluZyBlbHNlIGluIHRoYXQgY29kZT8gT2ggeWVhaCEgYGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zYCDigJMgdGhhdCBmdW5jdGlvbiAqYWxzbyogcGFyc2VzIGRhdGEsIGJ1dCBpbiB0aGlzIGNhc2UsIHRoZSBkYXRhIGNvbWVzIGZyb20gdGhlICpmaWxlc3lzdGVtKi4gU28sIHRoYXQgY291bGQgYmUgdGhlIGVudHJ5cG9pbnQuIEkgc2hvdWxkIHByb2JhYmx5IGRpZyBpbnRvIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AgdG8gc2VlIGlmIHRoYXQmIzM5O3MgYSB2aWFibGUgYXZlbnVlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDA2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDA2Olx0c3RhdGljIHZvaWRcbiA0MDc6XHRpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbiA0MDg6XHRcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgaXdsX3Vjb2RlX2NhcGFiaWxpdGllcyAqY2FwYSxcbiA0MDk6XHRcdFx0XHRcdCAgICBfX2xlMzIgc2t1X2lkWzNdKVxuIDQxMDpcdHtcbiA0MTE6XHRcdHN0cnVjdCBpd2xfcG52bV9pbWFnZSAqcG52bV9kYXRhID0gTlVMTDtcbiA0MTI6XHRcdHU4ICpkYXRhID0gTlVMTDtcbiA0MTM6XHRcdHNpemVfdCBsZW5ndGg7XG4gNDE0Olx0XHRpbnQgcmV0O1xuIDQxNTpcdFxuIDQxNjpcdFx0aWYgKHRyYW5zLVx1MDAzZWZhaWxlZF90b19sb2FkX3JlZHVjZV9wb3dlcl9pbWFnZSlcbiA0MTc6XHRcdFx0cmV0dXJuO1xuIDQxODpcdFxuIDQxOTpcdFx0aWYgKHRyYW5zLVx1MDAzZXJlZHVjZV9wb3dlcl9sb2FkZWQpXG4gNDIwOlx0XHRcdGdvdG8gc2V0O1xuIDQyMTpcdFxuIDQyMjpcdFx0ZGF0YSA9IGl3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHRyYW5zLCBcdTAwMjZsZW5ndGgpO1xuIDQyMzpcdFx0aWYgKElTX0VSUihkYXRhKSkge1xuIDQyNDpcdFx0XHR0cmFucy1cdTAwM2VmYWlsZWRfdG9fbG9hZF9yZWR1Y2VfcG93ZXJfaW1hZ2UgPSB0cnVlO1xuIDQyNTpcdFx0XHRyZXR1cm47XG4gNDI2Olx0XHR9XG4gNDI3Olx0XG4gNDI4Olx0XHRwbnZtX2RhdGEgPSBremFsbG9jX29iaigqcG52bV9kYXRhKTtcbiA0Mjk6XHRcdGlmICghcG52bV9kYXRhKVxuIDQzMDpcdFx0XHRnb3RvIGZyZWU7XG4gNDMxOlx0XG4gNDMyOlx0XHRyZXQgPSBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2UodHJhbnMsIGRhdGEsIGxlbmd0aCwgcG52bV9kYXRhLFxuIDQzMzpcdFx0XHRcdFx0XHQgIHNrdV9pZCk7XG4gNDM0Olx0XHRpZiAocmV0KSB7XG4gNDM1Olx0XHRcdHRyYW5zLVx1MDAzZWZhaWxlZF90b19sb2FkX3JlZHVjZV9wb3dlcl9pbWFnZSA9IHRydWU7XG4gNDM2Olx0XHRcdGdvdG8gZnJlZTtcbiA0Mzc6XHRcdH1cbiA0Mzg6XHRcbiA0Mzk6XHRcdHJldCA9IGl3bF90cmFuc19sb2FkX3JlZHVjZV9wb3dlcih0cmFucywgcG52bV9kYXRhLCBjYXBhKTtcbiA0NDA6XHRcdGlmIChyZXQpIHtcbiA0NDE6XHRcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLFxuIDQ0MjpcdFx0XHRcdCAgICAgXCYjMzQ7RmFpbGVkIHRvIGxvYWQgcmVkdWNlIHBvd2VyIHRhYmxlICVkXFxuXCYjMzQ7LFxuIDQ0MzpcdFx0XHRcdCAgICAgcmV0KTtcbiA0NDQ6XHRcdFx0dHJhbnMtXHUwMDNlZmFpbGVkX3RvX2xvYWRfcmVkdWNlX3Bvd2VyX2ltYWdlID0gdHJ1ZTtcbiA0NDU6XHRcdFx0Z290byBmcmVlO1xuIDQ0NjpcdFx0fVxuIDQ0NzpcdFxuIDQ0ODpcdHNldDpcbiA0NDk6XHRcdGl3bF90cmFuc19zZXRfcmVkdWNlX3Bvd2VyKHRyYW5zLCBjYXBhKTtcbiA0NTA6XHRmcmVlOlxuIDQ1MTpcdFx0a2ZyZWUoZGF0YSk7XG4gNDUyOlx0XHRrZnJlZShwbnZtX2RhdGEpO1xuIDQ1MzpcdH1cbiA0NTQ6XHRcbiA0NTU6XHRpbnQgaXdsX3Budm1fbG9hZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbiA0NTY6XHRcdFx0ICBzdHJ1Y3QgaXdsX25vdGlmX3dhaXRfZGF0YSAqbm90aWZfd2FpdCxcbiA0NTc6XHRcdFx0ICBjb25zdCBzdHJ1Y3QgaXdsX2Z3ICpmdywgX19sZTMyIHNrdV9pZFszXSlcbiA0NTg6XHR7XG4gNDU5Olx0XHRzdHJ1Y3QgaXdsX25vdGlmaWNhdGlvbl93YWl0IHBudm1fd2FpdDtcbiA0NjA6XHRcdHN0YXRpYyBjb25zdCB1MTYgbnRmX2NtZHNbXSA9IHsgV0lERV9JRChSRUdVTEFUT1JZX0FORF9OVk1fR1JPVVAsXG4gNDYxOlx0XHRcdFx0XHRcdFx0UE5WTV9JTklUX0NPTVBMRVRFX05URlkpIH07XG4gNDYyOlx0XG4gNDYzOlx0XHQvKiBpZiB0aGUgU0tVX0lEIGlzIGVtcHR5LCB0aGVyZSYjMzk7cyBub3RoaW5nIHRvIGRvICovXG4gNDY0Olx0XHRpZiAoIXNrdV9pZFswXSBcdTAwMjZcdTAwMjYgIXNrdV9pZFsxXSBcdTAwMjZcdTAwMjYgIXNrdV9pZFsyXSlcbiA0NjU6XHRcdFx0cmV0dXJuIDA7XG4gNDY2Olx0XG4gNDY3Olx0XHRpd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnModHJhbnMsIGZ3LCBza3VfaWQpO1xuIDQ2ODpcdFx0aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnModHJhbnMsIFx1MDAyNmZ3LVx1MDAzZXVjb2RlX2NhcGEsIHNrdV9pZCk7XG4gNDY5Olx0XG4gNDcwOlx0XHRpd2xfaW5pdF9ub3RpZmljYXRpb25fd2FpdChub3RpZl93YWl0LCBcdTAwMjZwbnZtX3dhaXQsXG4gNDcxOlx0XHRcdFx0XHQgICBudGZfY21kcywgQVJSQVlfU0laRShudGZfY21kcyksXG4gNDcyOlx0XHRcdFx0XHQgICBpd2xfcG52bV9jb21wbGV0ZV9mbiwgdHJhbnMpO1xuIDQ3MzpcdFxuIDQ3NDpcdFx0Lyoga2ljayB0aGUgZG9vcmJlbGwgKi9cbiA0NzU6XHRcdGl3bF93cml0ZV91bWFjX3BycGgodHJhbnMsIFVSRUdfRE9PUkJFTExfVE9fSVNSNixcbiA0NzY6XHRcdFx0XHQgICAgVVJFR19ET09SQkVMTF9UT19JU1I2X1BOVk0pO1xuIDQ3NzpcdFxuIDQ3ODpcdFx0cmV0dXJuIGl3bF93YWl0X25vdGlmaWNhdGlvbihub3RpZl93YWl0LCBcdTAwMjZwbnZtX3dhaXQsXG4gNDc5Olx0XHRcdFx0XHQgICAgIE1WTV9VQ09ERV9QTlZNX1RJTUVPVVQpO1xuIDQ4MDpcdH1cbiA0ODE6XHRJV0xfRVhQT1JUX1NZTUJPTChpd2xfcG52bV9sb2FkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI5MjcKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqQW5hbHl6aW5nIERhdGEgU291cmNlIGZvciBQb3dlciBSZWR1Y3Rpb24gSW5mb3JtYXRpb24qKgoKSG1tLCBpdCBzZWVtcyBsaWtlIGBpd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcmAgaXMgdGhlICpvbmx5KiBwbGFjZSB0aGUgc3lzdGVtIGlzIHB1bGxpbmcgZGF0YSBmcm9tIGZvciBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgLiBUaGF0JiMzOTtzIGEgY3JpdGljYWwgZGVwZW5kZW5jeSwgYW5kIGEgcG90ZW50aWFsIHNpbmdsZSBwb2ludCBvZiBmYWlsdXJlIG9yIGJvdHRsZW5lY2suIEkgbmVlZCB0byByZXZpc2l0IHRoYXQgZnVuY3Rpb24sIGBpd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcmAsIHdpdGggYSBmaW5lLXRvb3RoIGNvbWIuIEFueSBpc3N1ZXMgdGhlcmUsIGFuZCB0aGUgZW50aXJlIHBvd2VyIHJlZHVjdGlvbiBtZWNoYW5pc20gZm9yIHRoZSBQTlZNIGlzIGNvbXByb21pc2VkLiBMZXQmIzM5O3MgbWFrZSBzdXJlIGl0IGlzIGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjg1Olx0dTggKml3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBzaXplX3QgKmxlbilcbiAyODY6XHR7XG4gMjg3Olx0XHRzdHJ1Y3QgcG52bV9za3VfcGFja2FnZSAqcGFja2FnZTtcbiAyODg6XHRcdHVuc2lnbmVkIGxvbmcgcGFja2FnZV9zaXplO1xuIDI4OTpcdFx0dTggKmRhdGE7XG4gMjkwOlx0XG4gMjkxOlx0XHRwYWNrYWdlID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHRyYW5zLFxuIDI5MjpcdFx0XHRcdFx0XHRcdCBJV0xfVUVGSV9SRURVQ0VEX1BPV0VSX05BTUUsXG4gMjkzOlx0XHRcdFx0XHRcdFx0IFwmIzM0O1JlZHVjZWQgUG93ZXJcJiMzNDssXG4gMjk0Olx0XHRcdFx0XHRcdFx0IHNpemVvZigqcGFja2FnZSksXG4gMjk1Olx0XHRcdFx0XHRcdFx0IFx1MDAyNnBhY2thZ2Vfc2l6ZSk7XG4gMjk2Olx0XHRpZiAoSVNfRVJSKHBhY2thZ2UpKVxuIDI5NzpcdFx0XHRyZXR1cm4gRVJSX0NBU1QocGFja2FnZSk7XG4gMjk4Olx0XG4gMjk5Olx0XHRJV0xfREVCVUdfRlcodHJhbnMsIFwmIzM0O3JldiAlZCwgdG90YWxfc2l6ZSAlZCwgbl9za3VzICVkXFxuXCYjMzQ7LFxuIDMwMDpcdFx0XHQgICAgIHBhY2thZ2UtXHUwMDNlcmV2LCBwYWNrYWdlLVx1MDAzZXRvdGFsX3NpemUsIHBhY2thZ2UtXHUwMDNlbl9za3VzKTtcbiAzMDE6XHRcbiAzMDI6XHRcdCpsZW4gPSBwYWNrYWdlX3NpemUgLSBzaXplb2YoKnBhY2thZ2UpO1xuIDMwMzpcdFx0ZGF0YSA9IGttZW1kdXAocGFja2FnZS1cdTAwM2VkYXRhLCAqbGVuLCBHRlBfS0VSTkVMKTtcbiAzMDQ6XHRcdGlmICghZGF0YSkge1xuIDMwNTpcdFx0XHRrZnJlZShwYWNrYWdlKTtcbiAzMDY6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4gMzA3Olx0XHR9XG4gMzA4Olx0XG4gMzA5Olx0XHRrZnJlZShwYWNrYWdlKTtcbiAzMTA6XHRcbiAzMTE6XHRcdHJldHVybiBkYXRhO1xuIDMxMjpcdH1cbiAzMTM6XHRcbiAzMTQ6XHRzdGF0aWMgaW50IGl3bF91ZWZpX3N0ZXBfcGFyc2Uoc3RydWN0IHVlZmlfY252X2NvbW1vbl9zdGVwX2RhdGEgKmNvbW1vbl9zdGVwX2RhdGEsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNjM4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIHRoZSBzeXN0ZW0mIzM5O3MgcmVhZGluZyBmcm9tIFVFRkkgdmFyaWFibGVzLCBpbnRlcmVzdGluZy4gVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGhvdyBkb2VzIHN5emthbGxlciBhY3R1YWxseSAqdGVzdCogdGhpcyBpbnRlcmFjdGlvbj8gTXkgZmlyc3QgdGhvdWdodCBpcyB0aGUgc3RhbmRhcmQgYXBwcm9hY2gg4oCTIGBlZml2YXJmc2Agb3Igc29tZXRoaW5nIGxpa2UgdGhhdCwgd2hlcmUgaXQgbW9ja3MgdGhlIHZhcmlhYmxlcyBkaXJlY3RseS4gQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gdGhlIGNvZGUgcGF0aCBmb3IgdGhpcyBzZWVtcyB0byBiZSB0aHJvdWdoIGBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVgLCBhbmQgKnRoYXQqIGNhbGxzIGBlZmkuZ2V0X3ZhcmlhYmxlYC4gUmlnaHQuIFNvLCB0aGUga2V5IGlzIGRpZ2dpbmcgaW50byBgaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaW50ZXJlc3Rpbmcgc3R1ZmYgbGlrZWx5IGlzLiBMZXQmIzM5O3Mgc3RhcnQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDgyOlx0c3RhdGljIHZvaWQgKlxuICA4MzpcdGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuICA4NDpcdFx0XHRcdFx0ICAgIGVmaV9ndWlkX3QgKmd1aWQsXG4gIDg1Olx0XHRcdFx0XHQgICAgZWZpX2NoYXIxNl90ICp1ZWZpX3Zhcl9uYW1lLFxuICA4NjpcdFx0XHRcdFx0ICAgIGNoYXIgKnZhcl9uYW1lLFxuICA4NzpcdFx0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBleHBlY3RlZF9zaXplLFxuICA4ODpcdFx0XHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgKnNpemUpXG4gIDg5Olx0e1xuICA5MDpcdFx0dm9pZCAqdmFyO1xuICA5MTpcdFx0dW5zaWduZWQgbG9uZyB2YXJfc2l6ZTtcbiAgOTI6XHRcbiAgOTM6XHRcdHZhciA9IGl3bF91ZWZpX2dldF92YXJpYWJsZSh1ZWZpX3Zhcl9uYW1lLCBndWlkLCBcdTAwMjZ2YXJfc2l6ZSk7XG4gIDk0Olx0XG4gIDk1Olx0XHRpZiAoSVNfRVJSKHZhcikpIHtcbiAgOTY6XHRcdFx0SVdMX0RFQlVHX1JBRElPKHRyYW5zLFxuICA5NzpcdFx0XHRcdFx0XCYjMzQ7JXMgVUVGSSB2YXJpYWJsZSBub3QgZm91bmQgMHglbHhcXG5cJiMzNDssIHZhcl9uYW1lLFxuICA5ODpcdFx0XHRcdFx0UFRSX0VSUih2YXIpKTtcbiAgOTk6XHRcdFx0cmV0dXJuIHZhcjtcbiAxMDA6XHRcdH1cbiAxMDE6XHRcbiAxMDI6XHRcdGlmICh2YXJfc2l6ZSBcdTAwM2MgZXhwZWN0ZWRfc2l6ZSkge1xuIDEwMzpcdFx0XHRJV0xfREVCVUdfUkFESU8odHJhbnMsXG4gMTA0Olx0XHRcdFx0XHRcJiMzNDtJbnZhbGlkICVzIFVFRkkgdmFyaWFibGUgbGVuICglbHUpXFxuXCYjMzQ7LFxuIDEwNTpcdFx0XHRcdFx0dmFyX25hbWUsIHZhcl9zaXplKTtcbiAxMDY6XHRcdFx0a2ZyZWUodmFyKTtcbiAxMDc6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4gMTA4Olx0XHR9XG4gMTA5Olx0XG4gMTEwOlx0XHRJV0xfREVCVUdfUkFESU8odHJhbnMsIFwmIzM0OyVzIGZyb20gVUVGSSB3aXRoIHNpemUgJWx1XFxuXCYjMzQ7LCB2YXJfbmFtZSxcbiAxMTE6XHRcdFx0XHR2YXJfc2l6ZSk7XG4gMTEyOlx0XG4gMTEzOlx0XHRpZiAoc2l6ZSlcbiAxMTQ6XHRcdFx0KnNpemUgPSB2YXJfc2l6ZTtcbiAxMTU6XHRcdHJldHVybiB2YXI7XG4gMTE2Olx0fVxuIDExNzpcdFxuIDExODpcdHN0YXRpYyB2b2lkICpcbiAxMTk6XHRpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4gMTIwOlx0XHRcdFx0ICAgICAgIGVmaV9jaGFyMTZfdCAqdWVmaV92YXJfbmFtZSxcbiAxMjE6XHRcdFx0XHQgICAgICAgY2hhciAqdmFyX25hbWUsXG4gMTIyOlx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBleHBlY3RlZF9zaXplLFxuIDEyMzpcdFx0XHRcdCAgICAgICB1bnNpZ25lZCBsb25nICpzaXplKVxuIDEyNDpcdHtcbiAxMjU6XHRcdHJldHVybiBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZCh0cmFucywgXHUwMDI2SVdMX0VGSV9XSUZJX0dVSUQsXG4gMTI2Olx0XHRcdFx0XHRcdFx0ICAgdWVmaV92YXJfbmFtZSwgdmFyX25hbWUsXG4gMTI3Olx0XHRcdFx0XHRcdFx0ICAgZXhwZWN0ZWRfc2l6ZSwgc2l6ZSk7XG4gMTI4Olx0fVxuIDEyOTpcdFxuIDEzMDpcdGludCBpd2xfdWVmaV9oYW5kbGVfdGx2X21lbV9kZXNjKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCB1OCAqZGF0YSxcbiAxMzE6XHRcdFx0XHRcdCB1MzIgdGx2X2xlbiwgc3RydWN0IGl3bF9wbnZtX2ltYWdlICpwbnZtX2RhdGEpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NjUzCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRlbHZpbmcgaW50byBVRUZJIFZhcmlhYmxlIFJldHJpZXZhbCB3aXRoIGl3bF91ZWZpX2dldF92YXJpYWJsZSoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGl3bF91ZWZpX2dldF92YXJpYWJsZWAgYW5kIGltbWVkaWF0ZWx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBsb3ctbGV2ZWwgaW50ZXJhY3Rpb25zIGhlcmUuIFRoaXMgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uIGZvciwgSSBhc3N1bWUsIHJldHJpZXZpbmcgVUVGSSB2YXJpYWJsZXMgdGhhdCBhcmUgZ29pbmcgdG8gYmUgdXNlZCBpbiB0aGUgSW50ZWwgV2lyZWxlc3MgZHJpdmVyIChpd2x3aWZpKSBjb250ZXh0LCBsaWtlbHkgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBmaXJtd2FyZSBsb2FkaW5nLCBvciBwb3RlbnRpYWxseSBkdXJpbmcgcnVudGltZSBmb3IgY29uZmlndXJhdGlvbi4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBleGFjdCBwdXJwb3NlLiBJcyBpdCBhIGRpcmVjdCB3cmFwcGVyIGFyb3VuZCBgR2V0VmFyaWFibGUoKWAgZnJvbSB0aGUgVUVGSSBydW50aW1lIHNlcnZpY2VzPyBBcmUgdGhlcmUgYW55IHNpZ25pZmljYW50IGVycm9yIGNoZWNrcyBvciByZXRyaWVzIGltcGxlbWVudGVkIGhlcmU/IElmIGl0JiMzOTtzIGEgd3JhcHBlciwgd2hhdCBsZXZlbCBvZiBhYnN0cmFjdGlvbiBkb2VzIGl0IG9mZmVyPyBEb2VzIGl0IGhhbmRsZSB0aGUgY29tcGxleGl0aWVzIG9mIHZhcmlhYmxlIGF0dHJpYnV0ZXMgbGlrZSBiZWluZyByZWFkLW9ubHkgb3Igdm9sYXRpbGU/IEkgaGF2ZSB0byBjb25zaWRlciB0aGUgcG90ZW50aWFsIGZvciByYWNlIGNvbmRpdGlvbnMgb3IgYWNjZXNzIHZpb2xhdGlvbnMgaWYgbXVsdGlwbGUgcHJvY2Vzc2VzIGFyZSB0cnlpbmcgdG8gbWFuaXB1bGF0ZSBvciBhY2Nlc3MgdGhlIHNhbWUgdmFyaWFibGVzIHNpbXVsdGFuZW91c2x5LgoKQmV5b25kIHRoYXQsIEkmIzM5O20gaW1tZWRpYXRlbHkgaW50ZXJlc3RlZCBpbiB0aGUgcG90ZW50aWFsIGltcGFjdCBvbiBzeXN0ZW0gcGVyZm9ybWFuY2UuIEhvdyBlZmZpY2llbnRseSBpcyBpdCBpbnRlcmFjdGluZyB3aXRoIHRoZSBmaXJtd2FyZT8gV2hhdCYjMzk7cyB0aGUgb3ZlcmhlYWQgaW52b2x2ZWQgaW4gdGhlIGNvbW11bmljYXRpb24/IElzIHRoZXJlIGFueSBjYWNoaW5nIGltcGxlbWVudGVkLCBhbmQgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2FjaGUgaW52YWxpZGF0aW9uIHN0cmF0ZWd5PwoKRnVydGhlcm1vcmUsIEkgaGF2ZSB0byBjb25zaWRlciB0aGUgc2VjdXJpdHkgaW1wbGljYXRpb25zLCBvZiBjb3Vyc2UuIEFyZSB0aGVyZSBhbnkga25vd24gdnVsbmVyYWJpbGl0aWVzIHJlbGF0ZWQgdG8gVUVGSSB2YXJpYWJsZSBhY2Nlc3MgdGhhdCB0aGlzIGZ1bmN0aW9uIG1pZ2h0IGluYWR2ZXJ0ZW50bHkgZXhwb3NlPyBDb3VsZCBhIG1hbGljaW91cyBhY3RvciBsZXZlcmFnZSBhIHZ1bG5lcmFiaWxpdHkgaW4gdGhlIHZhcmlhYmxlIHJldHJpZXZhbCBwcm9jZXNzIGZvciBhIHN5c3RlbSBjb21wcm9taXNlPyBBcmUgdGhlcmUgYW55IGNoZWNrcyBmb3IgcG90ZW50aWFsbHkgbWFsaWNpb3VzIFVFRkkgdmFyaWFibGVzPwoKRmluYWxseSwgd2hhdOKAmXMgdGhlIGVycm9yIGhhbmRsaW5nPyBIb3cgZG9lcyBpdCBoYW5kbGUgc2NlbmFyaW9zIHdoZXJlIHRoZSB2YXJpYWJsZSBkb2VzbuKAmXQgZXhpc3QsIHRoZSBmaXJtd2FyZSByZXR1cm5zIGFuIGVycm9yLCBvciB0aGUgYnVmZmVyIGlzIHRvbyBzbWFsbD8gV2hhdCBhcmUgdGhlIHJldHVybiBjb2RlcyBvciBlcnJvciBjb2RlcyBpdCB1c2VzLCBhbmQgaG93IGRvZXMgdGhhdCBwcm9wYWdhdGUgdXAgdGhlIGNhbGwgc3RhY2sgdG8gdGhlIHJlc3Qgb2YgdGhlIGRyaXZlcj8gVGhlIHJvYnVzdG5lc3Mgb2YgdGhlIGVycm9yIGhhbmRsaW5nIHdpbGwgbGlrZWx5IGJlIHRoZSBmaXJzdCBwb2ludCBvZiB2dWxuZXJhYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfdWVmaV9nZXRfdmFyaWFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0yMz1zdHJ1Y3QgaXdsX3VlZmlfcG52bV9tZW1fZGVzYyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyOTpzdGF0aWMgdm9pZCAqaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKGVmaV9jaGFyMTZfdCAqbmFtZSwgZWZpX2d1aWRfdCAqZ3VpZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTMwLVx0XHRcdFx0ICAgdW5zaWduZWQgbG9uZyAqZGF0YV9zaXplKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTYwPXZvaWQgKml3bF91ZWZpX2dldF9wbnZtKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBzaXplX3QgKmxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjY3Olx0ZGF0YSA9IGl3bF91ZWZpX2dldF92YXJpYWJsZShJV0xfVUVGSV9PRU1fUE5WTV9OQU1FLCBcdTAwMjZJV0xfRUZJX1dJRklfR1VJRCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY4LVx0XHRcdFx0ICAgICBcdTAwMjZwYWNrYWdlX3NpemUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTgzPWl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6OTM6XHR2YXIgPSBpd2xfdWVmaV9nZXRfdmFyaWFibGUodWVmaV92YXJfbmFtZSwgZ3VpZCwgXHUwMDI2dmFyX3NpemUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NTg4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIGBpd2xfdWVmaV9nZXRfdmFyaWFibGVgLCB2aWV3ZWQgdGhyb3VnaCB0aGUgbGVucyBvZiBteSBleHBlcnRpc2U6CgoqKk15IFBlcnNwZWN0aXZlIG9uIGBpd2xfdWVmaV9nZXRfdmFyaWFibGVgKioKCkFscmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBpd2xfdWVmaV9nZXRfdmFyaWFibGVgLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGZ1bmN0aW9uIGlzIGxpa2VseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYW4gSW50ZWwgd2lyZWxlc3MgZGV2aWNlIGRyaXZlciwgcHJvYmFibHkgb24gYSBzeXN0ZW0gdGhhdCBsZXZlcmFnZXMgVUVGSS4gVGhlICYjMzQ7aXdsJiMzNDsgcHJlZml4IGlzIGEgZGVhZCBnaXZlYXdheSDigJMgaXQgc2NyZWFtcyBJbnRlbCBXaXJlbGVzcyBMQU4uIEFuZCB0aGF0ICYjMzQ7dWVmaSYjMzQ7IHBhcnQ/IEl0IG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaW50ZXJhY3Rpb25zIHdpdGggdGhlIFVFRkkgZmlybXdhcmUsIHNwZWNpZmljYWxseSB0byByZXRyaWV2ZSBhIHZhcmlhYmxlLgoKTXkgZmlyc3QgdGhvdWdodCBpcywgJiMzNDt3aHkgYXJlIHdlIHF1ZXJ5aW5nIGEgVUVGSSB2YXJpYWJsZT8mIzM0Oy4gIEl0IGNvdWxkIGJlIGFueXRoaW5nIGZyb20gYm9vdC10aW1lIGNvbmZpZ3VyYXRpb24sIGhhcmR3YXJlLXNwZWNpZmljIHNldHRpbmdzLCBhIHVuaXF1ZSBpZGVudGlmaWVyLCBvciBzb21ldGhpbmcgcmVsYXRlZCB0byBhIHNwZWNpZmljIGZlYXR1cmUgbGlrZSBzZWN1cmUgYm9vdCBzdGF0dXMuIFRoaXMgZnVuY3Rpb24gaXMgdGhlIGdhdGV3YXkgdG8gZmV0Y2hpbmcgdGhhdCBpbmZvcm1hdGlvbi4gIFdlJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgKndoYXQqIHZhcmlhYmxlIGlzIGJlaW5nIGZldGNoZWQgYnkgbG9va2luZyBhdCB0aGUgYnJvYWRlciBjb250ZXh0IG9mIHRoZSBkcml2ZXIgYW5kIGhvdyBpdCYjMzk7cyB1c2VkLgoKVGhlIGludGVyZXN0aW5nIGFzcGVjdCB3aWxsIGJlICpob3cqIGl0JiMzOTtzIGRvbmUuIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgd2UmIzM5O2xsIGJlIGRlYWxpbmcgd2l0aCBVRUZJIHJ1bnRpbWUgc2VydmljZXMgKGxpa2VseSB1c2luZyBhIEdVSUQgdG8gaWRlbnRpZnkgdGhlIHZhcmlhYmxlKSBhbmQgaGFuZGxpbmcgdGhlIHZhcmlvdXMgZXJyb3IgY29kZXMgdGhhdCBjb21lIHdpdGggaW50ZXJhY3Rpbmcgd2l0aCBmaXJtd2FyZS4gVGhlcmUgY291bGQgYmUgaXNzdWVzIHdpdGggdmFyaWFibGUgcGVybWlzc2lvbnMsIGluY29ycmVjdCBidWZmZXIgc2l6ZXMsIG9yIHRoZSB2YXJpYWJsZSBzaW1wbHkgbm90IGV4aXN0aW5nIGluIHRoZSBmaXJzdCBwbGFjZS4gRXJyb3IgaGFuZGxpbmcgd2lsbCBiZSBjcml0aWNhbCBoZXJlLCBhbmQgSSYjMzk7bGwgd2FudCB0byBzZWUgaG93IHJvYnVzdGx5IGl0JiMzOTtzIGltcGxlbWVudGVkLiBJJiMzOTttIGdvaW5nIHRvIGJlIGxvb2tpbmcgZm9yIGNoZWNrcyBvbiByZXR1cm4gdmFsdWVzIGZyb20gdGhlIFVFRkkgcnVudGltZSBzZXJ2aWNlIGNhbGxzIGFuZCBob3cgdGhlIGRyaXZlciBkZWFscyB3aXRoIHRoZSB2YXJpb3VzIGZhaWx1cmVzLgoKSSYjMzk7bSBhbHNvIGN1cmlvdXMgYWJvdXQgdGhlIHBvdGVudGlhbCBzZWN1cml0eSBpbXBsaWNhdGlvbnMuIElmIHRoaXMgZnVuY3Rpb24gaXMgcG9vcmx5IGltcGxlbWVudGVkLCBpdCBjb3VsZCBpbnRyb2R1Y2UgdnVsbmVyYWJpbGl0aWVzLiBJbXByb3Blcmx5IHZhbGlkYXRlZCBpbnB1dCBwYXJhbWV0ZXJzIGNvdWxkIGxlYWQgdG8gYnVmZmVyIG92ZXJmbG93cyBvciBpbmZvcm1hdGlvbiBsZWFrcy4gSSYjMzk7bGwgbmVlZCB0byBzY3J1dGluaXplIGFueSBkYXRhIHRoYXTigJlzIHBhc3NlZCBmcm9tIG9yIHJldHVybmVkIHRvIHRoZSBVRUZJIGZpcm13YXJlIGZvciBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4KCk92ZXJhbGwsIGBpd2xfdWVmaV9nZXRfdmFyaWFibGVgIGhhcyBtZSB0aGlua2luZyBhYm91dCBVRUZJIHJ1bnRpbWUgaW50ZXJhY3Rpb25zLCBlcnJvciBoYW5kbGluZywgcG90ZW50aWFsIHNlY3VyaXR5IGltcGxpY2F0aW9ucywgYW5kIHRoZSBzcGVjaWZpYyB1c2UgY2FzZSB3aXRoaW4gdGhpcyBJbnRlbCB3aXJlbGVzcyBkcml2ZXIuIE15IGN1cmlvc2l0eSBpcyBkZWZpbml0ZWx5IHBpcXVlZCwgbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHJlYWxseSBoYXBwZW5pbmchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyOSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDI5Olx0c3RhdGljIHZvaWQgKml3bF91ZWZpX2dldF92YXJpYWJsZShlZmlfY2hhcjE2X3QgKm5hbWUsIGVmaV9ndWlkX3QgKmd1aWQsXG4gIDMwOlx0XHRcdFx0XHQgICB1bnNpZ25lZCBsb25nICpkYXRhX3NpemUpXG4gIDMxOlx0e1xuICAzMjpcdFx0ZWZpX3N0YXR1c190IHN0YXR1cztcbiAgMzM6XHRcdHZvaWQgKmRhdGE7XG4gIDM0Olx0XG4gIDM1Olx0XHRpZiAoIWRhdGFfc2l6ZSlcbiAgMzY6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4gIDM3Olx0XG4gIDM4Olx0XHRpZiAoIWVmaV9ydF9zZXJ2aWNlc19zdXBwb3J0ZWQoRUZJX1JUX1NVUFBPUlRFRF9HRVRfVkFSSUFCTEUpKVxuICAzOTpcdFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PREVWKTtcbiAgNDA6XHRcbiAgNDE6XHRcdC8qIGZpcnN0IGNhbGwgd2l0aCBOVUxMIGRhdGEgdG8gZ2V0IHRoZSBleGFjdCBlbnRyeSBzaXplICovXG4gIDQyOlx0XHQqZGF0YV9zaXplID0gMDtcbiAgNDM6XHRcdHN0YXR1cyA9IGVmaS5nZXRfdmFyaWFibGUobmFtZSwgZ3VpZCwgTlVMTCwgZGF0YV9zaXplLCBOVUxMKTtcbiAgNDQ6XHRcdGlmIChzdGF0dXMgIT0gRUZJX0JVRkZFUl9UT09fU01BTEwgfHwgISpkYXRhX3NpemUpXG4gIDQ1Olx0XHRcdHJldHVybiBFUlJfUFRSKC1FSU8pO1xuICA0NjpcdFxuICA0NzpcdFx0ZGF0YSA9IGttYWxsb2MoKmRhdGFfc2l6ZSwgR0ZQX0tFUk5FTCk7XG4gIDQ4Olx0XHRpZiAoIWRhdGEpXG4gIDQ5Olx0XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuICA1MDpcdFxuICA1MTpcdFx0c3RhdHVzID0gZWZpLmdldF92YXJpYWJsZShuYW1lLCBndWlkLCBOVUxMLCBkYXRhX3NpemUsIGRhdGEpO1xuICA1MjpcdFx0aWYgKHN0YXR1cyAhPSBFRklfU1VDQ0VTUykge1xuICA1MzpcdFx0XHRrZnJlZShkYXRhKTtcbiAgNTQ6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7XG4gIDU1Olx0XHR9XG4gIDU2Olx0XG4gIDU3Olx0XHRyZXR1cm4gZGF0YTtcbiAgNTg6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NTUzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNTUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgYW4gRUZJIFZhcmlhYmxlIEludGVyYWN0aW9uIGluIGl3bHdpZmkqKgoKT2theSwgc28gdGhpcyBwYXRjaCB0b3VjaGVzIGBlZmkuZ2V0X3ZhcmlhYmxlYCwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmssICYjMzQ7Q2FuIHN5emthbGxlciBmdXp6IHRoaXM/JiMzNDsgV2Uga25vdyBzeXprYWxsZXIgY2FuIGhpdCBFRkkgdmFyaWFibGVzIGlmIGl0IGNhbiB3cml0ZSB0byBgL3N5cy9maXJtd2FyZS9lZmkvZWZpdmFycy9gLCB3aGljaCBpdCBkZWZpbml0ZWx5IGNhbi4gVGhlbiBJIHJlbWVtYmVyIHRoYXQgYGl3bHdpZmlgIGxvYWRzIHNvbWV0aGluZyBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIEFoYSEgSWYgc3l6a2FsbGVyIHdyaXRlcyB0byBgL3N5cy9maXJtd2FyZS9lZmkvZWZpdmFycy9gICpiZWZvcmUqIHRyaWdnZXJpbmcgYGl3bHdpZmlgIGluaXRpYWxpemF0aW9uIOKAkyBieSBiaW5kaW5nIHRoZSBkcml2ZXIgb3IgY3JlYXRpbmcgYSB2aXJ0dWFsIGRldmljZSDigJMgd2UgY291bGQgaGF2ZSBhIGZ1enppbmcgdGFyZ2V0IQoKQnV0IGhvbGQgb24sIGBpd2x3aWZpYCBpcyBhIFBDSSBkcml2ZXIuIENhbiBzeXprYWxsZXIgZG8gdmlydHVhbCBQQ0kgZGV2aWNlcz8gSXQgaGFzIHNvbWV0aGluZyBsaWtlIGBzeXpfcGNpX2RldmljZWAsIHJpZ2h0PyBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgaXQgKm1vY2sqIGBpd2x3aWZpYCBzcGVjaWZpY2FsbHk/IFRoaW5raW5nIGFib3V0IGl0LCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggaXMgdmlydHVhbCwgYnV0IHRoYXQmIzM5O3Mgbm90IHRoZSBzYW1lLiBgaXdsd2lmaWAgc2VlbXMgdG8gbmVlZCBlaXRoZXIgYSByZWFsIFBDSSBkZXZpY2Ugb3IgYSAqbW9ja2VkKiBvbmUuIE9rYXksIHN5emthbGxlciBkb2VzIGhhdmUgc29tZSBQQ0kgZnV6emluZyBzdXBwb3J0OyBgdmhjaWAsIGB2ZmlvYCwgYW5kIHRoZSBgc3l6X3BjaV9kZXZpY2VgIGNhbGxzIGNvbWUgdG8gbWluZC4KClRoZSBwYXRjaCBpdHNlbGYgaXMgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNgLiBJZiBzeXprYWxsZXIgaXMgdGVzdGluZyB0aGlzLCBpdCAqc2hvdWxkKiBiZSByZWFjaGFibGUuIFdhaXQgYSBtaW51dGUuLi4gdGhlIGF1dGhvciBpcyBgc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0O2AhIFRoYXQgbWVhbnMgc3l6a2FsbGVyIGZvdW5kIHRoZSBidWcgYW5kIHRoaXMgaXMgdGhlIGZpeCEKCk5vdyBJIG5lZWQgdG8gcmVtZW1iZXIgd2hhdCB0aGUgcHJvbXB0IHNheXM6ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyAuLi4gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlJiMzNDsuIFNpbmNlICpzeXprYWxsZXIqIGZvdW5kIHRoZSBidWcsIGl0ICptdXN0KiBiZSByZWFjaGFibGUgaW4gc3l6a2FsbGVyJiMzOTtzIGVudmlyb25tZW50ISBCdXQgaG93PyBXYXMgaXQgYG1hYzgwMjExX2h3c2ltYD8gTm8sIHRoYXQmIzM5O3MgYSBkaWZmZXJlbnQgZHJpdmVyLiBTbywgYHN5el9wY2lfZGV2aWNlYCB0aGVuPyBZZXMsIHRoYXQmIzM5O3MgdGhlIGxpa2VseSBtZWNoYW5pc20gc3l6a2FsbGVyIHVzZXMgdG8gZW11bGF0ZSBQQ0kgZGV2aWNlcyEKCk5vdyBJIGp1c3QgbmVlZCB0byB2ZXJpZnkgdGhhdCBgaXdsd2lmaWAgaXMgZW5hYmxlZCBpbiB0aGUgY29uZmlndXJhdGlvbiwgc28gSSBuZWVkIHRvIG91dHB1dCBgRW5hYmxlQ29uZmlnc2AuIExldCYjMzk7cyBjaGVjayB0aGUgS2NvbmZpZyBlbnRyeSBmb3IgYGl3bHdpZmlgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVdMV0lGSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoyOmNvbmZpZyBJV0xXSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFdpcmVsZXNzIFdpRmkgTmV4dCBHZW4gQUdOIC0gV2lyZWxlc3MtTi9BZHZhbmNlZC1OL1VsdGltYXRlLU4gKGl3bHdpZmkpIFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz00Nz1pZiBJV0xXSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NDk6Y29uZmlnIElXTFdJRklfS1VOSVRfVEVTVFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01MC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjU4OmNvbmZpZyBJV0xXSUZJX0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01OS1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9ODQ9Y29uZmlnIElXTE1MRFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05NC0jIGRvbiYjMzk7dCBjYWxsIGl0IF9NT0RVTEUgLS0gd2lsbCBjb25mdXNlIEtjb25maWcvZml4ZGVwLy4uLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjk1OmNvbmZpZyBJV0xXSUZJX09QTU9ERV9NT0RVTEFSXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXHRib29sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTEwNT1tZW51IFwmIzM0O0RlYnVnZ2luZyBPcHRpb25zXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEwNzpjb25maWcgSVdMV0lGSV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGZ1bGwgZGVidWdnaW5nIG91dHB1dCBpbiB0aGUgaXdsd2lmaSBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEzMTpjb25maWcgSVdMV0lGSV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMyLVx0Ym9vbCBcJiMzNDtpd2x3aWZpIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTM5OmNvbmZpZyBJV0xXSUZJX0RFVklDRV9UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTQwLVx0Ym9vbCBcJiMzNDtpd2x3aWZpIGRldmljZSBhY2Nlc3MgdHJhY2luZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODM1MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKklXbHdpZmkgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKQWxyaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBgSVdMV0lGSWAuIFRoYXQmIzM5O3MgdGhlIG1haW4gY29uZmlndXJhdGlvbiBvcHRpb24sIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZSBJIGhhdmVuJiMzOTt0IG92ZXJsb29rZWQgYW55IG90aGVyIGRlcGVuZGVudCBjb25maWdzLCBwYXJ0aWN1bGFybHkgZm9yIFVFRkkgc3VwcG9ydCB3aXRoaW4gYGl3bHdpZmlgLiBJdCYjMzk7cyBhIGtleSBhcmVhIHRvIG5haWwgZG93biBpZiB3ZSB3YW50IGZ1bGwgZnVuY3Rpb25hbGl0eSBhbmQgdGhhdCBpbmNsdWRlcyBiZWluZyBhYmxlIHRvIGJvb3QgcmVsaWFibHkuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBidWlsZCBzeXN0ZW0gdG8gY29uZmlybS4gSSYjMzk7bSBnb2luZyB0byBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGVgIGFuZCBgZncvTWFrZWZpbGVgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIG9wdGlvbnMgb3IgY29uZGl0aW9ucyB0aGF0IGRpY3RhdGUgdGhlIGluY2x1c2lvbiBvZiBVRUZJLXJlbGF0ZWQgY29tcG9uZW50cyBvciBmaXJtd2FyZS4gVGhhdCYjMzk7cyB1c3VhbGx5IHdoZXJlIHRoZXNlIHNvcnRzIG9mIGRlcGVuZGVuY2llcyBhcmUgZGVmaW5lZC4gSWYgaXQmIzM5O3Mgbm90IGV4cGxpY2l0LCBJJiMzOTtsbCBuZWVkIHRvIGNoYXNlIGRvd24gdGhlIGluY2x1ZGUgcGF0aHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VlZmkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzYyIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlPTM5PWl3bHdpZmktJChDT05GSUdfQUNQSSkgJiM0Mzs9IGZ3L2FjcGkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTo0MDppd2x3aWZpLSQoQ09ORklHX0VGSSlcdCYjNDM7PSBmdy91ZWZpLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtNDEtaXdsd2lmaS0kKENPTkZJR19JV0xXSUZJX0RFQlVHRlMpICYjNDM7PSBmdy9kZWJ1Z2ZzLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYz0xMTI5PXZvaWQgaXdsX2FjcGlfZ2V0X2d1aWRfbG9ja19zdGF0dXMoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jLTExNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYzoxMTUzOlx0ZndydC1cdTAwM2V1ZWZpX3RhYmxlc19sb2NrX3N0YXR1cyA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYy0xMTU0LVx0XHR3aWZpX3BrZy1cdTAwM2VwYWNrYWdlLmVsZW1lbnRzWzFdLmludGVnZXIudmFsdWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmMtMTE1Ny1cdFx0XHRcJiMzNDtMb2FkZWQgVUVGSSBXSUZJIEdVSUQgbG9jayBzdGF0dXM6ICVkIGZyb20gQUNQSVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jOjExNTg6XHRcdFx0ZndydC1cdTAwM2V1ZWZpX3RhYmxlc19sb2NrX3N0YXR1cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYy0xMTU5LW91dF9mcmVlOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oPTEwMzk9c3RydWN0IGl3bF9md19jbWRfdmVyc2lvbiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmgtMTA1MC0gKiBAbWF4X2FjcGlfcmV2aXNpb246IG1heCBzdXBwb3J0ZWQgQUNQSSByZXZpc2lvbiBvZiBjb21tYW5kLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmg6MTA1MTogKiBAbWF4X3VlZmlfcmV2aXNpb246IG1heCBzdXBwb3J0ZWQgVUVGSSByZXZpc2lvbiBvZiBjb21tYW5kLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmgtMTA1Mi0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oPTEwNTM9c3RydWN0IGl3bF9md19jbWRfYmlvc190YWJsZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmgtMTA1Ni1cdHU4IG1heF9hY3BpX3JldmlzaW9uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmg6MTA1NzpcdHU4IG1heF91ZWZpX3JldmlzaW9uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmgtMTA1OC19IF9fcGFja2VkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvaW1nLmM9OT11OCBpd2xfZndfbG9va3VwX2NtZF9iaW9zX3N1cHBvcnRlZF9yZXZpc2lvbihjb25zdCBzdHJ1Y3QgaXdsX2Z3ICpmdyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ltZy5jLTMwLVx0XHRcdFx0cmV0dXJuIGVudHJ5LVx1MDAzZW1heF9hY3BpX3JldmlzaW9uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9pbWcuYzozMTpcdFx0XHRyZXR1cm4gZW50cnktXHUwMDNlbWF4X3VlZmlfcmV2aXNpb247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ltZy5jLTMyLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTItI2luY2x1ZGUgXCYjMzQ7ZncvYXBpL2FsaXZlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjEzOiNpbmNsdWRlIFwmIzM0O2Z3L3VlZmkuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTQtI2luY2x1ZGUgXCYjMzQ7ZncvaW1nLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz0zNj1zdGF0aWMgaW50IGl3bF9wbnZtX2hhbmRsZV9zZWN0aW9uKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCB1OCAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xMzMtXHRcdGNhc2UgSVdMX1VDT0RFX1RMVl9NRU1fREVTQzpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjEzNDpcdFx0XHRpZiAoaXdsX3VlZmlfaGFuZGxlX3Rsdl9tZW1fZGVzYyh0cmFucywgZGF0YSwgdGx2X2xlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTEzNS1cdFx0XHRcdFx0XHRcdCBwbnZtX2RhdGEpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTMwNz1zdGF0aWMgY29uc3QgdTggKml3bF9nZXRfcG52bV9pbWFnZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFuc19wLCBzaXplX3QgKmxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zMjAtXHRpZiAocG52bV9zcmMgPT0gSVdMX1BOVk1fU09VUkNFX0JJT1MpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjMyMTpcdFx0cGFja2FnZSA9IGl3bF91ZWZpX2dldF9wbnZtKHRyYW5zX3AsIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zMjItXHRcdGlmICghSVNfRVJSX09SX05VTEwocGFja2FnZSkpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz00MDc9aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDIyOlx0ZGF0YSA9IGl3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHRyYW5zLCBcdTAwMjZsZW5ndGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDIzLVx0aWYgKElTX0VSUihkYXRhKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQzMjpcdHJldCA9IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZSh0cmFucywgZGF0YSwgbGVuZ3RoLCBwbnZtX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MzMtXHRcdFx0XHRcdCAgc2t1X2lkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuYy05LSNpbmNsdWRlIFwmIzM0O2Z3L3J1bnRpbWUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5LmM6MTA6I2luY2x1ZGUgXCYjMzQ7ZncvdWVmaS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuYy0xMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuYz0xMz1kbyB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jLTE0LVx0aW50IHJldCA9IC1FTk9FTlQ7XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jOjE1Olx0aWYgKGZ3cnQtXHUwMDNldWVmaV90YWJsZXNfbG9ja19zdGF0dXMgXHUwMDNlIFVFRklfV0lGSV9HVUlEX1VOTE9DS0VEKVx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jOjE2Olx0XHRyZXQgPSBpd2xfdWVmaV9nZXRfICMjIF9fbmFtZShfX1ZBX0FSR1NfXyk7XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuYy0xNy1cdGlmIChyZXQgXHUwMDNjIDApXHRcdFx0XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oPTg4PXN0cnVjdCBpd2xfdHhmX2l0ZXJfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmgtMTEwLSAqIEBhcF90eXBlX2NtZF92YWxpZDogaWYgXHUwMDI2YXBfdHlwZV9jbWQgaXMgdmFsaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oOjExMTogKiBAdWVmaV90YWJsZXNfbG9ja19zdGF0dXM6IFRoZSBzdGF0dXMgb2YgdGhlIFdJRkkgR1VJRCBVRUZJIHZhcmlhYmxlcyBsb2NrOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmgtMTEyLSAqXHQwOiBVbmxvY2tlZCwgMSBhbmQgMjogTG9ja2VkLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oPTE0OD1zdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oLTIxOS1cdGJvb2wgYXBfdHlwZV9jbWRfdmFsaWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3J1bnRpbWUuaDoyMjA6XHR1OCB1ZWZpX3RhYmxlc19sb2NrX3N0YXR1cztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oLTIyMS1cdHN0cnVjdCBpd2xfcGh5X3NwZWNpZmljX2NmZyBwaHlfZmlsdGVycztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjExOiNpbmNsdWRlIFwmIzM0O2Z3L3VlZmkuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTItI2luY2x1ZGUgXCYjMzQ7ZncvYXBpL2FsaXZlLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjIzOnN0cnVjdCBpd2xfdWVmaV9wbnZtX21lbV9kZXNjIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI0LVx0X19sZTMyIGFkZHI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyOTpzdGF0aWMgdm9pZCAqaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKGVmaV9jaGFyMTZfdCAqbmFtZSwgZWZpX2d1aWRfdCAqZ3VpZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTMwLVx0XHRcdFx0ICAgdW5zaWduZWQgbG9uZyAqZGF0YV9zaXplKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NjA6dm9pZCAqaXdsX3VlZmlfZ2V0X3Budm0oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Njc6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKElXTF9VRUZJX09FTV9QTlZNX05BTUUsIFx1MDAyNklXTF9FRklfV0lGSV9HVUlELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjgtXHRcdFx0XHQgICAgIFx1MDAyNnBhY2thZ2Vfc2l6ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9ODI9c3RhdGljIHZvaWQgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6ODM6aXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04NC1cdFx0XHRcdCAgICBlZmlfZ3VpZF90ICpndWlkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6ODU6XHRcdFx0XHQgICAgZWZpX2NoYXIxNl90ICp1ZWZpX3Zhcl9uYW1lLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODYtXHRcdFx0XHQgICAgY2hhciAqdmFyX25hbWUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo5MzpcdHZhciA9IGl3bF91ZWZpX2dldF92YXJpYWJsZSh1ZWZpX3Zhcl9uYW1lLCBndWlkLCBcdTAwMjZ2YXJfc2l6ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0xMTg9c3RhdGljIHZvaWQgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTE5Oml3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjEyMDpcdFx0XHQgICAgICAgZWZpX2NoYXIxNl90ICp1ZWZpX3Zhcl9uYW1lLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTIxLVx0XHRcdCAgICAgICBjaGFyICp2YXJfbmFtZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMjQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTI1Olx0cmV0dXJuIGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKHRyYW5zLCBcdTAwMjZJV0xfRUZJX1dJRklfR1VJRCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjEyNjpcdFx0XHRcdFx0XHQgICB1ZWZpX3Zhcl9uYW1lLCB2YXJfbmFtZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEyNy1cdFx0XHRcdFx0XHQgICBleHBlY3RlZF9zaXplLCBzaXplKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMzA6aW50IGl3bF91ZWZpX2hhbmRsZV90bHZfbWVtX2Rlc2Moc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTMxLVx0XHRcdFx0IHUzMiB0bHZfbGVuLCBzdHJ1Y3QgaXdsX3Budm1faW1hZ2UgKnBudm1fZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEzMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMzM6XHRjb25zdCBzdHJ1Y3QgaXdsX3VlZmlfcG52bV9tZW1fZGVzYyAqZGVzYyA9IChjb25zdCB2b2lkICopZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEzNC1cdHUzMiBkYXRhX2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxNjY6c3RhdGljIGludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfc2VjdGlvbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTE2Ny1cdFx0XHRcdFx0IGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTE5My1cdFx0Y2FzZSBJV0xfVUNPREVfVExWX01FTV9ERVNDOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTk0Olx0XHRcdGlmIChpd2xfdWVmaV9oYW5kbGVfdGx2X21lbV9kZXNjKHRyYW5zLCBkYXRhLCB0bHZfbGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTk1LVx0XHRcdFx0XHRcdFx0IHBudm1fZGF0YSkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MjIwOmludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yMjEtXHRcdFx0XHRjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yNjctXHRcdFx0ICAgIHNrdV9pZFsyXSA9PSB0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMl0pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjI2ODpcdFx0XHRcdGludCByZXQgPSBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfc2VjdGlvbih0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI2OS1cdFx0XHRcdFx0XHRcdFx0ICAgIGRhdGEsIGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyODU6dTggKml3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBzaXplX3QgKmxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI4Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MjkxOlx0cGFja2FnZSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZSh0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI5Mi1cdFx0XHRcdFx0XHQgSVdMX1VFRklfUkVEVUNFRF9QT1dFUl9OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTMxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjMxNDpzdGF0aWMgaW50IGl3bF91ZWZpX3N0ZXBfcGFyc2Uoc3RydWN0IHVlZmlfY252X2NvbW1vbl9zdGVwX2RhdGEgKmNvbW1vbl9zdGVwX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMTUtXHRcdFx0ICAgICAgIHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTMyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjMyOTp2b2lkIGl3bF91ZWZpX2dldF9zdGVwX3RhYmxlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzMwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjMzMTpcdHN0cnVjdCB1ZWZpX2Nudl9jb21tb25fc3RlcF9kYXRhICpkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzMyLVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzozMzc6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQodHJhbnMsIFx1MDAyNklXTF9FRklfV0lGSV9CVF9HVUlELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzM4LVx0XHRcdFx0XHRcdCAgIElXTF9VRUZJX1NURVBfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzozNDM6XHRyZXQgPSBpd2xfdWVmaV9zdGVwX3BhcnNlKGRhdGEsIHRyYW5zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTM0NC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzQ4LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjM0OTpJV0xfRVhQT1JUX1NZTUJPTChpd2xfdWVmaV9nZXRfc3RlcF90YWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzozNTE6c3RhdGljIGludCBpd2xfdWVmaV9zZ29tX3BhcnNlKHN0cnVjdCB1ZWZpX2Nudl93bGFuX3Nnb21fZGF0YSAqc2dvbV9kYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzUyLVx0XHRcdCAgICAgICBzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MzgzOnZvaWQgaXdsX3VlZmlfZ2V0X3Nnb21fdGFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zODQtXHRcdFx0ICAgICBzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zODUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Mzg2Olx0c3RydWN0IHVlZmlfY252X3dsYW5fc2dvbV9kYXRhICpkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzg3LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzozOTI6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHRyYW5zLCBJV0xfVUVGSV9TR09NX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zOTMtXHRcdFx0XHRcdCAgICAgIFwmIzM0O1NHT01cJiMzNDssIHNpemVvZigqZGF0YSksIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTM5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjM5NzpcdHJldCA9IGl3bF91ZWZpX3Nnb21fcGFyc2UoZGF0YSwgZndydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zOTgtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQwMi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo0MDM6SVdMX0VYUE9SVF9TWU1CT0woaXdsX3VlZmlfZ2V0X3Nnb21fdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDA1OnN0YXRpYyBpbnQgaXdsX3VlZmlfdWF0c19wYXJzZShzdHJ1Y3QgdWVmaV9jbnZfd2xhbl91YXRzX2RhdGEgKnVhdHNfZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQwNi1cdFx0XHQgICAgICAgc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQxOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjQyMDp2b2lkIGl3bF91ZWZpX2dldF91YXRzX3RhYmxlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDIxLVx0XHRcdCAgICAgc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDIyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjQyMzpcdHN0cnVjdCB1ZWZpX2Nudl93bGFuX3VhdHNfZGF0YSAqZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQyNC1cdGludCByZXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo0MjY6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHRyYW5zLCBJV0xfVUVGSV9VQVRTX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MjctXHRcdFx0XHRcdCAgICAgIFwmIzM0O1VBVFNcJiMzNDssIHNpemVvZigqZGF0YSksIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjQzMTpcdHJldCA9IGl3bF91ZWZpX3VhdHNfcGFyc2UoZGF0YSwgZndydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MzItXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQzNS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo0MzY6SVdMX0VYUE9SVF9TWU1CT0woaXdsX3VlZmlfZ2V0X3VhdHNfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDM4OnZvaWQgaXdsX3VlZmlfZ2V0X3VuZWJfdGFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MzktXHRcdFx0ICAgICBzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00NDAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDQxOlx0c3RydWN0IHVlZmlfY252X3dsYW5fdW5lYl9kYXRhICpkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDQzOlx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZSh0cmFucywgSVdMX1VFRklfVU5FQl9OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDQ0LVx0XHRcdFx0XHQgICAgICBcJiMzNDtVTkVCXCYjMzQ7LCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00NjUtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDY2OklXTF9FWFBPUlRfU1lNQk9MKGl3bF91ZWZpX2dldF91bmViX3RhYmxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQ2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjQ2ODpzdGF0aWMgdm9pZCBpd2xfdWVmaV9zZXRfc2FyX3Byb2ZpbGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDY5LVx0XHRcdFx0ICAgICBjb25zdCB1OCAqdmFscywgdTggcHJvZl9pbmRleCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo0OTc6aW50IGl3bF91ZWZpX2dldF93cmRzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQ5OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo0OTk6XHRzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dyZHMgKmRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01MDAtXHR1bnNpZ25lZCBsb25nIHNpemU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NTA1Olx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVx1MDAzZXRyYW5zLCBJV0xfVUVGSV9XUkRTX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01MDYtXHRcdFx0XHRcdCAgICAgIFwmIzM0O1dSRFNcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTM3LVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo1Mzg6XHRpd2xfdWVmaV9zZXRfc2FyX3Byb2ZpbGUoZndydCwgZGF0YS1cdTAwM2V2YWxzLCAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTM5LVx0XHRcdFx0IG51bV9zdWJiYW5kcywgZGF0YS1cdTAwM2Vtb2RlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01NDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo1NDU6aW50IGl3bF91ZWZpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU0Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo1NDc6XHRzdHJ1Y3QgdWVmaV9jbnZfdmFyX2V3cmQgKmRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01NDgtXHR1bnNpZ25lZCBsb25nIGV4cGVjdGVkX3NpemU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NTU0Olx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVx1MDAzZXRyYW5zLCBJV0xfVUVGSV9FV1JEX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01NTUtXHRcdFx0XHRcdCAgICAgIFwmIzM0O0VXUkRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTkwLVx0XHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjU5MTpcdFx0aXdsX3VlZmlfc2V0X3Nhcl9wcm9maWxlKGZ3cnQsIFx1MDAyNmRhdGEtXHUwMDNldmFsc1tpICogcHJvZmlsZV9zaXplXSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU5Mi1cdFx0XHRcdFx0IGkgJiM0MzsgMSwgbnVtX3N1YmJhbmRzLCBkYXRhLVx1MDAzZW1vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjU5OTppbnQgaXdsX3VlZmlfZ2V0X3dnZHNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjAwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjYwMTpcdHN0cnVjdCB1ZWZpX2Nudl92YXJfd2dkcyAqZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTYwMi1cdHVuc2lnbmVkIGxvbmcgZXhwZWN0ZWRfc2l6ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02MDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2MDg6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX1dHRFNfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTYwOS1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7V0dEU1wmIzM0OywgVUVGSV9XR0RTX1RBQkxFX1NJWkVfUkVWMyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2NzY6aW50IGl3bF91ZWZpX2dldF9wcGFnX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY3Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2Nzg6XHRzdHJ1Y3QgdWVmaV9jbnZfdmFyX3BwYWcgKmRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02NzktXHRpbnQgbl9zdWJiYW5kcztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02ODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2ODM6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX1BQQUdfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY4NC1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7UFBBR1wmIzM0OywgVUVGSV9QUEFHX0RBVEFfU0laRV9WNSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2OTM6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02OTQtXHRcdFx0XHRcdCAgICAgIElXTF9VRUZJX1BQQUdfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3NDU6aW50IGl3bF91ZWZpX2dldF90YXNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzQ2LVx0XHRcdCAgIHN0cnVjdCBpd2xfdGFzX2RhdGEgKnRhc19kYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzQ3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc0ODpcdHN0cnVjdCB1ZWZpX2Nudl92YXJfd3RhcyAqdWVmaV90YXM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NDktXHRpbnQgcmV0LCBlbmFibGVkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NzUxOlx0dWVmaV90YXMgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cdTAwM2V0cmFucywgSVdMX1VFRklfV1RBU19OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NzUyOlx0XHRcdFx0XHRcdCAgXCYjMzQ7V1RBU1wmIzM0Oywgc2l6ZW9mKCp1ZWZpX3RhcyksIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NzUzOlx0aWYgKElTX0VSUih1ZWZpX3RhcykpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NTQtXHRcdHJldHVybiAtRUlOVkFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NzU2Olx0aWYgKHVlZmlfdGFzLVx1MDAzZXJldmlzaW9uIFx1MDAzYyBJV0xfVUVGSV9NSU5fV1RBU19SRVZJU0lPTiB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NzU3Olx0ICAgIHVlZmlfdGFzLVx1MDAzZXJldmlzaW9uIFx1MDAzZSBJV0xfVUVGSV9NQVhfV1RBU19SRVZJU0lPTikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzU4LVx0XHRyZXQgPSAtRUlOVkFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzU5LVx0XHRJV0xfREVCVUdfUkFESU8oZndydCwgXCYjMzQ7VW5zdXBwb3J0ZWQgVUVGSSBXVEFTIHJldmlzaW9uOiVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NzYwOlx0XHRcdFx0dWVmaV90YXMtXHUwMDNlcmV2aXNpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzYxLVx0XHRnb3RvIG91dDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NjQtXHRJV0xfREVCVUdfUkFESU8oZndydCwgXCYjMzQ7VEFTIHNlbGVjdGlvbiBhcyByZWFkIGZyb20gQklPUzogMHgleFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc2NTpcdFx0XHR1ZWZpX3Rhcy1cdTAwM2V0YXNfc2VsZWN0aW9uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc2NzpcdGVuYWJsZWQgPSB1ZWZpX3Rhcy1cdTAwM2V0YXNfc2VsZWN0aW9uIFx1MDAyNiBJV0xfV1RBU19FTkFCTEVEX01TSztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc2OC1cdHRhc19kYXRhLVx1MDAzZXRhYmxlX3NvdXJjZSA9IEJJT1NfU09VUkNFX1VFRkk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3Njk6XHR0YXNfZGF0YS1cdTAwM2V0YWJsZV9yZXZpc2lvbiA9IHVlZmlfdGFzLVx1MDAzZXJldmlzaW9uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NzcwOlx0dGFzX2RhdGEtXHUwMDNldGFzX3NlbGVjdGlvbiA9IHVlZmlfdGFzLVx1MDAzZXRhc19zZWxlY3Rpb247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NzEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzc1LVx0SVdMX0RFQlVHX1JBRElPKGZ3cnQsIFwmIzM0O1JlYWRpbmcgVEFTIHRhYmxlIHJldmlzaW9uICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Nzc2Olx0XHRcdHVlZmlfdGFzLVx1MDAzZXJldmlzaW9uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc3NzpcdGlmICh1ZWZpX3Rhcy1cdTAwM2VibGFja19saXN0X3NpemUgXHUwMDNlIElXTF9XVEFTX0JMQUNLX0xJU1RfTUFYKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NzgtXHRcdElXTF9ERUJVR19SQURJTyhmd3J0LCBcJiMzNDtUQVMgaW52YWxpZCBhcnJheSBzaXplICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Nzc5Olx0XHRcdFx0dWVmaV90YXMtXHUwMDNlYmxhY2tfbGlzdF9zaXplKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc4MC1cdFx0cmV0ID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03ODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3ODQ6XHR0YXNfZGF0YS1cdTAwM2VibG9ja19saXN0X3NpemUgPSB1ZWZpX3Rhcy1cdTAwM2VibGFja19saXN0X3NpemU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3ODU6XHRJV0xfREVCVUdfUkFESU8oZndydCwgXCYjMzQ7VEFTIGFycmF5IHNpemUgJXVcXG5cJiMzNDssIHVlZmlfdGFzLVx1MDAzZWJsYWNrX2xpc3Rfc2l6ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03ODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3ODc6XHRmb3IgKHU4IGkgPSAwOyBpIFx1MDAzYyB1ZWZpX3Rhcy1cdTAwM2VibGFja19saXN0X3NpemU7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3ODg6XHRcdHRhc19kYXRhLVx1MDAzZWJsb2NrX2xpc3RfYXJyYXlbaV0gPSB1ZWZpX3Rhcy1cdTAwM2VibGFja19saXN0W2ldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzg5LVx0XHRJV0xfREVCVUdfUkFESU8oZndydCwgXCYjMzQ7VEFTIGJsb2NrIGxpc3QgY291bnRyeSAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc5MDpcdFx0XHRcdHVlZmlfdGFzLVx1MDAzZWJsYWNrX2xpc3RbaV0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzkxLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc5My1vdXQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3OTQ6XHRrZnJlZSh1ZWZpX3Rhcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03OTUtXHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc5ODppbnQgaXdsX3VlZmlfZ2V0X3B3cl9saW1pdChzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03OTktXHRcdFx0ICAgdTY0ICpkZmx0X3B3cl9saW1pdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTgwMC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4MDE6XHRzdHJ1Y3QgdWVmaV9jbnZfdmFyX3NwbGMgKmRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MDItXHRpbnQgcmV0ID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTgwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjgwNDpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cdTAwM2V0cmFucywgSVdMX1VFRklfU1BMQ19OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODA1LVx0XHRcdFx0XHQgICAgICBcJiMzNDtTUExDXCYjMzQ7LCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4MjE6aW50IGl3bF91ZWZpX2dldF9tY2Moc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCBjaGFyICptY2MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MjIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6ODIzOlx0c3RydWN0IHVlZmlfY252X3Zhcl93cmRkICpkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODI0LVx0aW50IHJldCA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4MjY6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX1dSRERfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTgyNy1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7V1JERFwmIzM0Oywgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6ODUyOmludCBpd2xfdWVmaV9nZXRfZWNrdihzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsIHUzMiAqZXh0bF9jbGspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04NTMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6ODU0Olx0c3RydWN0IHVlZmlfY252X3Zhcl9lY2t2ICpkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODU1LVx0aW50IHJldCA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04NTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4NTc6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQoZndydC1cdTAwM2V0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg1OC1cdFx0XHRcdFx0XHQgICBcdTAwMjZJV0xfRUZJX1dJRklfQlRfR1VJRCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4NzY6aW50IGl3bF91ZWZpX2dldF93YmVtKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwgdTMyICp2YWx1ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg3Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4Nzg6XHRzdHJ1Y3QgdWVmaV9jbnZfd2xhbl93YmVtX2RhdGEgKmRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04NzktXHRpbnQgcmV0ID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjg4MTpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cdTAwM2V0cmFucywgSVdMX1VFRklfV0JFTV9OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODgyLVx0XHRcdFx0XHQgICAgICBcJiMzNDtXQkVNXCYjMzQ7LCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04OTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4OTk6c3RhdGljIGludCBpd2xfdWVmaV9sb2FkX2RzbV92YWx1ZXMoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTAwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjkwMTpcdHN0cnVjdCB1ZWZpX2Nudl92YXJfZ2VuZXJhbF9jZmcgKmRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05MDItXHRpbnQgcmV0ID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05MDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo5MDY6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX0RTTV9OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTA3LVx0XHRcdFx0XHQgICAgICBcJiMzNDtEU01cJiMzNDssIHNpemVvZigqZGF0YSksIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTk0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjk0ODppbnQgaXdsX3VlZmlfZ2V0X2RzbShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsIGVudW0gaXdsX2RzbV9mdW5jcyBmdW5jLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTQ5LVx0XHQgICAgIHUzMiAqdmFsdWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTU1LVx0aWYgKCFmd3J0LVx1MDAzZWRzbV9mdW5jc192YWxpZCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6OTU2Olx0XHRpbnQgcmV0ID0gaXdsX3VlZmlfbG9hZF9kc21fdmFsdWVzKGZ3cnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTU3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTk3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjk3NjppbnQgaXdsX3VlZmlfZ2V0X3B1bmN0dXJpbmcoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTc3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjk3ODpcdHN0cnVjdCB1ZWZpX2Nudl92YXJfcHVuY3R1cmluZ19kYXRhICpkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTc5LVx0LyogZGVmYXVsdCB2YWx1ZSBpcyBub3QgZW5hYmxlZCBpZiB0aGVyZSBpcyBhbnkgaXNzdWUgaW4gcmVhZGluZ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6OTgwOlx0ICogdWVmaSB2YXJpYWJsZSBvciByZXZpc2lvbiBpcyBub3Qgc3VwcG9ydGVkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05ODEtXHQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05ODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo5ODQ6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05ODUtXHRcdFx0XHRcdCAgICAgIElXTF9VRUZJX1BVTkNUVVJJTkdfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDAyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjEwMDM6SVdMX0VYUE9SVF9TWU1CT0woaXdsX3VlZmlfZ2V0X3B1bmN0dXJpbmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjEwMDU6aW50IGl3bF91ZWZpX2dldF9kc2JyKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwgdTMyICp2YWx1ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMDYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTAwNzpcdHN0cnVjdCB1ZWZpX2Nudl93bGFuX2RzYnJfZGF0YSAqZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMDgtXHRpbnQgcmV0ID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMDEwOlx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKGZ3cnQtXHUwMDNldHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDExLVx0XHRcdFx0XHRcdCAgIFx1MDAyNklXTF9FRklfV0lGSV9CVF9HVUlELFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMDMxOmludCBpd2xfdWVmaV9nZXRfcGh5X2ZpbHRlcnMoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAzMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMDMzOlx0c3RydWN0IHVlZmlfY252X3dwZmNfZGF0YSAqZGF0YSBfX2ZyZWUoa2ZyZWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAzNC1cdHN0cnVjdCBpd2xfcGh5X3NwZWNpZmljX2NmZyAqZmlsdGVycyA9IFx1MDAyNmZ3cnQtXHUwMDNlcGh5X2ZpbHRlcnM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTAzNjpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cdTAwM2V0cmFucywgSVdMX1VFRklfV1BGQ19OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAzNy1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7V1BGQ1wmIzM0Oywgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtNC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjU6I2lmbmRlZiBfX2l3bF9md191ZWZpX19cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjY6I2RlZmluZSBfX2l3bF9md191ZWZpX19cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg9NDQ9c3RydWN0IHBudm1fc2t1X3BhY2thZ2Uge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6NTI6c3RydWN0IHVlZmlfY252X3dsYW5fc2dvbV9kYXRhIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTUzLVx0dTggcmV2aXNpb247XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDo1NzpzdHJ1Y3QgdWVmaV9jbnZfd2xhbl91YXRzX2RhdGEge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtNTgtXHR1OCByZXZpc2lvbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC02Mi0vKiBVTkVCJiMzOTtzIGxheW91dCBpcyBpZGVudGljYWwgdG8gVUFUUyYjMzk7cyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6NjM6I2RlZmluZSB1ZWZpX2Nudl93bGFuX3VuZWJfZGF0YSB1ZWZpX2Nudl93bGFuX3VhdHNfZGF0YVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDo2NTpzdHJ1Y3QgdWVmaV9jbnZfY29tbW9uX3N0ZXBfZGF0YSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC02Ni1cdHU4IHJldmlzaW9uO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTg2LS8qKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6ODc6ICogc3RydWN0IHVlZmlfY252X3Zhcl93cmRzIC0gV1JEUyB0YWJsZSBhcyBkZWZpbmVkIGluIFVFRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTg4LSAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtOTctICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDo5ODpzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dyZHMge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtOTktXHR1OCByZXZpc2lvbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xMTItI2RlZmluZSBVRUZJX1NBUl9XUkRTX1RBQkxFX1NJWkVfUkVWMlx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxMTM6XHQob2Zmc2V0b2Yoc3RydWN0IHVlZmlfY252X3Zhcl93cmRzLCB2YWxzKSAmIzQzO1x0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTExNC1cdCBVRUZJX1NBUl9QUk9GSUxFX1NJWkVfUkVWMilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xMTYtI2RlZmluZSBVRUZJX1NBUl9XUkRTX1RBQkxFX1NJWkVfUkVWM1x0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxMTc6XHQob2Zmc2V0b2Yoc3RydWN0IHVlZmlfY252X3Zhcl93cmRzLCB2YWxzKSAmIzQzO1x0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTExOC1cdCBVRUZJX1NBUl9QUk9GSUxFX1NJWkVfUkVWMylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xMjAtLyoqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxMjE6ICogc3RydWN0IHVlZmlfY252X3Zhcl9ld3JkIC0gRVdSRCB0YWJsZSBhcyBkZWZpbmVkIGluIFVFRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTEyMi0gKiBAcmV2aXNpb246IHRoZSByZXZpc2lvbiBvZiB0aGUgdGFibGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xMjUtICogQHZhbHM6IHRoZSBhZGRpdGlvbmFsIFNBUiBwcm9maWxlcyAoIzItIzQpIGFzIGFuIGFycmF5IG9mIFNBUiBwcm9maWxlcy5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjEyNjogKlx0QSBTQVIgcHJvZmlsZSBpcyBkZWZpbmVkIHRoZSBcdTAwMjZzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dyZHM6OnZhbHMuIFRoZSBzaXplXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xMjctICpcdG9mIGVhY2ggcHJvZmlsZSBkZXBlbmRzIG9uIHRoZSBudW1iZXIgb2Ygc3ViYmFuZHMgd2hpY2ggZGVwZW5kcyBvbiB0aGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjEyODogKlx0cmV2aXNpb24uIFRoaXMgaXMgZXhwbGFpbmVkIGluIFx1MDAyNnN0cnVjdCB1ZWZpX2Nudl92YXJfd3Jkcy5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTEyOS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjEzMDpzdHJ1Y3QgdWVmaV9jbnZfdmFyX2V3cmQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTMxLVx0dTggcmV2aXNpb247XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTM3LSNkZWZpbmUgVUVGSV9TQVJfRVdSRF9UQUJMRV9TSVpFX1JFVjJcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxMzg6XHQob2Zmc2V0b2Yoc3RydWN0IHVlZmlfY252X3Zhcl9ld3JkLCB2YWxzKSAmIzQzO1x0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTM5LVx0IFVFRklfU0FSX1BST0ZJTEVfU0laRV9SRVYyICogKEJJT1NfU0FSX01BWF9QUk9GSUxFX05VTSAtIDEpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE0MS0jZGVmaW5lIFVFRklfU0FSX0VXUkRfVEFCTEVfU0laRV9SRVYzXHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MTQyOlx0KG9mZnNldG9mKHN0cnVjdCB1ZWZpX2Nudl92YXJfZXdyZCwgdmFscykgJiM0MztcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE0My1cdCBVRUZJX1NBUl9QUk9GSUxFX1NJWkVfUkVWMyAqIChCSU9TX1NBUl9NQVhfUFJPRklMRV9OVU0gLSAxKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNDUtLyoqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxNDY6ICogc3RydWN0IHVlZmlfY252X3Zhcl93Z2RzIC0gV0dEUyB0YWJsZSBhcyBkZWZpbmVkIGluIFVFRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE0Ny0gKiBAcmV2aXNpb246IHRoZSByZXZpc2lvbiBvZiB0aGUgdGFibGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNTUtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxNTY6c3RydWN0IHVlZmlfY252X3Zhcl93Z2RzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE1Ny1cdHU4IHJldmlzaW9uO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE2OS0jZGVmaW5lIFVFRklfV0dEU19UQUJMRV9TSVpFX1JFVjNcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxNzA6XHQob2Zmc2V0b2Yoc3RydWN0IHVlZmlfY252X3Zhcl93Z2RzLCB2YWxzKSAmIzQzO1x0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTcxLVx0IFVFRklfV0dEU19QUk9GSUxFX1NJWkVfUkVWMyAqIEJJT1NfR0VPX01BWF9QUk9GSUxFX05VTSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNzMtI2RlZmluZSBVRUZJX1dHRFNfVEFCTEVfU0laRV9SRVY0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MTc0Olx0KG9mZnNldG9mKHN0cnVjdCB1ZWZpX2Nudl92YXJfd2dkcywgdmFscykgJiM0MztcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE3NS1cdCBVRUZJX1dHRFNfUFJPRklMRV9TSVpFX1JFVjQgKiBCSU9TX0dFT19NQVhfUFJPRklMRV9OVU0pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTc3LS8qKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MTc4OiAqIHN0cnVjdCB1ZWZpX2Nudl92YXJfcHBhZyAtIFBQQUcgdGFibGUgYXMgZGVmaW5lZCBpbiBVRUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNzktICogQHJldmlzaW9uOiB0aGUgcmV2aXNpb24gb2YgdGhlIHRhYmxlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTg3LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MTg4OnN0cnVjdCB1ZWZpX2Nudl92YXJfcHBhZyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xODktXHR1OCByZXZpc2lvbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xOTQtI2RlZmluZSBVRUZJX1BQQUdfREFUQV9TSVpFX1Y0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MTk1Olx0KG9mZnNldG9mKHN0cnVjdCB1ZWZpX2Nudl92YXJfcHBhZywgdmFscykgJiM0MztcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xOTYtXHRzaXplb2YoczgpICogVUVGSV9QUEFHX05VTV9DSEFJTlMgKiBVRUZJX1BQQUdfU1VCX0JBTkRTX05VTV9SRVY0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTk3LSNkZWZpbmUgVUVGSV9QUEFHX0RBVEFfU0laRV9WNVx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjE5ODpcdChvZmZzZXRvZihzdHJ1Y3QgdWVmaV9jbnZfdmFyX3BwYWcsIHZhbHMpICYjNDM7XHRcXFxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMjU1CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNzEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdpRmkgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBgaXdsd2lmaS0kKENPTkZJR19FRkkpICYjNDM7PSBmdy91ZWZpLm9gLiBTbywgYENPTkZJR19FRklgIGlzIGEgcmVxdWlyZW1lbnQgZm9yIGNvbXBpbGluZyBgZncvdWVmaS5jYC4gUmlnaHQsIGxldCBtZSBjb25maXJtIHRoYXQgYENPTkZJR19FRklgIGlzIGRlZmluaXRlbHkgbmVlZGVkLiBZdXAsIGdvdCBpdC4gSG1tLCBhcmUgdGhlcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnM/IExldCYjMzk7cyBzZWUuLi4gaXQmIzM5O3MgYENPTkZJR19JV0xXSUZJYCBhbmQgYENPTkZJR19FRklgLiBJIHNlZW0gdG8gcmVjYWxsIGBDT05GSUdfRUZJYCBvZnRlbiBiZWluZyBlbmFibGVkIGluIHN5emthbGxlciBjb25maWd1cmF0aW9ucy4gQnV0LCB3aGF0IGFib3V0IHRoZSBkZXBlbmRlbmNpZXM/IFNwZWNpZmljYWxseSBgQ09ORklHX01BQzgwMjExYCBvciBgQ09ORklHX0NGRzgwMjExYD8gSSBrbm93IHRoYXQgYElXTFdJRklgIGVpdGhlciBzZWxlY3RzIG9yIGRlcGVuZHMgb24gdGhlbSwgc28gbGV0IG1lIHF1aWNrbHkgcmUtZXhhbWluZSB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ2AgZmlsZS4gT2ssIHllcywgYGNvbmZpZyBJV0xXSUZJYCBkZXBlbmRzIG9uIGBQQ0kgJmFtcDsmYW1wOyBNQUM4MDIxMSAmYW1wOyZhbXA7IEhBU19JT01FTWAuCgpOb3csIGxldCYjMzk7cyBnZXQgYmFjayB0byB0aGUgcGF0Y2ggaXRzZWxmLgoKYGBgYwoJCQlpZiAodGx2X2xlbiAmbHQ7IHNpemVvZigqdGx2X3NrdV9pZCkpIHsKCQkJCUlXTF9FUlIodHJhbnMsICYjMzQ7aW52YWxpZCBQTlZNIFNLVSBUTFYgbGVuOiAldVxuJiMzNDssCgkJCQkJdGx2X2xlbik7CgkJCQlyZXR1cm4gLUVJTlZBTDsKCQkJfQpgYGAKClRoaXMgaXMgY2xlYXJseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCYjMzk7cyBkZXNpZ25lZCB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3aGVuIGB0bHZfbGVuYCBpcyBzbWFsbGVyIHRoYW4gdGhlIHNpemUgb2YgdGhlIGB0bHZfc2t1X2lkYCBzdHJ1Y3R1cmUuIFdhaXQsIGB0bHZfc2t1X2lkYCBpcyBhIGBzdHJ1Y3QgaXdsX3NrdV9pZGAuCgpgYGBjCnN0cnVjdCBpd2xfc2t1X2lkIHsKCV9fbGUzMiBkYXRhWzNdOwp9IF9fcGFja2VkOwpgYGAKClNvLCBpZiBgdGx2X2xlbmAgaXMgbGVzcyB0aGFuIDEyLCB0aGUgY29kZSB3b3VsZCBiZSB0cnlpbmcgdG8gYWNjZXNzIGB0bHZfc2t1X2lkLSZndDtkYXRhWzBdYCwgYGRhdGFbMV1gLCBhbmQgYGRhdGFbMl1gIGJleW9uZCB0aGUgYm91bmRzIG9mIHRoZSBwcm92aWRlZCBUTFYsIHJpZ2h0PyBFeGFjdGx5LiBUaGVyZWZvcmUsIHRoaXMgaXMgYSBsZWdpdGltYXRlIGZ1bmN0aW9uYWwgZml4LCBwcmV2ZW50aW5nIGEgcG90ZW50aWFsbHkgc2VyaW91cyBtZW1vcnkgcmVhZCB2dWxuZXJhYmlsaXR5LgoKVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGlzIHRoaXMgY29kZSBwYXRoIHJlYWNoYWJsZT8gT2theSwgYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgaXMgY2FsbGVkIGR1cmluZyBmaXJtd2FyZSBpbml0aWFsaXphdGlvbiBpZiB0aGUgVUVGSSB2YXJpYWJsZSBgSVdMX1VFRklfUkVEVUNFRF9QT1dFUl9OQU1FYCBpcyBwcmVzZW50LiBBbmQsIHN5emthbGxlciBjYW4gZWFzaWx5IGNyZWF0ZSB0aGlzIFVFRkkgdmFyaWFibGUsIHRodXMgdHJpZ2dlcmluZyBpd2x3aWZpIGluaXRpYWxpemF0aW9uLiBXYWl0LCBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgIGlzIGNhbGxlZCBmcm9tIGBpd2xfcG52bV9sb2FkYC4gYGl3bF9wbnZtX2xvYWRgIGlzIGNhbGxlZCBmcm9tIGBpd2xfbXZtX2xvYWRfdWNvZGVfd2FpdF9hbGl2ZWAgYW5kIGBpd2xfbWxkX3J1bl9md19pbml0X3NlcXVlbmNlYC4gVGhlc2UgYXJlIGFsbCBwYXJ0IG9mIHRoZSBzdGFuZGFyZCBkcml2ZXIgaW5pdGlhbGl6YXRpb24gZmxvdyB3aGVuIHRoZSBmaXJtd2FyZSBpcyBsb2FkZWQuIFNvLCB5ZXMsIGl0JiMzOTtzIHJlYWNoYWJsZSBkdXJpbmcgbm9ybWFsIGRyaXZlciBvcGVyYXRpb24uCgpTbywganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNsZWFyOgoKVGhlIGtleSBmdW5jdGlvbnMgYXJlOgotIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgCi0gYGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zYAotIGBpd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcmAKCkFuZCB0aGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMgYXJlOgotIGBJV0xXSUZJYAotIGBFRklgCgpOb3csIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgaXMgYElXTFdJRklgIHN1ZmZpY2llbnQ/IGBDT05GSUdfSVdMV0lGSWAgaXMgaW5kZWVkIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24sIGJ1dCBzaG91bGQgSSBjb25zaWRlciBgQ09ORklHX0lXTFdJRklfTVZNYCBvciBgQ09ORklHX0lXTFdJRklfQlNTYD8gTGV0IG1lIHF1aWNrbHkgcmUtZXhhbWluZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnYCB0byBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJV0xXSUZJX01WTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ4NDgKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkluaXRpYWwgQXNzZXNzbWVudDogTG9jYXRpbmcgdGhlIElXTFdJRklfTVZNIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgaGFuZyBvbiBhIHNlY29uZC4gTXkgbWVudGFsIG1hcCBvZiB0aGUga2VybmVsIHNvdXJjZSB0cmVlIGlzIHVzdWFsbHkgcHJldHR5IHNvbGlkLCBidXQgZm9yIGEgc3BsaXQgc2Vjb25kLCBJIGhhZCB0byBkb3VibGUtY2hlY2sgdGhhdCBsb2NhdGlvbi4gKklXTFdJRklfTVZNKi4uLiByaWdodCwgdGhhdCYjMzk7cyB0aGUgbXVsdGktdmlydHVhbCBtYWNoaW5lIHN0dWZmIGZvciB0aGUgSW50ZWwgd2lyZWxlc3MgZHJpdmVyLiBCdXQgdGhlIEtjb25maWcgZmlsZSBmb3IgKnRoYXQqIHNwZWNpZmljIGNvbXBvbmVudD8gTXkgZmlyc3QgaW5zdGluY3Qgd2FzIGl0IHdvdWxkIHByb2JhYmx5IGJlIGluIHRoZSBjb3JlIGl3bHdpZmkgZGlyZWN0b3J5LCBidXQgaXQmIzM5O3Mgb2Z0ZW4gY29tcGFydG1lbnRhbGl6ZWQuIExldCBtZSBxdWlja2x5IHNvbGlkaWZ5IGluIG15IG1pbmQgdGhhdCBpdCYjMzk7cyBsb2NhdGVkIHVuZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9LY29uZmlnYC4gVGhhdCBzcGVjaWZpYyBwYXRoIHRlbGxzIG1lIGhvdyBtb2R1bGFyIGl0IGlzLiBUaGlzIHByb2JhYmx5IG1lYW5zIGl0JiMzOTtzIGEgd2VsbC1kZWZpbmVkIGFuZCBwb3RlbnRpYWxseSBpbmRlcGVuZGVudCBtb2R1bGUgd2l0aGluIHRoZSBsYXJnZXIgSW50ZWwgd2lyZWxlc3MgZHJpdmVyIGZyYW1ld29yay4gR29vZC4gS25vd2luZyAqZXhhY3RseSogd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gbGl2ZXMgaXMga2V5IGZvciB1bmRlcnN0YW5kaW5nIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGJ1aWxkIG9wdGlvbnMuIE5vdyBJIGNhbiBtb3ZlIGZvcndhcmQsIGNvbmZpZGVudCB0aGF0IEkga25vdyB3aGVyZSB0byBsb29rIGlmIEkgbmVlZCB0byBhZGp1c3Qgc2V0dGluZ3MgcmVsYXRlZCB0byB0aGF0IHBhcnRpY3VsYXIgc2VjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVdMV0lGSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTE4MgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipLY29uZmlnIEh1bnQgaW4gaXdsd2lmaSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IG15IGJlYXJpbmdzIGluIHRoZSBpd2x3aWZpIGNvZGUuIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2hpY2ggS2NvbmZpZyBmaWxlcyBhcmUgcmVsZXZhbnQgaGVyZS4gVGhlIGZpcnN0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSAqdGhlcmUqLiBJIHNob3VsZCBwcm9iYWJseSBzdGFydCBieSBkb2luZyBhIHF1aWNrIGBsc2AgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtsbCBnaXZlIG1lIGEgbGlzdCBvZiBhbGwgdGhlIGZpbGVzIGFuZCBzdWJkaXJlY3RvcmllcywgbWFraW5nIGl0IGVhc2llciB0byBzcG90IGxpa2VseSBjYW5kaWRhdGVzIGZvciBLY29uZmlnIGZpbGVzLiBLbm93aW5nIHRoZSBnZW5lcmFsIHN0cnVjdHVyZSwgSSBleHBlY3QgdG8gc2VlIGBLY29uZmlnYCBmaWxlcyBzcHJpbmtsZWQgYXJvdW5kLCBwb3NzaWJseSBpbiBzdWJkaXJlY3RvcmllcyByZXByZXNlbnRpbmcgZGlmZmVyZW50IHdpcmVsZXNzIGNhcmQgZmFtaWxpZXMgb3IgZmVhdHVyZSBzZXRzLiBJIGFsc28gYW50aWNpcGF0ZSB0aGVyZSBjb3VsZCBiZSBhIHRvcC1sZXZlbCBgS2NvbmZpZ2AgdGhhdCBpbmNsdWRlcyBvdGhlcnMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2l3bC1hZ24taHcuaCYjMzQ7LAogICAgJiMzNDtpd2wtY29uZmlnLmgmIzM0OywKICAgICYjMzQ7aXdsLWNzci5oJiMzNDssCiAgICAmIzM0O2l3bC1kYmctdGx2LmMmIzM0OywKICAgICYjMzQ7aXdsLWRiZy10bHYuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGVidWcuYyYjMzQ7LAogICAgJiMzNDtpd2wtZGVidWcuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UtZGF0YS5oJiMzNDssCiAgICAmIzM0O2l3bC1kZXZ0cmFjZS1pby5oJiMzNDssCiAgICAmIzM0O2l3bC1kZXZ0cmFjZS1pd2x3aWZpLmgmIzM0OywKICAgICYjMzQ7aXdsLWRldnRyYWNlLW1zZy5oJiMzNDssCiAgICAmIzM0O2l3bC1kZXZ0cmFjZS11Y29kZS5oJiMzNDssCiAgICAmIzM0O2l3bC1kZXZ0cmFjZS5jJiMzNDssCiAgICAmIzM0O2l3bC1kZXZ0cmFjZS5oJiMzNDssCiAgICAmIzM0O2l3bC1kcnYuYyYjMzQ7LAogICAgJiMzNDtpd2wtZHJ2LmgmIzM0OywKICAgICYjMzQ7aXdsLWZoLmgmIzM0OywKICAgICYjMzQ7aXdsLWlvLmMmIzM0OywKICAgICYjMzQ7aXdsLWlvLmgmIzM0OywKICAgICYjMzQ7aXdsLW1vZHBhcmFtcy5oJiMzNDssCiAgICAmIzM0O2l3bC1udm0tcGFyc2UuYyYjMzQ7LAogICAgJiMzNDtpd2wtbnZtLXBhcnNlLmgmIzM0OywKICAgICYjMzQ7aXdsLW52bS11dGlscy5jJiMzNDssCiAgICAmIzM0O2l3bC1udm0tdXRpbHMuaCYjMzQ7LAogICAgJiMzNDtpd2wtb3AtbW9kZS5oJiMzNDssCiAgICAmIzM0O2l3bC1waHktZGIuYyYjMzQ7LAogICAgJiMzNDtpd2wtcGh5LWRiLmgmIzM0OywKICAgICYjMzQ7aXdsLXBycGguaCYjMzQ7LAogICAgJiMzNDtpd2wtc2NkLmgmIzM0OywKICAgICYjMzQ7aXdsLXRyYW5zLmMmIzM0OywKICAgICYjMzQ7aXdsLXRyYW5zLmgmIzM0OywKICAgICYjMzQ7aXdsLXV0aWxzLmMmIzM0OywKICAgICYjMzQ7aXdsLXV0aWxzLmgmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IFsKICAgICYjMzQ7Y2ZnJiMzNDssCiAgICAmIzM0O2R2bSYjMzQ7LAogICAgJiMzNDtmdyYjMzQ7LAogICAgJiMzNDttZWkmIzM0OywKICAgICYjMzQ7bWxkJiMzNDssCiAgICAmIzM0O212bSYjMzQ7LAogICAgJiMzNDtwY2llJiMzNDssCiAgICAmIzM0O3Rlc3RzJiMzNDsKICBdCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU4MTkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGVidWdnaW5nIHRoZSBXaXJlbGVzcyBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIHdpcmVsZXNzIGRyaXZlciBpc3N1ZSBhbmQgbXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZmVhdHVyZSBpbiBxdWVzdGlvbiBpcyBiZWluZyBlbmFibGVkIG9yIGRpc2FibGVkLiBHaXZlbiB0aGF0IHRoaXMgc2VlbXMgdG8gYmUgYW4gSW50ZWwgd2lyZWxlc3MgZHJpdmVyLCBteSBmaXJzdCBzdG9wIGlzIGxpa2VseSBnb2luZyB0byBiZSBpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2AgZGlyZWN0b3J5LiBXaXRoaW4gdGhhdCwgSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGVyZSYjMzk7cyBhIGBLY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBzdGFuZGFyZCBwbGFjZSBmb3IgZGVmaW5pbmcgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBrZXJuZWwgbW9kdWxlcywgYW5kIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uIEl0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlc2UgZmVhdHVyZXMgYXJlIGVuYWJsZWQsIGRpc2FibGVkLCBvciBjb25kaXRpb25hbGx5IGNvbXBpbGVkLiBJZiB0aGlzIGRyaXZlciBpcyBsaWtlIHRoZSBvdGhlcnMgSSYjMzk7dmUgd29ya2VkIHdpdGgsIHRoaXMgaXMgdGhlIG1vc3QgbGlrZWx5IGxvY2F0aW9uIGZvciBmaW5kaW5nIHRoZSBzcGVjaWZpYyBLY29uZmlnIGZpbGUgdG8gcmV2aWV3LiBJJiMzOTtsbCBzdGFydCB0aGVyZSBhbmQgc2VlIGlmIEkgY2FuIHRyYWNlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnICYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjEwNAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIGZyYW1lZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6CgoqKldoZXJlJiMzOTtzIFRoYXQgRGFuZyBEZWZpbml0aW9uPyoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLi4uIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHRyeWluZyB0byB0cmFjZSBhIGZ1bmN0aW9uIGNhbGwsIGFuZCBJJiMzOTt2ZSBoaXQgYSBzbmFnLiBXaGF0IHRoZSBoZWNrIGlzIGBJV0xXSUZJX01WTWA/IEl0JiMzOTtzIG1lbnRpb25lZCBoZXJlLCBjbGVhcmx5LCBidXQgSSYjMzk7bSBkcmF3aW5nIGEgYmxhbmsuIElzIGl0IGEgbWFjcm8sIGEgY29uc3RhbnQsIGEgc3RydWN0dXJlLCBhbiBlbnVtLCB3aGF0PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBJV0xXSUZJX01WTWAgYWN0dWFsbHkgKmlzKiB0byBtYWtlIGFueSBoZWFkd2F5LiBUaW1lIHRvIGdvIGh1bnRpbmcgZm9yIGl0cyBkZWZpbml0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUsIHRoZSBjb250ZXh0LCBhbmQgaG93IGl0JiMzOTtzIGJlaW5nIHVzZWQuIEkgY2FuJiMzOTt0IHByb2NlZWQgdW50aWwgSSB1bmRlcnN0YW5kIGl0cyBmdW5kYW1lbnRhbCBuYXR1cmUuIEFscmlnaHQsIGxldCYjMzk7cyBzdGFydCBkaWdnaW5nISBJIHNob3VsZCBrbm93IHRoaXMsIHdoYXQgZmlsZSBpcyBpdCBpbj8gSSBuZWVkIHRvIGZpbmQgaXRzIG9yaWdpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVdMV0lGSV9NVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MzY0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgSW50ZWwgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgSW50ZWwgd2lyZWxlc3MgZHJpdmVycy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gc3RhcnQgd2l0aCB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGF0IHNwZWNpZmljIGFyZWEsIHdoaWNoLCBpZiBtZW1vcnkgc2VydmVzLCBzaG91bGQgYmUgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvS2NvbmZpZ2AuIFRoYXQmIzM5O3MgdGhlIGdvLXRvIHBsYWNlIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmFibGUgZmVhdHVyZXMgYW5kIGRlcGVuZGVuY2llcy4gSSBleHBlY3QgdG8gZmluZCBkZWZpbml0aW9ucyBvZiB0aGUgdmFyaW91cyBkcml2ZXIgb3B0aW9ucywgYWxvbmcgd2l0aCB0aGVpciBkZWZhdWx0IHNldHRpbmdzLCBoZWxwIHRleHQgZXhwbGFpbmluZyB0aGVpciBwdXJwb3NlLCBhbmQsIGNydWNpYWxseSwgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXMgb3IgaGFyZHdhcmUuIFRoaXMgZmlsZSBpcyB0aGUgYmFja2JvbmUgZm9yIGNvbmZpZ3VyaW5nIHRoZSBJbnRlbCB3aXJlbGVzcyBzdXBwb3J0LCBhbmQgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgaXQgd2lsbCBiZSBjcml0aWNhbCBmb3IgYW55IG1vZGlmaWNhdGlvbnMgb3IgZGVlcGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRyaXZlciYjMzk7cyBiZWhhdmlvci4gVGltZSB0byBkZWx2ZSBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVdMV0lGSV9NVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY2MDYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIHRoZSBzdW1tYXJ5LCBhc3N1bWluZyBJJiMzOTttIHRoZSBleHBlcnQgdGhpbmtpbmcgdGhyb3VnaCB0aGlzOgoKKipJbml0aWFsIEltcHJlc3Npb246IEV4cGxvcmluZyBQb3NzaWJsZSBBY3JvbnltcyoqCgpIbW0sIHRoaW5raW5nIHRoaXMgdGhyb3VnaC4uLkkmIzM5O20gbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHBvdGVudGlhbCBhY3JvbnltcyBoZXJlLiBUaGF0IGluaXRpYWwgc3RyaW5nLCBgSVdMTVZNYCwgaXQmIzM5O3Mgbm90IGltbWVkaWF0ZWx5IG9idmlvdXMgd2hhdCBpdCByZXByZXNlbnRzLiBJIG5lZWQgdG8gc3RhcnQgZGVjb25zdHJ1Y3RpbmcgaXQuIElzIHRoZXJlIHNvbWUgc3BlY2lmaWMgZmllbGQgb3IgY29udGV4dCB3aGVyZSB0aGlzIHdvdWxkIG1ha2Ugc2Vuc2U/IFdoYXQgYXJlIHRoZSBrZXkgZWxlbWVudHMgaXQgbWlnaHQgcmVmZXIgdG8/IFBlcmhhcHMgaXQmIzM5O3MgYW4gb2JzY3VyZSBtZXRob2QsIGEgcmVzZWFyY2ggcHJvamVjdCYjMzk7cyBpbnRlcm5hbCBuYW1lLCBvciBtYXliZSBzb21ldGhpbmcgdmVyeSBpbmR1c3RyeS1zcGVjaWZpYy4uLiBSaWdodCBub3csIG15IG1pbmQgaXMgZXhwbG9yaW5nIHRoZSBwb3NzaWJpbGl0aWVzLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZSBsZXR0ZXJzIHN0YXJ0IHRvIGNsaWNrIGluIGFueSBmYW1pbGlhciBjb21iaW5hdGlvbnMuIFBlcmhhcHMgaXQmIzM5O3MgYSBuZXcgb3Igb2JzY3VyZSB0ZXJtIHRoYXQgSSBuZWVkIHRvIGxvb2sgaW50bz8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElXTE1WTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz02Nj1jb25maWcgSVdMRFZNXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjc0OmNvbmZpZyBJV0xNVk1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy03NS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFdpcmVsZXNzIFdpRmkgTVZNIEZpcm13YXJlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY5MjUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBJV0xNVk1gIERlcGVuZGVuY3kqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBmaXJtd2FyZSBzdXBwb3J0LiBSaWdodCwgc28gYElXTE1WTWAgLSB0aGF0IHNlZW1zIGxpa2UgdGhlIGtleSBjb25maWd1cmF0aW9uIGRlZmluZSBmb3IgdGhlIE1WTSBmaXJtd2FyZS4gSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYWN0dWFsbHksIGdpdmVuIHRoYXQgSSBrbm93IG15IHdheSBhcm91bmQgdGhlIGtlcm5lbCBjb2RlYmFzZS4gSSYjMzk7bSBzZWVpbmcgdGhhdCBgaXdsX212bV9sb2FkX3Vjb2RlX3dhaXRfYWxpdmVgIGZ1bmN0aW9uIHJlc2lkZXMgd2l0aGluIGBtdm0vZncuY2AuICBUaGF0IHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQgYElXTE1WTWAgaXMgYSBoYXJkIHJlcXVpcmVtZW50IGZvciB0aGUgd2hvbGUgcHJvY2Vzcy4gSSB3YW50IHRvIGRvdWJsZS1jaGVjayBteSB1bmRlcnN0YW5kaW5nIHRob3VnaCwgc28gdGhlIG5leHQgc3RlcCBpcyB0byBoZWFkIG92ZXIgdG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlYC4gSXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbXBpbGF0aW9uIHJ1bGVzIGFuZCBkZXBlbmRlbmNpZXMgZm9yIGFueXRoaW5nIHRoYXQgbGl2ZXMgd2l0aGluIHRoYXQgYGZ3L2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBwcm9vZiBpcyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZncvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlPTMyPWl3bHdpZmktb2Jqc1x0XHQmIzQzOz0gaXdsLXRyYW5zLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjM0Oml3bHdpZmktb2Jqc1x0XHQmIzQzOz0gZncvaW1nLm8gZncvbm90aWYtd2FpdC5vIGZ3L3JzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6MzU6aXdsd2lmaS1vYmpzXHRcdCYjNDM7PSBmdy9kYmcubyBmdy9kYmctb2xkLm8gZncvcG52bS5vIGZ3L2R1bXAub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTozNjppd2x3aWZpLW9ianNcdFx0JiM0Mzs9IGZ3L3JlZ3VsYXRvcnkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTozNzppd2x3aWZpLSQoQ09ORklHX0lXTE1WTSkgJiM0Mzs9IGZ3L3BhZ2luZy5vIGZ3L3NtZW0ubyBmdy9pbml0Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6Mzg6aXdsd2lmaS0kKENPTkZJR19JV0xNTEQpICYjNDM7PSBmdy9zbWVtLm8gZncvaW5pdC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjM5Oml3bHdpZmktJChDT05GSUdfQUNQSSkgJiM0Mzs9IGZ3L2FjcGkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTo0MDppd2x3aWZpLSQoQ09ORklHX0VGSSlcdCYjNDM7PSBmdy91ZWZpLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6NDE6aXdsd2lmaS0kKENPTkZJR19JV0xXSUZJX0RFQlVHRlMpICYjNDM7PSBmdy9kZWJ1Z2ZzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtNDItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NjIxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBpd2x3aWZpIERyaXZlciBDb25maWd1cmF0aW9uIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIGhlcmUmIzM5O3MgdGhlIGJyZWFrZG93biBvZiBob3cgdG8gYXBwcm9hY2ggZnV6emluZyB0aGlzIGl3bHdpZmkgZHJpdmVyIHZ1bG5lcmFiaWxpdHkuIEkmIzM5O3ZlIHRyYWNlZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJdCBzZWVtcyBgZncvdWVmaS5vYCBpcyBjb21waWxlZCBkaXJlY3RseSBpbnRvIGBpd2x3aWZpLmtvYCB3aGVuIHRoZSBgQ09ORklHX0VGSWAgb3B0aW9uIGlzIGVuYWJsZWQsIGFuZCBgaXdsd2lmaS5rb2AgaXRzZWxmIGlzIGJ1aWx0IHdoZW4gYENPTkZJR19JV0xXSUZJYCBpcyBlbmFibGVkLiBJbXBvcnRhbnRseSwgYGZ3L3Budm0ub2AgYWxzbyBlbmRzIHVwIGluY2x1ZGVkIHdpdGhpbiBgaXdsd2lmaS1vYmpzYC4gVGhhdCBtZWFucyBoYXZpbmcgYm90aCBgQ09ORklHX0lXTFdJRklgIGFuZCBgQ09ORklHX0VGSWAgYWN0aXZlIHNob3VsZCBiZSBlbm91Z2ggdG8gZ2V0IHRoZSBjb3JlIGNvZGUgY29tcGlsZWQgaW4uCgpOb3csIHRvIGFjdHVhbGx5IHRyaWdnZXIgdGhlIHZ1bG5lcmFibGUgY29kZSBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhcmUgZXhlcmNpc2VkLiAgVGhhdCYjMzk7cyB3aGVyZSB0aGUgYENPTkZJR19JV0xNVk1gIG9yIGBDT05GSUdfSVdMTUxEYCBvcHRpb25zIGNvbWUgaW50byBwbGF5LiAgVG8gYmUgb24gdGhlIHNhZmUgc2lkZSwgYW5kIHRvIG1heGltaXplIGNvdmVyYWdlLCBJIHNob3VsZCBlbmFibGUgYm90aCBvZiB0aGVzZS4gIFRoZXkmIzM5O3JlIGtleSB0byBpbml0aWFsaXppbmcgdGhlIGRyaXZlciBpbiBhIHdheSB0aGF0IG1ha2VzIGl0IHZ1bG5lcmFibGUuCgpTbywgdG8gc3VtbWFyaXplIGZvciBmdXp6aW5nIHB1cnBvc2VzOgoKKiAgICoqV29ydGhGdXp6aW5nOioqIEFic29sdXRlbHkuIFRoZSBwYXRjaCBmaXhlcyBhIGRlZmluaXRlIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXR5IHdoZW4gcGFyc2luZyBVRUZJIHZhcmlhYmxlcyByZWxhdGVkIHRvIHJlZHVjZWQgcG93ZXIgc2V0dGluZ3Mgd2l0aGluIHRoZSBpd2x3aWZpIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgdW5kZXIgdGhlIHJpZ2h0IFVFRkkgdmFyaWFibGUgY29uZGl0aW9ucy4KKiAgICoqUmVhc29uaW5nOioqIFRoZSBidWcgaXMgd2l0aGluIHRoZSBpd2x3aWZpIGRyaXZlciwgdHJpZ2dlcmVkIGJ5IHBhcnNpbmcgVUVGSSB2YXJpYWJsZXMuCiogICAqKkZvY3VzIFN5bWJvbHM6KiogSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIGZ1bmN0aW9uczogYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAsIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AsIGFuZCBgaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXJgLiBUaG9zZSBhcmUgd2hlcmUgdGhlIHZ1bG5lcmFiaWxpdGllcyBhcmUuCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogSGVyZSYjMzk7cyB0aGUgY3JpdGljYWwgc2V0IG9mIGNvbmZpZ3MgSSBuZWVkIHRvIGVuYWJsZToKICAgICogICBgSVdMV0lGSWAKICAgICogICBgRUZJYAogICAgKiAgIGBJV0xNVk1gCiAgICAqICAgYElXTE1MRGAKCkkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBgSVdMTUxEYCBpcyBhIHZhbGlkIG9wdGlvbiBpbiB0aGUgY29uZmlndXJhdGlvbjsgaXQgaXMgcG9zc2libGUgdGhhdCBpdCBpcyBqdXN0IGEgZGVmYXVsdCwgc28gaXQgbmVlZHMgdG8gYmUgY2hlY2tlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElXTE1MRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9NzQ9Y29uZmlnIElXTE1WTVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy04My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo4NDpjb25maWcgSVdMTUxEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctODUtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE1MRCBGaXJtd2FyZSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NTc1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVmFsaWRhdGluZyBhbmQgQW5hbHl6aW5nIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgSVdMTUxEYCBpcyBpbmRlZWQgYSB2YWxpZCBpZGVudGlmaWVyLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm93LCBteSBuZXh0IHN0ZXAgaXMgdG8gaW52ZXN0aWdhdGUgdGhlIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgb2YgYElXTFdJRklgLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgaXQmIzM5O3MgaGlnaGx5IHByb2JhYmxlIHRoYXQgYElXTFdJRklgIHJlbGllcyBvbiBgTUFDODAyMTFgLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzIHJlbGF0aW9uc2hpcCwgYXMgdW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCBmb3IgYW55IGNoYW5nZXMgb3IgaW50ZWdyYXRpb24gd29yayByZWxhdGVkIHRvIHRoZXNlIGlkZW50aWZpZXJzLiBUaGF0JiMzOTtzIHdoZXJlIEkgd2lsbCBiZWdpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9Mj1jb25maWcgSVdMV0lGSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE5leHQgR2VuIEFHTiAtIFdpcmVsZXNzLU4vQWR2YW5jZWQtTi9VbHRpbWF0ZS1OIChpd2x3aWZpKSBcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBQQ0kgXHUwMDI2XHUwMDI2IEhBU19JT01FTSBcdTAwMjZcdTAwMjYgQ0ZHODAyMTFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo1Olx0ZGVwZW5kcyBvbiBJV0xNRUkgfHwgIUlXTE1FSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTYtXHRzZWxlY3QgRldfTE9BREVSXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTQ5PWNvbmZpZyBJV0xXSUZJX0tVTklUX1RFU1RTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTAtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjUxOlx0ZGVwZW5kcyBvbiBLVU5JVFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTUyLVx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9NTg9Y29uZmlnIElXTFdJRklfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU5LVx0Ym9vbFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjYwOlx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjYxOlx0ZGVwZW5kcyBvbiBJV0xNVk0gfHwgSVdMRFZNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNjItXHRzZWxlY3QgTEVEU19UUklHR0VSU1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz02Nj1jb25maWcgSVdMRFZNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNjctXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIERWTSBGaXJtd2FyZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6Njg6XHRkZXBlbmRzIG9uIE1BQzgwMjExXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNjktXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTc0PWNvbmZpZyBJV0xNVk1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNzYtXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo3NzpcdGRlcGVuZHMgb24gTUFDODAyMTFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo3ODpcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy03OS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9ODQ9Y29uZmlnIElXTE1MRFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy04Ni1cdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjg3Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjg4Olx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTg5LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz0xMDI9Y29tbWVudCBcJiMzNDtXQVJOSU5HOiBpd2x3aWZpIGlzIHVzZWxlc3Mgd2l0aG91dCBJV0xEVk0gb3IgSVdMTVZNIG9yIElXTE1MRFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEwMzpcdGRlcGVuZHMgb24gSVdMRFZNPW4gXHUwMDI2XHUwMDI2IElXTE1WTT1uIFx1MDAyNlx1MDAyNiBJV0xNTEQ9blxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTMxPWNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzItXHRib29sIFwmIzM0O2l3bHdpZmkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMzOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTM0LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz0xMzk9Y29uZmlnIElXTFdJRklfREVWSUNFX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNDAtXHRib29sIFwmIzM0O2l3bHdpZmkgZGV2aWNlIGFjY2VzcyB0cmFjaW5nXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTQxOlx0ZGVwZW5kcyBvbiBFVkVOVF9UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTQyLVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTE2MD1jb25maWcgSVdMTUVJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTYxLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgTWFuYWdlbWVudCBFbmdpbmUgY29tbXVuaWNhdGlvbiBvdmVyIFdMQU5cJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxNjI6XHRkZXBlbmRzIG9uIElOVEVMX01FSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjE2MzpcdGRlcGVuZHMgb24gUE1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxNjQ6XHRkZXBlbmRzIG9uIENGRzgwMjExXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTY1Olx0ZGVwZW5kcyBvbiBCUk9LRU5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNjYtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMDg1CgkJCQkJCQlvdXRwdXQ6IDEzOAoJCQkJCQkJdGhvdWdodHM6IDE3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciBJbnRlbCBXaXJlbGVzcyBEcml2ZXJzKioKCk9rYXksIHNvIEkmIzM5O20gbWFwcGluZyBvdXQgdGhlIGRlcGVuZGVuY2llcyBoZXJlIGZvciB0aGUgSW50ZWwgd2lyZWxlc3MgZHJpdmVycywgZmlndXJpbmcgb3V0IHdoaWNoIGNvbXBvbmVudHMgYXJlIGtleSBmb3IgZnV6emluZy4gYElXTFdJRklgIHJlbGllcyBvbiBgUENJYCwgYEhBU19JT01FTWAsIGFuZCBgQ0ZHODAyMTFgLCBzbyB0aGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gVGhlbiwgYElXTE1WTWAgYW5kIGBJV0xNTERgIGJvdGggZGVwZW5kIG9uIGBNQUM4MDIxMWAuIEkmIzM5O2xsIGZvY3VzIG9uIGBJV0xXSUZJYCwgYEVGSWAsIGBJV0xNVk1gLCBhbmQgYElXTE1MRGAgYXMgbXkgcHJpbWFyeSB0YXJnZXRzIGZvciBub3cuCgpOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duIGFuZCBpZGVudGlmeSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCBhcmUgbGlrZWx5IHRvIGJlIHZ1bG5lcmFibGUuIEFmdGVyIGNoZWNraW5nIHRoZSBGb2N1c1N5bWJvbHMsIEkgc2VlIHRoYXQgYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgd2FzIG1vZGlmaWVkIOKAkyB0aGF0JiMzOTtzIGRlZmluaXRlbHkgaW50ZXJlc3RpbmcuIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AgY2FsbHMgdGhhdCBvbmUsIGFuZCBgaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXJgIGlzIHJlc3BvbnNpYmxlIGZvciByZWFkaW5nIHRoZSBVRUZJIHZhcmlhYmxlLiBBbGwgb2YgdGhlc2UgZnVuY3Rpb25zIGxvb2sgbGlrZSBwcmltZSBjYW5kaWRhdGVzIGZvciBmdXp6aW5nLiBUaGV5IGhhbmRsZSBpbnRlcmFjdGlvbnMgd2l0aCBVRUZJIGFuZCBsaWtlbHkgaW52b2x2ZSBzb21lIGNyaXRpY2FsIGRhdGEgcGFyc2luZy4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIHRoZXNlLgoKQWxyaWdodCwgdGltZSB0byBzZXQgdGhlIHJlc3VsdHMgYW5kIG1vdmUgb24gdG8gdGhlIG5leHQgcGhhc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJV0xXSUZJJiMzNDssCiAgICAmIzM0O0VGSSYjMzQ7LAogICAgJiMzNDtJV0xNVk0mIzM0OywKICAgICYjMzQ7SVdMTUxEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlJiMzNDssCiAgICAmIzM0O2l3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zJiMzNDssCiAgICAmIzM0O2l3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3aGVuIHBhcnNpbmcgVUVGSSB2YXJpYWJsZXMgZm9yIHJlZHVjZWQgcG93ZXIgc2V0dGluZ3MgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGUgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiB3aGVuIHNwZWNpZmljIFVFRkkgdmFyaWFibGVzIGFyZSBwcmVzZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJV0xXSUZJJiMzNDssCiAgICAmIzM0O0VGSSYjMzQ7LAogICAgJiMzNDtJV0xNVk0mIzM0OywKICAgICYjMzQ7SVdMTUxEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlJiMzNDssCiAgICAmIzM0O2l3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zJiMzNDssCiAgICAmIzM0O2l3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3aGVuIHBhcnNpbmcgVUVGSSB2YXJpYWJsZXMgZm9yIHJlZHVjZWQgcG93ZXIgc2V0dGluZ3MgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGUgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiB3aGVuIHNwZWNpZmljIFVFRkkgdmFyaWFibGVzIGFyZSBwcmVzZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MDg6NDIuMDA1MDkwMzEyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0MzAyMDQxOTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklXTFdJRklcIixcbiAgICBcIkVGSVwiLFxuICAgIFwiSVdMTVZNXCIsXG4gICAgXCJJV0xNTERcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VcIixcbiAgICBcIml3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zXCIsXG4gICAgXCJpd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3aGVuIHBhcnNpbmcgVUVGSSB2YXJpYWJsZXMgZm9yIHJlZHVjZWQgcG93ZXIgc2V0dGluZ3MgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGUgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiB3aGVuIHNwZWNpZmljIFVFRkkgdmFyaWFibGVzIGFyZSBwcmVzZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDowODo0Mi4wMDUwOTY0MzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMDI2NDc0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDNmNzE3ZDI5NThjMjJiNjAzZGQzODUyYTUyNGQ3OWM2YTI4MzU2NzdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMTUgMjA6MDg6NDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1xcbmluZGV4IDJlZjBhN2E5MjBhZGI1Li40Y2QzNmI0MjI2MmMzNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXFxuQEAgLTI0OCw2ICsyNDgsMTIgQEAgaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4gXFx0XFx0XFx0SVdMX0RFQlVHX0ZXKHRyYW5zLFxcbiBcXHRcXHRcXHRcXHQgICAgIFxcXCJHb3QgSVdMX1VDT0RFX1RMVl9QTlZNX1NLVSBsZW4gJWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCAgICAgdGx2X2xlbik7XFxuK1xcdFxcdFxcdGlmICh0bHZfbGVuIFxcdTAwM2Mgc2l6ZW9mKCp0bHZfc2t1X2lkKSkge1xcbitcXHRcXHRcXHRcXHRJV0xfRVJSKHRyYW5zLCBcXFwiaW52YWxpZCBQTlZNIFNLVSBUTFYgbGVuOiAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0dGx2X2xlbik7XFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHR9XFxuK1xcbiBcXHRcXHRcXHRJV0xfREVCVUdfRlcodHJhbnMsIFxcXCJza3VfaWQgMHglMHggMHglMHggMHglMHhcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCAgICAgbGUzMl90b19jcHUodGx2X3NrdV9pZC1cXHUwMDNlZGF0YVswXSksXFxuIFxcdFxcdFxcdFxcdCAgICAgbGUzMl90b19jcHUodGx2X3NrdV9pZC1cXHUwMDNlZGF0YVsxXSksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjA4OjQyLjQzNjA5NTA1MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQzODcxMDI3ODk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklXTFdJRklcIixcbiAgICBcIkVGSVwiLFxuICAgIFwiSVdMTVZNXCIsXG4gICAgXCJJV0xNTERcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VcIixcbiAgICBcIml3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zXCIsXG4gICAgXCJpd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3aGVuIHBhcnNpbmcgVUVGSSB2YXJpYWJsZXMgZm9yIHJlZHVjZWQgcG93ZXIgc2V0dGluZ3MgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGUgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiB3aGVuIHNwZWNpZmljIFVFRkkgdmFyaWFibGVzIGFyZSBwcmVzZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNmNzE3ZDI5NThjMjJiNjAzZGQzODUyYTUyNGQ3OWM2YTI4MzU2NzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAyMDowODo0MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNcbmluZGV4IDJlZjBhN2E5MjBhZGI1Li40Y2QzNmI0MjI2MmMzNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1xuQEAgLTI0OCw2ICsyNDgsMTIgQEAgaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbiBcdFx0XHRJV0xfREVCVUdfRlcodHJhbnMsXG4gXHRcdFx0XHQgICAgIFwiR290IElXTF9VQ09ERV9UTFZfUE5WTV9TS1UgbGVuICVkXFxuXCIsXG4gXHRcdFx0XHQgICAgIHRsdl9sZW4pO1xuK1x0XHRcdGlmICh0bHZfbGVuIFx1MDAzYyBzaXplb2YoKnRsdl9za3VfaWQpKSB7XG4rXHRcdFx0XHRJV0xfRVJSKHRyYW5zLCBcImludmFsaWQgUE5WTSBTS1UgVExWIGxlbjogJXVcXG5cIixcbitcdFx0XHRcdFx0dGx2X2xlbik7XG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0XHR9XG4rXG4gXHRcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcInNrdV9pZCAweCUweCAweCUweCAweCUweFxcblwiLFxuIFx0XHRcdFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMF0pLFxuIFx0XHRcdFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMV0pLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MDg6NDIuNDM2MDk2NDAyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDExMDIwMjQxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBGaXJtd2FyZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggaGVyZSB0aGF0J3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jYC4gU3BlY2lmaWNhbGx5LCBpdCBhcHBlYXJzIHRvIGJlIGFkZGluZyBhIGNydWNpYWwgYm91bmRzIGNoZWNrIHdpdGhpbiB0aGUgYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgZnVuY3Rpb24uIFRoZSBpbnRlbnQgaXMgY2xlYXI6IHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93IGJ5IHZlcmlmeWluZyB0aGUgdmFsaWRpdHkgb2YgdGhlIHJlY2VpdmVkIGRhdGEuXG5cbkl0J3MgYWRkaW5nIGEgY29tcGFyaXNvbjogYHRsdl9sZW5gIG5lZWRzIHRvIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgc2l6ZW9mKCp0bHZfc2t1X2lkKWAuIElmIGB0bHZfbGVuYCBpcyBzbWFsbGVyIHRoYW4gZXhwZWN0ZWQsIHRoZSBmdW5jdGlvbiBub3cgY29ycmVjdGx5IHJldHVybnMgYC1FSU5WQUxgLiBUaGlzIGlzIGEgY2xhc3NpYyBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgdGVjaG5pcXVlLCBhbmQgYSBzZW5zaWJsZSBhZGRpdGlvbiB0byBzYWZlZ3VhcmQgYWdhaW5zdCBtYWxmb3JtZWQgZGF0YSBkdXJpbmcgZmlybXdhcmUgcHJvY2Vzc2luZy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQsIGJ1dCB0aGlzIHBhdGNoIGxvb2tzIGxpa2UgYSBnb29kIHN0ZXAgdG93YXJkIGVuaGFuY2VkIHJvYnVzdG5lc3MuIEknbGwgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBkYXRhIHN0cnVjdHVyZSBpbnZvbHZlZCB0b28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODIsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDowODo0Ni41NDYzMDEwNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODE3NTg4NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTE2Nj1zdGF0aWMgaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9zZWN0aW9uKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjIyMDppbnQgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTIyMS1cXHRcXHRcXHRcXHRjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MDg6NDYuNzI4MDY1NTUzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE5Mjk4NDgzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCB0aGlua2luZyB0aHJvdWdoIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgOlxuXG4qKkFuYWx5emluZyBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2UqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgdGhpcyBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYCBmdW5jdGlvbiBpcyBhY3R1YWxseSBkb2luZy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gcmVhZCB0aHJvdWdoIHRoZSBjb2RlIHRvIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UuIEknbGwgbmVlZCB0byBwaW5wb2ludCBpdHMgZnVuY3Rpb24gYW5kIGhvdyBpdCBjb250cmlidXRlcyB0byBwb3dlciBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgVUVGSSBlbnZpcm9ubWVudCwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgSW50ZWwgd2lyZWxlc3MgZGV2aWNlcy4gRG9lcyBpdCBwYXJzZSBjb25maWd1cmF0aW9uIGRhdGE/IERvZXMgaXQgaW50ZXJhY3Qgd2l0aCB0aGUgZmlybXdhcmUgaW4gYW55IHdheT8gRG9lcyBpdCBkZWFsIHdpdGggZGV2aWNlLXNwZWNpZmljIHJlZ2lzdGVycz8gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGtleSBkYXRhIHN0cnVjdHVyZXMsIGZ1bmN0aW9uIGNhbGxzIHRvIG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIsIGFuZCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIHdpdGggdGhlIFVFRkkgc3lzdGVtLiBJJ2xsIGJlIHdhdGNoaW5nIGZvciBhbnkgZXZpZGVuY2Ugb2Y6XG5cbiogICAqKkNvbmZpZ3VyYXRpb24gUGFyc2luZyoqOiBJcyBpdCByZWFkaW5nIGEgc2V0dXAgdGFibGU/IEEgc3BlY2lmaWMgRUZJIHZhcmlhYmxlP1xuKiAgICoqUG93ZXIgU3RhdGUgVHJhbnNpdGlvbnMqKjogRG9lcyB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5IHNldCBwb3dlciBtYW5hZ2VtZW50IHJlbGF0ZWQgcmVnaXN0ZXJzLCBvciBtYWtlIGZ1bmN0aW9uIGNhbGxzIHRoYXQgd2lsbD9cbiogICAqKkVycm9yIEhhbmRsaW5nKio6IEhvdyBkb2VzIGl0IG1hbmFnZSBmYWlsdXJlIGNvbmRpdGlvbnM/IEFyZSB0aGVyZSBzcGVjaWZpYyBlcnJvciBjb2Rlcz8gQXJlIHRoZXJlIGFueSByZXR1cm4gdmFsdWVzIGluZGljYXRpbmcgc3VjY2VzcyBvciBmYWlsdXJlP1xuKiAgICoqSW50ZXJhY3Rpb24gd2l0aCBIYXJkd2FyZSoqOiBJcyBpdCBwcm9iaW5nIGhhcmR3YXJlIGNhcGFiaWxpdGllcyBvciBvbmx5IGRlYWxpbmcgd2l0aCBhIHNwZWNpZmljIHBvd2VyIHN0YXRlIHJlcXVlc3Q/XG4qICAgKipTZWN1cml0eSBDb25jZXJucyoqOiBEb2VzIHRoaXMgZnVuY3Rpb24gaW50ZXJhY3Qgd2l0aCBhbnkgc2Vuc2l0aXZlIGRhdGEgb3IgY29uZmlndXJhdGlvbnM/XG5cbkknbGwgYmUgc3BlY2lmaWNhbGx5IGxvb2tpbmcgdG8gc2VlIGlmIHRoZXJlIGFyZSBvcHRpbWl6YXRpb25zIG9yIHBvd2VyLXNhdmluZyBhZGp1c3RtZW50cy4gSXQgaXMgaW1wb3J0YW50IHRvIGtub3cgd2hpY2ggcG93ZXIgc2V0dGluZ3MsIGFuZCB0aGVpciByZXN1bHRpbmcgZWZmZWN0IG9uIHRoZSBkZXZpY2UsIGFyZSBiZWluZyBjb25maWd1cmVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGZ1bmN0aW9uJ3Mgcm9sZSBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgcG93ZXIgbWFuYWdlbWVudCBmb3IgSW50ZWwgd2lyZWxlc3MgZGV2aWNlcyB3aXRoaW4gdGhlIFVFRkkgZW52aXJvbm1lbnQuIEknbGwgYmUga2VlcGluZyBhbiBleWUgb3V0IGZvciBhbnl0aGluZyBub24tb2J2aW91cywgcGVyaGFwcyBzb21ldGhpbmcgdGhhdCBpc24ndCBpbW1lZGlhdGVseSBhcHBhcmVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU0MCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjA4OjUwLjkyMTA1MjMwNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzI3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMjAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjIwOlxcdGludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuIDIyMTpcXHRcXHRcXHRcXHRcXHRjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbixcXG4gMjIyOlxcdFxcdFxcdFxcdFxcdHN0cnVjdCBpd2xfcG52bV9pbWFnZSAqcG52bV9kYXRhLFxcbiAyMjM6XFx0XFx0XFx0XFx0XFx0X19sZTMyIHNrdV9pZFszXSlcXG4gMjI0OlxcdHtcXG4gMjI1OlxcdFxcdGNvbnN0IHN0cnVjdCBpd2xfdWNvZGVfdGx2ICp0bHY7XFxuIDIyNjpcXHRcXG4gMjI3OlxcdFxcdElXTF9ERUJVR19GVyh0cmFucywgXFxcIlBhcnNpbmcgUkVEVUNFX1BPV0VSIGRhdGFcXFxcblxcXCIpO1xcbiAyMjg6XFx0XFxuIDIyOTpcXHRcXHR3aGlsZSAobGVuIFxcdTAwM2U9IHNpemVvZigqdGx2KSkge1xcbiAyMzA6XFx0XFx0XFx0dTMyIHRsdl9sZW4sIHRsdl90eXBlO1xcbiAyMzE6XFx0XFxuIDIzMjpcXHRcXHRcXHRsZW4gLT0gc2l6ZW9mKCp0bHYpO1xcbiAyMzM6XFx0XFx0XFx0dGx2ID0gKGNvbnN0IHZvaWQgKilkYXRhO1xcbiAyMzQ6XFx0XFxuIDIzNTpcXHRcXHRcXHR0bHZfbGVuID0gbGUzMl90b19jcHUodGx2LVxcdTAwM2VsZW5ndGgpO1xcbiAyMzY6XFx0XFx0XFx0dGx2X3R5cGUgPSBsZTMyX3RvX2NwdSh0bHYtXFx1MDAzZXR5cGUpO1xcbiAyMzc6XFx0XFxuIDIzODpcXHRcXHRcXHRpZiAobGVuIFxcdTAwM2MgdGx2X2xlbikge1xcbiAyMzk6XFx0XFx0XFx0XFx0SVdMX0VSUih0cmFucywgXFxcImludmFsaWQgVExWIGxlbjogJXpkLyV1XFxcXG5cXFwiLFxcbiAyNDA6XFx0XFx0XFx0XFx0XFx0bGVuLCB0bHZfbGVuKTtcXG4gMjQxOlxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAyNDI6XFx0XFx0XFx0fVxcbiAyNDM6XFx0XFxuIDI0NDpcXHRcXHRcXHRpZiAodGx2X3R5cGUgPT0gSVdMX1VDT0RFX1RMVl9QTlZNX1NLVSkge1xcbiAyNDU6XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IGl3bF9za3VfaWQgKnRsdl9za3VfaWQgPVxcbiAyNDY6XFx0XFx0XFx0XFx0XFx0KGNvbnN0IHZvaWQgKikoZGF0YSArIHNpemVvZigqdGx2KSk7XFxuIDI0NzpcXHRcXG4gMjQ4OlxcdFxcdFxcdFxcdElXTF9ERUJVR19GVyh0cmFucyxcXG4gMjQ5OlxcdFxcdFxcdFxcdFxcdCAgICAgXFxcIkdvdCBJV0xfVUNPREVfVExWX1BOVk1fU0tVIGxlbiAlZFxcXFxuXFxcIixcXG4gMjUwOlxcdFxcdFxcdFxcdFxcdCAgICAgdGx2X2xlbik7XFxuIDI1MTpcXHRcXHRcXHRcXHRpZiAodGx2X2xlbiBcXHUwMDNjIHNpemVvZigqdGx2X3NrdV9pZCkpIHtcXG4gMjUyOlxcdFxcdFxcdFxcdFxcdElXTF9FUlIodHJhbnMsIFxcXCJpbnZhbGlkIFBOVk0gU0tVIFRMViBsZW46ICV1XFxcXG5cXFwiLFxcbiAyNTM6XFx0XFx0XFx0XFx0XFx0XFx0dGx2X2xlbik7XFxuIDI1NDpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMjU1OlxcdFxcdFxcdFxcdH1cXG4gMjU2OlxcdFxcbiAyNTc6XFx0XFx0XFx0XFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcXFwic2t1X2lkIDB4JTB4IDB4JTB4IDB4JTB4XFxcXG5cXFwiLFxcbiAyNTg6XFx0XFx0XFx0XFx0XFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVxcdTAwM2VkYXRhWzBdKSxcXG4gMjU5OlxcdFxcdFxcdFxcdFxcdCAgICAgbGUzMl90b19jcHUodGx2X3NrdV9pZC1cXHUwMDNlZGF0YVsxXSksXFxuIDI2MDpcXHRcXHRcXHRcXHRcXHQgICAgIGxlMzJfdG9fY3B1KHRsdl9za3VfaWQtXFx1MDAzZWRhdGFbMl0pKTtcXG4gMjYxOlxcdFxcbiAyNjI6XFx0XFx0XFx0XFx0ZGF0YSArPSBzaXplb2YoKnRsdikgKyBBTElHTih0bHZfbGVuLCA0KTtcXG4gMjYzOlxcdFxcdFxcdFxcdGxlbiAtPSBBTElHTih0bHZfbGVuLCA0KTtcXG4gMjY0OlxcdFxcbiAyNjU6XFx0XFx0XFx0XFx0aWYgKHNrdV9pZFswXSA9PSB0bHZfc2t1X2lkLVxcdTAwM2VkYXRhWzBdIFxcdTAwMjZcXHUwMDI2XFxuIDI2NjpcXHRcXHRcXHRcXHQgICAgc2t1X2lkWzFdID09IHRsdl9za3VfaWQtXFx1MDAzZWRhdGFbMV0gXFx1MDAyNlxcdTAwMjZcXG4gMjY3OlxcdFxcdFxcdFxcdCAgICBza3VfaWRbMl0gPT0gdGx2X3NrdV9pZC1cXHUwMDNlZGF0YVsyXSkge1xcbiAyNjg6XFx0XFx0XFx0XFx0XFx0aW50IHJldCA9IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9zZWN0aW9uKHRyYW5zLFxcbiAyNjk6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIGRhdGEsIGxlbixcXG4gMjcwOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBwbnZtX2RhdGEpO1xcbiAyNzE6XFx0XFx0XFx0XFx0XFx0aWYgKCFyZXQpXFxuIDI3MjpcXHRcXHRcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4gMjczOlxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuIDI3NDpcXHRcXHRcXHRcXHRcXHRJV0xfREVCVUdfRlcodHJhbnMsIFxcXCJTS1UgSUQgZGlkbid0IG1hdGNoIVxcXFxuXFxcIik7XFxuIDI3NTpcXHRcXHRcXHRcXHR9XFxuIDI3NjpcXHRcXHRcXHR9IGVsc2Uge1xcbiAyNzc6XFx0XFx0XFx0XFx0ZGF0YSArPSBzaXplb2YoKnRsdikgKyBBTElHTih0bHZfbGVuLCA0KTtcXG4gMjc4OlxcdFxcdFxcdFxcdGxlbiAtPSBBTElHTih0bHZfbGVuLCA0KTtcXG4gMjc5OlxcdFxcdFxcdH1cXG4gMjgwOlxcdFxcdH1cXG4gMjgxOlxcdFxcbiAyODI6XFx0XFx0cmV0dXJuIC1FTk9FTlQ7XFxuIDI4MzpcXHR9XFxuIDI4NDpcXHRcXG4gMjg1OlxcdHU4ICppd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXFxuIDI4NjpcXHR7XFxuIDI4NzpcXHRcXHRzdHJ1Y3QgcG52bV9za3VfcGFja2FnZSAqcGFja2FnZTtcXG4gMjg4OlxcdFxcdHVuc2lnbmVkIGxvbmcgcGFja2FnZV9zaXplO1xcbiAyODk6XFx0XFx0dTggKmRhdGE7XFxuIDI5MDpcXHRcXG4gMjkxOlxcdFxcdHBhY2thZ2UgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUodHJhbnMsXFxuIDI5MjpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgSVdMX1VFRklfUkVEVUNFRF9QT1dFUl9OQU1FLFxcbiAyOTM6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IFxcXCJSZWR1Y2VkIFBvd2VyXFxcIixcXG4gMjk0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBzaXplb2YoKnBhY2thZ2UpLFxcbiAyOTU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZwYWNrYWdlX3NpemUpO1xcbiAyOTY6XFx0XFx0aWYgKElTX0VSUihwYWNrYWdlKSlcXG4gMjk3OlxcdFxcdFxcdHJldHVybiBFUlJfQ0FTVChwYWNrYWdlKTtcXG4gMjk4OlxcdFxcbiAyOTk6XFx0XFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcXFwicmV2ICVkLCB0b3RhbF9zaXplICVkLCBuX3NrdXMgJWRcXFxcblxcXCIsXFxuIDMwMDpcXHRcXHRcXHQgICAgIHBhY2thZ2UtXFx1MDAzZXJldiwgcGFja2FnZS1cXHUwMDNldG90YWxfc2l6ZSwgcGFja2FnZS1cXHUwMDNlbl9za3VzKTtcXG4gMzAxOlxcdFxcbiAzMDI6XFx0XFx0KmxlbiA9IHBhY2thZ2Vfc2l6ZSAtIHNpemVvZigqcGFja2FnZSk7XFxuIDMwMzpcXHRcXHRkYXRhID0ga21lbWR1cChwYWNrYWdlLVxcdTAwM2VkYXRhLCAqbGVuLCBHRlBfS0VSTkVMKTtcXG4gMzA0OlxcdFxcdGlmICghZGF0YSkge1xcbiAzMDU6XFx0XFx0XFx0a2ZyZWUocGFja2FnZSk7XFxuIDMwNjpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcXG4gMzA3OlxcdFxcdH1cXG4gMzA4OlxcdFxcbiAzMDk6XFx0XFx0a2ZyZWUocGFja2FnZSk7XFxuIDMxMDpcXHRcXG4gMzExOlxcdFxcdHJldHVybiBkYXRhO1xcbiAzMTI6XFx0fVxcbiAzMTM6XFx0XFxuIDMxNDpcXHRzdGF0aWMgaW50IGl3bF91ZWZpX3N0ZXBfcGFyc2Uoc3RydWN0IHVlZmlfY252X2NvbW1vbl9zdGVwX2RhdGEgKmNvbW1vbl9zdGVwX2RhdGEsXFxuIDMxNTpcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuIDMxNjpcXHR7XFxuIDMxNzpcXHRcXHRpZiAoY29tbW9uX3N0ZXBfZGF0YS1cXHUwMDNlcmV2aXNpb24gIT0gMSlcXG4gMzE4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAzMTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjA4OjUwLjkyMTE3NzM4NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMTc3NjkxMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlIEZ1bmN0aW9uKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgLiBUaGUgbmFtZSBpdHNlbGYgc3VnZ2VzdHMgaXQncyBoYW5kbGluZyB0aGUgcGFyc2luZyBvZiBVRUZJIHZhcmlhYmxlcywgc3BlY2lmaWNhbGx5IGluIHJlbGF0aW9uIHRvIHBvd2VyIHJlZHVjdGlvbiwgcHJlc3VtYWJseSBmb3IgYW4gSW50ZWwgd2lyZWxlc3MgZGV2aWNlLiBMZXQncyBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBzbyB0aGUgbmF0dXJhbCBuZXh0IHN0ZXAgaXMgdG8gdHJhY2UgdGhlIGNhbGwgZ3JhcGguIEknbGwgbmVlZCB0byBpZGVudGlmeSBwcmVjaXNlbHkgKndoZXJlKiB0aGlzIGZ1bmN0aW9uLCBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYCwgaXMgYmVpbmcgaW52b2tlZCB3aXRoaW4gdGhlIGRyaXZlci4gRGV0ZXJtaW5pbmcgdGhlIGNhbGwgc2l0ZXMgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgd2l0aGluIHdoaWNoIHBvd2VyIG1hbmFnZW1lbnQgZGVjaXNpb25zIGFyZSBtYWRlIGFuZCBob3cgdGhlc2UgVUVGSSB2YXJpYWJsZXMgYXJlIHVsdGltYXRlbHkgdXRpbGl6ZWQuIEkgd2FudCB0byBzZWUgaG93IHRoZSBwYXJzZWQgZGF0YSBpcyB1c2VkIHRvIG9wdGltaXplIHRoZSBwb3dlciBjb25zdW1wdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYxMCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MDg6NTQuMDM4OTQ4NjY0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3MjA0NjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz00MDc9aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDMyOlxcdHJldCA9IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZSh0cmFucywgZGF0YSwgbGVuZ3RoLCBwbnZtX2RhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDMzLVxcdFxcdFxcdFxcdFxcdCAgc2t1X2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTE2Nj1zdGF0aWMgaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9zZWN0aW9uKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjIyMDppbnQgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTIyMS1cXHRcXHRcXHRcXHRjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oPTMyNT11OCAqaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozMjY6aW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0zMjctXFx0XFx0XFx0XFx0Y29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaD0zNjA9c3RhdGljIGlubGluZSBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozNjE6aXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTM2Mi1cXHRcXHRcXHQgICAgY29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjA4OjU0LjEzNjE1NzI5NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjI2Mzc5OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKlRyYWNpbmcgRG93biB0aGUgQ2FsbCBDaGFpbioqXG5cbkFscmlnaHQsIHNvIEkndmUgZ290IHRoaXMgZnVuY3Rpb24sIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AsIGFuZCBpdCBsb29rcyBsaWtlIGl0J3MgYnVyaWVkIGRlZXAgd2l0aGluIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGVyZSB0aGUgaGVjayBpcyB0aGlzIGNhbGxlZCBmcm9tP1wiIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoaXMgZnVuY3Rpb24uIExldCdzIHNlZSB3aGVyZSB0aGUgY2FsbCB0byBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgIG9yaWdpbmF0ZXMuIFRpbWUgdG8gc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSBjYWxsIGdyYXBoIHRvIGZpZ3VyZSBvdXQgaXRzIHB1cnBvc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NDYsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDowODo1Ny4xOTg3OTgwMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzOTA2MDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTQwNj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQwNzppd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MDgtXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBpd2xfdWNvZGVfY2FwYWJpbGl0aWVzICpjYXBhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDU1PWludCBpd2xfcG52bV9sb2FkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDY3LVxcdGl3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyh0cmFucywgZncsIHNrdV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDY4OlxcdGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHRyYW5zLCBcXHUwMDI2ZnctXFx1MDAzZXVjb2RlX2NhcGEsIHNrdV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDY5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDowODo1Ny4zMTI3Mjg1OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjUwNDYxNDg5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHNpdHVhdGlvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBJbnRlbCBXaXJlbGVzcyBGaXJtd2FyZSBMb2FkaW5nIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlIEludGVsIHdpcmVsZXNzIGZpcm13YXJlIGdldHMgbG9hZGVkLiBTcGVjaWZpY2FsbHksIEknbSBmb2N1c2luZyBvbiBgaXdsX3Budm1fbG9hZGAuIEkga25vdyB0aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgZnJvbSBgaXdsX212bV9sb2FkX3Vjb2RlX3dhaXRfYWxpdmVgIGFuZCByZWxhdGVkIGZ1bmN0aW9ucywgYnV0IEkgbmVlZCB0byBwaW5wb2ludCBldmVyeSBjYWxsIHNpdGUuIEknbSBnb2luZyB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgZGV0ZXJtaW5lIGV2ZXJ5IGluc3RhbmNlIHdoZXJlIGBpd2xfcG52bV9sb2FkYCBpcyBhY3R1YWxseSBjYWxsZWQuIEdvdHRhIHVuZGVyc3RhbmQgdGhlIGVudGlyZSBjaGFpbiBvZiBldmVudHMgdG8gaGF2ZSBhIGdvb2QgcGljdHVyZSBvZiB3aGF0J3MgaGFwcGVuaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDE3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MDk6MTMuODE3MzQ2MDA1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODU0NTk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfcG52bV9sb2FkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTM1OT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjM2MDppd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzYxLVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgaXdsX2Z3ICpmdyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTQwNj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQwNzppd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MDgtXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBpd2xfdWNvZGVfY2FwYWJpbGl0aWVzICpjYXBhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ1NTppbnQgaXdsX3Budm1fbG9hZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NTYtXFx0XFx0ICBzdHJ1Y3QgaXdsX25vdGlmX3dhaXRfZGF0YSAqbm90aWZfd2FpdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ2Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0Njc6XFx0aXdsX3Budm1fbG9hZF9wbnZtX3RvX3RyYW5zKHRyYW5zLCBmdywgc2t1X2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0Njg6XFx0aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnModHJhbnMsIFxcdTAwMjZmdy1cXHUwMDNldWNvZGVfY2FwYSwgc2t1X2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00ODAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ4MTpJV0xfRVhQT1JUX1NZTUJPTChpd2xfcG52bV9sb2FkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5oLTE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5oOjE2OmludCBpd2xfcG52bV9sb2FkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5oLTE3LVxcdFxcdCAgc3RydWN0IGl3bF9ub3RpZl93YWl0X2RhdGEgKm5vdGlmX3dhaXQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9mdy5jPTI3Mj1zdGF0aWMgaW50IGl3bF9tbGRfcnVuX2Z3X2luaXRfc2VxdWVuY2Uoc3RydWN0IGl3bF9tbGQgKm1sZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2Z3LmMtMjg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2Z3LmM6MjkwOlxcdHJldCA9IGl3bF9wbnZtX2xvYWQobWxkLVxcdTAwM2V0cmFucywgXFx1MDAyNm1sZC1cXHUwMDNlbm90aWZfd2FpdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9mdy5jLTI5MS1cXHRcXHRcXHQgICAgbWxkLVxcdTAwM2VmdywgYWxpdmVfZGF0YS5za3VfaWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYz0yODY9c3RhdGljIGludCBpd2xfbXZtX2xvYWRfdWNvZGVfd2FpdF9hbGl2ZShzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYy00MDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYzo0MDc6XFx0cmV0ID0gaXdsX3Budm1fbG9hZChtdm0tXFx1MDAzZXRyYW5zLCBcXHUwMDI2bXZtLVxcdTAwM2Vub3RpZl93YWl0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMtNDA4LVxcdFxcdFxcdCAgICBtdm0tXFx1MDAzZWZ3LCBhbGl2ZV9kYXRhLnNrdV9pZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjA5OjEzLjkxNTg5ODA2NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODQ0NjQ5ODQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgaXdsd2lmaSBGaXJtd2FyZSBMb2FkaW5nKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgaXdsd2lmaSBmaXJtd2FyZSBsb2FkaW5nIHNlcXVlbmNlLCBzcGVjaWZpY2FsbHkgaG93IHRoZSByZWR1Y2VkIHBvd2VyIFBOVk0gZGF0YSBpcyBoYW5kbGVkLiBNeSBwcmltYXJ5IGludGVyZXN0IGlzIGluIHVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgc291cmNlLiBGaXJzdCwgSSBzZWUgdGhpcyBpcyBwYXJ0IG9mIHRoZSBvdmVyYWxsIGZpcm13YXJlIGxvYWRpbmcsIG5hdHVyYWxseS4gQnV0LCB3aGVyZSBpcyB0aGUgZGF0YSBhY3R1YWxseSBjb21pbmcgZnJvbT9cblxuSSBmaW5kIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AsIGFuZCB0aGF0J3MgdGhlIGtleS4gSW5zaWRlLCB0aGUgY29kZSB0cmllcyBgaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIodHJhbnMsIFx1MDAyNmxlbmd0aClgLiBJbnRlcmVzdGluZy4gSWYgdGhhdCBmYWlscywgaXQgZmFsbHMgYmFjayB0byBgaXdsX3Budm1fZ2V0X2Zyb21fZnModHJhbnMsIFx1MDAyNmRhdGEsIFx1MDAyNmxlbmd0aClgLiBBaGEhIE5vdyBpdCdzIGNsZWFyOiBgaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXJgIGlzIHJlYWRpbmcgZnJvbSBVRUZJIHZhcmlhYmxlcywgSSdtIHN1cmUgb2YgaXQuIEFuZCBgaXdsX3Budm1fZ2V0X2Zyb21fZnNgIGlzIHRoZSBmYWxsYmFjaywgd2hpY2gsIG5hdHVyYWxseSwgdXNlcyBmaXJtd2FyZSBmaWxlcyBsaWtlIGBpd2x3aWZpLSoucG52bWAuXG5cbldhaXQgYSBtaW51dGUsIGlmIGl0J3MgVUVGSSwgaXQgbXVzdCBiZSB1c2luZyBzb21ldGhpbmcgbGlrZSBgZWZpdmFyX2VudHJ5X2dldGAgb3IgYSBzaW1pbGFyIGZ1bmN0aW9uIHRvIGFjY2VzcyB0aGUgdmFyaWFibGUuIEkgbmVlZCB0byBiZSBzdXJlOyBsZXQgbWUgbG9vayBhdCBgaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlYCB0byB2ZXJpZnkgdGhlIGxvdy1sZXZlbCB2YXJpYWJsZSBhY2Nlc3MuIFRoaXMgaXMgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBwcm9jZXNzLCBob3cgdXBkYXRlcyBhcmUgaGFuZGxlZCwgYW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyNDIsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MDk6MjAuNzYwNTUxMDk5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzg1ODgyMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTgyPXN0YXRpYyB2b2lkICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4Mzppd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04NC1cXHRcXHRcXHRcXHQgICAgZWZpX2d1aWRfdCAqZ3VpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTExOD1zdGF0aWMgdm9pZCAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTE5Oml3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMjAtXFx0XFx0XFx0ICAgICAgIGVmaV9jaGFyMTZfdCAqdWVmaV92YXJfbmFtZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEyNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTI1OlxcdHJldHVybiBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZCh0cmFucywgXFx1MDAyNklXTF9FRklfV0lGSV9HVUlELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEyNi1cXHRcXHRcXHRcXHRcXHRcXHQgICB1ZWZpX3Zhcl9uYW1lLCB2YXJfbmFtZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTI4NT11OCAqaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjI5MTpcXHRwYWNrYWdlID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI5Mi1cXHRcXHRcXHRcXHRcXHRcXHQgSVdMX1VFRklfUkVEVUNFRF9QT1dFUl9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MzI5PXZvaWQgaXdsX3VlZmlfZ2V0X3N0ZXBfdGFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MzM3OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZCh0cmFucywgXFx1MDAyNklXTF9FRklfV0lGSV9CVF9HVUlELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTMzOC1cXHRcXHRcXHRcXHRcXHRcXHQgICBJV0xfVUVGSV9TVEVQX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0zODM9dm9pZCBpd2xfdWVmaV9nZXRfc2dvbV90YWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTM5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzozOTI6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZSh0cmFucywgSVdMX1VFRklfU0dPTV9OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTM5My1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiU0dPTVxcXCIsIHNpemVvZigqZGF0YSksIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9NDIwPXZvaWQgaXdsX3VlZmlfZ2V0X3VhdHNfdGFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDI2OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUodHJhbnMsIElXTF9VRUZJX1VBVFNfTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MjctXFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcIlVBVFNcXFwiLCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTQzOD12b2lkIGl3bF91ZWZpX2dldF91bmViX3RhYmxlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjQ0MzpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHRyYW5zLCBJV0xfVUVGSV9VTkVCX05BTUUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDQ0LVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXCJVTkVCXFxcIiwgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz00OTc9aW50IGl3bF91ZWZpX2dldF93cmRzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTUwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo1MDU6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfV1JEU19OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTUwNi1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiV1JEU1xcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz01NDU9aW50IGl3bF91ZWZpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo1NTQ6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfRVdSRF9OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU1NS1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiRVdSRFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz01OTk9aW50IGl3bF91ZWZpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTYwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2MDg6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfV0dEU19OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTYwOS1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiV0dEU1xcXCIsIFVFRklfV0dEU19UQUJMRV9TSVpFX1JFVjMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz02NzY9aW50IGl3bF91ZWZpX2dldF9wcGFnX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2ODM6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfUFBBR19OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY4NC1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiUFBBR1xcXCIsIFVFRklfUFBBR19EQVRBX1NJWkVfVjUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02OTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NjkzOlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjk0LVxcdFxcdFxcdFxcdFxcdCAgICAgIElXTF9VRUZJX1BQQUdfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTc0NT1pbnQgaXdsX3VlZmlfZ2V0X3Rhc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NzUxOlxcdHVlZmlfdGFzID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXFx1MDAzZXRyYW5zLCBJV0xfVUVGSV9XVEFTX05BTUUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzUyLVxcdFxcdFxcdFxcdFxcdFxcdCAgXFxcIldUQVNcXFwiLCBzaXplb2YoKnVlZmlfdGFzKSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz03OTg9aW50IGl3bF91ZWZpX2dldF9wd3JfbGltaXQoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjgwNDpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXFx1MDAzZXRyYW5zLCBJV0xfVUVGSV9TUExDX05BTUUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODA1LVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXCJTUExDXFxcIiwgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz04MjE9aW50IGl3bF91ZWZpX2dldF9tY2Moc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCBjaGFyICptY2MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6ODI2OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsIElXTF9VRUZJX1dSRERfTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MjctXFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcIldSRERcXFwiLCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTg1Mj1pbnQgaXdsX3VlZmlfZ2V0X2Vja3Yoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCB1MzIgKmV4dGxfY2xrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjg1NzpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQoZndydC1cXHUwMDNldHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODU4LVxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZJV0xfRUZJX1dJRklfQlRfR1VJRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTg3Nj1pbnQgaXdsX3VlZmlfZ2V0X3diZW0oc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCB1MzIgKnZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjg4MTpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXFx1MDAzZXRyYW5zLCBJV0xfVUVGSV9XQkVNX05BTUUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODgyLVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXCJXQkVNXFxcIiwgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz04OTk9c3RhdGljIGludCBpd2xfdWVmaV9sb2FkX2RzbV92YWx1ZXMoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjkwNjpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXFx1MDAzZXRyYW5zLCBJV0xfVUVGSV9EU01fTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05MDctXFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcIkRTTVxcXCIsIHNpemVvZigqZGF0YSksIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9OTc2PWludCBpd2xfdWVmaV9nZXRfcHVuY3R1cmluZyhzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05ODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6OTg0OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTg1LVxcdFxcdFxcdFxcdFxcdCAgICAgIElXTF9VRUZJX1BVTkNUVVJJTkdfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTEwMDU9aW50IGl3bF91ZWZpX2dldF9kc2JyKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwgdTMyICp2YWx1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTAxMDpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQoZndydC1cXHUwMDNldHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAxMS1cXHRcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2SVdMX0VGSV9XSUZJX0JUX0dVSUQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0xMDMxPWludCBpd2xfdWVmaV9nZXRfcGh5X2ZpbHRlcnMoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMDM2OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsIElXTF9VRUZJX1dQRkNfTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDM3LVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXCJXUEZDXFxcIiwgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjA5OjIwLjg5OTE0NjI2NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTQxNDU0ODE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC5cblxuKipGdXp6aW5nIHRoZSBVRUZJIFZhcmlhYmxlIFJlYWRzIGluIGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKipcblxuQWxyaWdodCwgc28gYGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkYCBpcyByZWFkaW5nIFVFRkkgdmFyaWFibGVzLiBJbnRlcmVzdGluZy4gVGhlIHF1ZXN0aW9uIG5vdyBpczogY2FuIEkgZnV6eiB0aGlzPyBUaGUgYW5zd2VyICpzaG91bGQqIGJlIHllcywgZ2l2ZW4gdGhhdCB0aGUga2VybmVsIHJlYWRzIHRoZW0uIE5vdywgdGhlcmUgYXJlIGEgY291cGxlIG9mIHdheXMgdGhpcyBjb3VsZCBoYXBwZW4sIHJpZ2h0PyBTeXprYWxsZXIgY291bGQgbW9jayB0aGUgRUZJIHN1YnN5c3RlbSBhbmQgcHJvdmlkZSBmdXp6ZWQgdmFyaWFibGVzLCBvciB0aGVyZSdzIHNvbWUgKm90aGVyKiBwYXRoIHRoYXQgbGVhZHMgdG8gdGhpcy4gQnV0IGhhbmcgb24uLi4gSSBkb24ndCB0aGluayBzeXprYWxsZXIgZGlyZWN0bHkgbW9ja3MgRUZJIHZhcmlhYmxlcyB1bmxlc3MgdGhlcmUncyBzb21lIGV4cGxpY2l0IG1lY2hhbmlzbSBkZWZpbmVkIGZvciBpdCwgYXQgbGVhc3Qgbm90IHRoYXQgSSBjYW4gcmVjYWxsIG9mZiB0aGUgdG9wIG9mIG15IGhlYWQuIFxuXG5XYWl0IGEgbWludXRlLi4uIGRpZG4ndCBJIHNlZSBzb21ldGhpbmcgZWxzZSBpbiB0aGF0IGNvZGU/IE9oIHllYWghIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2Ag4oCTIHRoYXQgZnVuY3Rpb24gKmFsc28qIHBhcnNlcyBkYXRhLCBidXQgaW4gdGhpcyBjYXNlLCB0aGUgZGF0YSBjb21lcyBmcm9tIHRoZSAqZmlsZXN5c3RlbSouIFNvLCB0aGF0IGNvdWxkIGJlIHRoZSBlbnRyeXBvaW50LiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgIHRvIHNlZSBpZiB0aGF0J3MgYSB2aWFibGUgYXZlbnVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTI0MSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDowOTozMi4zMTM2OTYyMjVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDA2LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQwNjpcXHRzdGF0aWMgdm9pZFxcbiA0MDc6XFx0aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuIDQwODpcXHRcXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGl3bF91Y29kZV9jYXBhYmlsaXRpZXMgKmNhcGEsXFxuIDQwOTpcXHRcXHRcXHRcXHRcXHQgICAgX19sZTMyIHNrdV9pZFszXSlcXG4gNDEwOlxcdHtcXG4gNDExOlxcdFxcdHN0cnVjdCBpd2xfcG52bV9pbWFnZSAqcG52bV9kYXRhID0gTlVMTDtcXG4gNDEyOlxcdFxcdHU4ICpkYXRhID0gTlVMTDtcXG4gNDEzOlxcdFxcdHNpemVfdCBsZW5ndGg7XFxuIDQxNDpcXHRcXHRpbnQgcmV0O1xcbiA0MTU6XFx0XFxuIDQxNjpcXHRcXHRpZiAodHJhbnMtXFx1MDAzZWZhaWxlZF90b19sb2FkX3JlZHVjZV9wb3dlcl9pbWFnZSlcXG4gNDE3OlxcdFxcdFxcdHJldHVybjtcXG4gNDE4OlxcdFxcbiA0MTk6XFx0XFx0aWYgKHRyYW5zLVxcdTAwM2VyZWR1Y2VfcG93ZXJfbG9hZGVkKVxcbiA0MjA6XFx0XFx0XFx0Z290byBzZXQ7XFxuIDQyMTpcXHRcXG4gNDIyOlxcdFxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcih0cmFucywgXFx1MDAyNmxlbmd0aCk7XFxuIDQyMzpcXHRcXHRpZiAoSVNfRVJSKGRhdGEpKSB7XFxuIDQyNDpcXHRcXHRcXHR0cmFucy1cXHUwMDNlZmFpbGVkX3RvX2xvYWRfcmVkdWNlX3Bvd2VyX2ltYWdlID0gdHJ1ZTtcXG4gNDI1OlxcdFxcdFxcdHJldHVybjtcXG4gNDI2OlxcdFxcdH1cXG4gNDI3OlxcdFxcbiA0Mjg6XFx0XFx0cG52bV9kYXRhID0ga3phbGxvY19vYmooKnBudm1fZGF0YSk7XFxuIDQyOTpcXHRcXHRpZiAoIXBudm1fZGF0YSlcXG4gNDMwOlxcdFxcdFxcdGdvdG8gZnJlZTtcXG4gNDMxOlxcdFxcbiA0MzI6XFx0XFx0cmV0ID0gaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHRyYW5zLCBkYXRhLCBsZW5ndGgsIHBudm1fZGF0YSxcXG4gNDMzOlxcdFxcdFxcdFxcdFxcdFxcdCAgc2t1X2lkKTtcXG4gNDM0OlxcdFxcdGlmIChyZXQpIHtcXG4gNDM1OlxcdFxcdFxcdHRyYW5zLVxcdTAwM2VmYWlsZWRfdG9fbG9hZF9yZWR1Y2VfcG93ZXJfaW1hZ2UgPSB0cnVlO1xcbiA0MzY6XFx0XFx0XFx0Z290byBmcmVlO1xcbiA0Mzc6XFx0XFx0fVxcbiA0Mzg6XFx0XFxuIDQzOTpcXHRcXHRyZXQgPSBpd2xfdHJhbnNfbG9hZF9yZWR1Y2VfcG93ZXIodHJhbnMsIHBudm1fZGF0YSwgY2FwYSk7XFxuIDQ0MDpcXHRcXHRpZiAocmV0KSB7XFxuIDQ0MTpcXHRcXHRcXHRJV0xfREVCVUdfRlcodHJhbnMsXFxuIDQ0MjpcXHRcXHRcXHRcXHQgICAgIFxcXCJGYWlsZWQgdG8gbG9hZCByZWR1Y2UgcG93ZXIgdGFibGUgJWRcXFxcblxcXCIsXFxuIDQ0MzpcXHRcXHRcXHRcXHQgICAgIHJldCk7XFxuIDQ0NDpcXHRcXHRcXHR0cmFucy1cXHUwMDNlZmFpbGVkX3RvX2xvYWRfcmVkdWNlX3Bvd2VyX2ltYWdlID0gdHJ1ZTtcXG4gNDQ1OlxcdFxcdFxcdGdvdG8gZnJlZTtcXG4gNDQ2OlxcdFxcdH1cXG4gNDQ3OlxcdFxcbiA0NDg6XFx0c2V0OlxcbiA0NDk6XFx0XFx0aXdsX3RyYW5zX3NldF9yZWR1Y2VfcG93ZXIodHJhbnMsIGNhcGEpO1xcbiA0NTA6XFx0ZnJlZTpcXG4gNDUxOlxcdFxcdGtmcmVlKGRhdGEpO1xcbiA0NTI6XFx0XFx0a2ZyZWUocG52bV9kYXRhKTtcXG4gNDUzOlxcdH1cXG4gNDU0OlxcdFxcbiA0NTU6XFx0aW50IGl3bF9wbnZtX2xvYWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuIDQ1NjpcXHRcXHRcXHQgIHN0cnVjdCBpd2xfbm90aWZfd2FpdF9kYXRhICpub3RpZl93YWl0LFxcbiA0NTc6XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgaXdsX2Z3ICpmdywgX19sZTMyIHNrdV9pZFszXSlcXG4gNDU4OlxcdHtcXG4gNDU5OlxcdFxcdHN0cnVjdCBpd2xfbm90aWZpY2F0aW9uX3dhaXQgcG52bV93YWl0O1xcbiA0NjA6XFx0XFx0c3RhdGljIGNvbnN0IHUxNiBudGZfY21kc1tdID0geyBXSURFX0lEKFJFR1VMQVRPUllfQU5EX05WTV9HUk9VUCxcXG4gNDYxOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFBOVk1fSU5JVF9DT01QTEVURV9OVEZZKSB9O1xcbiA0NjI6XFx0XFxuIDQ2MzpcXHRcXHQvKiBpZiB0aGUgU0tVX0lEIGlzIGVtcHR5LCB0aGVyZSdzIG5vdGhpbmcgdG8gZG8gKi9cXG4gNDY0OlxcdFxcdGlmICghc2t1X2lkWzBdIFxcdTAwMjZcXHUwMDI2ICFza3VfaWRbMV0gXFx1MDAyNlxcdTAwMjYgIXNrdV9pZFsyXSlcXG4gNDY1OlxcdFxcdFxcdHJldHVybiAwO1xcbiA0NjY6XFx0XFxuIDQ2NzpcXHRcXHRpd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnModHJhbnMsIGZ3LCBza3VfaWQpO1xcbiA0Njg6XFx0XFx0aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnModHJhbnMsIFxcdTAwMjZmdy1cXHUwMDNldWNvZGVfY2FwYSwgc2t1X2lkKTtcXG4gNDY5OlxcdFxcbiA0NzA6XFx0XFx0aXdsX2luaXRfbm90aWZpY2F0aW9uX3dhaXQobm90aWZfd2FpdCwgXFx1MDAyNnBudm1fd2FpdCxcXG4gNDcxOlxcdFxcdFxcdFxcdFxcdCAgIG50Zl9jbWRzLCBBUlJBWV9TSVpFKG50Zl9jbWRzKSxcXG4gNDcyOlxcdFxcdFxcdFxcdFxcdCAgIGl3bF9wbnZtX2NvbXBsZXRlX2ZuLCB0cmFucyk7XFxuIDQ3MzpcXHRcXG4gNDc0OlxcdFxcdC8qIGtpY2sgdGhlIGRvb3JiZWxsICovXFxuIDQ3NTpcXHRcXHRpd2xfd3JpdGVfdW1hY19wcnBoKHRyYW5zLCBVUkVHX0RPT1JCRUxMX1RPX0lTUjYsXFxuIDQ3NjpcXHRcXHRcXHRcXHQgICAgVVJFR19ET09SQkVMTF9UT19JU1I2X1BOVk0pO1xcbiA0Nzc6XFx0XFxuIDQ3ODpcXHRcXHRyZXR1cm4gaXdsX3dhaXRfbm90aWZpY2F0aW9uKG5vdGlmX3dhaXQsIFxcdTAwMjZwbnZtX3dhaXQsXFxuIDQ3OTpcXHRcXHRcXHRcXHRcXHQgICAgIE1WTV9VQ09ERV9QTlZNX1RJTUVPVVQpO1xcbiA0ODA6XFx0fVxcbiA0ODE6XFx0SVdMX0VYUE9SVF9TWU1CT0woaXdsX3Budm1fbG9hZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjA5OjMyLjMxMzc3OTU4NVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDUwNjUwMTE0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyBEYXRhIFNvdXJjZSBmb3IgUG93ZXIgUmVkdWN0aW9uIEluZm9ybWF0aW9uKipcblxuSG1tLCBpdCBzZWVtcyBsaWtlIGBpd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcmAgaXMgdGhlICpvbmx5KiBwbGFjZSB0aGUgc3lzdGVtIGlzIHB1bGxpbmcgZGF0YSBmcm9tIGZvciBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgLiBUaGF0J3MgYSBjcml0aWNhbCBkZXBlbmRlbmN5LCBhbmQgYSBwb3RlbnRpYWwgc2luZ2xlIHBvaW50IG9mIGZhaWx1cmUgb3IgYm90dGxlbmVjay4gSSBuZWVkIHRvIHJldmlzaXQgdGhhdCBmdW5jdGlvbiwgYGl3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyYCwgd2l0aCBhIGZpbmUtdG9vdGggY29tYi4gQW55IGlzc3VlcyB0aGVyZSwgYW5kIHRoZSBlbnRpcmUgcG93ZXIgcmVkdWN0aW9uIG1lY2hhbmlzbSBmb3IgdGhlIFBOVk0gaXMgY29tcHJvbWlzZWQuIExldCdzIG1ha2Ugc3VyZSBpdCBpcyBmdW5jdGlvbmluZyBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyOTI3LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDowOTo0Ni44MjAyODI0MDdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE2NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjg1LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjg1OlxcdHU4ICppd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXFxuIDI4NjpcXHR7XFxuIDI4NzpcXHRcXHRzdHJ1Y3QgcG52bV9za3VfcGFja2FnZSAqcGFja2FnZTtcXG4gMjg4OlxcdFxcdHVuc2lnbmVkIGxvbmcgcGFja2FnZV9zaXplO1xcbiAyODk6XFx0XFx0dTggKmRhdGE7XFxuIDI5MDpcXHRcXG4gMjkxOlxcdFxcdHBhY2thZ2UgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUodHJhbnMsXFxuIDI5MjpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgSVdMX1VFRklfUkVEVUNFRF9QT1dFUl9OQU1FLFxcbiAyOTM6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IFxcXCJSZWR1Y2VkIFBvd2VyXFxcIixcXG4gMjk0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBzaXplb2YoKnBhY2thZ2UpLFxcbiAyOTU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZwYWNrYWdlX3NpemUpO1xcbiAyOTY6XFx0XFx0aWYgKElTX0VSUihwYWNrYWdlKSlcXG4gMjk3OlxcdFxcdFxcdHJldHVybiBFUlJfQ0FTVChwYWNrYWdlKTtcXG4gMjk4OlxcdFxcbiAyOTk6XFx0XFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcXFwicmV2ICVkLCB0b3RhbF9zaXplICVkLCBuX3NrdXMgJWRcXFxcblxcXCIsXFxuIDMwMDpcXHRcXHRcXHQgICAgIHBhY2thZ2UtXFx1MDAzZXJldiwgcGFja2FnZS1cXHUwMDNldG90YWxfc2l6ZSwgcGFja2FnZS1cXHUwMDNlbl9za3VzKTtcXG4gMzAxOlxcdFxcbiAzMDI6XFx0XFx0KmxlbiA9IHBhY2thZ2Vfc2l6ZSAtIHNpemVvZigqcGFja2FnZSk7XFxuIDMwMzpcXHRcXHRkYXRhID0ga21lbWR1cChwYWNrYWdlLVxcdTAwM2VkYXRhLCAqbGVuLCBHRlBfS0VSTkVMKTtcXG4gMzA0OlxcdFxcdGlmICghZGF0YSkge1xcbiAzMDU6XFx0XFx0XFx0a2ZyZWUocGFja2FnZSk7XFxuIDMwNjpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcXG4gMzA3OlxcdFxcdH1cXG4gMzA4OlxcdFxcbiAzMDk6XFx0XFx0a2ZyZWUocGFja2FnZSk7XFxuIDMxMDpcXHRcXG4gMzExOlxcdFxcdHJldHVybiBkYXRhO1xcbiAzMTI6XFx0fVxcbiAzMTM6XFx0XFxuIDMxNDpcXHRzdGF0aWMgaW50IGl3bF91ZWZpX3N0ZXBfcGFyc2Uoc3RydWN0IHVlZmlfY252X2NvbW1vbl9zdGVwX2RhdGEgKmNvbW1vbl9zdGVwX2RhdGEsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjA5OjQ2LjgyMDM2NTc0N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTU1NTA4MTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUsIHRoZSBzeXN0ZW0ncyByZWFkaW5nIGZyb20gVUVGSSB2YXJpYWJsZXMsIGludGVyZXN0aW5nLiBUaGUgcmVhbCBxdWVzdGlvbiBpcywgaG93IGRvZXMgc3l6a2FsbGVyIGFjdHVhbGx5ICp0ZXN0KiB0aGlzIGludGVyYWN0aW9uPyBNeSBmaXJzdCB0aG91Z2h0IGlzIHRoZSBzdGFuZGFyZCBhcHByb2FjaCDigJMgYGVmaXZhcmZzYCBvciBzb21ldGhpbmcgbGlrZSB0aGF0LCB3aGVyZSBpdCBtb2NrcyB0aGUgdmFyaWFibGVzIGRpcmVjdGx5LiBCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiB0aGUgY29kZSBwYXRoIGZvciB0aGlzIHNlZW1zIHRvIGJlIHRocm91Z2ggYGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZWAsIGFuZCAqdGhhdCogY2FsbHMgYGVmaS5nZXRfdmFyaWFibGVgLiBSaWdodC4gU28sIHRoZSBrZXkgaXMgZGlnZ2luZyBpbnRvIGBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVgLiBUaGF0J3Mgd2hlcmUgdGhlIGludGVyZXN0aW5nIHN0dWZmIGxpa2VseSBpcy4gTGV0J3Mgc3RhcnQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNjM4LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDowOTo1MC4zNzU4Nzc0MDZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDgyLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDgyOlxcdHN0YXRpYyB2b2lkICpcXG4gIDgzOlxcdGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbiAgODQ6XFx0XFx0XFx0XFx0XFx0ICAgIGVmaV9ndWlkX3QgKmd1aWQsXFxuICA4NTpcXHRcXHRcXHRcXHRcXHQgICAgZWZpX2NoYXIxNl90ICp1ZWZpX3Zhcl9uYW1lLFxcbiAgODY6XFx0XFx0XFx0XFx0XFx0ICAgIGNoYXIgKnZhcl9uYW1lLFxcbiAgODc6XFx0XFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCBleHBlY3RlZF9zaXplLFxcbiAgODg6XFx0XFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGxvbmcgKnNpemUpXFxuICA4OTpcXHR7XFxuICA5MDpcXHRcXHR2b2lkICp2YXI7XFxuICA5MTpcXHRcXHR1bnNpZ25lZCBsb25nIHZhcl9zaXplO1xcbiAgOTI6XFx0XFxuICA5MzpcXHRcXHR2YXIgPSBpd2xfdWVmaV9nZXRfdmFyaWFibGUodWVmaV92YXJfbmFtZSwgZ3VpZCwgXFx1MDAyNnZhcl9zaXplKTtcXG4gIDk0OlxcdFxcbiAgOTU6XFx0XFx0aWYgKElTX0VSUih2YXIpKSB7XFxuICA5NjpcXHRcXHRcXHRJV0xfREVCVUdfUkFESU8odHJhbnMsXFxuICA5NzpcXHRcXHRcXHRcXHRcXHRcXFwiJXMgVUVGSSB2YXJpYWJsZSBub3QgZm91bmQgMHglbHhcXFxcblxcXCIsIHZhcl9uYW1lLFxcbiAgOTg6XFx0XFx0XFx0XFx0XFx0UFRSX0VSUih2YXIpKTtcXG4gIDk5OlxcdFxcdFxcdHJldHVybiB2YXI7XFxuIDEwMDpcXHRcXHR9XFxuIDEwMTpcXHRcXG4gMTAyOlxcdFxcdGlmICh2YXJfc2l6ZSBcXHUwMDNjIGV4cGVjdGVkX3NpemUpIHtcXG4gMTAzOlxcdFxcdFxcdElXTF9ERUJVR19SQURJTyh0cmFucyxcXG4gMTA0OlxcdFxcdFxcdFxcdFxcdFxcXCJJbnZhbGlkICVzIFVFRkkgdmFyaWFibGUgbGVuICglbHUpXFxcXG5cXFwiLFxcbiAxMDU6XFx0XFx0XFx0XFx0XFx0dmFyX25hbWUsIHZhcl9zaXplKTtcXG4gMTA2OlxcdFxcdFxcdGtmcmVlKHZhcik7XFxuIDEwNzpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG4gMTA4OlxcdFxcdH1cXG4gMTA5OlxcdFxcbiAxMTA6XFx0XFx0SVdMX0RFQlVHX1JBRElPKHRyYW5zLCBcXFwiJXMgZnJvbSBVRUZJIHdpdGggc2l6ZSAlbHVcXFxcblxcXCIsIHZhcl9uYW1lLFxcbiAxMTE6XFx0XFx0XFx0XFx0dmFyX3NpemUpO1xcbiAxMTI6XFx0XFxuIDExMzpcXHRcXHRpZiAoc2l6ZSlcXG4gMTE0OlxcdFxcdFxcdCpzaXplID0gdmFyX3NpemU7XFxuIDExNTpcXHRcXHRyZXR1cm4gdmFyO1xcbiAxMTY6XFx0fVxcbiAxMTc6XFx0XFxuIDExODpcXHRzdGF0aWMgdm9pZCAqXFxuIDExOTpcXHRpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuIDEyMDpcXHRcXHRcXHRcXHQgICAgICAgZWZpX2NoYXIxNl90ICp1ZWZpX3Zhcl9uYW1lLFxcbiAxMjE6XFx0XFx0XFx0XFx0ICAgICAgIGNoYXIgKnZhcl9uYW1lLFxcbiAxMjI6XFx0XFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGludCBleHBlY3RlZF9zaXplLFxcbiAxMjM6XFx0XFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgKnNpemUpXFxuIDEyNDpcXHR7XFxuIDEyNTpcXHRcXHRyZXR1cm4gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQodHJhbnMsIFxcdTAwMjZJV0xfRUZJX1dJRklfR1VJRCxcXG4gMTI2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIHVlZmlfdmFyX25hbWUsIHZhcl9uYW1lLFxcbiAxMjc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgZXhwZWN0ZWRfc2l6ZSwgc2l6ZSk7XFxuIDEyODpcXHR9XFxuIDEyOTpcXHRcXG4gMTMwOlxcdGludCBpd2xfdWVmaV9oYW5kbGVfdGx2X21lbV9kZXNjKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCB1OCAqZGF0YSxcXG4gMTMxOlxcdFxcdFxcdFxcdFxcdCB1MzIgdGx2X2xlbiwgc3RydWN0IGl3bF9wbnZtX2ltYWdlICpwbnZtX2RhdGEpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjA5OjUwLjM3NjAyMzYyNloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTE2MjUwMDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGVsdmluZyBpbnRvIFVFRkkgVmFyaWFibGUgUmV0cmlldmFsIHdpdGggaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgYGl3bF91ZWZpX2dldF92YXJpYWJsZWAgYW5kIGltbWVkaWF0ZWx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGxvdy1sZXZlbCBpbnRlcmFjdGlvbnMgaGVyZS4gVGhpcyBpcyBhIGNydWNpYWwgZnVuY3Rpb24gZm9yLCBJIGFzc3VtZSwgcmV0cmlldmluZyBVRUZJIHZhcmlhYmxlcyB0aGF0IGFyZSBnb2luZyB0byBiZSB1c2VkIGluIHRoZSBJbnRlbCBXaXJlbGVzcyBkcml2ZXIgKGl3bHdpZmkpIGNvbnRleHQsIGxpa2VseSBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIGZpcm13YXJlIGxvYWRpbmcsIG9yIHBvdGVudGlhbGx5IGR1cmluZyBydW50aW1lIGZvciBjb25maWd1cmF0aW9uLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZXhhY3QgcHVycG9zZS4gSXMgaXQgYSBkaXJlY3Qgd3JhcHBlciBhcm91bmQgYEdldFZhcmlhYmxlKClgIGZyb20gdGhlIFVFRkkgcnVudGltZSBzZXJ2aWNlcz8gQXJlIHRoZXJlIGFueSBzaWduaWZpY2FudCBlcnJvciBjaGVja3Mgb3IgcmV0cmllcyBpbXBsZW1lbnRlZCBoZXJlPyBJZiBpdCdzIGEgd3JhcHBlciwgd2hhdCBsZXZlbCBvZiBhYnN0cmFjdGlvbiBkb2VzIGl0IG9mZmVyPyBEb2VzIGl0IGhhbmRsZSB0aGUgY29tcGxleGl0aWVzIG9mIHZhcmlhYmxlIGF0dHJpYnV0ZXMgbGlrZSBiZWluZyByZWFkLW9ubHkgb3Igdm9sYXRpbGU/IEkgaGF2ZSB0byBjb25zaWRlciB0aGUgcG90ZW50aWFsIGZvciByYWNlIGNvbmRpdGlvbnMgb3IgYWNjZXNzIHZpb2xhdGlvbnMgaWYgbXVsdGlwbGUgcHJvY2Vzc2VzIGFyZSB0cnlpbmcgdG8gbWFuaXB1bGF0ZSBvciBhY2Nlc3MgdGhlIHNhbWUgdmFyaWFibGVzIHNpbXVsdGFuZW91c2x5LlxuXG5CZXlvbmQgdGhhdCwgSSdtIGltbWVkaWF0ZWx5IGludGVyZXN0ZWQgaW4gdGhlIHBvdGVudGlhbCBpbXBhY3Qgb24gc3lzdGVtIHBlcmZvcm1hbmNlLiBIb3cgZWZmaWNpZW50bHkgaXMgaXQgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZmlybXdhcmU/IFdoYXQncyB0aGUgb3ZlcmhlYWQgaW52b2x2ZWQgaW4gdGhlIGNvbW11bmljYXRpb24/IElzIHRoZXJlIGFueSBjYWNoaW5nIGltcGxlbWVudGVkLCBhbmQgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2FjaGUgaW52YWxpZGF0aW9uIHN0cmF0ZWd5P1xuXG5GdXJ0aGVybW9yZSwgSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMsIG9mIGNvdXJzZS4gQXJlIHRoZXJlIGFueSBrbm93biB2dWxuZXJhYmlsaXRpZXMgcmVsYXRlZCB0byBVRUZJIHZhcmlhYmxlIGFjY2VzcyB0aGF0IHRoaXMgZnVuY3Rpb24gbWlnaHQgaW5hZHZlcnRlbnRseSBleHBvc2U/IENvdWxkIGEgbWFsaWNpb3VzIGFjdG9yIGxldmVyYWdlIGEgdnVsbmVyYWJpbGl0eSBpbiB0aGUgdmFyaWFibGUgcmV0cmlldmFsIHByb2Nlc3MgZm9yIGEgc3lzdGVtIGNvbXByb21pc2U/IEFyZSB0aGVyZSBhbnkgY2hlY2tzIGZvciBwb3RlbnRpYWxseSBtYWxpY2lvdXMgVUVGSSB2YXJpYWJsZXM/XG5cbkZpbmFsbHksIHdoYXTigJlzIHRoZSBlcnJvciBoYW5kbGluZz8gSG93IGRvZXMgaXQgaGFuZGxlIHNjZW5hcmlvcyB3aGVyZSB0aGUgdmFyaWFibGUgZG9lc27igJl0IGV4aXN0LCB0aGUgZmlybXdhcmUgcmV0dXJucyBhbiBlcnJvciwgb3IgdGhlIGJ1ZmZlciBpcyB0b28gc21hbGw/IFdoYXQgYXJlIHRoZSByZXR1cm4gY29kZXMgb3IgZXJyb3IgY29kZXMgaXQgdXNlcywgYW5kIGhvdyBkb2VzIHRoYXQgcHJvcGFnYXRlIHVwIHRoZSBjYWxsIHN0YWNrIHRvIHRoZSByZXN0IG9mIHRoZSBkcml2ZXI/IFRoZSByb2J1c3RuZXNzIG9mIHRoZSBlcnJvciBoYW5kbGluZyB3aWxsIGxpa2VseSBiZSB0aGUgZmlyc3QgcG9pbnQgb2YgdnVsbmVyYWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ2NTMsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjA5OjU1LjQ5MjI3NjA2MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI2NDI5NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF91ZWZpX2dldF92YXJpYWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0yMz1zdHJ1Y3QgaXdsX3VlZmlfcG52bV9tZW1fZGVzYyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyOTpzdGF0aWMgdm9pZCAqaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKGVmaV9jaGFyMTZfdCAqbmFtZSwgZWZpX2d1aWRfdCAqZ3VpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMC1cXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBsb25nICpkYXRhX3NpemUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz02MD12b2lkICppd2xfdWVmaV9nZXRfcG52bShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2NzpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKElXTF9VRUZJX09FTV9QTlZNX05BTUUsIFxcdTAwMjZJV0xfRUZJX1dJRklfR1VJRCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02OC1cXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZwYWNrYWdlX3NpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9ODM9aXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo5MzpcXHR2YXIgPSBpd2xfdWVmaV9nZXRfdmFyaWFibGUodWVmaV92YXJfbmFtZSwgZ3VpZCwgXFx1MDAyNnZhcl9zaXplKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MDk6NTUuOTE4NzEyODAxWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NDI3MTI4NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiBgaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlYCwgdmlld2VkIHRocm91Z2ggdGhlIGxlbnMgb2YgbXkgZXhwZXJ0aXNlOlxuXG4qKk15IFBlcnNwZWN0aXZlIG9uIGBpd2xfdWVmaV9nZXRfdmFyaWFibGVgKipcblxuQWxyaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBgaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlYCwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBmdW5jdGlvbiBpcyBsaWtlbHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIGFuIEludGVsIHdpcmVsZXNzIGRldmljZSBkcml2ZXIsIHByb2JhYmx5IG9uIGEgc3lzdGVtIHRoYXQgbGV2ZXJhZ2VzIFVFRkkuIFRoZSBcIml3bFwiIHByZWZpeCBpcyBhIGRlYWQgZ2l2ZWF3YXkg4oCTIGl0IHNjcmVhbXMgSW50ZWwgV2lyZWxlc3MgTEFOLiBBbmQgdGhhdCBcInVlZmlcIiBwYXJ0PyBJdCBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggaW50ZXJhY3Rpb25zIHdpdGggdGhlIFVFRkkgZmlybXdhcmUsIHNwZWNpZmljYWxseSB0byByZXRyaWV2ZSBhIHZhcmlhYmxlLlxuXG5NeSBmaXJzdCB0aG91Z2h0IGlzLCBcIndoeSBhcmUgd2UgcXVlcnlpbmcgYSBVRUZJIHZhcmlhYmxlP1wiLiAgSXQgY291bGQgYmUgYW55dGhpbmcgZnJvbSBib290LXRpbWUgY29uZmlndXJhdGlvbiwgaGFyZHdhcmUtc3BlY2lmaWMgc2V0dGluZ3MsIGEgdW5pcXVlIGlkZW50aWZpZXIsIG9yIHNvbWV0aGluZyByZWxhdGVkIHRvIGEgc3BlY2lmaWMgZmVhdHVyZSBsaWtlIHNlY3VyZSBib290IHN0YXR1cy4gVGhpcyBmdW5jdGlvbiBpcyB0aGUgZ2F0ZXdheSB0byBmZXRjaGluZyB0aGF0IGluZm9ybWF0aW9uLiAgV2UnbGwgbmVlZCB0byBmaWd1cmUgb3V0ICp3aGF0KiB2YXJpYWJsZSBpcyBiZWluZyBmZXRjaGVkIGJ5IGxvb2tpbmcgYXQgdGhlIGJyb2FkZXIgY29udGV4dCBvZiB0aGUgZHJpdmVyIGFuZCBob3cgaXQncyB1c2VkLlxuXG5UaGUgaW50ZXJlc3RpbmcgYXNwZWN0IHdpbGwgYmUgKmhvdyogaXQncyBkb25lLiBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgd2UnbGwgYmUgZGVhbGluZyB3aXRoIFVFRkkgcnVudGltZSBzZXJ2aWNlcyAobGlrZWx5IHVzaW5nIGEgR1VJRCB0byBpZGVudGlmeSB0aGUgdmFyaWFibGUpIGFuZCBoYW5kbGluZyB0aGUgdmFyaW91cyBlcnJvciBjb2RlcyB0aGF0IGNvbWUgd2l0aCBpbnRlcmFjdGluZyB3aXRoIGZpcm13YXJlLiBUaGVyZSBjb3VsZCBiZSBpc3N1ZXMgd2l0aCB2YXJpYWJsZSBwZXJtaXNzaW9ucywgaW5jb3JyZWN0IGJ1ZmZlciBzaXplcywgb3IgdGhlIHZhcmlhYmxlIHNpbXBseSBub3QgZXhpc3RpbmcgaW4gdGhlIGZpcnN0IHBsYWNlLiBFcnJvciBoYW5kbGluZyB3aWxsIGJlIGNyaXRpY2FsIGhlcmUsIGFuZCBJJ2xsIHdhbnQgdG8gc2VlIGhvdyByb2J1c3RseSBpdCdzIGltcGxlbWVudGVkLiBJJ20gZ29pbmcgdG8gYmUgbG9va2luZyBmb3IgY2hlY2tzIG9uIHJldHVybiB2YWx1ZXMgZnJvbSB0aGUgVUVGSSBydW50aW1lIHNlcnZpY2UgY2FsbHMgYW5kIGhvdyB0aGUgZHJpdmVyIGRlYWxzIHdpdGggdGhlIHZhcmlvdXMgZmFpbHVyZXMuXG5cbkknbSBhbHNvIGN1cmlvdXMgYWJvdXQgdGhlIHBvdGVudGlhbCBzZWN1cml0eSBpbXBsaWNhdGlvbnMuIElmIHRoaXMgZnVuY3Rpb24gaXMgcG9vcmx5IGltcGxlbWVudGVkLCBpdCBjb3VsZCBpbnRyb2R1Y2UgdnVsbmVyYWJpbGl0aWVzLiBJbXByb3Blcmx5IHZhbGlkYXRlZCBpbnB1dCBwYXJhbWV0ZXJzIGNvdWxkIGxlYWQgdG8gYnVmZmVyIG92ZXJmbG93cyBvciBpbmZvcm1hdGlvbiBsZWFrcy4gSSdsbCBuZWVkIHRvIHNjcnV0aW5pemUgYW55IGRhdGEgdGhhdOKAmXMgcGFzc2VkIGZyb20gb3IgcmV0dXJuZWQgdG8gdGhlIFVFRkkgZmlybXdhcmUgZm9yIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLlxuXG5PdmVyYWxsLCBgaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlYCBoYXMgbWUgdGhpbmtpbmcgYWJvdXQgVUVGSSBydW50aW1lIGludGVyYWN0aW9ucywgZXJyb3IgaGFuZGxpbmcsIHBvdGVudGlhbCBzZWN1cml0eSBpbXBsaWNhdGlvbnMsIGFuZCB0aGUgc3BlY2lmaWMgdXNlIGNhc2Ugd2l0aGluIHRoaXMgSW50ZWwgd2lyZWxlc3MgZHJpdmVyLiBNeSBjdXJpb3NpdHkgaXMgZGVmaW5pdGVseSBwaXF1ZWQsIGxldCdzIHNlZSB3aGF0J3MgcmVhbGx5IGhhcHBlbmluZyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTU1ODgsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDoxMDowMC41NjE0Mjg4MVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY0ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjksXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjk6XFx0c3RhdGljIHZvaWQgKml3bF91ZWZpX2dldF92YXJpYWJsZShlZmlfY2hhcjE2X3QgKm5hbWUsIGVmaV9ndWlkX3QgKmd1aWQsXFxuICAzMDpcXHRcXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBsb25nICpkYXRhX3NpemUpXFxuICAzMTpcXHR7XFxuICAzMjpcXHRcXHRlZmlfc3RhdHVzX3Qgc3RhdHVzO1xcbiAgMzM6XFx0XFx0dm9pZCAqZGF0YTtcXG4gIDM0OlxcdFxcbiAgMzU6XFx0XFx0aWYgKCFkYXRhX3NpemUpXFxuICAzNjpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG4gIDM3OlxcdFxcbiAgMzg6XFx0XFx0aWYgKCFlZmlfcnRfc2VydmljZXNfc3VwcG9ydGVkKEVGSV9SVF9TVVBQT1JURURfR0VUX1ZBUklBQkxFKSlcXG4gIDM5OlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9ERVYpO1xcbiAgNDA6XFx0XFxuICA0MTpcXHRcXHQvKiBmaXJzdCBjYWxsIHdpdGggTlVMTCBkYXRhIHRvIGdldCB0aGUgZXhhY3QgZW50cnkgc2l6ZSAqL1xcbiAgNDI6XFx0XFx0KmRhdGFfc2l6ZSA9IDA7XFxuICA0MzpcXHRcXHRzdGF0dXMgPSBlZmkuZ2V0X3ZhcmlhYmxlKG5hbWUsIGd1aWQsIE5VTEwsIGRhdGFfc2l6ZSwgTlVMTCk7XFxuICA0NDpcXHRcXHRpZiAoc3RhdHVzICE9IEVGSV9CVUZGRVJfVE9PX1NNQUxMIHx8ICEqZGF0YV9zaXplKVxcbiAgNDU6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTyk7XFxuICA0NjpcXHRcXG4gIDQ3OlxcdFxcdGRhdGEgPSBrbWFsbG9jKCpkYXRhX3NpemUsIEdGUF9LRVJORUwpO1xcbiAgNDg6XFx0XFx0aWYgKCFkYXRhKVxcbiAgNDk6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuICA1MDpcXHRcXG4gIDUxOlxcdFxcdHN0YXR1cyA9IGVmaS5nZXRfdmFyaWFibGUobmFtZSwgZ3VpZCwgTlVMTCwgZGF0YV9zaXplLCBkYXRhKTtcXG4gIDUyOlxcdFxcdGlmIChzdGF0dXMgIT0gRUZJX1NVQ0NFU1MpIHtcXG4gIDUzOlxcdFxcdFxcdGtmcmVlKGRhdGEpO1xcbiAgNTQ6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7XFxuICA1NTpcXHRcXHR9XFxuICA1NjpcXHRcXG4gIDU3OlxcdFxcdHJldHVybiBkYXRhO1xcbiAgNTg6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDoxMDowMC41NjE1NzcxMloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5OTIxNDkyMDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgYW4gRUZJIFZhcmlhYmxlIEludGVyYWN0aW9uIGluIGl3bHdpZmkqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIHRvdWNoZXMgYGVmaS5nZXRfdmFyaWFibGVgLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluaywgXCJDYW4gc3l6a2FsbGVyIGZ1enogdGhpcz9cIiBXZSBrbm93IHN5emthbGxlciBjYW4gaGl0IEVGSSB2YXJpYWJsZXMgaWYgaXQgY2FuIHdyaXRlIHRvIGAvc3lzL2Zpcm13YXJlL2VmaS9lZml2YXJzL2AsIHdoaWNoIGl0IGRlZmluaXRlbHkgY2FuLiBUaGVuIEkgcmVtZW1iZXIgdGhhdCBgaXdsd2lmaWAgbG9hZHMgc29tZXRoaW5nIGR1cmluZyBpbml0aWFsaXphdGlvbi4gQWhhISBJZiBzeXprYWxsZXIgd3JpdGVzIHRvIGAvc3lzL2Zpcm13YXJlL2VmaS9lZml2YXJzL2AgKmJlZm9yZSogdHJpZ2dlcmluZyBgaXdsd2lmaWAgaW5pdGlhbGl6YXRpb24g4oCTIGJ5IGJpbmRpbmcgdGhlIGRyaXZlciBvciBjcmVhdGluZyBhIHZpcnR1YWwgZGV2aWNlIOKAkyB3ZSBjb3VsZCBoYXZlIGEgZnV6emluZyB0YXJnZXQhXG5cbkJ1dCBob2xkIG9uLCBgaXdsd2lmaWAgaXMgYSBQQ0kgZHJpdmVyLiBDYW4gc3l6a2FsbGVyIGRvIHZpcnR1YWwgUENJIGRldmljZXM/IEl0IGhhcyBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9kZXZpY2VgLCByaWdodD8gVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIGl0ICptb2NrKiBgaXdsd2lmaWAgc3BlY2lmaWNhbGx5PyBUaGlua2luZyBhYm91dCBpdCwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIHZpcnR1YWwsIGJ1dCB0aGF0J3Mgbm90IHRoZSBzYW1lLiBgaXdsd2lmaWAgc2VlbXMgdG8gbmVlZCBlaXRoZXIgYSByZWFsIFBDSSBkZXZpY2Ugb3IgYSAqbW9ja2VkKiBvbmUuIE9rYXksIHN5emthbGxlciBkb2VzIGhhdmUgc29tZSBQQ0kgZnV6emluZyBzdXBwb3J0OyBgdmhjaWAsIGB2ZmlvYCwgYW5kIHRoZSBgc3l6X3BjaV9kZXZpY2VgIGNhbGxzIGNvbWUgdG8gbWluZC5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY2AuIElmIHN5emthbGxlciBpcyB0ZXN0aW5nIHRoaXMsIGl0ICpzaG91bGQqIGJlIHJlYWNoYWJsZS4gV2FpdCBhIG1pbnV0ZS4uLiB0aGUgYXV0aG9yIGlzIGBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZWAhIFRoYXQgbWVhbnMgc3l6a2FsbGVyIGZvdW5kIHRoZSBidWcgYW5kIHRoaXMgaXMgdGhlIGZpeCFcblxuTm93IEkgbmVlZCB0byByZW1lbWJlciB3aGF0IHRoZSBwcm9tcHQgc2F5czogXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIC4uLiBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIi4gU2luY2UgKnN5emthbGxlciogZm91bmQgdGhlIGJ1ZywgaXQgKm11c3QqIGJlIHJlYWNoYWJsZSBpbiBzeXprYWxsZXIncyBlbnZpcm9ubWVudCEgQnV0IGhvdz8gV2FzIGl0IGBtYWM4MDIxMV9od3NpbWA/IE5vLCB0aGF0J3MgYSBkaWZmZXJlbnQgZHJpdmVyLiBTbywgYHN5el9wY2lfZGV2aWNlYCB0aGVuPyBZZXMsIHRoYXQncyB0aGUgbGlrZWx5IG1lY2hhbmlzbSBzeXprYWxsZXIgdXNlcyB0byBlbXVsYXRlIFBDSSBkZXZpY2VzIVxuXG5Ob3cgSSBqdXN0IG5lZWQgdG8gdmVyaWZ5IHRoYXQgYGl3bHdpZmlgIGlzIGVuYWJsZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24sIHNvIEkgbmVlZCB0byBvdXRwdXQgYEVuYWJsZUNvbmZpZ3NgLiBMZXQncyBjaGVjayB0aGUgS2NvbmZpZyBlbnRyeSBmb3IgYGl3bHdpZmlgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjU1MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjEwOjEwLjQ4MzA3MjI4OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3MDI2NjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xXSUZJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6Mjpjb25maWcgSVdMV0lGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE5leHQgR2VuIEFHTiAtIFdpcmVsZXNzLU4vQWR2YW5jZWQtTi9VbHRpbWF0ZS1OIChpd2x3aWZpKSBcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9NDc9aWYgSVdMV0lGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy00OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NDk6Y29uZmlnIElXTFdJRklfS1VOSVRfVEVTVFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTAtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NTg6Y29uZmlnIElXTFdJRklfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01OS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9ODQ9Y29uZmlnIElXTE1MRFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk0LSMgZG9uJ3QgY2FsbCBpdCBfTU9EVUxFIC0tIHdpbGwgY29uZnVzZSBLY29uZmlnL2ZpeGRlcC8uLi5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6OTU6Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTEwNT1tZW51IFxcXCJEZWJ1Z2dpbmcgT3B0aW9uc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMDc6Y29uZmlnIElXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA4LVxcdGJvb2wgXFxcIkVuYWJsZSBmdWxsIGRlYnVnZ2luZyBvdXRwdXQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMxOmNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMyLVxcdGJvb2wgXFxcIml3bHdpZmkgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTM5OmNvbmZpZyBJV0xXSUZJX0RFVklDRV9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTE0MC1cXHRib29sIFxcXCJpd2x3aWZpIGRldmljZSBhY2Nlc3MgdHJhY2luZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MTA6MTAuNjEwMTA2MTU2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNDUzOTgzMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKklXbHdpZmkgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgYElXTFdJRklgLiBUaGF0J3MgdGhlIG1haW4gY29uZmlndXJhdGlvbiBvcHRpb24sIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZSBJIGhhdmVuJ3Qgb3Zlcmxvb2tlZCBhbnkgb3RoZXIgZGVwZW5kZW50IGNvbmZpZ3MsIHBhcnRpY3VsYXJseSBmb3IgVUVGSSBzdXBwb3J0IHdpdGhpbiBgaXdsd2lmaWAuIEl0J3MgYSBrZXkgYXJlYSB0byBuYWlsIGRvd24gaWYgd2Ugd2FudCBmdWxsIGZ1bmN0aW9uYWxpdHkgYW5kIHRoYXQgaW5jbHVkZXMgYmVpbmcgYWJsZSB0byBib290IHJlbGlhYmx5LlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBidWlsZCBzeXN0ZW0gdG8gY29uZmlybS4gSSdtIGdvaW5nIHRvIGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZWAgYW5kIGBmdy9NYWtlZmlsZWAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgb3B0aW9ucyBvciBjb25kaXRpb25zIHRoYXQgZGljdGF0ZSB0aGUgaW5jbHVzaW9uIG9mIFVFRkktcmVsYXRlZCBjb21wb25lbnRzIG9yIGZpcm13YXJlLiBUaGF0J3MgdXN1YWxseSB3aGVyZSB0aGVzZSBzb3J0cyBvZiBkZXBlbmRlbmNpZXMgYXJlIGRlZmluZWQuIElmIGl0J3Mgbm90IGV4cGxpY2l0LCBJJ2xsIG5lZWQgdG8gY2hhc2UgZG93biB0aGUgaW5jbHVkZSBwYXRocy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgzNTAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDoxMDoxMy45NTU1MDc1NDVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODc1NDAxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1ZWZpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzYyIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlPTM5PWl3bHdpZmktJChDT05GSUdfQUNQSSkgKz0gZncvYWNwaS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTo0MDppd2x3aWZpLSQoQ09ORklHX0VGSSlcXHQrPSBmdy91ZWZpLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTQxLWl3bHdpZmktJChDT05GSUdfSVdMV0lGSV9ERUJVR0ZTKSArPSBmdy9kZWJ1Z2ZzLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jPTExMjk9dm9pZCBpd2xfYWNwaV9nZXRfZ3VpZF9sb2NrX3N0YXR1cyhzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYy0xMTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jOjExNTM6XFx0ZndydC1cXHUwMDNldWVmaV90YWJsZXNfbG9ja19zdGF0dXMgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jLTExNTQtXFx0XFx0d2lmaV9wa2ctXFx1MDAzZXBhY2thZ2UuZWxlbWVudHNbMV0uaW50ZWdlci52YWx1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jLTExNTctXFx0XFx0XFx0XFxcIkxvYWRlZCBVRUZJIFdJRkkgR1VJRCBsb2NrIHN0YXR1czogJWQgZnJvbSBBQ1BJXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jOjExNTg6XFx0XFx0XFx0ZndydC1cXHUwMDNldWVmaV90YWJsZXNfbG9ja19zdGF0dXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jLTExNTktb3V0X2ZyZWU6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaD0xMDM5PXN0cnVjdCBpd2xfZndfY21kX3ZlcnNpb24ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmgtMTA1MC0gKiBAbWF4X2FjcGlfcmV2aXNpb246IG1heCBzdXBwb3J0ZWQgQUNQSSByZXZpc2lvbiBvZiBjb21tYW5kLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oOjEwNTE6ICogQG1heF91ZWZpX3JldmlzaW9uOiBtYXggc3VwcG9ydGVkIFVFRkkgcmV2aXNpb24gb2YgY29tbWFuZC5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaC0xMDUyLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oPTEwNTM9c3RydWN0IGl3bF9md19jbWRfYmlvc190YWJsZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaC0xMDU2LVxcdHU4IG1heF9hY3BpX3JldmlzaW9uO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oOjEwNTc6XFx0dTggbWF4X3VlZmlfcmV2aXNpb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmgtMTA1OC19IF9fcGFja2VkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9pbWcuYz05PXU4IGl3bF9md19sb29rdXBfY21kX2Jpb3Nfc3VwcG9ydGVkX3JldmlzaW9uKGNvbnN0IHN0cnVjdCBpd2xfZncgKmZ3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9pbWcuYy0zMC1cXHRcXHRcXHRcXHRyZXR1cm4gZW50cnktXFx1MDAzZW1heF9hY3BpX3JldmlzaW9uO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvaW1nLmM6MzE6XFx0XFx0XFx0cmV0dXJuIGVudHJ5LVxcdTAwM2VtYXhfdWVmaV9yZXZpc2lvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ltZy5jLTMyLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTEyLSNpbmNsdWRlIFxcXCJmdy9hcGkvYWxpdmUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzoxMzojaW5jbHVkZSBcXFwiZncvdWVmaS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTE0LSNpbmNsdWRlIFxcXCJmdy9pbWcuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTM2PXN0YXRpYyBpbnQgaXdsX3Budm1faGFuZGxlX3NlY3Rpb24oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTMzLVxcdFxcdGNhc2UgSVdMX1VDT0RFX1RMVl9NRU1fREVTQzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzoxMzQ6XFx0XFx0XFx0aWYgKGl3bF91ZWZpX2hhbmRsZV90bHZfbWVtX2Rlc2ModHJhbnMsIGRhdGEsIHRsdl9sZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTM1LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCBwbnZtX2RhdGEpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzA3PXN0YXRpYyBjb25zdCB1OCAqaXdsX2dldF9wbnZtX2ltYWdlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zX3AsIHNpemVfdCAqbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzIwLVxcdGlmIChwbnZtX3NyYyA9PSBJV0xfUE5WTV9TT1VSQ0VfQklPUykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjMyMTpcXHRcXHRwYWNrYWdlID0gaXdsX3VlZmlfZ2V0X3Budm0odHJhbnNfcCwgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zMjItXFx0XFx0aWYgKCFJU19FUlJfT1JfTlVMTChwYWNrYWdlKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDA3PWl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQyMjpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIodHJhbnMsIFxcdTAwMjZsZW5ndGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQyMy1cXHRpZiAoSVNfRVJSKGRhdGEpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDMyOlxcdHJldCA9IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZSh0cmFucywgZGF0YSwgbGVuZ3RoLCBwbnZtX2RhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDMzLVxcdFxcdFxcdFxcdFxcdCAgc2t1X2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jLTktI2luY2x1ZGUgXFxcImZ3L3J1bnRpbWUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuYzoxMDojaW5jbHVkZSBcXFwiZncvdWVmaS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jLTExLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5LmM9MTM9ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuYy0xNC1cXHRpbnQgcmV0ID0gLUVOT0VOVDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5LmM6MTU6XFx0aWYgKGZ3cnQtXFx1MDAzZXVlZmlfdGFibGVzX2xvY2tfc3RhdHVzIFxcdTAwM2UgVUVGSV9XSUZJX0dVSURfVU5MT0NLRUQpXFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jOjE2OlxcdFxcdHJldCA9IGl3bF91ZWZpX2dldF8gIyMgX19uYW1lKF9fVkFfQVJHU19fKTtcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5LmMtMTctXFx0aWYgKHJldCBcXHUwMDNjIDApXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmg9ODg9c3RydWN0IGl3bF90eGZfaXRlcl9kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oLTExMC0gKiBAYXBfdHlwZV9jbWRfdmFsaWQ6IGlmIFxcdTAwMjZhcF90eXBlX2NtZCBpcyB2YWxpZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oOjExMTogKiBAdWVmaV90YWJsZXNfbG9ja19zdGF0dXM6IFRoZSBzdGF0dXMgb2YgdGhlIFdJRkkgR1VJRCBVRUZJIHZhcmlhYmxlcyBsb2NrOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oLTExMi0gKlxcdDA6IFVubG9ja2VkLCAxIGFuZCAyOiBMb2NrZWQuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3J1bnRpbWUuaD0xNDg9c3RydWN0IGl3bF9md19ydW50aW1lIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oLTIxOS1cXHRib29sIGFwX3R5cGVfY21kX3ZhbGlkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oOjIyMDpcXHR1OCB1ZWZpX3RhYmxlc19sb2NrX3N0YXR1cztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3J1bnRpbWUuaC0yMjEtXFx0c3RydWN0IGl3bF9waHlfc3BlY2lmaWNfY2ZnIHBoeV9maWx0ZXJzO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTE6I2luY2x1ZGUgXFxcImZ3L3VlZmkuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMi0jaW5jbHVkZSBcXFwiZncvYXBpL2FsaXZlLmhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyMzpzdHJ1Y3QgaXdsX3VlZmlfcG52bV9tZW1fZGVzYyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjQtXFx0X19sZTMyIGFkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyOTpzdGF0aWMgdm9pZCAqaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKGVmaV9jaGFyMTZfdCAqbmFtZSwgZWZpX2d1aWRfdCAqZ3VpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMC1cXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBsb25nICpkYXRhX3NpemUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2MDp2b2lkICppd2xfdWVmaV9nZXRfcG52bShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Njc6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92YXJpYWJsZShJV0xfVUVGSV9PRU1fUE5WTV9OQU1FLCBcXHUwMDI2SVdMX0VGSV9XSUZJX0dVSUQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjgtXFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2cGFja2FnZV9zaXplKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTgyPXN0YXRpYyB2b2lkICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4Mzppd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04NC1cXHRcXHRcXHRcXHQgICAgZWZpX2d1aWRfdCAqZ3VpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4NTpcXHRcXHRcXHRcXHQgICAgZWZpX2NoYXIxNl90ICp1ZWZpX3Zhcl9uYW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg2LVxcdFxcdFxcdFxcdCAgICBjaGFyICp2YXJfbmFtZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjkzOlxcdHZhciA9IGl3bF91ZWZpX2dldF92YXJpYWJsZSh1ZWZpX3Zhcl9uYW1lLCBndWlkLCBcXHUwMDI2dmFyX3NpemUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTk0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MTE4PXN0YXRpYyB2b2lkICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMTk6aXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjEyMDpcXHRcXHRcXHQgICAgICAgZWZpX2NoYXIxNl90ICp1ZWZpX3Zhcl9uYW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEyMS1cXHRcXHRcXHQgICAgICAgY2hhciAqdmFyX25hbWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMjQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjEyNTpcXHRyZXR1cm4gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQodHJhbnMsIFxcdTAwMjZJV0xfRUZJX1dJRklfR1VJRCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMjY6XFx0XFx0XFx0XFx0XFx0XFx0ICAgdWVmaV92YXJfbmFtZSwgdmFyX25hbWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTI3LVxcdFxcdFxcdFxcdFxcdFxcdCAgIGV4cGVjdGVkX3NpemUsIHNpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjEzMDppbnQgaXdsX3VlZmlfaGFuZGxlX3Rsdl9tZW1fZGVzYyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTMxLVxcdFxcdFxcdFxcdCB1MzIgdGx2X2xlbiwgc3RydWN0IGl3bF9wbnZtX2ltYWdlICpwbnZtX2RhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTMyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMzM6XFx0Y29uc3Qgc3RydWN0IGl3bF91ZWZpX3Budm1fbWVtX2Rlc2MgKmRlc2MgPSAoY29uc3Qgdm9pZCAqKWRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTM0LVxcdHUzMiBkYXRhX2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTE2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxNjY6c3RhdGljIGludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfc2VjdGlvbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xNjctXFx0XFx0XFx0XFx0XFx0IGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTkzLVxcdFxcdGNhc2UgSVdMX1VDT0RFX1RMVl9NRU1fREVTQzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxOTQ6XFx0XFx0XFx0aWYgKGl3bF91ZWZpX2hhbmRsZV90bHZfbWVtX2Rlc2ModHJhbnMsIGRhdGEsIHRsdl9sZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTk1LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCBwbnZtX2RhdGEpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjIyMDppbnQgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTIyMS1cXHRcXHRcXHRcXHRjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI2Ny1cXHRcXHRcXHQgICAgc2t1X2lkWzJdID09IHRsdl9za3VfaWQtXFx1MDAzZWRhdGFbMl0pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyNjg6XFx0XFx0XFx0XFx0aW50IHJldCA9IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9zZWN0aW9uKHRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI2OS1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgZGF0YSwgbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjI4NTp1OCAqaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI4Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yOTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MjkxOlxcdHBhY2thZ2UgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUodHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjkyLVxcdFxcdFxcdFxcdFxcdFxcdCBJV0xfVUVGSV9SRURVQ0VEX1BPV0VSX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MzE0OnN0YXRpYyBpbnQgaXdsX3VlZmlfc3RlcF9wYXJzZShzdHJ1Y3QgdWVmaV9jbnZfY29tbW9uX3N0ZXBfZGF0YSAqY29tbW9uX3N0ZXBfZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMTUtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjMyOTp2b2lkIGl3bF91ZWZpX2dldF9zdGVwX3RhYmxlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTMzMC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MzMxOlxcdHN0cnVjdCB1ZWZpX2Nudl9jb21tb25fc3RlcF9kYXRhICpkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTMzMi1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjMzNzpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQodHJhbnMsIFxcdTAwMjZJV0xfRUZJX1dJRklfQlRfR1VJRCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMzgtXFx0XFx0XFx0XFx0XFx0XFx0ICAgSVdMX1VFRklfU1RFUF9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjM0MzpcXHRyZXQgPSBpd2xfdWVmaV9zdGVwX3BhcnNlKGRhdGEsIHRyYW5zKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zNDQtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zNDgtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjM0OTpJV0xfRVhQT1JUX1NZTUJPTChpd2xfdWVmaV9nZXRfc3RlcF90YWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjM1MTpzdGF0aWMgaW50IGl3bF91ZWZpX3Nnb21fcGFyc2Uoc3RydWN0IHVlZmlfY252X3dsYW5fc2dvbV9kYXRhICpzZ29tX2RhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzUyLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MzgzOnZvaWQgaXdsX3VlZmlfZ2V0X3Nnb21fdGFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzg0LVxcdFxcdFxcdCAgICAgc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTM4NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Mzg2OlxcdHN0cnVjdCB1ZWZpX2Nudl93bGFuX3Nnb21fZGF0YSAqZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zODctXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTM5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzozOTI6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZSh0cmFucywgSVdMX1VFRklfU0dPTV9OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTM5My1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiU0dPTVxcXCIsIHNpemVvZigqZGF0YSksIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjM5NzpcXHRyZXQgPSBpd2xfdWVmaV9zZ29tX3BhcnNlKGRhdGEsIGZ3cnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTM5OC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQwMi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDAzOklXTF9FWFBPUlRfU1lNQk9MKGl3bF91ZWZpX2dldF9zZ29tX3RhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDA1OnN0YXRpYyBpbnQgaXdsX3VlZmlfdWF0c19wYXJzZShzdHJ1Y3QgdWVmaV9jbnZfd2xhbl91YXRzX2RhdGEgKnVhdHNfZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MDYtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo0MjA6dm9pZCBpd2xfdWVmaV9nZXRfdWF0c190YWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MjEtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDIyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo0MjM6XFx0c3RydWN0IHVlZmlfY252X3dsYW5fdWF0c19kYXRhICpkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQyNC1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo0MjY6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZSh0cmFucywgSVdMX1VFRklfVUFUU19OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQyNy1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiVUFUU1xcXCIsIHNpemVvZigqZGF0YSksIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjQzMTpcXHRyZXQgPSBpd2xfdWVmaV91YXRzX3BhcnNlKGRhdGEsIGZ3cnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQzMi1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQzNS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDM2OklXTF9FWFBPUlRfU1lNQk9MKGl3bF91ZWZpX2dldF91YXRzX3RhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDM4OnZvaWQgaXdsX3VlZmlfZ2V0X3VuZWJfdGFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDM5LVxcdFxcdFxcdCAgICAgc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQ0MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDQxOlxcdHN0cnVjdCB1ZWZpX2Nudl93bGFuX3VuZWJfZGF0YSAqZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00NDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDQzOlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUodHJhbnMsIElXTF9VRUZJX1VORUJfTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00NDQtXFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcIlVORUJcXFwiLCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQ2NS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDY2OklXTF9FWFBPUlRfU1lNQk9MKGl3bF91ZWZpX2dldF91bmViX3RhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00NjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDY4OnN0YXRpYyB2b2lkIGl3bF91ZWZpX3NldF9zYXJfcHJvZmlsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDY5LVxcdFxcdFxcdFxcdCAgICAgY29uc3QgdTggKnZhbHMsIHU4IHByb2ZfaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDk3OmludCBpd2xfdWVmaV9nZXRfd3Jkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDk4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo0OTk6XFx0c3RydWN0IHVlZmlfY252X3Zhcl93cmRzICpkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTUwMC1cXHR1bnNpZ25lZCBsb25nIHNpemU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01MDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NTA1OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsIElXTF9VRUZJX1dSRFNfTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01MDYtXFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcIldSRFNcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTM3LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjUzODpcXHRpd2xfdWVmaV9zZXRfc2FyX3Byb2ZpbGUoZndydCwgZGF0YS1cXHUwMDNldmFscywgMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01MzktXFx0XFx0XFx0XFx0IG51bV9zdWJiYW5kcywgZGF0YS1cXHUwMDNlbW9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01NDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NTQ1OmludCBpd2xfdWVmaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTQ2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo1NDc6XFx0c3RydWN0IHVlZmlfY252X3Zhcl9ld3JkICpkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU0OC1cXHR1bnNpZ25lZCBsb25nIGV4cGVjdGVkX3NpemU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01NTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NTU0OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsIElXTF9VRUZJX0VXUkRfTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01NTUtXFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcIkVXUkRcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTkwLVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjU5MTpcXHRcXHRpd2xfdWVmaV9zZXRfc2FyX3Byb2ZpbGUoZndydCwgXFx1MDAyNmRhdGEtXFx1MDAzZXZhbHNbaSAqIHByb2ZpbGVfc2l6ZV0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTkyLVxcdFxcdFxcdFxcdFxcdCBpICsgMSwgbnVtX3N1YmJhbmRzLCBkYXRhLVxcdTAwM2Vtb2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU5OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo1OTk6aW50IGl3bF91ZWZpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02MDAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjYwMTpcXHRzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dnZHMgKmRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjAyLVxcdHVuc2lnbmVkIGxvbmcgZXhwZWN0ZWRfc2l6ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTYwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2MDg6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfV0dEU19OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTYwOS1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiV0dEU1xcXCIsIFVFRklfV0dEU19UQUJMRV9TSVpFX1JFVjMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Njc2OmludCBpd2xfdWVmaV9nZXRfcHBhZ190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjc3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2Nzg6XFx0c3RydWN0IHVlZmlfY252X3Zhcl9wcGFnICpkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY3OS1cXHRpbnQgbl9zdWJiYW5kcztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2ODM6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfUFBBR19OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY4NC1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiUFBBR1xcXCIsIFVFRklfUFBBR19EQVRBX1NJWkVfVjUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02OTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NjkzOlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjk0LVxcdFxcdFxcdFxcdFxcdCAgICAgIElXTF9VRUZJX1BQQUdfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3NDU6aW50IGl3bF91ZWZpX2dldF90YXNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc0Ni1cXHRcXHRcXHQgICBzdHJ1Y3QgaXdsX3Rhc19kYXRhICp0YXNfZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NDcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc0ODpcXHRzdHJ1Y3QgdWVmaV9jbnZfdmFyX3d0YXMgKnVlZmlfdGFzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc0OS1cXHRpbnQgcmV0LCBlbmFibGVkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3NTE6XFx0dWVmaV90YXMgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsIElXTF9VRUZJX1dUQVNfTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3NTI6XFx0XFx0XFx0XFx0XFx0XFx0ICBcXFwiV1RBU1xcXCIsIHNpemVvZigqdWVmaV90YXMpLCBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3NTM6XFx0aWYgKElTX0VSUih1ZWZpX3RhcykpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzU0LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3NTY6XFx0aWYgKHVlZmlfdGFzLVxcdTAwM2VyZXZpc2lvbiBcXHUwMDNjIElXTF9VRUZJX01JTl9XVEFTX1JFVklTSU9OIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NzU3OlxcdCAgICB1ZWZpX3Rhcy1cXHUwMDNlcmV2aXNpb24gXFx1MDAzZSBJV0xfVUVGSV9NQVhfV1RBU19SRVZJU0lPTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc1OC1cXHRcXHRyZXQgPSAtRUlOVkFMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc1OS1cXHRcXHRJV0xfREVCVUdfUkFESU8oZndydCwgXFxcIlVuc3VwcG9ydGVkIFVFRkkgV1RBUyByZXZpc2lvbjolZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3NjA6XFx0XFx0XFx0XFx0dWVmaV90YXMtXFx1MDAzZXJldmlzaW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NjEtXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NjQtXFx0SVdMX0RFQlVHX1JBRElPKGZ3cnQsIFxcXCJUQVMgc2VsZWN0aW9uIGFzIHJlYWQgZnJvbSBCSU9TOiAweCV4XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc2NTpcXHRcXHRcXHR1ZWZpX3Rhcy1cXHUwMDNldGFzX3NlbGVjdGlvbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc2NzpcXHRlbmFibGVkID0gdWVmaV90YXMtXFx1MDAzZXRhc19zZWxlY3Rpb24gXFx1MDAyNiBJV0xfV1RBU19FTkFCTEVEX01TSztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NjgtXFx0dGFzX2RhdGEtXFx1MDAzZXRhYmxlX3NvdXJjZSA9IEJJT1NfU09VUkNFX1VFRkk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NzY5OlxcdHRhc19kYXRhLVxcdTAwM2V0YWJsZV9yZXZpc2lvbiA9IHVlZmlfdGFzLVxcdTAwM2VyZXZpc2lvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3NzA6XFx0dGFzX2RhdGEtXFx1MDAzZXRhc19zZWxlY3Rpb24gPSB1ZWZpX3Rhcy1cXHUwMDNldGFzX3NlbGVjdGlvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NzEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NzUtXFx0SVdMX0RFQlVHX1JBRElPKGZ3cnQsIFxcXCJSZWFkaW5nIFRBUyB0YWJsZSByZXZpc2lvbiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3NzY6XFx0XFx0XFx0dWVmaV90YXMtXFx1MDAzZXJldmlzaW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3Nzc6XFx0aWYgKHVlZmlfdGFzLVxcdTAwM2VibGFja19saXN0X3NpemUgXFx1MDAzZSBJV0xfV1RBU19CTEFDS19MSVNUX01BWCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc3OC1cXHRcXHRJV0xfREVCVUdfUkFESU8oZndydCwgXFxcIlRBUyBpbnZhbGlkIGFycmF5IHNpemUgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Nzc5OlxcdFxcdFxcdFxcdHVlZmlfdGFzLVxcdTAwM2VibGFja19saXN0X3NpemUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc4MC1cXHRcXHRyZXQgPSAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc4NDpcXHR0YXNfZGF0YS1cXHUwMDNlYmxvY2tfbGlzdF9zaXplID0gdWVmaV90YXMtXFx1MDAzZWJsYWNrX2xpc3Rfc2l6ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3ODU6XFx0SVdMX0RFQlVHX1JBRElPKGZ3cnQsIFxcXCJUQVMgYXJyYXkgc2l6ZSAldVxcXFxuXFxcIiwgdWVmaV90YXMtXFx1MDAzZWJsYWNrX2xpc3Rfc2l6ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc4NzpcXHRmb3IgKHU4IGkgPSAwOyBpIFxcdTAwM2MgdWVmaV90YXMtXFx1MDAzZWJsYWNrX2xpc3Rfc2l6ZTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Nzg4OlxcdFxcdHRhc19kYXRhLVxcdTAwM2VibG9ja19saXN0X2FycmF5W2ldID0gdWVmaV90YXMtXFx1MDAzZWJsYWNrX2xpc3RbaV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzg5LVxcdFxcdElXTF9ERUJVR19SQURJTyhmd3J0LCBcXFwiVEFTIGJsb2NrIGxpc3QgY291bnRyeSAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3OTA6XFx0XFx0XFx0XFx0dWVmaV90YXMtXFx1MDAzZWJsYWNrX2xpc3RbaV0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc5MS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03OTMtb3V0OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc5NDpcXHRrZnJlZSh1ZWZpX3Rhcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzk1LVxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03OTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Nzk4OmludCBpd2xfdWVmaV9nZXRfcHdyX2xpbWl0KHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03OTktXFx0XFx0XFx0ICAgdTY0ICpkZmx0X3B3cl9saW1pdClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MDAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjgwMTpcXHRzdHJ1Y3QgdWVmaV9jbnZfdmFyX3NwbGMgKmRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODAyLVxcdGludCByZXQgPSAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTgwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4MDQ6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfU1BMQ19OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTgwNS1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiU1BMQ1xcXCIsIHNpemVvZigqZGF0YSksIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjgyMTppbnQgaXdsX3VlZmlfZ2V0X21jYyhzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsIGNoYXIgKm1jYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MjIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjgyMzpcXHRzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dyZGQgKmRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODI0LVxcdGludCByZXQgPSAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTgyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4MjY6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfV1JERF9OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTgyNy1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiV1JERFxcXCIsIHNpemVvZigqZGF0YSksIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjg1MjppbnQgaXdsX3VlZmlfZ2V0X2Vja3Yoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCB1MzIgKmV4dGxfY2xrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg1My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6ODU0OlxcdHN0cnVjdCB1ZWZpX2Nudl92YXJfZWNrdiAqZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04NTUtXFx0aW50IHJldCA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjg1NzpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQoZndydC1cXHUwMDNldHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODU4LVxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZJV0xfRUZJX1dJRklfQlRfR1VJRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4NzY6aW50IGl3bF91ZWZpX2dldF93YmVtKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwgdTMyICp2YWx1ZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04Nzcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjg3ODpcXHRzdHJ1Y3QgdWVmaV9jbnZfd2xhbl93YmVtX2RhdGEgKmRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODc5LVxcdGludCByZXQgPSAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4ODE6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfV0JFTV9OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg4Mi1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiV0JFTVxcXCIsIHNpemVvZigqZGF0YSksIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjg5OTpzdGF0aWMgaW50IGl3bF91ZWZpX2xvYWRfZHNtX3ZhbHVlcyhzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTAwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo5MDE6XFx0c3RydWN0IHVlZmlfY252X3Zhcl9nZW5lcmFsX2NmZyAqZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05MDItXFx0aW50IHJldCA9IC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05MDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6OTA2OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsIElXTF9VRUZJX0RTTV9OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTkwNy1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiRFNNXFxcIiwgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05NDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6OTQ4OmludCBpd2xfdWVmaV9nZXRfZHNtKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwgZW51bSBpd2xfZHNtX2Z1bmNzIGZ1bmMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTQ5LVxcdFxcdCAgICAgdTMyICp2YWx1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTk1NS1cXHRpZiAoIWZ3cnQtXFx1MDAzZWRzbV9mdW5jc192YWxpZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjk1NjpcXHRcXHRpbnQgcmV0ID0gaXdsX3VlZmlfbG9hZF9kc21fdmFsdWVzKGZ3cnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTk1Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTk3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo5NzY6aW50IGl3bF91ZWZpX2dldF9wdW5jdHVyaW5nKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05Nzcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjk3ODpcXHRzdHJ1Y3QgdWVmaV9jbnZfdmFyX3B1bmN0dXJpbmdfZGF0YSAqZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05NzktXFx0LyogZGVmYXVsdCB2YWx1ZSBpcyBub3QgZW5hYmxlZCBpZiB0aGVyZSBpcyBhbnkgaXNzdWUgaW4gcmVhZGluZ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjk4MDpcXHQgKiB1ZWZpIHZhcmlhYmxlIG9yIHJldmlzaW9uIGlzIG5vdCBzdXBwb3J0ZWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05ODEtXFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05ODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6OTg0OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTg1LVxcdFxcdFxcdFxcdFxcdCAgICAgIElXTF9VRUZJX1BVTkNUVVJJTkdfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMDItfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjEwMDM6SVdMX0VYUE9SVF9TWU1CT0woaXdsX3VlZmlfZ2V0X3B1bmN0dXJpbmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTAwNTppbnQgaXdsX3VlZmlfZ2V0X2RzYnIoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCB1MzIgKnZhbHVlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMDYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjEwMDc6XFx0c3RydWN0IHVlZmlfY252X3dsYW5fZHNicl9kYXRhICpkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMDgtXFx0aW50IHJldCA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMDEwOlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZChmd3J0LVxcdTAwM2V0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDExLVxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZJV0xfRUZJX1dJRklfQlRfR1VJRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTAzMTppbnQgaXdsX3VlZmlfZ2V0X3BoeV9maWx0ZXJzKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDMyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMDMzOlxcdHN0cnVjdCB1ZWZpX2Nudl93cGZjX2RhdGEgKmRhdGEgX19mcmVlKGtmcmVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDM0LVxcdHN0cnVjdCBpd2xfcGh5X3NwZWNpZmljX2NmZyAqZmlsdGVycyA9IFxcdTAwMjZmd3J0LVxcdTAwM2VwaHlfZmlsdGVycztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjEwMzY6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfV1BGQ19OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMzctXFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcIldQRkNcXFwiLCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTQtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6NTojaWZuZGVmIF9faXdsX2Z3X3VlZmlfX1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjY6I2RlZmluZSBfX2l3bF9md191ZWZpX19cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC03LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg9NDQ9c3RydWN0IHBudm1fc2t1X3BhY2thZ2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6NTI6c3RydWN0IHVlZmlfY252X3dsYW5fc2dvbV9kYXRhIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC01My1cXHR1OCByZXZpc2lvbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjU3OnN0cnVjdCB1ZWZpX2Nudl93bGFuX3VhdHNfZGF0YSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtNTgtXFx0dTggcmV2aXNpb247XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC02Mi0vKiBVTkVCJ3MgbGF5b3V0IGlzIGlkZW50aWNhbCB0byBVQVRTJ3MgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDo2MzojZGVmaW5lIHVlZmlfY252X3dsYW5fdW5lYl9kYXRhIHVlZmlfY252X3dsYW5fdWF0c19kYXRhXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6NjU6c3RydWN0IHVlZmlfY252X2NvbW1vbl9zdGVwX2RhdGEge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTY2LVxcdHU4IHJldmlzaW9uO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtODYtLyoqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6ODc6ICogc3RydWN0IHVlZmlfY252X3Zhcl93cmRzIC0gV1JEUyB0YWJsZSBhcyBkZWZpbmVkIGluIFVFRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC04OC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtOTctICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6OTg6c3RydWN0IHVlZmlfY252X3Zhcl93cmRzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC05OS1cXHR1OCByZXZpc2lvbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTExMi0jZGVmaW5lIFVFRklfU0FSX1dSRFNfVEFCTEVfU0laRV9SRVYyXFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjExMzpcXHQob2Zmc2V0b2Yoc3RydWN0IHVlZmlfY252X3Zhcl93cmRzLCB2YWxzKSArXFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTExNC1cXHQgVUVGSV9TQVJfUFJPRklMRV9TSVpFX1JFVjIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xMTYtI2RlZmluZSBVRUZJX1NBUl9XUkRTX1RBQkxFX1NJWkVfUkVWM1xcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxMTc6XFx0KG9mZnNldG9mKHN0cnVjdCB1ZWZpX2Nudl92YXJfd3JkcywgdmFscykgK1xcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xMTgtXFx0IFVFRklfU0FSX1BST0ZJTEVfU0laRV9SRVYzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTIwLS8qKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjEyMTogKiBzdHJ1Y3QgdWVmaV9jbnZfdmFyX2V3cmQgLSBFV1JEIHRhYmxlIGFzIGRlZmluZWQgaW4gVUVGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTEyMi0gKiBAcmV2aXNpb246IHRoZSByZXZpc2lvbiBvZiB0aGUgdGFibGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTEyNS0gKiBAdmFsczogdGhlIGFkZGl0aW9uYWwgU0FSIHByb2ZpbGVzICgjMi0jNCkgYXMgYW4gYXJyYXkgb2YgU0FSIHByb2ZpbGVzLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjEyNjogKlxcdEEgU0FSIHByb2ZpbGUgaXMgZGVmaW5lZCB0aGUgXFx1MDAyNnN0cnVjdCB1ZWZpX2Nudl92YXJfd3Jkczo6dmFscy4gVGhlIHNpemVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xMjctICpcXHRvZiBlYWNoIHByb2ZpbGUgZGVwZW5kcyBvbiB0aGUgbnVtYmVyIG9mIHN1YmJhbmRzIHdoaWNoIGRlcGVuZHMgb24gdGhlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MTI4OiAqXFx0cmV2aXNpb24uIFRoaXMgaXMgZXhwbGFpbmVkIGluIFxcdTAwMjZzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dyZHMuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTI5LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjEzMDpzdHJ1Y3QgdWVmaV9jbnZfdmFyX2V3cmQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTEzMS1cXHR1OCByZXZpc2lvbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTEzNy0jZGVmaW5lIFVFRklfU0FSX0VXUkRfVEFCTEVfU0laRV9SRVYyXFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjEzODpcXHQob2Zmc2V0b2Yoc3RydWN0IHVlZmlfY252X3Zhcl9ld3JkLCB2YWxzKSArXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTEzOS1cXHQgVUVGSV9TQVJfUFJPRklMRV9TSVpFX1JFVjIgKiAoQklPU19TQVJfTUFYX1BST0ZJTEVfTlVNIC0gMSkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNDEtI2RlZmluZSBVRUZJX1NBUl9FV1JEX1RBQkxFX1NJWkVfUkVWM1xcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxNDI6XFx0KG9mZnNldG9mKHN0cnVjdCB1ZWZpX2Nudl92YXJfZXdyZCwgdmFscykgK1xcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNDMtXFx0IFVFRklfU0FSX1BST0ZJTEVfU0laRV9SRVYzICogKEJJT1NfU0FSX01BWF9QUk9GSUxFX05VTSAtIDEpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTQ1LS8qKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjE0NjogKiBzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dnZHMgLSBXR0RTIHRhYmxlIGFzIGRlZmluZWQgaW4gVUVGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE0Ny0gKiBAcmV2aXNpb246IHRoZSByZXZpc2lvbiBvZiB0aGUgdGFibGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE1NS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxNTY6c3RydWN0IHVlZmlfY252X3Zhcl93Z2RzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNTctXFx0dTggcmV2aXNpb247XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNjktI2RlZmluZSBVRUZJX1dHRFNfVEFCTEVfU0laRV9SRVYzXFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjE3MDpcXHQob2Zmc2V0b2Yoc3RydWN0IHVlZmlfY252X3Zhcl93Z2RzLCB2YWxzKSArXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE3MS1cXHQgVUVGSV9XR0RTX1BST0ZJTEVfU0laRV9SRVYzICogQklPU19HRU9fTUFYX1BST0ZJTEVfTlVNKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTczLSNkZWZpbmUgVUVGSV9XR0RTX1RBQkxFX1NJWkVfUkVWNFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxNzQ6XFx0KG9mZnNldG9mKHN0cnVjdCB1ZWZpX2Nudl92YXJfd2dkcywgdmFscykgK1xcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNzUtXFx0IFVFRklfV0dEU19QUk9GSUxFX1NJWkVfUkVWNCAqIEJJT1NfR0VPX01BWF9QUk9GSUxFX05VTSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE3Ny0vKipcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxNzg6ICogc3RydWN0IHVlZmlfY252X3Zhcl9wcGFnIC0gUFBBRyB0YWJsZSBhcyBkZWZpbmVkIGluIFVFRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNzktICogQHJldmlzaW9uOiB0aGUgcmV2aXNpb24gb2YgdGhlIHRhYmxlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xODctICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MTg4OnN0cnVjdCB1ZWZpX2Nudl92YXJfcHBhZyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTg5LVxcdHU4IHJldmlzaW9uO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTk0LSNkZWZpbmUgVUVGSV9QUEFHX0RBVEFfU0laRV9WNFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxOTU6XFx0KG9mZnNldG9mKHN0cnVjdCB1ZWZpX2Nudl92YXJfcHBhZywgdmFscykgK1xcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xOTYtXFx0c2l6ZW9mKHM4KSAqIFVFRklfUFBBR19OVU1fQ0hBSU5TICogVUVGSV9QUEFHX1NVQl9CQU5EU19OVU1fUkVWNClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xOTctI2RlZmluZSBVRUZJX1BQQUdfREFUQV9TSVpFX1Y1XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjE5ODpcXHQob2Zmc2V0b2Yoc3RydWN0IHVlZmlfY252X3Zhcl9wcGFnLCB2YWxzKSArXFx0XFxcXFxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDoxMDoxNC4wNzQyNjY3MTRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyMzQ4NzU0NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgV2lGaSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBgaXdsd2lmaS0kKENPTkZJR19FRkkpICs9IGZ3L3VlZmkub2AuIFNvLCBgQ09ORklHX0VGSWAgaXMgYSByZXF1aXJlbWVudCBmb3IgY29tcGlsaW5nIGBmdy91ZWZpLmNgLiBSaWdodCwgbGV0IG1lIGNvbmZpcm0gdGhhdCBgQ09ORklHX0VGSWAgaXMgZGVmaW5pdGVseSBuZWVkZWQuIFl1cCwgZ290IGl0LiBIbW0sIGFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucz8gTGV0J3Mgc2VlLi4uIGl0J3MgYENPTkZJR19JV0xXSUZJYCBhbmQgYENPTkZJR19FRklgLiBJIHNlZW0gdG8gcmVjYWxsIGBDT05GSUdfRUZJYCBvZnRlbiBiZWluZyBlbmFibGVkIGluIHN5emthbGxlciBjb25maWd1cmF0aW9ucy4gQnV0LCB3aGF0IGFib3V0IHRoZSBkZXBlbmRlbmNpZXM/IFNwZWNpZmljYWxseSBgQ09ORklHX01BQzgwMjExYCBvciBgQ09ORklHX0NGRzgwMjExYD8gSSBrbm93IHRoYXQgYElXTFdJRklgIGVpdGhlciBzZWxlY3RzIG9yIGRlcGVuZHMgb24gdGhlbSwgc28gbGV0IG1lIHF1aWNrbHkgcmUtZXhhbWluZSB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ2AgZmlsZS4gT2ssIHllcywgYGNvbmZpZyBJV0xXSUZJYCBkZXBlbmRzIG9uIGBQQ0kgXHUwMDI2XHUwMDI2IE1BQzgwMjExIFx1MDAyNlx1MDAyNiBIQVNfSU9NRU1gLlxuXG5Ob3csIGxldCdzIGdldCBiYWNrIHRvIHRoZSBwYXRjaCBpdHNlbGYuXG5cbmBgYGNcblx0XHRcdGlmICh0bHZfbGVuIFx1MDAzYyBzaXplb2YoKnRsdl9za3VfaWQpKSB7XG5cdFx0XHRcdElXTF9FUlIodHJhbnMsIFwiaW52YWxpZCBQTlZNIFNLVSBUTFYgbGVuOiAldVxcblwiLFxuXHRcdFx0XHRcdHRsdl9sZW4pO1xuXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcblx0XHRcdH1cbmBgYFxuXG5UaGlzIGlzIGNsZWFybHkgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQncyBkZXNpZ25lZCB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3aGVuIGB0bHZfbGVuYCBpcyBzbWFsbGVyIHRoYW4gdGhlIHNpemUgb2YgdGhlIGB0bHZfc2t1X2lkYCBzdHJ1Y3R1cmUuIFdhaXQsIGB0bHZfc2t1X2lkYCBpcyBhIGBzdHJ1Y3QgaXdsX3NrdV9pZGAuXG5cbmBgYGNcbnN0cnVjdCBpd2xfc2t1X2lkIHtcblx0X19sZTMyIGRhdGFbM107XG59IF9fcGFja2VkO1xuYGBgXG5cblNvLCBpZiBgdGx2X2xlbmAgaXMgbGVzcyB0aGFuIDEyLCB0aGUgY29kZSB3b3VsZCBiZSB0cnlpbmcgdG8gYWNjZXNzIGB0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMF1gLCBgZGF0YVsxXWAsIGFuZCBgZGF0YVsyXWAgYmV5b25kIHRoZSBib3VuZHMgb2YgdGhlIHByb3ZpZGVkIFRMViwgcmlnaHQ/IEV4YWN0bHkuIFRoZXJlZm9yZSwgdGhpcyBpcyBhIGxlZ2l0aW1hdGUgZnVuY3Rpb25hbCBmaXgsIHByZXZlbnRpbmcgYSBwb3RlbnRpYWxseSBzZXJpb3VzIG1lbW9yeSByZWFkIHZ1bG5lcmFiaWxpdHkuXG5cblRoZSByZWFsIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIGNvZGUgcGF0aCByZWFjaGFibGU/IE9rYXksIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgIGlzIGNhbGxlZCBkdXJpbmcgZmlybXdhcmUgaW5pdGlhbGl6YXRpb24gaWYgdGhlIFVFRkkgdmFyaWFibGUgYElXTF9VRUZJX1JFRFVDRURfUE9XRVJfTkFNRWAgaXMgcHJlc2VudC4gQW5kLCBzeXprYWxsZXIgY2FuIGVhc2lseSBjcmVhdGUgdGhpcyBVRUZJIHZhcmlhYmxlLCB0aHVzIHRyaWdnZXJpbmcgaXdsd2lmaSBpbml0aWFsaXphdGlvbi4gV2FpdCwgYGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zYCBpcyBjYWxsZWQgZnJvbSBgaXdsX3Budm1fbG9hZGAuIGBpd2xfcG52bV9sb2FkYCBpcyBjYWxsZWQgZnJvbSBgaXdsX212bV9sb2FkX3Vjb2RlX3dhaXRfYWxpdmVgIGFuZCBgaXdsX21sZF9ydW5fZndfaW5pdF9zZXF1ZW5jZWAuIFRoZXNlIGFyZSBhbGwgcGFydCBvZiB0aGUgc3RhbmRhcmQgZHJpdmVyIGluaXRpYWxpemF0aW9uIGZsb3cgd2hlbiB0aGUgZmlybXdhcmUgaXMgbG9hZGVkLiBTbywgeWVzLCBpdCdzIHJlYWNoYWJsZSBkdXJpbmcgbm9ybWFsIGRyaXZlciBvcGVyYXRpb24uXG5cblNvLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2xlYXI6XG5cblRoZSBrZXkgZnVuY3Rpb25zIGFyZTpcbi0gYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWBcbi0gYGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zYFxuLSBgaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXJgXG5cbkFuZCB0aGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMgYXJlOlxuLSBgSVdMV0lGSWBcbi0gYEVGSWBcblxuTm93LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIGlzIGBJV0xXSUZJYCBzdWZmaWNpZW50PyBgQ09ORklHX0lXTFdJRklgIGlzIGluZGVlZCB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uLCBidXQgc2hvdWxkIEkgY29uc2lkZXIgYENPTkZJR19JV0xXSUZJX01WTWAgb3IgYENPTkZJR19JV0xXSUZJX0JTU2A/IExldCBtZSBxdWlja2x5IHJlLWV4YW1pbmUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ2AgdG8gY29uZmlybS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMyNTUsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MTA6MjQuMzA5MTQ0MzczWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDYyMTEzOTAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xXSUZJX01WTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MTA6MjQuNDE1MzcxOTIzWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NzIxMzUwMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IExvY2F0aW5nIHRoZSBJV0xXSUZJX01WTSBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgaGFuZyBvbiBhIHNlY29uZC4gTXkgbWVudGFsIG1hcCBvZiB0aGUga2VybmVsIHNvdXJjZSB0cmVlIGlzIHVzdWFsbHkgcHJldHR5IHNvbGlkLCBidXQgZm9yIGEgc3BsaXQgc2Vjb25kLCBJIGhhZCB0byBkb3VibGUtY2hlY2sgdGhhdCBsb2NhdGlvbi4gKklXTFdJRklfTVZNKi4uLiByaWdodCwgdGhhdCdzIHRoZSBtdWx0aS12aXJ0dWFsIG1hY2hpbmUgc3R1ZmYgZm9yIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIuIEJ1dCB0aGUgS2NvbmZpZyBmaWxlIGZvciAqdGhhdCogc3BlY2lmaWMgY29tcG9uZW50PyBNeSBmaXJzdCBpbnN0aW5jdCB3YXMgaXQgd291bGQgcHJvYmFibHkgYmUgaW4gdGhlIGNvcmUgaXdsd2lmaSBkaXJlY3RvcnksIGJ1dCBpdCdzIG9mdGVuIGNvbXBhcnRtZW50YWxpemVkLiBMZXQgbWUgcXVpY2tseSBzb2xpZGlmeSBpbiBteSBtaW5kIHRoYXQgaXQncyBsb2NhdGVkIHVuZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9LY29uZmlnYC4gVGhhdCBzcGVjaWZpYyBwYXRoIHRlbGxzIG1lIGhvdyBtb2R1bGFyIGl0IGlzLiBUaGlzIHByb2JhYmx5IG1lYW5zIGl0J3MgYSB3ZWxsLWRlZmluZWQgYW5kIHBvdGVudGlhbGx5IGluZGVwZW5kZW50IG1vZHVsZSB3aXRoaW4gdGhlIGxhcmdlciBJbnRlbCB3aXJlbGVzcyBkcml2ZXIgZnJhbWV3b3JrLiBHb29kLiBLbm93aW5nICpleGFjdGx5KiB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBsaXZlcyBpcyBrZXkgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgb3B0aW9ucy4gTm93IEkgY2FuIG1vdmUgZm9yd2FyZCwgY29uZmlkZW50IHRoYXQgSSBrbm93IHdoZXJlIHRvIGxvb2sgaWYgSSBuZWVkIHRvIGFkanVzdCBzZXR0aW5ncyByZWxhdGVkIHRvIHRoYXQgcGFydGljdWxhciBzZWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDg0OCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjEwOjI4LjE4NzUwOTk5MloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE2NTM0MDIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xXSUZJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjEwOjI4LjI2OTE3MTgyNVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDE3OTM2MTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqS2NvbmZpZyBIdW50IGluIGl3bHdpZmkqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IG15IGJlYXJpbmdzIGluIHRoZSBpd2x3aWZpIGNvZGUuIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGljaCBLY29uZmlnIGZpbGVzIGFyZSByZWxldmFudCBoZXJlLiBUaGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSB3aGF0J3MgYWN0dWFsbHkgKnRoZXJlKi4gSSBzaG91bGQgcHJvYmFibHkgc3RhcnQgYnkgZG9pbmcgYSBxdWljayBgbHNgIGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9gIGRpcmVjdG9yeS4gVGhhdCdsbCBnaXZlIG1lIGEgbGlzdCBvZiBhbGwgdGhlIGZpbGVzIGFuZCBzdWJkaXJlY3RvcmllcywgbWFraW5nIGl0IGVhc2llciB0byBzcG90IGxpa2VseSBjYW5kaWRhdGVzIGZvciBLY29uZmlnIGZpbGVzLiBLbm93aW5nIHRoZSBnZW5lcmFsIHN0cnVjdHVyZSwgSSBleHBlY3QgdG8gc2VlIGBLY29uZmlnYCBmaWxlcyBzcHJpbmtsZWQgYXJvdW5kLCBwb3NzaWJseSBpbiBzdWJkaXJlY3RvcmllcyByZXByZXNlbnRpbmcgZGlmZmVyZW50IHdpcmVsZXNzIGNhcmQgZmFtaWxpZXMgb3IgZmVhdHVyZSBzZXRzLiBJIGFsc28gYW50aWNpcGF0ZSB0aGVyZSBjb3VsZCBiZSBhIHRvcC1sZXZlbCBgS2NvbmZpZ2AgdGhhdCBpbmNsdWRlcyBvdGhlcnMuIExldCdzIHNlZSB3aGF0IHdlIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MTgyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MTA6MzEuNjg3MTExMjQ3WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2ODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiaXdsLWFnbi1ody5oXCIsXG4gICAgXCJpd2wtY29uZmlnLmhcIixcbiAgICBcIml3bC1jc3IuaFwiLFxuICAgIFwiaXdsLWRiZy10bHYuY1wiLFxuICAgIFwiaXdsLWRiZy10bHYuaFwiLFxuICAgIFwiaXdsLWRlYnVnLmNcIixcbiAgICBcIml3bC1kZWJ1Zy5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtZGF0YS5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtaW8uaFwiLFxuICAgIFwiaXdsLWRldnRyYWNlLWl3bHdpZmkuaFwiLFxuICAgIFwiaXdsLWRldnRyYWNlLW1zZy5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtdWNvZGUuaFwiLFxuICAgIFwiaXdsLWRldnRyYWNlLmNcIixcbiAgICBcIml3bC1kZXZ0cmFjZS5oXCIsXG4gICAgXCJpd2wtZHJ2LmNcIixcbiAgICBcIml3bC1kcnYuaFwiLFxuICAgIFwiaXdsLWZoLmhcIixcbiAgICBcIml3bC1pby5jXCIsXG4gICAgXCJpd2wtaW8uaFwiLFxuICAgIFwiaXdsLW1vZHBhcmFtcy5oXCIsXG4gICAgXCJpd2wtbnZtLXBhcnNlLmNcIixcbiAgICBcIml3bC1udm0tcGFyc2UuaFwiLFxuICAgIFwiaXdsLW52bS11dGlscy5jXCIsXG4gICAgXCJpd2wtbnZtLXV0aWxzLmhcIixcbiAgICBcIml3bC1vcC1tb2RlLmhcIixcbiAgICBcIml3bC1waHktZGIuY1wiLFxuICAgIFwiaXdsLXBoeS1kYi5oXCIsXG4gICAgXCJpd2wtcHJwaC5oXCIsXG4gICAgXCJpd2wtc2NkLmhcIixcbiAgICBcIml3bC10cmFucy5jXCIsXG4gICAgXCJpd2wtdHJhbnMuaFwiLFxuICAgIFwiaXdsLXV0aWxzLmNcIixcbiAgICBcIml3bC11dGlscy5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IFtcbiAgICBcImNmZ1wiLFxuICAgIFwiZHZtXCIsXG4gICAgXCJmd1wiLFxuICAgIFwibWVpXCIsXG4gICAgXCJtbGRcIixcbiAgICBcIm12bVwiLFxuICAgIFwicGNpZVwiLFxuICAgIFwidGVzdHNcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDoxMDozMS42ODcyNzA2NjdaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzODkwMzIyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRlYnVnZ2luZyB0aGUgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgd2lyZWxlc3MgZHJpdmVyIGlzc3VlIGFuZCBteSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBmZWF0dXJlIGluIHF1ZXN0aW9uIGlzIGJlaW5nIGVuYWJsZWQgb3IgZGlzYWJsZWQuIEdpdmVuIHRoYXQgdGhpcyBzZWVtcyB0byBiZSBhbiBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIG15IGZpcnN0IHN0b3AgaXMgbGlrZWx5IGdvaW5nIHRvIGJlIGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vYCBkaXJlY3RvcnkuIFdpdGhpbiB0aGF0LCBJJ20gcHJldHR5IHN1cmUgdGhlcmUncyBhIGBLY29uZmlnYCBmaWxlLiBUaGF0J3MgdGhlIHN0YW5kYXJkIHBsYWNlIGZvciBkZWZpbmluZyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGtlcm5lbCBtb2R1bGVzLCBhbmQgdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLiBJdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlc2UgZmVhdHVyZXMgYXJlIGVuYWJsZWQsIGRpc2FibGVkLCBvciBjb25kaXRpb25hbGx5IGNvbXBpbGVkLiBJZiB0aGlzIGRyaXZlciBpcyBsaWtlIHRoZSBvdGhlcnMgSSd2ZSB3b3JrZWQgd2l0aCwgdGhpcyBpcyB0aGUgbW9zdCBsaWtlbHkgbG9jYXRpb24gZm9yIGZpbmRpbmcgdGhlIHNwZWNpZmljIEtjb25maWcgZmlsZSB0byByZXZpZXcuIEknbGwgc3RhcnQgdGhlcmUgYW5kIHNlZSBpZiBJIGNhbiB0cmFjZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTgxOSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDoxMDozNC44MjYxNzU5NzVaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTg3MDYxMCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDoxMDozNC45MjgwNTIxNjZaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU5MDYxMjgwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGZyYW1lZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6XG5cbioqV2hlcmUncyBUaGF0IERhbmcgRGVmaW5pdGlvbj8qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLi4uIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIHRyYWNlIGEgZnVuY3Rpb24gY2FsbCwgYW5kIEkndmUgaGl0IGEgc25hZy4gV2hhdCB0aGUgaGVjayBpcyBgSVdMV0lGSV9NVk1gPyBJdCdzIG1lbnRpb25lZCBoZXJlLCBjbGVhcmx5LCBidXQgSSdtIGRyYXdpbmcgYSBibGFuay4gSXMgaXQgYSBtYWNybywgYSBjb25zdGFudCwgYSBzdHJ1Y3R1cmUsIGFuIGVudW0sIHdoYXQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYElXTFdJRklfTVZNYCBhY3R1YWxseSAqaXMqIHRvIG1ha2UgYW55IGhlYWR3YXkuIFRpbWUgdG8gZ28gaHVudGluZyBmb3IgaXRzIGRlZmluaXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBzY29wZSwgdGhlIGNvbnRleHQsIGFuZCBob3cgaXQncyBiZWluZyB1c2VkLiBJIGNhbid0IHByb2NlZWQgdW50aWwgSSB1bmRlcnN0YW5kIGl0cyBmdW5kYW1lbnRhbCBuYXR1cmUuIEFscmlnaHQsIGxldCdzIHN0YXJ0IGRpZ2dpbmchIEkgc2hvdWxkIGtub3cgdGhpcywgd2hhdCBmaWxlIGlzIGl0IGluPyBJIG5lZWQgdG8gZmluZCBpdHMgb3JpZ2luLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjEwNCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjEwOjM4LjUxODY2Njc0MloiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY3NDA4NTEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xXSUZJX01WTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MTA6MzguNjE1NDEzMzczWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDIwMjYzMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIEludGVsIFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgSW50ZWwgd2lyZWxlc3MgZHJpdmVycy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gc3RhcnQgd2l0aCB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGF0IHNwZWNpZmljIGFyZWEsIHdoaWNoLCBpZiBtZW1vcnkgc2VydmVzLCBzaG91bGQgYmUgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvS2NvbmZpZ2AuIFRoYXQncyB0aGUgZ28tdG8gcGxhY2UgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZ3VyYWJsZSBmZWF0dXJlcyBhbmQgZGVwZW5kZW5jaWVzLiBJIGV4cGVjdCB0byBmaW5kIGRlZmluaXRpb25zIG9mIHRoZSB2YXJpb3VzIGRyaXZlciBvcHRpb25zLCBhbG9uZyB3aXRoIHRoZWlyIGRlZmF1bHQgc2V0dGluZ3MsIGhlbHAgdGV4dCBleHBsYWluaW5nIHRoZWlyIHB1cnBvc2UsIGFuZCwgY3J1Y2lhbGx5LCBhbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBoYXJkd2FyZS4gVGhpcyBmaWxlIGlzIHRoZSBiYWNrYm9uZSBmb3IgY29uZmlndXJpbmcgdGhlIEludGVsIHdpcmVsZXNzIHN1cHBvcnQsIGFuZCBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiBpdCB3aWxsIGJlIGNyaXRpY2FsIGZvciBhbnkgbW9kaWZpY2F0aW9ucyBvciBkZWVwZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZHJpdmVyJ3MgYmVoYXZpb3IuIFRpbWUgdG8gZGVsdmUgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MzY0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MTA6NDIuMjE3NDQxOTg4WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDYwNTcwOTEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xXSUZJX01WTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDoxMDo0Mi4zMjM1MDkzMTlaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA2NTcwMTAwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHRoZSBzdW1tYXJ5LCBhc3N1bWluZyBJJ20gdGhlIGV4cGVydCB0aGlua2luZyB0aHJvdWdoIHRoaXM6XG5cbioqSW5pdGlhbCBJbXByZXNzaW9uOiBFeHBsb3JpbmcgUG9zc2libGUgQWNyb255bXMqKlxuXG5IbW0sIHRoaW5raW5nIHRoaXMgdGhyb3VnaC4uLkknbSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggcG90ZW50aWFsIGFjcm9ueW1zIGhlcmUuIFRoYXQgaW5pdGlhbCBzdHJpbmcsIGBJV0xNVk1gLCBpdCdzIG5vdCBpbW1lZGlhdGVseSBvYnZpb3VzIHdoYXQgaXQgcmVwcmVzZW50cy4gSSBuZWVkIHRvIHN0YXJ0IGRlY29uc3RydWN0aW5nIGl0LiBJcyB0aGVyZSBzb21lIHNwZWNpZmljIGZpZWxkIG9yIGNvbnRleHQgd2hlcmUgdGhpcyB3b3VsZCBtYWtlIHNlbnNlPyBXaGF0IGFyZSB0aGUga2V5IGVsZW1lbnRzIGl0IG1pZ2h0IHJlZmVyIHRvPyBQZXJoYXBzIGl0J3MgYW4gb2JzY3VyZSBtZXRob2QsIGEgcmVzZWFyY2ggcHJvamVjdCdzIGludGVybmFsIG5hbWUsIG9yIG1heWJlIHNvbWV0aGluZyB2ZXJ5IGluZHVzdHJ5LXNwZWNpZmljLi4uIFJpZ2h0IG5vdywgbXkgbWluZCBpcyBleHBsb3JpbmcgdGhlIHBvc3NpYmlsaXRpZXMuIExldCdzIHNlZSBpZiB0aGUgbGV0dGVycyBzdGFydCB0byBjbGljayBpbiBhbnkgZmFtaWxpYXIgY29tYmluYXRpb25zLiBQZXJoYXBzIGl0J3MgYSBuZXcgb3Igb2JzY3VyZSB0ZXJtIHRoYXQgSSBuZWVkIHRvIGxvb2sgaW50bz9cblxuXG4iLCJJbnB1dFRva2VucyI6MzY2MDYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjEwOjQ1LjM4OTIxMzYyNFoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0MDkwMDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xNVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTY2PWNvbmZpZyBJV0xEVk1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy03My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NzQ6Y29uZmlnIElXTE1WTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy03NS1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgV2lyZWxlc3MgV2lGaSBNVk0gRmlybXdhcmUgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MTA6NDUuNTIzMzA3ODkxWiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0OTM5OTgwMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgSVdMTVZNYCBEZXBlbmRlbmN5KipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGZpcm13YXJlIHN1cHBvcnQuIFJpZ2h0LCBzbyBgSVdMTVZNYCAtIHRoYXQgc2VlbXMgbGlrZSB0aGUga2V5IGNvbmZpZ3VyYXRpb24gZGVmaW5lIGZvciB0aGUgTVZNIGZpcm13YXJlLiBJdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGFjdHVhbGx5LCBnaXZlbiB0aGF0IEkga25vdyBteSB3YXkgYXJvdW5kIHRoZSBrZXJuZWwgY29kZWJhc2UuIEknbSBzZWVpbmcgdGhhdCBgaXdsX212bV9sb2FkX3Vjb2RlX3dhaXRfYWxpdmVgIGZ1bmN0aW9uIHJlc2lkZXMgd2l0aGluIGBtdm0vZncuY2AuICBUaGF0IHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQgYElXTE1WTWAgaXMgYSBoYXJkIHJlcXVpcmVtZW50IGZvciB0aGUgd2hvbGUgcHJvY2Vzcy4gSSB3YW50IHRvIGRvdWJsZS1jaGVjayBteSB1bmRlcnN0YW5kaW5nIHRob3VnaCwgc28gdGhlIG5leHQgc3RlcCBpcyB0byBoZWFkIG92ZXIgdG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlYC4gSXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbXBpbGF0aW9uIHJ1bGVzIGFuZCBkZXBlbmRlbmNpZXMgZm9yIGFueXRoaW5nIHRoYXQgbGl2ZXMgd2l0aGluIHRoYXQgYGZ3L2AgZGlyZWN0b3J5LiBUaGF0J3Mgd2hlcmUgdGhlIHByb29mIGlzIVxuXG5cbiIsIklucHV0VG9rZW5zIjozNjkyNSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjEwOjQ5LjAxNzMwODc1NloiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODkwNDQyNzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZncvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZT0zMj1pd2x3aWZpLW9ianNcXHRcXHQrPSBpd2wtdHJhbnMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtMzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTozNDppd2x3aWZpLW9ianNcXHRcXHQrPSBmdy9pbWcubyBmdy9ub3RpZi13YWl0Lm8gZncvcnMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6MzU6aXdsd2lmaS1vYmpzXFx0XFx0Kz0gZncvZGJnLm8gZncvZGJnLW9sZC5vIGZ3L3Budm0ubyBmdy9kdW1wLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjM2Oml3bHdpZmktb2Jqc1xcdFxcdCs9IGZ3L3JlZ3VsYXRvcnkub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6Mzc6aXdsd2lmaS0kKENPTkZJR19JV0xNVk0pICs9IGZ3L3BhZ2luZy5vIGZ3L3NtZW0ubyBmdy9pbml0Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjM4Oml3bHdpZmktJChDT05GSUdfSVdMTUxEKSArPSBmdy9zbWVtLm8gZncvaW5pdC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTozOTppd2x3aWZpLSQoQ09ORklHX0FDUEkpICs9IGZ3L2FjcGkub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6NDA6aXdsd2lmaS0kKENPTkZJR19FRkkpXFx0Kz0gZncvdWVmaS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTo0MTppd2x3aWZpLSQoQ09ORklHX0lXTFdJRklfREVCVUdGUykgKz0gZncvZGVidWdmcy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS00Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MTA6NDkuMTA2MzU3Nzg4WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3MDI4MjY0MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGl3bHdpZmkgRHJpdmVyIENvbmZpZ3VyYXRpb24gZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBoZXJlJ3MgdGhlIGJyZWFrZG93biBvZiBob3cgdG8gYXBwcm9hY2ggZnV6emluZyB0aGlzIGl3bHdpZmkgZHJpdmVyIHZ1bG5lcmFiaWxpdHkuIEkndmUgdHJhY2VkIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIEl0IHNlZW1zIGBmdy91ZWZpLm9gIGlzIGNvbXBpbGVkIGRpcmVjdGx5IGludG8gYGl3bHdpZmkua29gIHdoZW4gdGhlIGBDT05GSUdfRUZJYCBvcHRpb24gaXMgZW5hYmxlZCwgYW5kIGBpd2x3aWZpLmtvYCBpdHNlbGYgaXMgYnVpbHQgd2hlbiBgQ09ORklHX0lXTFdJRklgIGlzIGVuYWJsZWQuIEltcG9ydGFudGx5LCBgZncvcG52bS5vYCBhbHNvIGVuZHMgdXAgaW5jbHVkZWQgd2l0aGluIGBpd2x3aWZpLW9ianNgLiBUaGF0IG1lYW5zIGhhdmluZyBib3RoIGBDT05GSUdfSVdMV0lGSWAgYW5kIGBDT05GSUdfRUZJYCBhY3RpdmUgc2hvdWxkIGJlIGVub3VnaCB0byBnZXQgdGhlIGNvcmUgY29kZSBjb21waWxlZCBpbi5cblxuTm93LCB0byBhY3R1YWxseSB0cmlnZ2VyIHRoZSB2dWxuZXJhYmxlIGNvZGUgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZmlybXdhcmUgbG9hZGluZyBhbmQgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYXJlIGV4ZXJjaXNlZC4gIFRoYXQncyB3aGVyZSB0aGUgYENPTkZJR19JV0xNVk1gIG9yIGBDT05GSUdfSVdMTUxEYCBvcHRpb25zIGNvbWUgaW50byBwbGF5LiAgVG8gYmUgb24gdGhlIHNhZmUgc2lkZSwgYW5kIHRvIG1heGltaXplIGNvdmVyYWdlLCBJIHNob3VsZCBlbmFibGUgYm90aCBvZiB0aGVzZS4gIFRoZXkncmUga2V5IHRvIGluaXRpYWxpemluZyB0aGUgZHJpdmVyIGluIGEgd2F5IHRoYXQgbWFrZXMgaXQgdnVsbmVyYWJsZS5cblxuU28sIHRvIHN1bW1hcml6ZSBmb3IgZnV6emluZyBwdXJwb3NlczpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIEFic29sdXRlbHkuIFRoZSBwYXRjaCBmaXhlcyBhIGRlZmluaXRlIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXR5IHdoZW4gcGFyc2luZyBVRUZJIHZhcmlhYmxlcyByZWxhdGVkIHRvIHJlZHVjZWQgcG93ZXIgc2V0dGluZ3Mgd2l0aGluIHRoZSBpd2x3aWZpIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLCB1bmRlciB0aGUgcmlnaHQgVUVGSSB2YXJpYWJsZSBjb25kaXRpb25zLlxuKiAgICoqUmVhc29uaW5nOioqIFRoZSBidWcgaXMgd2l0aGluIHRoZSBpd2x3aWZpIGRyaXZlciwgdHJpZ2dlcmVkIGJ5IHBhcnNpbmcgVUVGSSB2YXJpYWJsZXMuXG4qICAgKipGb2N1cyBTeW1ib2xzOioqIEkgbmVlZCB0byBmb2N1cyBvbiB0aGVzZSBmdW5jdGlvbnM6IGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgLCBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgLCBhbmQgYGl3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyYC4gVGhvc2UgYXJlIHdoZXJlIHRoZSB2dWxuZXJhYmlsaXRpZXMgYXJlLlxuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBIZXJlJ3MgdGhlIGNyaXRpY2FsIHNldCBvZiBjb25maWdzIEkgbmVlZCB0byBlbmFibGU6XG4gICAgKiAgIGBJV0xXSUZJYFxuICAgICogICBgRUZJYFxuICAgICogICBgSVdMTVZNYFxuICAgICogICBgSVdMTUxEYFxuXG5JIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYElXTE1MRGAgaXMgYSB2YWxpZCBvcHRpb24gaW4gdGhlIGNvbmZpZ3VyYXRpb247IGl0IGlzIHBvc3NpYmxlIHRoYXQgaXQgaXMganVzdCBhIGRlZmF1bHQsIHNvIGl0IG5lZWRzIHRvIGJlIGNoZWNrZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NjIxLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjEwOjU1LjgwOTE4NjEwNVoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIzNTQxMTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xNTERcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz03ND1jb25maWcgSVdMTVZNXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjg0OmNvbmZpZyBJV0xNTERcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctODUtXFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgTUxEIEZpcm13YXJlIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjEwOjU2LjEzMjczMTQ4NVoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDc0NzI3NDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlZhbGlkYXRpbmcgYW5kIEFuYWx5emluZyBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBJV0xNTERgIGlzIGluZGVlZCBhIHZhbGlkIGlkZW50aWZpZXIuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgbXkgbmV4dCBzdGVwIGlzIHRvIGludmVzdGlnYXRlIHRoZSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIG9mIGBJV0xXSUZJYC4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGl0J3MgaGlnaGx5IHByb2JhYmxlIHRoYXQgYElXTFdJRklgIHJlbGllcyBvbiBgTUFDODAyMTFgLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzIHJlbGF0aW9uc2hpcCwgYXMgdW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCBmb3IgYW55IGNoYW5nZXMgb3IgaW50ZWdyYXRpb24gd29yayByZWxhdGVkIHRvIHRoZXNlIGlkZW50aWZpZXJzLiBUaGF0J3Mgd2hlcmUgSSB3aWxsIGJlZ2luLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODU3NSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjExOjAwLjYwNzQ2MTM5WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQzNzEwODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTI9Y29uZmlnIElXTFdJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgV2lyZWxlc3MgV2lGaSBOZXh0IEdlbiBBR04gLSBXaXJlbGVzcy1OL0FkdmFuY2VkLU4vVWx0aW1hdGUtTiAoaXdsd2lmaSkgXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo0OlxcdGRlcGVuZHMgb24gUENJIFxcdTAwMjZcXHUwMDI2IEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBDRkc4MDIxMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo1OlxcdGRlcGVuZHMgb24gSVdMTUVJIHx8ICFJV0xNRUlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNi1cXHRzZWxlY3QgRldfTE9BREVSXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9NDk9Y29uZmlnIElXTFdJRklfS1VOSVRfVEVTVFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTAtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NTE6XFx0ZGVwZW5kcyBvbiBLVU5JVFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01Mi1cXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTU4PWNvbmZpZyBJV0xXSUZJX0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTktXFx0Ym9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo2MDpcXHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjYxOlxcdGRlcGVuZHMgb24gSVdMTVZNIHx8IElXTERWTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy02Mi1cXHRzZWxlY3QgTEVEU19UUklHR0VSU1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTY2PWNvbmZpZyBJV0xEVk1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNjctXFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgRFZNIEZpcm13YXJlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjY4OlxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNjktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTc0PWNvbmZpZyBJV0xNVk1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy03Ni1cXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6Nzc6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo3ODpcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTc5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz04ND1jb25maWcgSVdMTUxEXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctODYtXFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjg3OlxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6ODg6XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy04OS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTAyPWNvbW1lbnQgXFxcIldBUk5JTkc6IGl3bHdpZmkgaXMgdXNlbGVzcyB3aXRob3V0IElXTERWTSBvciBJV0xNVk0gb3IgSVdMTUxEXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMDM6XFx0ZGVwZW5kcyBvbiBJV0xEVk09biBcXHUwMDI2XFx1MDAyNiBJV0xNVk09biBcXHUwMDI2XFx1MDAyNiBJV0xNTEQ9blxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTMxPWNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMyLVxcdGJvb2wgXFxcIml3bHdpZmkgZGVidWdmcyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzM6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzNC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTM5PWNvbmZpZyBJV0xXSUZJX0RFVklDRV9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTE0MC1cXHRib29sIFxcXCJpd2x3aWZpIGRldmljZSBhY2Nlc3MgdHJhY2luZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTQxOlxcdGRlcGVuZHMgb24gRVZFTlRfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNDItXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTYwPWNvbmZpZyBJV0xNRUlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTYxLVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBNYW5hZ2VtZW50IEVuZ2luZSBjb21tdW5pY2F0aW9uIG92ZXIgV0xBTlxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTYyOlxcdGRlcGVuZHMgb24gSU5URUxfTUVJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjE2MzpcXHRkZXBlbmRzIG9uIFBNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjE2NDpcXHRkZXBlbmRzIG9uIENGRzgwMjExXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjE2NTpcXHRkZXBlbmRzIG9uIEJST0tFTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNjYtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDoxMTowMC43MTE4MzY3M1oiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDMwODM3NDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIEludGVsIFdpcmVsZXNzIERyaXZlcnMqKlxuXG5Pa2F5LCBzbyBJJ20gbWFwcGluZyBvdXQgdGhlIGRlcGVuZGVuY2llcyBoZXJlIGZvciB0aGUgSW50ZWwgd2lyZWxlc3MgZHJpdmVycywgZmlndXJpbmcgb3V0IHdoaWNoIGNvbXBvbmVudHMgYXJlIGtleSBmb3IgZnV6emluZy4gYElXTFdJRklgIHJlbGllcyBvbiBgUENJYCwgYEhBU19JT01FTWAsIGFuZCBgQ0ZHODAyMTFgLCBzbyB0aGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGVuLCBgSVdMTVZNYCBhbmQgYElXTE1MRGAgYm90aCBkZXBlbmQgb24gYE1BQzgwMjExYC4gSSdsbCBmb2N1cyBvbiBgSVdMV0lGSWAsIGBFRklgLCBgSVdMTVZNYCwgYW5kIGBJV0xNTERgIGFzIG15IHByaW1hcnkgdGFyZ2V0cyBmb3Igbm93LlxuXG5Ob3csIGxldCdzIGRyaWxsIGRvd24gYW5kIGlkZW50aWZ5IHNwZWNpZmljIGZ1bmN0aW9ucyB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgdnVsbmVyYWJsZS4gQWZ0ZXIgY2hlY2tpbmcgdGhlIEZvY3VzU3ltYm9scywgSSBzZWUgdGhhdCBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCB3YXMgbW9kaWZpZWQg4oCTIHRoYXQncyBkZWZpbml0ZWx5IGludGVyZXN0aW5nLiBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgIGNhbGxzIHRoYXQgb25lLCBhbmQgYGl3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyYCBpcyByZXNwb25zaWJsZSBmb3IgcmVhZGluZyB0aGUgVUVGSSB2YXJpYWJsZS4gQWxsIG9mIHRoZXNlIGZ1bmN0aW9ucyBsb29rIGxpa2UgcHJpbWUgY2FuZGlkYXRlcyBmb3IgZnV6emluZy4gVGhleSBoYW5kbGUgaW50ZXJhY3Rpb25zIHdpdGggVUVGSSBhbmQgbGlrZWx5IGludm9sdmUgc29tZSBjcml0aWNhbCBkYXRhIHBhcnNpbmcuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZXNlLlxuXG5BbHJpZ2h0LCB0aW1lIHRvIHNldCB0aGUgcmVzdWx0cyBhbmQgbW92ZSBvbiB0byB0aGUgbmV4dCBwaGFzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAwODUsIk91dHB1dFRva2VucyI6MTM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjExOjA2LjE0MjY3NjY2NVoiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDQ0MTM3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVdMV0lGSVwiLFxuICAgIFwiRUZJXCIsXG4gICAgXCJJV0xNVk1cIixcbiAgICBcIklXTE1MRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIml3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZVwiLFxuICAgIFwiaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNcIixcbiAgICBcIml3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHdoZW4gcGFyc2luZyBVRUZJIHZhcmlhYmxlcyBmb3IgcmVkdWNlZCBwb3dlciBzZXR0aW5ncyBpbiB0aGUgaXdsd2lmaSBkcml2ZXIuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uIHdoZW4gc3BlY2lmaWMgVUVGSSB2YXJpYWJsZXMgYXJlIHByZXNlbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVdMV0lGSVwiLFxuICAgIFwiRUZJXCIsXG4gICAgXCJJV0xNVk1cIixcbiAgICBcIklXTE1MRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIml3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZVwiLFxuICAgIFwiaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNcIixcbiAgICBcIml3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHdoZW4gcGFyc2luZyBVRUZJIHZhcmlhYmxlcyBmb3IgcmVkdWNlZCBwb3dlciBzZXR0aW5ncyBpbiB0aGUgaXdsd2lmaSBkcml2ZXIuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uIHdoZW4gc3BlY2lmaWMgVUVGSSB2YXJpYWJsZXMgYXJlIHByZXNlbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow8cm9x[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-15 19:49:27 +0000 UTC FinishedAt: 2026-07-15 20:11:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IWLWIFI", "EFI", "IWLMVM", "IWLMLD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IWLWIFI", "EFI", "IWLMVM", "IWLMLD" ], "series_id": "7154841b-ca2b-4c9f-9d8e-affc90f92a0f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "iwl_uefi_reduce_power_parse", "iwl_pnvm_load_reduce_power_to_trans", "iwl_uefi_get_reduced_power" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lXTFdJRkkmIzM0OywKICAgICYjMzQ7RUZJJiMzNDssCiAgICAmIzM0O0lXTE1WTSYjMzQ7LAogICAgJiMzNDtJV0xNTEQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2UmIzM0OywKICAgICYjMzQ7aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnMmIzM0OywKICAgICYjMzQ7aXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHdoZW4gcGFyc2luZyBVRUZJIHZhcmlhYmxlcyBmb3IgcmVkdWNlZCBwb3dlciBzZXR0aW5ncyBpbiB0aGUgaXdsd2lmaSBkcml2ZXIuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uIHdoZW4gc3BlY2lmaWMgVUVGSSB2YXJpYWJsZXMgYXJlIHByZXNlbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzZjcxN2QyOTU4YzIyYjYwM2RkMzg1MmE1MjRkNzljNmEyODM1Njc3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMjA6MDg6NDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1xuaW5kZXggMmVmMGE3YTkyMGFkYjUuLjRjZDM2YjQyMjYyYzM3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXG5AQCAtMjQ4LDYgJiM0MzsyNDgsMTIgQEAgaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbiBcdFx0XHRJV0xfREVCVUdfRlcodHJhbnMsXG4gXHRcdFx0XHQgICAgIFwmIzM0O0dvdCBJV0xfVUNPREVfVExWX1BOVk1fU0tVIGxlbiAlZFxcblwmIzM0OyxcbiBcdFx0XHRcdCAgICAgdGx2X2xlbik7XG4mIzQzO1x0XHRcdGlmICh0bHZfbGVuIFx1MDAzYyBzaXplb2YoKnRsdl9za3VfaWQpKSB7XG4mIzQzO1x0XHRcdFx0SVdMX0VSUih0cmFucywgXCYjMzQ7aW52YWxpZCBQTlZNIFNLVSBUTFYgbGVuOiAldVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdHRsdl9sZW4pO1xuJiM0MztcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0XHR9XG4mIzQzO1xuIFx0XHRcdElXTF9ERUJVR19GVyh0cmFucywgXCYjMzQ7c2t1X2lkIDB4JTB4IDB4JTB4IDB4JTB4XFxuXCYjMzQ7LFxuIFx0XHRcdFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMF0pLFxuIFx0XHRcdFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMV0pLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjA4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lXTFdJRkkmIzM0OywKICAgICYjMzQ7RUZJJiMzNDssCiAgICAmIzM0O0lXTE1WTSYjMzQ7LAogICAgJiMzNDtJV0xNTEQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2UmIzM0OywKICAgICYjMzQ7aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnMmIzM0OywKICAgICYjMzQ7aXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHdoZW4gcGFyc2luZyBVRUZJIHZhcmlhYmxlcyBmb3IgcmVkdWNlZCBwb3dlciBzZXR0aW5ncyBpbiB0aGUgaXdsd2lmaSBkcml2ZXIuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uIHdoZW4gc3BlY2lmaWMgVUVGSSB2YXJpYWJsZXMgYXJlIHByZXNlbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNmNzE3ZDI5NThjMjJiNjAzZGQzODUyYTUyNGQ3OWM2YTI4MzU2NzcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxNSAyMDowODo0MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMKaW5kZXggMmVmMGE3YTkyMGFkYjUuLjRjZDM2YjQyMjYyYzM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYwpAQCAtMjQ4LDYgJiM0MzsyNDgsMTIgQEAgaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywKIAkJCUlXTF9ERUJVR19GVyh0cmFucywKIAkJCQkgICAgICYjMzQ7R290IElXTF9VQ09ERV9UTFZfUE5WTV9TS1UgbGVuICVkXG4mIzM0OywKIAkJCQkgICAgIHRsdl9sZW4pOwomIzQzOwkJCWlmICh0bHZfbGVuICZsdDsgc2l6ZW9mKCp0bHZfc2t1X2lkKSkgewomIzQzOwkJCQlJV0xfRVJSKHRyYW5zLCAmIzM0O2ludmFsaWQgUE5WTSBTS1UgVExWIGxlbjogJXVcbiYjMzQ7LAomIzQzOwkJCQkJdGx2X2xlbik7CiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJCX0KJiM0MzsKIAkJCUlXTF9ERUJVR19GVyh0cmFucywgJiMzNDtza3VfaWQgMHglMHggMHglMHggMHglMHhcbiYjMzQ7LAogCQkJCSAgICAgbGUzMl90b19jcHUodGx2X3NrdV9pZC0mZ3Q7ZGF0YVswXSksCiAJCQkJICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLSZndDtkYXRhWzFdKSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4MgoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDEyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBGaXJtd2FyZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jYC4gU3BlY2lmaWNhbGx5LCBpdCBhcHBlYXJzIHRvIGJlIGFkZGluZyBhIGNydWNpYWwgYm91bmRzIGNoZWNrIHdpdGhpbiB0aGUgYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgZnVuY3Rpb24uIFRoZSBpbnRlbnQgaXMgY2xlYXI6IHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93IGJ5IHZlcmlmeWluZyB0aGUgdmFsaWRpdHkgb2YgdGhlIHJlY2VpdmVkIGRhdGEuCgpJdCYjMzk7cyBhZGRpbmcgYSBjb21wYXJpc29uOiBgdGx2X2xlbmAgbmVlZHMgdG8gYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBzaXplb2YoKnRsdl9za3VfaWQpYC4gSWYgYHRsdl9sZW5gIGlzIHNtYWxsZXIgdGhhbiBleHBlY3RlZCwgdGhlIGZ1bmN0aW9uIG5vdyBjb3JyZWN0bHkgcmV0dXJucyBgLUVJTlZBTGAuIFRoaXMgaXMgYSBjbGFzc2ljIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyB0ZWNobmlxdWUsIGFuZCBhIHNlbnNpYmxlIGFkZGl0aW9uIHRvIHNhZmVndWFyZCBhZ2FpbnN0IG1hbGZvcm1lZCBkYXRhIGR1cmluZyBmaXJtd2FyZSBwcm9jZXNzaW5nLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQsIGJ1dCB0aGlzIHBhdGNoIGxvb2tzIGxpa2UgYSBnb29kIHN0ZXAgdG93YXJkIGVuaGFuY2VkIHJvYnVzdG5lc3MuIEkmIzM5O2xsIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgZGF0YSBzdHJ1Y3R1cmUgaW52b2x2ZWQgdG9vLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTE2Nj1zdGF0aWMgaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9zZWN0aW9uKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTIxOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjIyMDppbnQgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjIxLVx0XHRcdFx0Y29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU0MAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZywgdGhpbmtpbmcgdGhyb3VnaCBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYDoKCioqQW5hbHl6aW5nIGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZSoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgdGhpcyBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYCBmdW5jdGlvbiBpcyBhY3R1YWxseSBkb2luZy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gcmVhZCB0aHJvdWdoIHRoZSBjb2RlIHRvIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UuIEkmIzM5O2xsIG5lZWQgdG8gcGlucG9pbnQgaXRzIGZ1bmN0aW9uIGFuZCBob3cgaXQgY29udHJpYnV0ZXMgdG8gcG93ZXIgbWFuYWdlbWVudCB3aXRoaW4gdGhlIFVFRkkgZW52aXJvbm1lbnQsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIEludGVsIHdpcmVsZXNzIGRldmljZXMuIERvZXMgaXQgcGFyc2UgY29uZmlndXJhdGlvbiBkYXRhPyBEb2VzIGl0IGludGVyYWN0IHdpdGggdGhlIGZpcm13YXJlIGluIGFueSB3YXk/IERvZXMgaXQgZGVhbCB3aXRoIGRldmljZS1zcGVjaWZpYyByZWdpc3RlcnM/IEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3Iga2V5IGRhdGEgc3RydWN0dXJlcywgZnVuY3Rpb24gY2FsbHMgdG8gb3RoZXIgcGFydHMgb2YgdGhlIGRyaXZlciwgYW5kIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgVUVGSSBzeXN0ZW0uIEkmIzM5O2xsIGJlIHdhdGNoaW5nIGZvciBhbnkgZXZpZGVuY2Ugb2Y6CgoqICAgKipDb25maWd1cmF0aW9uIFBhcnNpbmcqKjogSXMgaXQgcmVhZGluZyBhIHNldHVwIHRhYmxlPyBBIHNwZWNpZmljIEVGSSB2YXJpYWJsZT8KKiAgICoqUG93ZXIgU3RhdGUgVHJhbnNpdGlvbnMqKjogRG9lcyB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5IHNldCBwb3dlciBtYW5hZ2VtZW50IHJlbGF0ZWQgcmVnaXN0ZXJzLCBvciBtYWtlIGZ1bmN0aW9uIGNhbGxzIHRoYXQgd2lsbD8KKiAgICoqRXJyb3IgSGFuZGxpbmcqKjogSG93IGRvZXMgaXQgbWFuYWdlIGZhaWx1cmUgY29uZGl0aW9ucz8gQXJlIHRoZXJlIHNwZWNpZmljIGVycm9yIGNvZGVzPyBBcmUgdGhlcmUgYW55IHJldHVybiB2YWx1ZXMgaW5kaWNhdGluZyBzdWNjZXNzIG9yIGZhaWx1cmU/CiogICAqKkludGVyYWN0aW9uIHdpdGggSGFyZHdhcmUqKjogSXMgaXQgcHJvYmluZyBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgb3Igb25seSBkZWFsaW5nIHdpdGggYSBzcGVjaWZpYyBwb3dlciBzdGF0ZSByZXF1ZXN0PwoqICAgKipTZWN1cml0eSBDb25jZXJucyoqOiBEb2VzIHRoaXMgZnVuY3Rpb24gaW50ZXJhY3Qgd2l0aCBhbnkgc2Vuc2l0aXZlIGRhdGEgb3IgY29uZmlndXJhdGlvbnM/CgpJJiMzOTtsbCBiZSBzcGVjaWZpY2FsbHkgbG9va2luZyB0byBzZWUgaWYgdGhlcmUgYXJlIG9wdGltaXphdGlvbnMgb3IgcG93ZXItc2F2aW5nIGFkanVzdG1lbnRzLiBJdCBpcyBpbXBvcnRhbnQgdG8ga25vdyB3aGljaCBwb3dlciBzZXR0aW5ncywgYW5kIHRoZWlyIHJlc3VsdGluZyBlZmZlY3Qgb24gdGhlIGRldmljZSwgYXJlIGJlaW5nIGNvbmZpZ3VyZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgZnVuY3Rpb24mIzM5O3Mgcm9sZSBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgcG93ZXIgbWFuYWdlbWVudCBmb3IgSW50ZWwgd2lyZWxlc3MgZGV2aWNlcyB3aXRoaW4gdGhlIFVFRkkgZW52aXJvbm1lbnQuIEkmIzM5O2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55dGhpbmcgbm9uLW9idmlvdXMsIHBlcmhhcHMgc29tZXRoaW5nIHRoYXQgaXNuJiMzOTt0IGltbWVkaWF0ZWx5IGFwcGFyZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMjA6XHRpbnQgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuIDIyMTpcdFx0XHRcdFx0Y29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4sXG4gMjIyOlx0XHRcdFx0XHRzdHJ1Y3QgaXdsX3Budm1faW1hZ2UgKnBudm1fZGF0YSxcbiAyMjM6XHRcdFx0XHRcdF9fbGUzMiBza3VfaWRbM10pXG4gMjI0Olx0e1xuIDIyNTpcdFx0Y29uc3Qgc3RydWN0IGl3bF91Y29kZV90bHYgKnRsdjtcbiAyMjY6XHRcbiAyMjc6XHRcdElXTF9ERUJVR19GVyh0cmFucywgXCYjMzQ7UGFyc2luZyBSRURVQ0VfUE9XRVIgZGF0YVxcblwmIzM0Oyk7XG4gMjI4Olx0XG4gMjI5Olx0XHR3aGlsZSAobGVuIFx1MDAzZT0gc2l6ZW9mKCp0bHYpKSB7XG4gMjMwOlx0XHRcdHUzMiB0bHZfbGVuLCB0bHZfdHlwZTtcbiAyMzE6XHRcbiAyMzI6XHRcdFx0bGVuIC09IHNpemVvZigqdGx2KTtcbiAyMzM6XHRcdFx0dGx2ID0gKGNvbnN0IHZvaWQgKilkYXRhO1xuIDIzNDpcdFxuIDIzNTpcdFx0XHR0bHZfbGVuID0gbGUzMl90b19jcHUodGx2LVx1MDAzZWxlbmd0aCk7XG4gMjM2Olx0XHRcdHRsdl90eXBlID0gbGUzMl90b19jcHUodGx2LVx1MDAzZXR5cGUpO1xuIDIzNzpcdFxuIDIzODpcdFx0XHRpZiAobGVuIFx1MDAzYyB0bHZfbGVuKSB7XG4gMjM5Olx0XHRcdFx0SVdMX0VSUih0cmFucywgXCYjMzQ7aW52YWxpZCBUTFYgbGVuOiAlemQvJXVcXG5cJiMzNDssXG4gMjQwOlx0XHRcdFx0XHRsZW4sIHRsdl9sZW4pO1xuIDI0MTpcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDI0MjpcdFx0XHR9XG4gMjQzOlx0XG4gMjQ0Olx0XHRcdGlmICh0bHZfdHlwZSA9PSBJV0xfVUNPREVfVExWX1BOVk1fU0tVKSB7XG4gMjQ1Olx0XHRcdFx0Y29uc3Qgc3RydWN0IGl3bF9za3VfaWQgKnRsdl9za3VfaWQgPVxuIDI0NjpcdFx0XHRcdFx0KGNvbnN0IHZvaWQgKikoZGF0YSAmIzQzOyBzaXplb2YoKnRsdikpO1xuIDI0NzpcdFxuIDI0ODpcdFx0XHRcdElXTF9ERUJVR19GVyh0cmFucyxcbiAyNDk6XHRcdFx0XHRcdCAgICAgXCYjMzQ7R290IElXTF9VQ09ERV9UTFZfUE5WTV9TS1UgbGVuICVkXFxuXCYjMzQ7LFxuIDI1MDpcdFx0XHRcdFx0ICAgICB0bHZfbGVuKTtcbiAyNTE6XHRcdFx0XHRpZiAodGx2X2xlbiBcdTAwM2Mgc2l6ZW9mKCp0bHZfc2t1X2lkKSkge1xuIDI1MjpcdFx0XHRcdFx0SVdMX0VSUih0cmFucywgXCYjMzQ7aW52YWxpZCBQTlZNIFNLVSBUTFYgbGVuOiAldVxcblwmIzM0OyxcbiAyNTM6XHRcdFx0XHRcdFx0dGx2X2xlbik7XG4gMjU0Olx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAyNTU6XHRcdFx0XHR9XG4gMjU2Olx0XG4gMjU3Olx0XHRcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcJiMzNDtza3VfaWQgMHglMHggMHglMHggMHglMHhcXG5cJiMzNDssXG4gMjU4Olx0XHRcdFx0XHQgICAgIGxlMzJfdG9fY3B1KHRsdl9za3VfaWQtXHUwMDNlZGF0YVswXSksXG4gMjU5Olx0XHRcdFx0XHQgICAgIGxlMzJfdG9fY3B1KHRsdl9za3VfaWQtXHUwMDNlZGF0YVsxXSksXG4gMjYwOlx0XHRcdFx0XHQgICAgIGxlMzJfdG9fY3B1KHRsdl9za3VfaWQtXHUwMDNlZGF0YVsyXSkpO1xuIDI2MTpcdFxuIDI2MjpcdFx0XHRcdGRhdGEgJiM0Mzs9IHNpemVvZigqdGx2KSAmIzQzOyBBTElHTih0bHZfbGVuLCA0KTtcbiAyNjM6XHRcdFx0XHRsZW4gLT0gQUxJR04odGx2X2xlbiwgNCk7XG4gMjY0Olx0XG4gMjY1Olx0XHRcdFx0aWYgKHNrdV9pZFswXSA9PSB0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMF0gXHUwMDI2XHUwMDI2XG4gMjY2Olx0XHRcdFx0ICAgIHNrdV9pZFsxXSA9PSB0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMV0gXHUwMDI2XHUwMDI2XG4gMjY3Olx0XHRcdFx0ICAgIHNrdV9pZFsyXSA9PSB0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMl0pIHtcbiAyNjg6XHRcdFx0XHRcdGludCByZXQgPSBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfc2VjdGlvbih0cmFucyxcbiAyNjk6XHRcdFx0XHRcdFx0XHRcdFx0ICAgIGRhdGEsIGxlbixcbiAyNzA6XHRcdFx0XHRcdFx0XHRcdFx0ICAgIHBudm1fZGF0YSk7XG4gMjcxOlx0XHRcdFx0XHRpZiAoIXJldClcbiAyNzI6XHRcdFx0XHRcdFx0cmV0dXJuIDA7XG4gMjczOlx0XHRcdFx0fSBlbHNlIHtcbiAyNzQ6XHRcdFx0XHRcdElXTF9ERUJVR19GVyh0cmFucywgXCYjMzQ7U0tVIElEIGRpZG4mIzM5O3QgbWF0Y2ghXFxuXCYjMzQ7KTtcbiAyNzU6XHRcdFx0XHR9XG4gMjc2Olx0XHRcdH0gZWxzZSB7XG4gMjc3Olx0XHRcdFx0ZGF0YSAmIzQzOz0gc2l6ZW9mKCp0bHYpICYjNDM7IEFMSUdOKHRsdl9sZW4sIDQpO1xuIDI3ODpcdFx0XHRcdGxlbiAtPSBBTElHTih0bHZfbGVuLCA0KTtcbiAyNzk6XHRcdFx0fVxuIDI4MDpcdFx0fVxuIDI4MTpcdFxuIDI4MjpcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gMjgzOlx0fVxuIDI4NDpcdFxuIDI4NTpcdHU4ICppd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXG4gMjg2Olx0e1xuIDI4NzpcdFx0c3RydWN0IHBudm1fc2t1X3BhY2thZ2UgKnBhY2thZ2U7XG4gMjg4Olx0XHR1bnNpZ25lZCBsb25nIHBhY2thZ2Vfc2l6ZTtcbiAyODk6XHRcdHU4ICpkYXRhO1xuIDI5MDpcdFxuIDI5MTpcdFx0cGFja2FnZSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZSh0cmFucyxcbiAyOTI6XHRcdFx0XHRcdFx0XHQgSVdMX1VFRklfUkVEVUNFRF9QT1dFUl9OQU1FLFxuIDI5MzpcdFx0XHRcdFx0XHRcdCBcJiMzNDtSZWR1Y2VkIFBvd2VyXCYjMzQ7LFxuIDI5NDpcdFx0XHRcdFx0XHRcdCBzaXplb2YoKnBhY2thZ2UpLFxuIDI5NTpcdFx0XHRcdFx0XHRcdCBcdTAwMjZwYWNrYWdlX3NpemUpO1xuIDI5NjpcdFx0aWYgKElTX0VSUihwYWNrYWdlKSlcbiAyOTc6XHRcdFx0cmV0dXJuIEVSUl9DQVNUKHBhY2thZ2UpO1xuIDI5ODpcdFxuIDI5OTpcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcJiMzNDtyZXYgJWQsIHRvdGFsX3NpemUgJWQsIG5fc2t1cyAlZFxcblwmIzM0OyxcbiAzMDA6XHRcdFx0ICAgICBwYWNrYWdlLVx1MDAzZXJldiwgcGFja2FnZS1cdTAwM2V0b3RhbF9zaXplLCBwYWNrYWdlLVx1MDAzZW5fc2t1cyk7XG4gMzAxOlx0XG4gMzAyOlx0XHQqbGVuID0gcGFja2FnZV9zaXplIC0gc2l6ZW9mKCpwYWNrYWdlKTtcbiAzMDM6XHRcdGRhdGEgPSBrbWVtZHVwKHBhY2thZ2UtXHUwMDNlZGF0YSwgKmxlbiwgR0ZQX0tFUk5FTCk7XG4gMzA0Olx0XHRpZiAoIWRhdGEpIHtcbiAzMDU6XHRcdFx0a2ZyZWUocGFja2FnZSk7XG4gMzA2Olx0XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuIDMwNzpcdFx0fVxuIDMwODpcdFxuIDMwOTpcdFx0a2ZyZWUocGFja2FnZSk7XG4gMzEwOlx0XG4gMzExOlx0XHRyZXR1cm4gZGF0YTtcbiAzMTI6XHR9XG4gMzEzOlx0XG4gMzE0Olx0c3RhdGljIGludCBpd2xfdWVmaV9zdGVwX3BhcnNlKHN0cnVjdCB1ZWZpX2Nudl9jb21tb25fc3RlcF9kYXRhICpjb21tb25fc3RlcF9kYXRhLFxuIDMxNTpcdFx0XHRcdCAgICAgICBzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucylcbiAzMTY6XHR7XG4gMzE3Olx0XHRpZiAoY29tbW9uX3N0ZXBfZGF0YS1cdTAwM2VyZXZpc2lvbiAhPSAxKVxuIDMxODpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAzMTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjEwCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2UgRnVuY3Rpb24qKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYC4gVGhlIG5hbWUgaXRzZWxmIHN1Z2dlc3RzIGl0JiMzOTtzIGhhbmRsaW5nIHRoZSBwYXJzaW5nIG9mIFVFRkkgdmFyaWFibGVzLCBzcGVjaWZpY2FsbHkgaW4gcmVsYXRpb24gdG8gcG93ZXIgcmVkdWN0aW9uLCBwcmVzdW1hYmx5IGZvciBhbiBJbnRlbCB3aXJlbGVzcyBkZXZpY2UuIExldCYjMzk7cyBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBzbyB0aGUgbmF0dXJhbCBuZXh0IHN0ZXAgaXMgdG8gdHJhY2UgdGhlIGNhbGwgZ3JhcGguIEkmIzM5O2xsIG5lZWQgdG8gaWRlbnRpZnkgcHJlY2lzZWx5ICp3aGVyZSogdGhpcyBmdW5jdGlvbiwgYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAsIGlzIGJlaW5nIGludm9rZWQgd2l0aGluIHRoZSBkcml2ZXIuIERldGVybWluaW5nIHRoZSBjYWxsIHNpdGVzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IHdpdGhpbiB3aGljaCBwb3dlciBtYW5hZ2VtZW50IGRlY2lzaW9ucyBhcmUgbWFkZSBhbmQgaG93IHRoZXNlIFVFRkkgdmFyaWFibGVzIGFyZSB1bHRpbWF0ZWx5IHV0aWxpemVkLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgcGFyc2VkIGRhdGEgaXMgdXNlZCB0byBvcHRpbWl6ZSB0aGUgcG93ZXIgY29uc3VtcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDA3PWl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQzMjpcdHJldCA9IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZSh0cmFucywgZGF0YSwgbGVuZ3RoLCBwbnZtX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MzMtXHRcdFx0XHRcdCAgc2t1X2lkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0xNjY9c3RhdGljIGludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfc2VjdGlvbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyMjA6aW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTIyMS1cdFx0XHRcdGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oPTMyNT11OCAqaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjMyNjppbnQgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMzI3LVx0XHRcdFx0Y29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg9MzYwPXN0YXRpYyBpbmxpbmUgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozNjE6aXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMzYyLVx0XHRcdCAgICBjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDQ2CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczoKCioqVHJhY2luZyBEb3duIHRoZSBDYWxsIENoYWluKioKCkFscmlnaHQsIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIGZ1bmN0aW9uLCBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBidXJpZWQgZGVlcCB3aXRoaW4gdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doZXJlIHRoZSBoZWNrIGlzIHRoaXMgY2FsbGVkIGZyb20/JiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhpcyBmdW5jdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGVyZSB0aGUgY2FsbCB0byBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgIG9yaWdpbmF0ZXMuIFRpbWUgdG8gc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSBjYWxsIGdyYXBoIHRvIGZpZ3VyZSBvdXQgaXRzIHB1cnBvc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2l3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDA2PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0MDc6aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MDgtXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IGl3bF91Y29kZV9jYXBhYmlsaXRpZXMgKmNhcGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDU1PWludCBpd2xfcG52bV9sb2FkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ2Ny1cdGl3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyh0cmFucywgZncsIHNrdV9pZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0Njg6XHRpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyh0cmFucywgXHUwMDI2ZnctXHUwMDNldWNvZGVfY2FwYSwgc2t1X2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ2OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjAxNwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHNpdHVhdGlvbjoKCioqSW52ZXN0aWdhdGluZyB0aGUgSW50ZWwgV2lyZWxlc3MgRmlybXdhcmUgTG9hZGluZyBQcm9jZXNzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIEludGVsIHdpcmVsZXNzIGZpcm13YXJlIGdldHMgbG9hZGVkLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZm9jdXNpbmcgb24gYGl3bF9wbnZtX2xvYWRgLiBJIGtub3cgdGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkIGZyb20gYGl3bF9tdm1fbG9hZF91Y29kZV93YWl0X2FsaXZlYCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMsIGJ1dCBJIG5lZWQgdG8gcGlucG9pbnQgZXZlcnkgY2FsbCBzaXRlLiBJJiMzOTttIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBkZXRlcm1pbmUgZXZlcnkgaW5zdGFuY2Ugd2hlcmUgYGl3bF9wbnZtX2xvYWRgIGlzIGFjdHVhbGx5IGNhbGxlZC4gR290dGEgdW5kZXJzdGFuZCB0aGUgZW50aXJlIGNoYWluIG9mIGV2ZW50cyB0byBoYXZlIGEgZ29vZCBwaWN0dXJlIG9mIHdoYXQmIzM5O3MgaGFwcGVuaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfcG52bV9sb2FkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzU5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzozNjA6aXdsX3Budm1fbG9hZF9wbnZtX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzYxLVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgaXdsX2Z3ICpmdyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz00MDY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQwNzppd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQwOC1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgaXdsX3Vjb2RlX2NhcGFiaWxpdGllcyAqY2FwYSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0NTU6aW50IGl3bF9wbnZtX2xvYWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NTYtXHRcdCAgc3RydWN0IGl3bF9ub3RpZl93YWl0X2RhdGEgKm5vdGlmX3dhaXQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDY3Olx0aXdsX3Budm1fbG9hZF9wbnZtX3RvX3RyYW5zKHRyYW5zLCBmdywgc2t1X2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ2ODpcdGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHRyYW5zLCBcdTAwMjZmdy1cdTAwM2V1Y29kZV9jYXBhLCBza3VfaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDY5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ4MC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0ODE6SVdMX0VYUE9SVF9TWU1CT0woaXdsX3Budm1fbG9hZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmgtMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uaDoxNjppbnQgaXdsX3Budm1fbG9hZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5oLTE3LVx0XHQgIHN0cnVjdCBpd2xfbm90aWZfd2FpdF9kYXRhICpub3RpZl93YWl0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2Z3LmM9MjcyPXN0YXRpYyBpbnQgaXdsX21sZF9ydW5fZndfaW5pdF9zZXF1ZW5jZShzdHJ1Y3QgaXdsX21sZCAqbWxkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2Z3LmMtMjg5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvZncuYzoyOTA6XHRyZXQgPSBpd2xfcG52bV9sb2FkKG1sZC1cdTAwM2V0cmFucywgXHUwMDI2bWxkLVx1MDAzZW5vdGlmX3dhaXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9mdy5jLTI5MS1cdFx0XHQgICAgbWxkLVx1MDAzZWZ3LCBhbGl2ZV9kYXRhLnNrdV9pZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYz0yODY9c3RhdGljIGludCBpd2xfbXZtX2xvYWRfdWNvZGVfd2FpdF9hbGl2ZShzdHJ1Y3QgaXdsX212bSAqbXZtLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMtNDA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYzo0MDc6XHRyZXQgPSBpd2xfcG52bV9sb2FkKG12bS1cdTAwM2V0cmFucywgXHUwMDI2bXZtLVx1MDAzZW5vdGlmX3dhaXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jLTQwOC1cdFx0XHQgICAgbXZtLVx1MDAzZWZ3LCBhbGl2ZV9kYXRhLnNrdV9pZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNDIKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpd2x3aWZpIEZpcm13YXJlIExvYWRpbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIGl3bHdpZmkgZmlybXdhcmUgbG9hZGluZyBzZXF1ZW5jZSwgc3BlY2lmaWNhbGx5IGhvdyB0aGUgcmVkdWNlZCBwb3dlciBQTlZNIGRhdGEgaXMgaGFuZGxlZC4gTXkgcHJpbWFyeSBpbnRlcmVzdCBpcyBpbiB1bmRlcnN0YW5kaW5nIHRoZSBkYXRhIHNvdXJjZS4gRmlyc3QsIEkgc2VlIHRoaXMgaXMgcGFydCBvZiB0aGUgb3ZlcmFsbCBmaXJtd2FyZSBsb2FkaW5nLCBuYXR1cmFsbHkuIEJ1dCwgd2hlcmUgaXMgdGhlIGRhdGEgYWN0dWFsbHkgY29taW5nIGZyb20/CgpJIGZpbmQgYGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zYCwgYW5kIHRoYXQmIzM5O3MgdGhlIGtleS4gSW5zaWRlLCB0aGUgY29kZSB0cmllcyBgaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIodHJhbnMsICZhbXA7bGVuZ3RoKWAuIEludGVyZXN0aW5nLiBJZiB0aGF0IGZhaWxzLCBpdCBmYWxscyBiYWNrIHRvIGBpd2xfcG52bV9nZXRfZnJvbV9mcyh0cmFucywgJmFtcDtkYXRhLCAmYW1wO2xlbmd0aClgLiBBaGEhIE5vdyBpdCYjMzk7cyBjbGVhcjogYGl3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyYCBpcyByZWFkaW5nIGZyb20gVUVGSSB2YXJpYWJsZXMsIEkmIzM5O20gc3VyZSBvZiBpdC4gQW5kIGBpd2xfcG52bV9nZXRfZnJvbV9mc2AgaXMgdGhlIGZhbGxiYWNrLCB3aGljaCwgbmF0dXJhbGx5LCB1c2VzIGZpcm13YXJlIGZpbGVzIGxpa2UgYGl3bHdpZmktKi5wbnZtYC4KCldhaXQgYSBtaW51dGUsIGlmIGl0JiMzOTtzIFVFRkksIGl0IG11c3QgYmUgdXNpbmcgc29tZXRoaW5nIGxpa2UgYGVmaXZhcl9lbnRyeV9nZXRgIG9yIGEgc2ltaWxhciBmdW5jdGlvbiB0byBhY2Nlc3MgdGhlIHZhcmlhYmxlLiBJIG5lZWQgdG8gYmUgc3VyZTsgbGV0IG1lIGxvb2sgYXQgYGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZWAgdG8gdmVyaWZ5IHRoZSBsb3ctbGV2ZWwgdmFyaWFibGUgYWNjZXNzLiBUaGlzIGlzIGltcG9ydGFudCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgc2VjdXJpdHkgaW1wbGljYXRpb25zIG9mIHRoaXMgcHJvY2VzcywgaG93IHVwZGF0ZXMgYXJlIGhhbmRsZWQsIGFuZCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz04Mj1zdGF0aWMgdm9pZCAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4Mzppd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg0LVx0XHRcdFx0ICAgIGVmaV9ndWlkX3QgKmd1aWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MTE4PXN0YXRpYyB2b2lkICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjExOTppd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMjAtXHRcdFx0ICAgICAgIGVmaV9jaGFyMTZfdCAqdWVmaV92YXJfbmFtZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMjQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTI1Olx0cmV0dXJuIGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKHRyYW5zLCBcdTAwMjZJV0xfRUZJX1dJRklfR1VJRCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEyNi1cdFx0XHRcdFx0XHQgICB1ZWZpX3Zhcl9uYW1lLCB2YXJfbmFtZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0yODU9dTggKml3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBzaXplX3QgKmxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyOTE6XHRwYWNrYWdlID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjkyLVx0XHRcdFx0XHRcdCBJV0xfVUVGSV9SRURVQ0VEX1BPV0VSX05BTUUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MzI5PXZvaWQgaXdsX3VlZmlfZ2V0X3N0ZXBfdGFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MzM3Olx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKHRyYW5zLCBcdTAwMjZJV0xfRUZJX1dJRklfQlRfR1VJRCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTMzOC1cdFx0XHRcdFx0XHQgICBJV0xfVUVGSV9TVEVQX05BTUUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MzgzPXZvaWQgaXdsX3VlZmlfZ2V0X3Nnb21fdGFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MzkyOlx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZSh0cmFucywgSVdMX1VFRklfU0dPTV9OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzkzLVx0XHRcdFx0XHQgICAgICBcJiMzNDtTR09NXCYjMzQ7LCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz00MjA9dm9pZCBpd2xfdWVmaV9nZXRfdWF0c190YWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo0MjY6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHRyYW5zLCBJV0xfVUVGSV9VQVRTX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MjctXHRcdFx0XHRcdCAgICAgIFwmIzM0O1VBVFNcJiMzNDssIHNpemVvZigqZGF0YSksIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTQzOD12b2lkIGl3bF91ZWZpX2dldF91bmViX3RhYmxlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQ0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjQ0MzpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUodHJhbnMsIElXTF9VRUZJX1VORUJfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQ0NC1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7VU5FQlwmIzM0Oywgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9NDk3PWludCBpd2xfdWVmaV9nZXRfd3Jkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NTA1Olx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVx1MDAzZXRyYW5zLCBJV0xfVUVGSV9XUkRTX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01MDYtXHRcdFx0XHRcdCAgICAgIFwmIzM0O1dSRFNcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9NTQ1PWludCBpd2xfdWVmaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NTU0Olx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVx1MDAzZXRyYW5zLCBJV0xfVUVGSV9FV1JEX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01NTUtXHRcdFx0XHRcdCAgICAgIFwmIzM0O0VXUkRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9NTk5PWludCBpd2xfdWVmaV9nZXRfd2dkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NjA4Olx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVx1MDAzZXRyYW5zLCBJV0xfVUVGSV9XR0RTX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02MDktXHRcdFx0XHRcdCAgICAgIFwmIzM0O1dHRFNcJiMzNDssIFVFRklfV0dEU19UQUJMRV9TSVpFX1JFVjMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9Njc2PWludCBpd2xfdWVmaV9nZXRfcHBhZ190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NjgzOlx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVx1MDAzZXRyYW5zLCBJV0xfVUVGSV9QUEFHX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02ODQtXHRcdFx0XHRcdCAgICAgIFwmIzM0O1BQQUdcJiMzNDssIFVFRklfUFBBR19EQVRBX1NJWkVfVjUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NjkzOlx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVx1MDAzZXRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjk0LVx0XHRcdFx0XHQgICAgICBJV0xfVUVGSV9QUEFHX05BTUUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9NzQ1PWludCBpd2xfdWVmaV9nZXRfdGFzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3NTE6XHR1ZWZpX3RhcyA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVx1MDAzZXRyYW5zLCBJV0xfVUVGSV9XVEFTX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NTItXHRcdFx0XHRcdFx0ICBcJiMzNDtXVEFTXCYjMzQ7LCBzaXplb2YoKnVlZmlfdGFzKSwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9Nzk4PWludCBpd2xfdWVmaV9nZXRfcHdyX2xpbWl0KHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4MDQ6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX1NQTENfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTgwNS1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7U1BMQ1wmIzM0Oywgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9ODIxPWludCBpd2xfdWVmaV9nZXRfbWNjKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwgY2hhciAqbWNjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTgyNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjgyNjpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cdTAwM2V0cmFucywgSVdMX1VFRklfV1JERF9OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODI3LVx0XHRcdFx0XHQgICAgICBcJiMzNDtXUkREXCYjMzQ7LCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz04NTI9aW50IGl3bF91ZWZpX2dldF9lY2t2KHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwgdTMyICpleHRsX2Nsaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04NTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4NTc6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQoZndydC1cdTAwM2V0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg1OC1cdFx0XHRcdFx0XHQgICBcdTAwMjZJV0xfRUZJX1dJRklfQlRfR1VJRCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz04NzY9aW50IGl3bF91ZWZpX2dldF93YmVtKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwgdTMyICp2YWx1ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04ODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4ODE6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX1dCRU1fTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg4Mi1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7V0JFTVwmIzM0Oywgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9ODk5PXN0YXRpYyBpbnQgaXdsX3VlZmlfbG9hZF9kc21fdmFsdWVzKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05MDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo5MDY6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX0RTTV9OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTA3LVx0XHRcdFx0XHQgICAgICBcJiMzNDtEU01cJiMzNDssIHNpemVvZigqZGF0YSksIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTk3Nj1pbnQgaXdsX3VlZmlfZ2V0X3B1bmN0dXJpbmcoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTk4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjk4NDpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cdTAwM2V0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTk4NS1cdFx0XHRcdFx0ICAgICAgSVdMX1VFRklfUFVOQ1RVUklOR19OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTEwMDU9aW50IGl3bF91ZWZpX2dldF9kc2JyKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwgdTMyICp2YWx1ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTAxMDpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZChmd3J0LVx1MDAzZXRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAxMS1cdFx0XHRcdFx0XHQgICBcdTAwMjZJV0xfRUZJX1dJRklfQlRfR1VJRCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0xMDMxPWludCBpd2xfdWVmaV9nZXRfcGh5X2ZpbHRlcnMoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMDM2Olx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVx1MDAzZXRyYW5zLCBJV0xfVUVGSV9XUEZDX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDM3LVx0XHRcdFx0XHQgICAgICBcJiMzNDtXUEZDXCYjMzQ7LCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNDEKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guCgoqKkZ1enppbmcgdGhlIFVFRkkgVmFyaWFibGUgUmVhZHMgaW4gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQqKgoKQWxyaWdodCwgc28gYGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkYCBpcyByZWFkaW5nIFVFRkkgdmFyaWFibGVzLiBJbnRlcmVzdGluZy4gVGhlIHF1ZXN0aW9uIG5vdyBpczogY2FuIEkgZnV6eiB0aGlzPyBUaGUgYW5zd2VyICpzaG91bGQqIGJlIHllcywgZ2l2ZW4gdGhhdCB0aGUga2VybmVsIHJlYWRzIHRoZW0uIE5vdywgdGhlcmUgYXJlIGEgY291cGxlIG9mIHdheXMgdGhpcyBjb3VsZCBoYXBwZW4sIHJpZ2h0PyBTeXprYWxsZXIgY291bGQgbW9jayB0aGUgRUZJIHN1YnN5c3RlbSBhbmQgcHJvdmlkZSBmdXp6ZWQgdmFyaWFibGVzLCBvciB0aGVyZSYjMzk7cyBzb21lICpvdGhlciogcGF0aCB0aGF0IGxlYWRzIHRvIHRoaXMuIEJ1dCBoYW5nIG9uLi4uIEkgZG9uJiMzOTt0IHRoaW5rIHN5emthbGxlciBkaXJlY3RseSBtb2NrcyBFRkkgdmFyaWFibGVzIHVubGVzcyB0aGVyZSYjMzk7cyBzb21lIGV4cGxpY2l0IG1lY2hhbmlzbSBkZWZpbmVkIGZvciBpdCwgYXQgbGVhc3Qgbm90IHRoYXQgSSBjYW4gcmVjYWxsIG9mZiB0aGUgdG9wIG9mIG15IGhlYWQuIAoKV2FpdCBhIG1pbnV0ZS4uLiBkaWRuJiMzOTt0IEkgc2VlIHNvbWV0aGluZyBlbHNlIGluIHRoYXQgY29kZT8gT2ggeWVhaCEgYGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zYCDigJMgdGhhdCBmdW5jdGlvbiAqYWxzbyogcGFyc2VzIGRhdGEsIGJ1dCBpbiB0aGlzIGNhc2UsIHRoZSBkYXRhIGNvbWVzIGZyb20gdGhlICpmaWxlc3lzdGVtKi4gU28sIHRoYXQgY291bGQgYmUgdGhlIGVudHJ5cG9pbnQuIEkgc2hvdWxkIHByb2JhYmx5IGRpZyBpbnRvIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AgdG8gc2VlIGlmIHRoYXQmIzM5O3MgYSB2aWFibGUgYXZlbnVlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDA2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDA2Olx0c3RhdGljIHZvaWRcbiA0MDc6XHRpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbiA0MDg6XHRcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgaXdsX3Vjb2RlX2NhcGFiaWxpdGllcyAqY2FwYSxcbiA0MDk6XHRcdFx0XHRcdCAgICBfX2xlMzIgc2t1X2lkWzNdKVxuIDQxMDpcdHtcbiA0MTE6XHRcdHN0cnVjdCBpd2xfcG52bV9pbWFnZSAqcG52bV9kYXRhID0gTlVMTDtcbiA0MTI6XHRcdHU4ICpkYXRhID0gTlVMTDtcbiA0MTM6XHRcdHNpemVfdCBsZW5ndGg7XG4gNDE0Olx0XHRpbnQgcmV0O1xuIDQxNTpcdFxuIDQxNjpcdFx0aWYgKHRyYW5zLVx1MDAzZWZhaWxlZF90b19sb2FkX3JlZHVjZV9wb3dlcl9pbWFnZSlcbiA0MTc6XHRcdFx0cmV0dXJuO1xuIDQxODpcdFxuIDQxOTpcdFx0aWYgKHRyYW5zLVx1MDAzZXJlZHVjZV9wb3dlcl9sb2FkZWQpXG4gNDIwOlx0XHRcdGdvdG8gc2V0O1xuIDQyMTpcdFxuIDQyMjpcdFx0ZGF0YSA9IGl3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHRyYW5zLCBcdTAwMjZsZW5ndGgpO1xuIDQyMzpcdFx0aWYgKElTX0VSUihkYXRhKSkge1xuIDQyNDpcdFx0XHR0cmFucy1cdTAwM2VmYWlsZWRfdG9fbG9hZF9yZWR1Y2VfcG93ZXJfaW1hZ2UgPSB0cnVlO1xuIDQyNTpcdFx0XHRyZXR1cm47XG4gNDI2Olx0XHR9XG4gNDI3Olx0XG4gNDI4Olx0XHRwbnZtX2RhdGEgPSBremFsbG9jX29iaigqcG52bV9kYXRhKTtcbiA0Mjk6XHRcdGlmICghcG52bV9kYXRhKVxuIDQzMDpcdFx0XHRnb3RvIGZyZWU7XG4gNDMxOlx0XG4gNDMyOlx0XHRyZXQgPSBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2UodHJhbnMsIGRhdGEsIGxlbmd0aCwgcG52bV9kYXRhLFxuIDQzMzpcdFx0XHRcdFx0XHQgIHNrdV9pZCk7XG4gNDM0Olx0XHRpZiAocmV0KSB7XG4gNDM1Olx0XHRcdHRyYW5zLVx1MDAzZWZhaWxlZF90b19sb2FkX3JlZHVjZV9wb3dlcl9pbWFnZSA9IHRydWU7XG4gNDM2Olx0XHRcdGdvdG8gZnJlZTtcbiA0Mzc6XHRcdH1cbiA0Mzg6XHRcbiA0Mzk6XHRcdHJldCA9IGl3bF90cmFuc19sb2FkX3JlZHVjZV9wb3dlcih0cmFucywgcG52bV9kYXRhLCBjYXBhKTtcbiA0NDA6XHRcdGlmIChyZXQpIHtcbiA0NDE6XHRcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLFxuIDQ0MjpcdFx0XHRcdCAgICAgXCYjMzQ7RmFpbGVkIHRvIGxvYWQgcmVkdWNlIHBvd2VyIHRhYmxlICVkXFxuXCYjMzQ7LFxuIDQ0MzpcdFx0XHRcdCAgICAgcmV0KTtcbiA0NDQ6XHRcdFx0dHJhbnMtXHUwMDNlZmFpbGVkX3RvX2xvYWRfcmVkdWNlX3Bvd2VyX2ltYWdlID0gdHJ1ZTtcbiA0NDU6XHRcdFx0Z290byBmcmVlO1xuIDQ0NjpcdFx0fVxuIDQ0NzpcdFxuIDQ0ODpcdHNldDpcbiA0NDk6XHRcdGl3bF90cmFuc19zZXRfcmVkdWNlX3Bvd2VyKHRyYW5zLCBjYXBhKTtcbiA0NTA6XHRmcmVlOlxuIDQ1MTpcdFx0a2ZyZWUoZGF0YSk7XG4gNDUyOlx0XHRrZnJlZShwbnZtX2RhdGEpO1xuIDQ1MzpcdH1cbiA0NTQ6XHRcbiA0NTU6XHRpbnQgaXdsX3Budm1fbG9hZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbiA0NTY6XHRcdFx0ICBzdHJ1Y3QgaXdsX25vdGlmX3dhaXRfZGF0YSAqbm90aWZfd2FpdCxcbiA0NTc6XHRcdFx0ICBjb25zdCBzdHJ1Y3QgaXdsX2Z3ICpmdywgX19sZTMyIHNrdV9pZFszXSlcbiA0NTg6XHR7XG4gNDU5Olx0XHRzdHJ1Y3QgaXdsX25vdGlmaWNhdGlvbl93YWl0IHBudm1fd2FpdDtcbiA0NjA6XHRcdHN0YXRpYyBjb25zdCB1MTYgbnRmX2NtZHNbXSA9IHsgV0lERV9JRChSRUdVTEFUT1JZX0FORF9OVk1fR1JPVVAsXG4gNDYxOlx0XHRcdFx0XHRcdFx0UE5WTV9JTklUX0NPTVBMRVRFX05URlkpIH07XG4gNDYyOlx0XG4gNDYzOlx0XHQvKiBpZiB0aGUgU0tVX0lEIGlzIGVtcHR5LCB0aGVyZSYjMzk7cyBub3RoaW5nIHRvIGRvICovXG4gNDY0Olx0XHRpZiAoIXNrdV9pZFswXSBcdTAwMjZcdTAwMjYgIXNrdV9pZFsxXSBcdTAwMjZcdTAwMjYgIXNrdV9pZFsyXSlcbiA0NjU6XHRcdFx0cmV0dXJuIDA7XG4gNDY2Olx0XG4gNDY3Olx0XHRpd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnModHJhbnMsIGZ3LCBza3VfaWQpO1xuIDQ2ODpcdFx0aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnModHJhbnMsIFx1MDAyNmZ3LVx1MDAzZXVjb2RlX2NhcGEsIHNrdV9pZCk7XG4gNDY5Olx0XG4gNDcwOlx0XHRpd2xfaW5pdF9ub3RpZmljYXRpb25fd2FpdChub3RpZl93YWl0LCBcdTAwMjZwbnZtX3dhaXQsXG4gNDcxOlx0XHRcdFx0XHQgICBudGZfY21kcywgQVJSQVlfU0laRShudGZfY21kcyksXG4gNDcyOlx0XHRcdFx0XHQgICBpd2xfcG52bV9jb21wbGV0ZV9mbiwgdHJhbnMpO1xuIDQ3MzpcdFxuIDQ3NDpcdFx0Lyoga2ljayB0aGUgZG9vcmJlbGwgKi9cbiA0NzU6XHRcdGl3bF93cml0ZV91bWFjX3BycGgodHJhbnMsIFVSRUdfRE9PUkJFTExfVE9fSVNSNixcbiA0NzY6XHRcdFx0XHQgICAgVVJFR19ET09SQkVMTF9UT19JU1I2X1BOVk0pO1xuIDQ3NzpcdFxuIDQ3ODpcdFx0cmV0dXJuIGl3bF93YWl0X25vdGlmaWNhdGlvbihub3RpZl93YWl0LCBcdTAwMjZwbnZtX3dhaXQsXG4gNDc5Olx0XHRcdFx0XHQgICAgIE1WTV9VQ09ERV9QTlZNX1RJTUVPVVQpO1xuIDQ4MDpcdH1cbiA0ODE6XHRJV0xfRVhQT1JUX1NZTUJPTChpd2xfcG52bV9sb2FkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI5MjcKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqQW5hbHl6aW5nIERhdGEgU291cmNlIGZvciBQb3dlciBSZWR1Y3Rpb24gSW5mb3JtYXRpb24qKgoKSG1tLCBpdCBzZWVtcyBsaWtlIGBpd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcmAgaXMgdGhlICpvbmx5KiBwbGFjZSB0aGUgc3lzdGVtIGlzIHB1bGxpbmcgZGF0YSBmcm9tIGZvciBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgLiBUaGF0JiMzOTtzIGEgY3JpdGljYWwgZGVwZW5kZW5jeSwgYW5kIGEgcG90ZW50aWFsIHNpbmdsZSBwb2ludCBvZiBmYWlsdXJlIG9yIGJvdHRsZW5lY2suIEkgbmVlZCB0byByZXZpc2l0IHRoYXQgZnVuY3Rpb24sIGBpd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcmAsIHdpdGggYSBmaW5lLXRvb3RoIGNvbWIuIEFueSBpc3N1ZXMgdGhlcmUsIGFuZCB0aGUgZW50aXJlIHBvd2VyIHJlZHVjdGlvbiBtZWNoYW5pc20gZm9yIHRoZSBQTlZNIGlzIGNvbXByb21pc2VkLiBMZXQmIzM5O3MgbWFrZSBzdXJlIGl0IGlzIGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjg1Olx0dTggKml3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBzaXplX3QgKmxlbilcbiAyODY6XHR7XG4gMjg3Olx0XHRzdHJ1Y3QgcG52bV9za3VfcGFja2FnZSAqcGFja2FnZTtcbiAyODg6XHRcdHVuc2lnbmVkIGxvbmcgcGFja2FnZV9zaXplO1xuIDI4OTpcdFx0dTggKmRhdGE7XG4gMjkwOlx0XG4gMjkxOlx0XHRwYWNrYWdlID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHRyYW5zLFxuIDI5MjpcdFx0XHRcdFx0XHRcdCBJV0xfVUVGSV9SRURVQ0VEX1BPV0VSX05BTUUsXG4gMjkzOlx0XHRcdFx0XHRcdFx0IFwmIzM0O1JlZHVjZWQgUG93ZXJcJiMzNDssXG4gMjk0Olx0XHRcdFx0XHRcdFx0IHNpemVvZigqcGFja2FnZSksXG4gMjk1Olx0XHRcdFx0XHRcdFx0IFx1MDAyNnBhY2thZ2Vfc2l6ZSk7XG4gMjk2Olx0XHRpZiAoSVNfRVJSKHBhY2thZ2UpKVxuIDI5NzpcdFx0XHRyZXR1cm4gRVJSX0NBU1QocGFja2FnZSk7XG4gMjk4Olx0XG4gMjk5Olx0XHRJV0xfREVCVUdfRlcodHJhbnMsIFwmIzM0O3JldiAlZCwgdG90YWxfc2l6ZSAlZCwgbl9za3VzICVkXFxuXCYjMzQ7LFxuIDMwMDpcdFx0XHQgICAgIHBhY2thZ2UtXHUwMDNlcmV2LCBwYWNrYWdlLVx1MDAzZXRvdGFsX3NpemUsIHBhY2thZ2UtXHUwMDNlbl9za3VzKTtcbiAzMDE6XHRcbiAzMDI6XHRcdCpsZW4gPSBwYWNrYWdlX3NpemUgLSBzaXplb2YoKnBhY2thZ2UpO1xuIDMwMzpcdFx0ZGF0YSA9IGttZW1kdXAocGFja2FnZS1cdTAwM2VkYXRhLCAqbGVuLCBHRlBfS0VSTkVMKTtcbiAzMDQ6XHRcdGlmICghZGF0YSkge1xuIDMwNTpcdFx0XHRrZnJlZShwYWNrYWdlKTtcbiAzMDY6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4gMzA3Olx0XHR9XG4gMzA4Olx0XG4gMzA5Olx0XHRrZnJlZShwYWNrYWdlKTtcbiAzMTA6XHRcbiAzMTE6XHRcdHJldHVybiBkYXRhO1xuIDMxMjpcdH1cbiAzMTM6XHRcbiAzMTQ6XHRzdGF0aWMgaW50IGl3bF91ZWZpX3N0ZXBfcGFyc2Uoc3RydWN0IHVlZmlfY252X2NvbW1vbl9zdGVwX2RhdGEgKmNvbW1vbl9zdGVwX2RhdGEsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNjM4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIHRoZSBzeXN0ZW0mIzM5O3MgcmVhZGluZyBmcm9tIFVFRkkgdmFyaWFibGVzLCBpbnRlcmVzdGluZy4gVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGhvdyBkb2VzIHN5emthbGxlciBhY3R1YWxseSAqdGVzdCogdGhpcyBpbnRlcmFjdGlvbj8gTXkgZmlyc3QgdGhvdWdodCBpcyB0aGUgc3RhbmRhcmQgYXBwcm9hY2gg4oCTIGBlZml2YXJmc2Agb3Igc29tZXRoaW5nIGxpa2UgdGhhdCwgd2hlcmUgaXQgbW9ja3MgdGhlIHZhcmlhYmxlcyBkaXJlY3RseS4gQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gdGhlIGNvZGUgcGF0aCBmb3IgdGhpcyBzZWVtcyB0byBiZSB0aHJvdWdoIGBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVgLCBhbmQgKnRoYXQqIGNhbGxzIGBlZmkuZ2V0X3ZhcmlhYmxlYC4gUmlnaHQuIFNvLCB0aGUga2V5IGlzIGRpZ2dpbmcgaW50byBgaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaW50ZXJlc3Rpbmcgc3R1ZmYgbGlrZWx5IGlzLiBMZXQmIzM5O3Mgc3RhcnQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDgyOlx0c3RhdGljIHZvaWQgKlxuICA4MzpcdGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuICA4NDpcdFx0XHRcdFx0ICAgIGVmaV9ndWlkX3QgKmd1aWQsXG4gIDg1Olx0XHRcdFx0XHQgICAgZWZpX2NoYXIxNl90ICp1ZWZpX3Zhcl9uYW1lLFxuICA4NjpcdFx0XHRcdFx0ICAgIGNoYXIgKnZhcl9uYW1lLFxuICA4NzpcdFx0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBleHBlY3RlZF9zaXplLFxuICA4ODpcdFx0XHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgKnNpemUpXG4gIDg5Olx0e1xuICA5MDpcdFx0dm9pZCAqdmFyO1xuICA5MTpcdFx0dW5zaWduZWQgbG9uZyB2YXJfc2l6ZTtcbiAgOTI6XHRcbiAgOTM6XHRcdHZhciA9IGl3bF91ZWZpX2dldF92YXJpYWJsZSh1ZWZpX3Zhcl9uYW1lLCBndWlkLCBcdTAwMjZ2YXJfc2l6ZSk7XG4gIDk0Olx0XG4gIDk1Olx0XHRpZiAoSVNfRVJSKHZhcikpIHtcbiAgOTY6XHRcdFx0SVdMX0RFQlVHX1JBRElPKHRyYW5zLFxuICA5NzpcdFx0XHRcdFx0XCYjMzQ7JXMgVUVGSSB2YXJpYWJsZSBub3QgZm91bmQgMHglbHhcXG5cJiMzNDssIHZhcl9uYW1lLFxuICA5ODpcdFx0XHRcdFx0UFRSX0VSUih2YXIpKTtcbiAgOTk6XHRcdFx0cmV0dXJuIHZhcjtcbiAxMDA6XHRcdH1cbiAxMDE6XHRcbiAxMDI6XHRcdGlmICh2YXJfc2l6ZSBcdTAwM2MgZXhwZWN0ZWRfc2l6ZSkge1xuIDEwMzpcdFx0XHRJV0xfREVCVUdfUkFESU8odHJhbnMsXG4gMTA0Olx0XHRcdFx0XHRcJiMzNDtJbnZhbGlkICVzIFVFRkkgdmFyaWFibGUgbGVuICglbHUpXFxuXCYjMzQ7LFxuIDEwNTpcdFx0XHRcdFx0dmFyX25hbWUsIHZhcl9zaXplKTtcbiAxMDY6XHRcdFx0a2ZyZWUodmFyKTtcbiAxMDc6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4gMTA4Olx0XHR9XG4gMTA5Olx0XG4gMTEwOlx0XHRJV0xfREVCVUdfUkFESU8odHJhbnMsIFwmIzM0OyVzIGZyb20gVUVGSSB3aXRoIHNpemUgJWx1XFxuXCYjMzQ7LCB2YXJfbmFtZSxcbiAxMTE6XHRcdFx0XHR2YXJfc2l6ZSk7XG4gMTEyOlx0XG4gMTEzOlx0XHRpZiAoc2l6ZSlcbiAxMTQ6XHRcdFx0KnNpemUgPSB2YXJfc2l6ZTtcbiAxMTU6XHRcdHJldHVybiB2YXI7XG4gMTE2Olx0fVxuIDExNzpcdFxuIDExODpcdHN0YXRpYyB2b2lkICpcbiAxMTk6XHRpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4gMTIwOlx0XHRcdFx0ICAgICAgIGVmaV9jaGFyMTZfdCAqdWVmaV92YXJfbmFtZSxcbiAxMjE6XHRcdFx0XHQgICAgICAgY2hhciAqdmFyX25hbWUsXG4gMTIyOlx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBleHBlY3RlZF9zaXplLFxuIDEyMzpcdFx0XHRcdCAgICAgICB1bnNpZ25lZCBsb25nICpzaXplKVxuIDEyNDpcdHtcbiAxMjU6XHRcdHJldHVybiBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZCh0cmFucywgXHUwMDI2SVdMX0VGSV9XSUZJX0dVSUQsXG4gMTI2Olx0XHRcdFx0XHRcdFx0ICAgdWVmaV92YXJfbmFtZSwgdmFyX25hbWUsXG4gMTI3Olx0XHRcdFx0XHRcdFx0ICAgZXhwZWN0ZWRfc2l6ZSwgc2l6ZSk7XG4gMTI4Olx0fVxuIDEyOTpcdFxuIDEzMDpcdGludCBpd2xfdWVmaV9oYW5kbGVfdGx2X21lbV9kZXNjKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCB1OCAqZGF0YSxcbiAxMzE6XHRcdFx0XHRcdCB1MzIgdGx2X2xlbiwgc3RydWN0IGl3bF9wbnZtX2ltYWdlICpwbnZtX2RhdGEpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NjUzCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRlbHZpbmcgaW50byBVRUZJIFZhcmlhYmxlIFJldHJpZXZhbCB3aXRoIGl3bF91ZWZpX2dldF92YXJpYWJsZSoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGl3bF91ZWZpX2dldF92YXJpYWJsZWAgYW5kIGltbWVkaWF0ZWx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBsb3ctbGV2ZWwgaW50ZXJhY3Rpb25zIGhlcmUuIFRoaXMgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uIGZvciwgSSBhc3N1bWUsIHJldHJpZXZpbmcgVUVGSSB2YXJpYWJsZXMgdGhhdCBhcmUgZ29pbmcgdG8gYmUgdXNlZCBpbiB0aGUgSW50ZWwgV2lyZWxlc3MgZHJpdmVyIChpd2x3aWZpKSBjb250ZXh0LCBsaWtlbHkgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBmaXJtd2FyZSBsb2FkaW5nLCBvciBwb3RlbnRpYWxseSBkdXJpbmcgcnVudGltZSBmb3IgY29uZmlndXJhdGlvbi4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBleGFjdCBwdXJwb3NlLiBJcyBpdCBhIGRpcmVjdCB3cmFwcGVyIGFyb3VuZCBgR2V0VmFyaWFibGUoKWAgZnJvbSB0aGUgVUVGSSBydW50aW1lIHNlcnZpY2VzPyBBcmUgdGhlcmUgYW55IHNpZ25pZmljYW50IGVycm9yIGNoZWNrcyBvciByZXRyaWVzIGltcGxlbWVudGVkIGhlcmU/IElmIGl0JiMzOTtzIGEgd3JhcHBlciwgd2hhdCBsZXZlbCBvZiBhYnN0cmFjdGlvbiBkb2VzIGl0IG9mZmVyPyBEb2VzIGl0IGhhbmRsZSB0aGUgY29tcGxleGl0aWVzIG9mIHZhcmlhYmxlIGF0dHJpYnV0ZXMgbGlrZSBiZWluZyByZWFkLW9ubHkgb3Igdm9sYXRpbGU/IEkgaGF2ZSB0byBjb25zaWRlciB0aGUgcG90ZW50aWFsIGZvciByYWNlIGNvbmRpdGlvbnMgb3IgYWNjZXNzIHZpb2xhdGlvbnMgaWYgbXVsdGlwbGUgcHJvY2Vzc2VzIGFyZSB0cnlpbmcgdG8gbWFuaXB1bGF0ZSBvciBhY2Nlc3MgdGhlIHNhbWUgdmFyaWFibGVzIHNpbXVsdGFuZW91c2x5LgoKQmV5b25kIHRoYXQsIEkmIzM5O20gaW1tZWRpYXRlbHkgaW50ZXJlc3RlZCBpbiB0aGUgcG90ZW50aWFsIGltcGFjdCBvbiBzeXN0ZW0gcGVyZm9ybWFuY2UuIEhvdyBlZmZpY2llbnRseSBpcyBpdCBpbnRlcmFjdGluZyB3aXRoIHRoZSBmaXJtd2FyZT8gV2hhdCYjMzk7cyB0aGUgb3ZlcmhlYWQgaW52b2x2ZWQgaW4gdGhlIGNvbW11bmljYXRpb24/IElzIHRoZXJlIGFueSBjYWNoaW5nIGltcGxlbWVudGVkLCBhbmQgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2FjaGUgaW52YWxpZGF0aW9uIHN0cmF0ZWd5PwoKRnVydGhlcm1vcmUsIEkgaGF2ZSB0byBjb25zaWRlciB0aGUgc2VjdXJpdHkgaW1wbGljYXRpb25zLCBvZiBjb3Vyc2UuIEFyZSB0aGVyZSBhbnkga25vd24gdnVsbmVyYWJpbGl0aWVzIHJlbGF0ZWQgdG8gVUVGSSB2YXJpYWJsZSBhY2Nlc3MgdGhhdCB0aGlzIGZ1bmN0aW9uIG1pZ2h0IGluYWR2ZXJ0ZW50bHkgZXhwb3NlPyBDb3VsZCBhIG1hbGljaW91cyBhY3RvciBsZXZlcmFnZSBhIHZ1bG5lcmFiaWxpdHkgaW4gdGhlIHZhcmlhYmxlIHJldHJpZXZhbCBwcm9jZXNzIGZvciBhIHN5c3RlbSBjb21wcm9taXNlPyBBcmUgdGhlcmUgYW55IGNoZWNrcyBmb3IgcG90ZW50aWFsbHkgbWFsaWNpb3VzIFVFRkkgdmFyaWFibGVzPwoKRmluYWxseSwgd2hhdOKAmXMgdGhlIGVycm9yIGhhbmRsaW5nPyBIb3cgZG9lcyBpdCBoYW5kbGUgc2NlbmFyaW9zIHdoZXJlIHRoZSB2YXJpYWJsZSBkb2VzbuKAmXQgZXhpc3QsIHRoZSBmaXJtd2FyZSByZXR1cm5zIGFuIGVycm9yLCBvciB0aGUgYnVmZmVyIGlzIHRvbyBzbWFsbD8gV2hhdCBhcmUgdGhlIHJldHVybiBjb2RlcyBvciBlcnJvciBjb2RlcyBpdCB1c2VzLCBhbmQgaG93IGRvZXMgdGhhdCBwcm9wYWdhdGUgdXAgdGhlIGNhbGwgc3RhY2sgdG8gdGhlIHJlc3Qgb2YgdGhlIGRyaXZlcj8gVGhlIHJvYnVzdG5lc3Mgb2YgdGhlIGVycm9yIGhhbmRsaW5nIHdpbGwgbGlrZWx5IGJlIHRoZSBmaXJzdCBwb2ludCBvZiB2dWxuZXJhYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpd2xfdWVmaV9nZXRfdmFyaWFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0yMz1zdHJ1Y3QgaXdsX3VlZmlfcG52bV9tZW1fZGVzYyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyOTpzdGF0aWMgdm9pZCAqaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKGVmaV9jaGFyMTZfdCAqbmFtZSwgZWZpX2d1aWRfdCAqZ3VpZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTMwLVx0XHRcdFx0ICAgdW5zaWduZWQgbG9uZyAqZGF0YV9zaXplKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTYwPXZvaWQgKml3bF91ZWZpX2dldF9wbnZtKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBzaXplX3QgKmxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjY3Olx0ZGF0YSA9IGl3bF91ZWZpX2dldF92YXJpYWJsZShJV0xfVUVGSV9PRU1fUE5WTV9OQU1FLCBcdTAwMjZJV0xfRUZJX1dJRklfR1VJRCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY4LVx0XHRcdFx0ICAgICBcdTAwMjZwYWNrYWdlX3NpemUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTgzPWl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6OTM6XHR2YXIgPSBpd2xfdWVmaV9nZXRfdmFyaWFibGUodWVmaV92YXJfbmFtZSwgZ3VpZCwgXHUwMDI2dmFyX3NpemUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NTg4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIGBpd2xfdWVmaV9nZXRfdmFyaWFibGVgLCB2aWV3ZWQgdGhyb3VnaCB0aGUgbGVucyBvZiBteSBleHBlcnRpc2U6CgoqKk15IFBlcnNwZWN0aXZlIG9uIGBpd2xfdWVmaV9nZXRfdmFyaWFibGVgKioKCkFscmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBpd2xfdWVmaV9nZXRfdmFyaWFibGVgLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGZ1bmN0aW9uIGlzIGxpa2VseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYW4gSW50ZWwgd2lyZWxlc3MgZGV2aWNlIGRyaXZlciwgcHJvYmFibHkgb24gYSBzeXN0ZW0gdGhhdCBsZXZlcmFnZXMgVUVGSS4gVGhlICYjMzQ7aXdsJiMzNDsgcHJlZml4IGlzIGEgZGVhZCBnaXZlYXdheSDigJMgaXQgc2NyZWFtcyBJbnRlbCBXaXJlbGVzcyBMQU4uIEFuZCB0aGF0ICYjMzQ7dWVmaSYjMzQ7IHBhcnQ/IEl0IG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaW50ZXJhY3Rpb25zIHdpdGggdGhlIFVFRkkgZmlybXdhcmUsIHNwZWNpZmljYWxseSB0byByZXRyaWV2ZSBhIHZhcmlhYmxlLgoKTXkgZmlyc3QgdGhvdWdodCBpcywgJiMzNDt3aHkgYXJlIHdlIHF1ZXJ5aW5nIGEgVUVGSSB2YXJpYWJsZT8mIzM0Oy4gIEl0IGNvdWxkIGJlIGFueXRoaW5nIGZyb20gYm9vdC10aW1lIGNvbmZpZ3VyYXRpb24sIGhhcmR3YXJlLXNwZWNpZmljIHNldHRpbmdzLCBhIHVuaXF1ZSBpZGVudGlmaWVyLCBvciBzb21ldGhpbmcgcmVsYXRlZCB0byBhIHNwZWNpZmljIGZlYXR1cmUgbGlrZSBzZWN1cmUgYm9vdCBzdGF0dXMuIFRoaXMgZnVuY3Rpb24gaXMgdGhlIGdhdGV3YXkgdG8gZmV0Y2hpbmcgdGhhdCBpbmZvcm1hdGlvbi4gIFdlJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgKndoYXQqIHZhcmlhYmxlIGlzIGJlaW5nIGZldGNoZWQgYnkgbG9va2luZyBhdCB0aGUgYnJvYWRlciBjb250ZXh0IG9mIHRoZSBkcml2ZXIgYW5kIGhvdyBpdCYjMzk7cyB1c2VkLgoKVGhlIGludGVyZXN0aW5nIGFzcGVjdCB3aWxsIGJlICpob3cqIGl0JiMzOTtzIGRvbmUuIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgd2UmIzM5O2xsIGJlIGRlYWxpbmcgd2l0aCBVRUZJIHJ1bnRpbWUgc2VydmljZXMgKGxpa2VseSB1c2luZyBhIEdVSUQgdG8gaWRlbnRpZnkgdGhlIHZhcmlhYmxlKSBhbmQgaGFuZGxpbmcgdGhlIHZhcmlvdXMgZXJyb3IgY29kZXMgdGhhdCBjb21lIHdpdGggaW50ZXJhY3Rpbmcgd2l0aCBmaXJtd2FyZS4gVGhlcmUgY291bGQgYmUgaXNzdWVzIHdpdGggdmFyaWFibGUgcGVybWlzc2lvbnMsIGluY29ycmVjdCBidWZmZXIgc2l6ZXMsIG9yIHRoZSB2YXJpYWJsZSBzaW1wbHkgbm90IGV4aXN0aW5nIGluIHRoZSBmaXJzdCBwbGFjZS4gRXJyb3IgaGFuZGxpbmcgd2lsbCBiZSBjcml0aWNhbCBoZXJlLCBhbmQgSSYjMzk7bGwgd2FudCB0byBzZWUgaG93IHJvYnVzdGx5IGl0JiMzOTtzIGltcGxlbWVudGVkLiBJJiMzOTttIGdvaW5nIHRvIGJlIGxvb2tpbmcgZm9yIGNoZWNrcyBvbiByZXR1cm4gdmFsdWVzIGZyb20gdGhlIFVFRkkgcnVudGltZSBzZXJ2aWNlIGNhbGxzIGFuZCBob3cgdGhlIGRyaXZlciBkZWFscyB3aXRoIHRoZSB2YXJpb3VzIGZhaWx1cmVzLgoKSSYjMzk7bSBhbHNvIGN1cmlvdXMgYWJvdXQgdGhlIHBvdGVudGlhbCBzZWN1cml0eSBpbXBsaWNhdGlvbnMuIElmIHRoaXMgZnVuY3Rpb24gaXMgcG9vcmx5IGltcGxlbWVudGVkLCBpdCBjb3VsZCBpbnRyb2R1Y2UgdnVsbmVyYWJpbGl0aWVzLiBJbXByb3Blcmx5IHZhbGlkYXRlZCBpbnB1dCBwYXJhbWV0ZXJzIGNvdWxkIGxlYWQgdG8gYnVmZmVyIG92ZXJmbG93cyBvciBpbmZvcm1hdGlvbiBsZWFrcy4gSSYjMzk7bGwgbmVlZCB0byBzY3J1dGluaXplIGFueSBkYXRhIHRoYXTigJlzIHBhc3NlZCBmcm9tIG9yIHJldHVybmVkIHRvIHRoZSBVRUZJIGZpcm13YXJlIGZvciBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4KCk92ZXJhbGwsIGBpd2xfdWVmaV9nZXRfdmFyaWFibGVgIGhhcyBtZSB0aGlua2luZyBhYm91dCBVRUZJIHJ1bnRpbWUgaW50ZXJhY3Rpb25zLCBlcnJvciBoYW5kbGluZywgcG90ZW50aWFsIHNlY3VyaXR5IGltcGxpY2F0aW9ucywgYW5kIHRoZSBzcGVjaWZpYyB1c2UgY2FzZSB3aXRoaW4gdGhpcyBJbnRlbCB3aXJlbGVzcyBkcml2ZXIuIE15IGN1cmlvc2l0eSBpcyBkZWZpbml0ZWx5IHBpcXVlZCwgbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHJlYWxseSBoYXBwZW5pbmchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyOSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDI5Olx0c3RhdGljIHZvaWQgKml3bF91ZWZpX2dldF92YXJpYWJsZShlZmlfY2hhcjE2X3QgKm5hbWUsIGVmaV9ndWlkX3QgKmd1aWQsXG4gIDMwOlx0XHRcdFx0XHQgICB1bnNpZ25lZCBsb25nICpkYXRhX3NpemUpXG4gIDMxOlx0e1xuICAzMjpcdFx0ZWZpX3N0YXR1c190IHN0YXR1cztcbiAgMzM6XHRcdHZvaWQgKmRhdGE7XG4gIDM0Olx0XG4gIDM1Olx0XHRpZiAoIWRhdGFfc2l6ZSlcbiAgMzY6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4gIDM3Olx0XG4gIDM4Olx0XHRpZiAoIWVmaV9ydF9zZXJ2aWNlc19zdXBwb3J0ZWQoRUZJX1JUX1NVUFBPUlRFRF9HRVRfVkFSSUFCTEUpKVxuICAzOTpcdFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PREVWKTtcbiAgNDA6XHRcbiAgNDE6XHRcdC8qIGZpcnN0IGNhbGwgd2l0aCBOVUxMIGRhdGEgdG8gZ2V0IHRoZSBleGFjdCBlbnRyeSBzaXplICovXG4gIDQyOlx0XHQqZGF0YV9zaXplID0gMDtcbiAgNDM6XHRcdHN0YXR1cyA9IGVmaS5nZXRfdmFyaWFibGUobmFtZSwgZ3VpZCwgTlVMTCwgZGF0YV9zaXplLCBOVUxMKTtcbiAgNDQ6XHRcdGlmIChzdGF0dXMgIT0gRUZJX0JVRkZFUl9UT09fU01BTEwgfHwgISpkYXRhX3NpemUpXG4gIDQ1Olx0XHRcdHJldHVybiBFUlJfUFRSKC1FSU8pO1xuICA0NjpcdFxuICA0NzpcdFx0ZGF0YSA9IGttYWxsb2MoKmRhdGFfc2l6ZSwgR0ZQX0tFUk5FTCk7XG4gIDQ4Olx0XHRpZiAoIWRhdGEpXG4gIDQ5Olx0XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuICA1MDpcdFxuICA1MTpcdFx0c3RhdHVzID0gZWZpLmdldF92YXJpYWJsZShuYW1lLCBndWlkLCBOVUxMLCBkYXRhX3NpemUsIGRhdGEpO1xuICA1MjpcdFx0aWYgKHN0YXR1cyAhPSBFRklfU1VDQ0VTUykge1xuICA1MzpcdFx0XHRrZnJlZShkYXRhKTtcbiAgNTQ6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7XG4gIDU1Olx0XHR9XG4gIDU2Olx0XG4gIDU3Olx0XHRyZXR1cm4gZGF0YTtcbiAgNTg6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NTUzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNTUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgYW4gRUZJIFZhcmlhYmxlIEludGVyYWN0aW9uIGluIGl3bHdpZmkqKgoKT2theSwgc28gdGhpcyBwYXRjaCB0b3VjaGVzIGBlZmkuZ2V0X3ZhcmlhYmxlYCwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmssICYjMzQ7Q2FuIHN5emthbGxlciBmdXp6IHRoaXM/JiMzNDsgV2Uga25vdyBzeXprYWxsZXIgY2FuIGhpdCBFRkkgdmFyaWFibGVzIGlmIGl0IGNhbiB3cml0ZSB0byBgL3N5cy9maXJtd2FyZS9lZmkvZWZpdmFycy9gLCB3aGljaCBpdCBkZWZpbml0ZWx5IGNhbi4gVGhlbiBJIHJlbWVtYmVyIHRoYXQgYGl3bHdpZmlgIGxvYWRzIHNvbWV0aGluZyBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIEFoYSEgSWYgc3l6a2FsbGVyIHdyaXRlcyB0byBgL3N5cy9maXJtd2FyZS9lZmkvZWZpdmFycy9gICpiZWZvcmUqIHRyaWdnZXJpbmcgYGl3bHdpZmlgIGluaXRpYWxpemF0aW9uIOKAkyBieSBiaW5kaW5nIHRoZSBkcml2ZXIgb3IgY3JlYXRpbmcgYSB2aXJ0dWFsIGRldmljZSDigJMgd2UgY291bGQgaGF2ZSBhIGZ1enppbmcgdGFyZ2V0IQoKQnV0IGhvbGQgb24sIGBpd2x3aWZpYCBpcyBhIFBDSSBkcml2ZXIuIENhbiBzeXprYWxsZXIgZG8gdmlydHVhbCBQQ0kgZGV2aWNlcz8gSXQgaGFzIHNvbWV0aGluZyBsaWtlIGBzeXpfcGNpX2RldmljZWAsIHJpZ2h0PyBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgaXQgKm1vY2sqIGBpd2x3aWZpYCBzcGVjaWZpY2FsbHk/IFRoaW5raW5nIGFib3V0IGl0LCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggaXMgdmlydHVhbCwgYnV0IHRoYXQmIzM5O3Mgbm90IHRoZSBzYW1lLiBgaXdsd2lmaWAgc2VlbXMgdG8gbmVlZCBlaXRoZXIgYSByZWFsIFBDSSBkZXZpY2Ugb3IgYSAqbW9ja2VkKiBvbmUuIE9rYXksIHN5emthbGxlciBkb2VzIGhhdmUgc29tZSBQQ0kgZnV6emluZyBzdXBwb3J0OyBgdmhjaWAsIGB2ZmlvYCwgYW5kIHRoZSBgc3l6X3BjaV9kZXZpY2VgIGNhbGxzIGNvbWUgdG8gbWluZC4KClRoZSBwYXRjaCBpdHNlbGYgaXMgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNgLiBJZiBzeXprYWxsZXIgaXMgdGVzdGluZyB0aGlzLCBpdCAqc2hvdWxkKiBiZSByZWFjaGFibGUuIFdhaXQgYSBtaW51dGUuLi4gdGhlIGF1dGhvciBpcyBgc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0O2AhIFRoYXQgbWVhbnMgc3l6a2FsbGVyIGZvdW5kIHRoZSBidWcgYW5kIHRoaXMgaXMgdGhlIGZpeCEKCk5vdyBJIG5lZWQgdG8gcmVtZW1iZXIgd2hhdCB0aGUgcHJvbXB0IHNheXM6ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyAuLi4gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlJiMzNDsuIFNpbmNlICpzeXprYWxsZXIqIGZvdW5kIHRoZSBidWcsIGl0ICptdXN0KiBiZSByZWFjaGFibGUgaW4gc3l6a2FsbGVyJiMzOTtzIGVudmlyb25tZW50ISBCdXQgaG93PyBXYXMgaXQgYG1hYzgwMjExX2h3c2ltYD8gTm8sIHRoYXQmIzM5O3MgYSBkaWZmZXJlbnQgZHJpdmVyLiBTbywgYHN5el9wY2lfZGV2aWNlYCB0aGVuPyBZZXMsIHRoYXQmIzM5O3MgdGhlIGxpa2VseSBtZWNoYW5pc20gc3l6a2FsbGVyIHVzZXMgdG8gZW11bGF0ZSBQQ0kgZGV2aWNlcyEKCk5vdyBJIGp1c3QgbmVlZCB0byB2ZXJpZnkgdGhhdCBgaXdsd2lmaWAgaXMgZW5hYmxlZCBpbiB0aGUgY29uZmlndXJhdGlvbiwgc28gSSBuZWVkIHRvIG91dHB1dCBgRW5hYmxlQ29uZmlnc2AuIExldCYjMzk7cyBjaGVjayB0aGUgS2NvbmZpZyBlbnRyeSBmb3IgYGl3bHdpZmlgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVdMV0lGSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoyOmNvbmZpZyBJV0xXSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFdpcmVsZXNzIFdpRmkgTmV4dCBHZW4gQUdOIC0gV2lyZWxlc3MtTi9BZHZhbmNlZC1OL1VsdGltYXRlLU4gKGl3bHdpZmkpIFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz00Nz1pZiBJV0xXSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NDk6Y29uZmlnIElXTFdJRklfS1VOSVRfVEVTVFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01MC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjU4OmNvbmZpZyBJV0xXSUZJX0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01OS1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9ODQ9Y29uZmlnIElXTE1MRFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05NC0jIGRvbiYjMzk7dCBjYWxsIGl0IF9NT0RVTEUgLS0gd2lsbCBjb25mdXNlIEtjb25maWcvZml4ZGVwLy4uLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjk1OmNvbmZpZyBJV0xXSUZJX09QTU9ERV9NT0RVTEFSXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXHRib29sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTEwNT1tZW51IFwmIzM0O0RlYnVnZ2luZyBPcHRpb25zXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEwNzpjb25maWcgSVdMV0lGSV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGZ1bGwgZGVidWdnaW5nIG91dHB1dCBpbiB0aGUgaXdsd2lmaSBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEzMTpjb25maWcgSVdMV0lGSV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMyLVx0Ym9vbCBcJiMzNDtpd2x3aWZpIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTM5OmNvbmZpZyBJV0xXSUZJX0RFVklDRV9UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTQwLVx0Ym9vbCBcJiMzNDtpd2x3aWZpIGRldmljZSBhY2Nlc3MgdHJhY2luZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODM1MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKklXbHdpZmkgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKQWxyaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBgSVdMV0lGSWAuIFRoYXQmIzM5O3MgdGhlIG1haW4gY29uZmlndXJhdGlvbiBvcHRpb24sIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZSBJIGhhdmVuJiMzOTt0IG92ZXJsb29rZWQgYW55IG90aGVyIGRlcGVuZGVudCBjb25maWdzLCBwYXJ0aWN1bGFybHkgZm9yIFVFRkkgc3VwcG9ydCB3aXRoaW4gYGl3bHdpZmlgLiBJdCYjMzk7cyBhIGtleSBhcmVhIHRvIG5haWwgZG93biBpZiB3ZSB3YW50IGZ1bGwgZnVuY3Rpb25hbGl0eSBhbmQgdGhhdCBpbmNsdWRlcyBiZWluZyBhYmxlIHRvIGJvb3QgcmVsaWFibHkuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBidWlsZCBzeXN0ZW0gdG8gY29uZmlybS4gSSYjMzk7bSBnb2luZyB0byBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGVgIGFuZCBgZncvTWFrZWZpbGVgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIG9wdGlvbnMgb3IgY29uZGl0aW9ucyB0aGF0IGRpY3RhdGUgdGhlIGluY2x1c2lvbiBvZiBVRUZJLXJlbGF0ZWQgY29tcG9uZW50cyBvciBmaXJtd2FyZS4gVGhhdCYjMzk7cyB1c3VhbGx5IHdoZXJlIHRoZXNlIHNvcnRzIG9mIGRlcGVuZGVuY2llcyBhcmUgZGVmaW5lZC4gSWYgaXQmIzM5O3Mgbm90IGV4cGxpY2l0LCBJJiMzOTtsbCBuZWVkIHRvIGNoYXNlIGRvd24gdGhlIGluY2x1ZGUgcGF0aHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VlZmkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzYyIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlPTM5PWl3bHdpZmktJChDT05GSUdfQUNQSSkgJiM0Mzs9IGZ3L2FjcGkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTo0MDppd2x3aWZpLSQoQ09ORklHX0VGSSlcdCYjNDM7PSBmdy91ZWZpLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtNDEtaXdsd2lmaS0kKENPTkZJR19JV0xXSUZJX0RFQlVHRlMpICYjNDM7PSBmdy9kZWJ1Z2ZzLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYz0xMTI5PXZvaWQgaXdsX2FjcGlfZ2V0X2d1aWRfbG9ja19zdGF0dXMoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jLTExNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYzoxMTUzOlx0ZndydC1cdTAwM2V1ZWZpX3RhYmxlc19sb2NrX3N0YXR1cyA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYy0xMTU0LVx0XHR3aWZpX3BrZy1cdTAwM2VwYWNrYWdlLmVsZW1lbnRzWzFdLmludGVnZXIudmFsdWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hY3BpLmMtMTE1Ny1cdFx0XHRcJiMzNDtMb2FkZWQgVUVGSSBXSUZJIEdVSUQgbG9jayBzdGF0dXM6ICVkIGZyb20gQUNQSVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jOjExNTg6XHRcdFx0ZndydC1cdTAwM2V1ZWZpX3RhYmxlc19sb2NrX3N0YXR1cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYy0xMTU5LW91dF9mcmVlOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oPTEwMzk9c3RydWN0IGl3bF9md19jbWRfdmVyc2lvbiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmgtMTA1MC0gKiBAbWF4X2FjcGlfcmV2aXNpb246IG1heCBzdXBwb3J0ZWQgQUNQSSByZXZpc2lvbiBvZiBjb21tYW5kLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmg6MTA1MTogKiBAbWF4X3VlZmlfcmV2aXNpb246IG1heCBzdXBwb3J0ZWQgVUVGSSByZXZpc2lvbiBvZiBjb21tYW5kLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmgtMTA1Mi0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oPTEwNTM9c3RydWN0IGl3bF9md19jbWRfYmlvc190YWJsZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmgtMTA1Ni1cdHU4IG1heF9hY3BpX3JldmlzaW9uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmg6MTA1NzpcdHU4IG1heF91ZWZpX3JldmlzaW9uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmgtMTA1OC19IF9fcGFja2VkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvaW1nLmM9OT11OCBpd2xfZndfbG9va3VwX2NtZF9iaW9zX3N1cHBvcnRlZF9yZXZpc2lvbihjb25zdCBzdHJ1Y3QgaXdsX2Z3ICpmdyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ltZy5jLTMwLVx0XHRcdFx0cmV0dXJuIGVudHJ5LVx1MDAzZW1heF9hY3BpX3JldmlzaW9uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9pbWcuYzozMTpcdFx0XHRyZXR1cm4gZW50cnktXHUwMDNlbWF4X3VlZmlfcmV2aXNpb247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ltZy5jLTMyLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTItI2luY2x1ZGUgXCYjMzQ7ZncvYXBpL2FsaXZlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjEzOiNpbmNsdWRlIFwmIzM0O2Z3L3VlZmkuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTQtI2luY2x1ZGUgXCYjMzQ7ZncvaW1nLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz0zNj1zdGF0aWMgaW50IGl3bF9wbnZtX2hhbmRsZV9zZWN0aW9uKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCB1OCAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0xMzMtXHRcdGNhc2UgSVdMX1VDT0RFX1RMVl9NRU1fREVTQzpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjEzNDpcdFx0XHRpZiAoaXdsX3VlZmlfaGFuZGxlX3Rsdl9tZW1fZGVzYyh0cmFucywgZGF0YSwgdGx2X2xlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTEzNS1cdFx0XHRcdFx0XHRcdCBwbnZtX2RhdGEpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTMwNz1zdGF0aWMgY29uc3QgdTggKml3bF9nZXRfcG52bV9pbWFnZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFuc19wLCBzaXplX3QgKmxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zMjAtXHRpZiAocG52bV9zcmMgPT0gSVdMX1BOVk1fU09VUkNFX0JJT1MpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjMyMTpcdFx0cGFja2FnZSA9IGl3bF91ZWZpX2dldF9wbnZtKHRyYW5zX3AsIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zMjItXHRcdGlmICghSVNfRVJSX09SX05VTEwocGFja2FnZSkpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz00MDc9aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDIyOlx0ZGF0YSA9IGl3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHRyYW5zLCBcdTAwMjZsZW5ndGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDIzLVx0aWYgKElTX0VSUihkYXRhKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQzMjpcdHJldCA9IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZSh0cmFucywgZGF0YSwgbGVuZ3RoLCBwbnZtX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MzMtXHRcdFx0XHRcdCAgc2t1X2lkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuYy05LSNpbmNsdWRlIFwmIzM0O2Z3L3J1bnRpbWUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5LmM6MTA6I2luY2x1ZGUgXCYjMzQ7ZncvdWVmaS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuYy0xMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuYz0xMz1kbyB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jLTE0LVx0aW50IHJldCA9IC1FTk9FTlQ7XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jOjE1Olx0aWYgKGZ3cnQtXHUwMDNldWVmaV90YWJsZXNfbG9ja19zdGF0dXMgXHUwMDNlIFVFRklfV0lGSV9HVUlEX1VOTE9DS0VEKVx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jOjE2Olx0XHRyZXQgPSBpd2xfdWVmaV9nZXRfICMjIF9fbmFtZShfX1ZBX0FSR1NfXyk7XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuYy0xNy1cdGlmIChyZXQgXHUwMDNjIDApXHRcdFx0XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oPTg4PXN0cnVjdCBpd2xfdHhmX2l0ZXJfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmgtMTEwLSAqIEBhcF90eXBlX2NtZF92YWxpZDogaWYgXHUwMDI2YXBfdHlwZV9jbWQgaXMgdmFsaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oOjExMTogKiBAdWVmaV90YWJsZXNfbG9ja19zdGF0dXM6IFRoZSBzdGF0dXMgb2YgdGhlIFdJRkkgR1VJRCBVRUZJIHZhcmlhYmxlcyBsb2NrOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmgtMTEyLSAqXHQwOiBVbmxvY2tlZCwgMSBhbmQgMjogTG9ja2VkLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oPTE0OD1zdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oLTIxOS1cdGJvb2wgYXBfdHlwZV9jbWRfdmFsaWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3J1bnRpbWUuaDoyMjA6XHR1OCB1ZWZpX3RhYmxlc19sb2NrX3N0YXR1cztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oLTIyMS1cdHN0cnVjdCBpd2xfcGh5X3NwZWNpZmljX2NmZyBwaHlfZmlsdGVycztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjExOiNpbmNsdWRlIFwmIzM0O2Z3L3VlZmkuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTItI2luY2x1ZGUgXCYjMzQ7ZncvYXBpL2FsaXZlLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjIzOnN0cnVjdCBpd2xfdWVmaV9wbnZtX21lbV9kZXNjIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI0LVx0X19sZTMyIGFkZHI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyOTpzdGF0aWMgdm9pZCAqaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKGVmaV9jaGFyMTZfdCAqbmFtZSwgZWZpX2d1aWRfdCAqZ3VpZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTMwLVx0XHRcdFx0ICAgdW5zaWduZWQgbG9uZyAqZGF0YV9zaXplKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NjA6dm9pZCAqaXdsX3VlZmlfZ2V0X3Budm0oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Njc6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKElXTF9VRUZJX09FTV9QTlZNX05BTUUsIFx1MDAyNklXTF9FRklfV0lGSV9HVUlELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjgtXHRcdFx0XHQgICAgIFx1MDAyNnBhY2thZ2Vfc2l6ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9ODI9c3RhdGljIHZvaWQgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6ODM6aXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04NC1cdFx0XHRcdCAgICBlZmlfZ3VpZF90ICpndWlkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6ODU6XHRcdFx0XHQgICAgZWZpX2NoYXIxNl90ICp1ZWZpX3Zhcl9uYW1lLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODYtXHRcdFx0XHQgICAgY2hhciAqdmFyX25hbWUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo5MzpcdHZhciA9IGl3bF91ZWZpX2dldF92YXJpYWJsZSh1ZWZpX3Zhcl9uYW1lLCBndWlkLCBcdTAwMjZ2YXJfc2l6ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0xMTg9c3RhdGljIHZvaWQgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTE5Oml3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjEyMDpcdFx0XHQgICAgICAgZWZpX2NoYXIxNl90ICp1ZWZpX3Zhcl9uYW1lLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTIxLVx0XHRcdCAgICAgICBjaGFyICp2YXJfbmFtZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMjQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTI1Olx0cmV0dXJuIGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKHRyYW5zLCBcdTAwMjZJV0xfRUZJX1dJRklfR1VJRCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjEyNjpcdFx0XHRcdFx0XHQgICB1ZWZpX3Zhcl9uYW1lLCB2YXJfbmFtZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEyNy1cdFx0XHRcdFx0XHQgICBleHBlY3RlZF9zaXplLCBzaXplKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMzA6aW50IGl3bF91ZWZpX2hhbmRsZV90bHZfbWVtX2Rlc2Moc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTMxLVx0XHRcdFx0IHUzMiB0bHZfbGVuLCBzdHJ1Y3QgaXdsX3Budm1faW1hZ2UgKnBudm1fZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEzMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMzM6XHRjb25zdCBzdHJ1Y3QgaXdsX3VlZmlfcG52bV9tZW1fZGVzYyAqZGVzYyA9IChjb25zdCB2b2lkICopZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEzNC1cdHUzMiBkYXRhX2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxNjY6c3RhdGljIGludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfc2VjdGlvbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTE2Ny1cdFx0XHRcdFx0IGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTE5My1cdFx0Y2FzZSBJV0xfVUNPREVfVExWX01FTV9ERVNDOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTk0Olx0XHRcdGlmIChpd2xfdWVmaV9oYW5kbGVfdGx2X21lbV9kZXNjKHRyYW5zLCBkYXRhLCB0bHZfbGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTk1LVx0XHRcdFx0XHRcdFx0IHBudm1fZGF0YSkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MjIwOmludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yMjEtXHRcdFx0XHRjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yNjctXHRcdFx0ICAgIHNrdV9pZFsyXSA9PSB0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMl0pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjI2ODpcdFx0XHRcdGludCByZXQgPSBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfc2VjdGlvbih0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI2OS1cdFx0XHRcdFx0XHRcdFx0ICAgIGRhdGEsIGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyODU6dTggKml3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBzaXplX3QgKmxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI4Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MjkxOlx0cGFja2FnZSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZSh0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI5Mi1cdFx0XHRcdFx0XHQgSVdMX1VFRklfUkVEVUNFRF9QT1dFUl9OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTMxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjMxNDpzdGF0aWMgaW50IGl3bF91ZWZpX3N0ZXBfcGFyc2Uoc3RydWN0IHVlZmlfY252X2NvbW1vbl9zdGVwX2RhdGEgKmNvbW1vbl9zdGVwX2RhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMTUtXHRcdFx0ICAgICAgIHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTMyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjMyOTp2b2lkIGl3bF91ZWZpX2dldF9zdGVwX3RhYmxlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzMwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjMzMTpcdHN0cnVjdCB1ZWZpX2Nudl9jb21tb25fc3RlcF9kYXRhICpkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzMyLVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzozMzc6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQodHJhbnMsIFx1MDAyNklXTF9FRklfV0lGSV9CVF9HVUlELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzM4LVx0XHRcdFx0XHRcdCAgIElXTF9VRUZJX1NURVBfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzozNDM6XHRyZXQgPSBpd2xfdWVmaV9zdGVwX3BhcnNlKGRhdGEsIHRyYW5zKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTM0NC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzQ4LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjM0OTpJV0xfRVhQT1JUX1NZTUJPTChpd2xfdWVmaV9nZXRfc3RlcF90YWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzozNTE6c3RhdGljIGludCBpd2xfdWVmaV9zZ29tX3BhcnNlKHN0cnVjdCB1ZWZpX2Nudl93bGFuX3Nnb21fZGF0YSAqc2dvbV9kYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzUyLVx0XHRcdCAgICAgICBzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MzgzOnZvaWQgaXdsX3VlZmlfZ2V0X3Nnb21fdGFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zODQtXHRcdFx0ICAgICBzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zODUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Mzg2Olx0c3RydWN0IHVlZmlfY252X3dsYW5fc2dvbV9kYXRhICpkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzg3LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzozOTI6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHRyYW5zLCBJV0xfVUVGSV9TR09NX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zOTMtXHRcdFx0XHRcdCAgICAgIFwmIzM0O1NHT01cJiMzNDssIHNpemVvZigqZGF0YSksIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTM5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjM5NzpcdHJldCA9IGl3bF91ZWZpX3Nnb21fcGFyc2UoZGF0YSwgZndydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zOTgtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQwMi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo0MDM6SVdMX0VYUE9SVF9TWU1CT0woaXdsX3VlZmlfZ2V0X3Nnb21fdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDA1OnN0YXRpYyBpbnQgaXdsX3VlZmlfdWF0c19wYXJzZShzdHJ1Y3QgdWVmaV9jbnZfd2xhbl91YXRzX2RhdGEgKnVhdHNfZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQwNi1cdFx0XHQgICAgICAgc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQxOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjQyMDp2b2lkIGl3bF91ZWZpX2dldF91YXRzX3RhYmxlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDIxLVx0XHRcdCAgICAgc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDIyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjQyMzpcdHN0cnVjdCB1ZWZpX2Nudl93bGFuX3VhdHNfZGF0YSAqZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQyNC1cdGludCByZXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo0MjY6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHRyYW5zLCBJV0xfVUVGSV9VQVRTX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MjctXHRcdFx0XHRcdCAgICAgIFwmIzM0O1VBVFNcJiMzNDssIHNpemVvZigqZGF0YSksIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjQzMTpcdHJldCA9IGl3bF91ZWZpX3VhdHNfcGFyc2UoZGF0YSwgZndydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MzItXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQzNS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo0MzY6SVdMX0VYUE9SVF9TWU1CT0woaXdsX3VlZmlfZ2V0X3VhdHNfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDM4OnZvaWQgaXdsX3VlZmlfZ2V0X3VuZWJfdGFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MzktXHRcdFx0ICAgICBzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00NDAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDQxOlx0c3RydWN0IHVlZmlfY252X3dsYW5fdW5lYl9kYXRhICpkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDQzOlx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZSh0cmFucywgSVdMX1VFRklfVU5FQl9OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDQ0LVx0XHRcdFx0XHQgICAgICBcJiMzNDtVTkVCXCYjMzQ7LCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00NjUtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDY2OklXTF9FWFBPUlRfU1lNQk9MKGl3bF91ZWZpX2dldF91bmViX3RhYmxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQ2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjQ2ODpzdGF0aWMgdm9pZCBpd2xfdWVmaV9zZXRfc2FyX3Byb2ZpbGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDY5LVx0XHRcdFx0ICAgICBjb25zdCB1OCAqdmFscywgdTggcHJvZl9pbmRleCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo0OTc6aW50IGl3bF91ZWZpX2dldF93cmRzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQ5OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo0OTk6XHRzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dyZHMgKmRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01MDAtXHR1bnNpZ25lZCBsb25nIHNpemU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NTA1Olx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVx1MDAzZXRyYW5zLCBJV0xfVUVGSV9XUkRTX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01MDYtXHRcdFx0XHRcdCAgICAgIFwmIzM0O1dSRFNcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTM3LVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo1Mzg6XHRpd2xfdWVmaV9zZXRfc2FyX3Byb2ZpbGUoZndydCwgZGF0YS1cdTAwM2V2YWxzLCAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTM5LVx0XHRcdFx0IG51bV9zdWJiYW5kcywgZGF0YS1cdTAwM2Vtb2RlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01NDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo1NDU6aW50IGl3bF91ZWZpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU0Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo1NDc6XHRzdHJ1Y3QgdWVmaV9jbnZfdmFyX2V3cmQgKmRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01NDgtXHR1bnNpZ25lZCBsb25nIGV4cGVjdGVkX3NpemU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NTU0Olx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVx1MDAzZXRyYW5zLCBJV0xfVUVGSV9FV1JEX05BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01NTUtXHRcdFx0XHRcdCAgICAgIFwmIzM0O0VXUkRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTkwLVx0XHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjU5MTpcdFx0aXdsX3VlZmlfc2V0X3Nhcl9wcm9maWxlKGZ3cnQsIFx1MDAyNmRhdGEtXHUwMDNldmFsc1tpICogcHJvZmlsZV9zaXplXSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU5Mi1cdFx0XHRcdFx0IGkgJiM0MzsgMSwgbnVtX3N1YmJhbmRzLCBkYXRhLVx1MDAzZW1vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjU5OTppbnQgaXdsX3VlZmlfZ2V0X3dnZHNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjAwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjYwMTpcdHN0cnVjdCB1ZWZpX2Nudl92YXJfd2dkcyAqZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTYwMi1cdHVuc2lnbmVkIGxvbmcgZXhwZWN0ZWRfc2l6ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02MDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2MDg6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX1dHRFNfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTYwOS1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7V0dEU1wmIzM0OywgVUVGSV9XR0RTX1RBQkxFX1NJWkVfUkVWMyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2NzY6aW50IGl3bF91ZWZpX2dldF9wcGFnX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY3Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2Nzg6XHRzdHJ1Y3QgdWVmaV9jbnZfdmFyX3BwYWcgKmRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02NzktXHRpbnQgbl9zdWJiYW5kcztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02ODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2ODM6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX1BQQUdfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY4NC1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7UFBBR1wmIzM0OywgVUVGSV9QUEFHX0RBVEFfU0laRV9WNSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2OTM6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02OTQtXHRcdFx0XHRcdCAgICAgIElXTF9VRUZJX1BQQUdfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3NDU6aW50IGl3bF91ZWZpX2dldF90YXNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzQ2LVx0XHRcdCAgIHN0cnVjdCBpd2xfdGFzX2RhdGEgKnRhc19kYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzQ3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc0ODpcdHN0cnVjdCB1ZWZpX2Nudl92YXJfd3RhcyAqdWVmaV90YXM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NDktXHRpbnQgcmV0LCBlbmFibGVkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NzUxOlx0dWVmaV90YXMgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cdTAwM2V0cmFucywgSVdMX1VFRklfV1RBU19OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NzUyOlx0XHRcdFx0XHRcdCAgXCYjMzQ7V1RBU1wmIzM0Oywgc2l6ZW9mKCp1ZWZpX3RhcyksIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NzUzOlx0aWYgKElTX0VSUih1ZWZpX3RhcykpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NTQtXHRcdHJldHVybiAtRUlOVkFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NzU2Olx0aWYgKHVlZmlfdGFzLVx1MDAzZXJldmlzaW9uIFx1MDAzYyBJV0xfVUVGSV9NSU5fV1RBU19SRVZJU0lPTiB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NzU3Olx0ICAgIHVlZmlfdGFzLVx1MDAzZXJldmlzaW9uIFx1MDAzZSBJV0xfVUVGSV9NQVhfV1RBU19SRVZJU0lPTikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzU4LVx0XHRyZXQgPSAtRUlOVkFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzU5LVx0XHRJV0xfREVCVUdfUkFESU8oZndydCwgXCYjMzQ7VW5zdXBwb3J0ZWQgVUVGSSBXVEFTIHJldmlzaW9uOiVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NzYwOlx0XHRcdFx0dWVmaV90YXMtXHUwMDNlcmV2aXNpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzYxLVx0XHRnb3RvIG91dDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NjQtXHRJV0xfREVCVUdfUkFESU8oZndydCwgXCYjMzQ7VEFTIHNlbGVjdGlvbiBhcyByZWFkIGZyb20gQklPUzogMHgleFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc2NTpcdFx0XHR1ZWZpX3Rhcy1cdTAwM2V0YXNfc2VsZWN0aW9uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc2NzpcdGVuYWJsZWQgPSB1ZWZpX3Rhcy1cdTAwM2V0YXNfc2VsZWN0aW9uIFx1MDAyNiBJV0xfV1RBU19FTkFCTEVEX01TSztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc2OC1cdHRhc19kYXRhLVx1MDAzZXRhYmxlX3NvdXJjZSA9IEJJT1NfU09VUkNFX1VFRkk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3Njk6XHR0YXNfZGF0YS1cdTAwM2V0YWJsZV9yZXZpc2lvbiA9IHVlZmlfdGFzLVx1MDAzZXJldmlzaW9uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NzcwOlx0dGFzX2RhdGEtXHUwMDNldGFzX3NlbGVjdGlvbiA9IHVlZmlfdGFzLVx1MDAzZXRhc19zZWxlY3Rpb247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NzEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzc1LVx0SVdMX0RFQlVHX1JBRElPKGZ3cnQsIFwmIzM0O1JlYWRpbmcgVEFTIHRhYmxlIHJldmlzaW9uICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Nzc2Olx0XHRcdHVlZmlfdGFzLVx1MDAzZXJldmlzaW9uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc3NzpcdGlmICh1ZWZpX3Rhcy1cdTAwM2VibGFja19saXN0X3NpemUgXHUwMDNlIElXTF9XVEFTX0JMQUNLX0xJU1RfTUFYKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NzgtXHRcdElXTF9ERUJVR19SQURJTyhmd3J0LCBcJiMzNDtUQVMgaW52YWxpZCBhcnJheSBzaXplICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Nzc5Olx0XHRcdFx0dWVmaV90YXMtXHUwMDNlYmxhY2tfbGlzdF9zaXplKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc4MC1cdFx0cmV0ID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03ODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3ODQ6XHR0YXNfZGF0YS1cdTAwM2VibG9ja19saXN0X3NpemUgPSB1ZWZpX3Rhcy1cdTAwM2VibGFja19saXN0X3NpemU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3ODU6XHRJV0xfREVCVUdfUkFESU8oZndydCwgXCYjMzQ7VEFTIGFycmF5IHNpemUgJXVcXG5cJiMzNDssIHVlZmlfdGFzLVx1MDAzZWJsYWNrX2xpc3Rfc2l6ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03ODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3ODc6XHRmb3IgKHU4IGkgPSAwOyBpIFx1MDAzYyB1ZWZpX3Rhcy1cdTAwM2VibGFja19saXN0X3NpemU7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3ODg6XHRcdHRhc19kYXRhLVx1MDAzZWJsb2NrX2xpc3RfYXJyYXlbaV0gPSB1ZWZpX3Rhcy1cdTAwM2VibGFja19saXN0W2ldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzg5LVx0XHRJV0xfREVCVUdfUkFESU8oZndydCwgXCYjMzQ7VEFTIGJsb2NrIGxpc3QgY291bnRyeSAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc5MDpcdFx0XHRcdHVlZmlfdGFzLVx1MDAzZWJsYWNrX2xpc3RbaV0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzkxLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc5My1vdXQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3OTQ6XHRrZnJlZSh1ZWZpX3Rhcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03OTUtXHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc5ODppbnQgaXdsX3VlZmlfZ2V0X3B3cl9saW1pdChzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03OTktXHRcdFx0ICAgdTY0ICpkZmx0X3B3cl9saW1pdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTgwMC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4MDE6XHRzdHJ1Y3QgdWVmaV9jbnZfdmFyX3NwbGMgKmRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MDItXHRpbnQgcmV0ID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTgwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjgwNDpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cdTAwM2V0cmFucywgSVdMX1VFRklfU1BMQ19OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODA1LVx0XHRcdFx0XHQgICAgICBcJiMzNDtTUExDXCYjMzQ7LCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4MjE6aW50IGl3bF91ZWZpX2dldF9tY2Moc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCBjaGFyICptY2MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MjIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6ODIzOlx0c3RydWN0IHVlZmlfY252X3Zhcl93cmRkICpkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODI0LVx0aW50IHJldCA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4MjY6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX1dSRERfTkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTgyNy1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7V1JERFwmIzM0Oywgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6ODUyOmludCBpd2xfdWVmaV9nZXRfZWNrdihzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsIHUzMiAqZXh0bF9jbGspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04NTMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6ODU0Olx0c3RydWN0IHVlZmlfY252X3Zhcl9lY2t2ICpkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODU1LVx0aW50IHJldCA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04NTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4NTc6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQoZndydC1cdTAwM2V0cmFucyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg1OC1cdFx0XHRcdFx0XHQgICBcdTAwMjZJV0xfRUZJX1dJRklfQlRfR1VJRCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4NzY6aW50IGl3bF91ZWZpX2dldF93YmVtKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwgdTMyICp2YWx1ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg3Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4Nzg6XHRzdHJ1Y3QgdWVmaV9jbnZfd2xhbl93YmVtX2RhdGEgKmRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04NzktXHRpbnQgcmV0ID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjg4MTpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cdTAwM2V0cmFucywgSVdMX1VFRklfV0JFTV9OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODgyLVx0XHRcdFx0XHQgICAgICBcJiMzNDtXQkVNXCYjMzQ7LCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04OTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4OTk6c3RhdGljIGludCBpd2xfdWVmaV9sb2FkX2RzbV92YWx1ZXMoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTAwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjkwMTpcdHN0cnVjdCB1ZWZpX2Nudl92YXJfZ2VuZXJhbF9jZmcgKmRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05MDItXHRpbnQgcmV0ID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05MDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo5MDY6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsIElXTF9VRUZJX0RTTV9OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTA3LVx0XHRcdFx0XHQgICAgICBcJiMzNDtEU01cJiMzNDssIHNpemVvZigqZGF0YSksIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTk0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjk0ODppbnQgaXdsX3VlZmlfZ2V0X2RzbShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsIGVudW0gaXdsX2RzbV9mdW5jcyBmdW5jLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTQ5LVx0XHQgICAgIHUzMiAqdmFsdWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTU1LVx0aWYgKCFmd3J0LVx1MDAzZWRzbV9mdW5jc192YWxpZCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6OTU2Olx0XHRpbnQgcmV0ID0gaXdsX3VlZmlfbG9hZF9kc21fdmFsdWVzKGZ3cnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTU3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTk3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjk3NjppbnQgaXdsX3VlZmlfZ2V0X3B1bmN0dXJpbmcoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTc3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjk3ODpcdHN0cnVjdCB1ZWZpX2Nudl92YXJfcHVuY3R1cmluZ19kYXRhICpkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTc5LVx0LyogZGVmYXVsdCB2YWx1ZSBpcyBub3QgZW5hYmxlZCBpZiB0aGVyZSBpcyBhbnkgaXNzdWUgaW4gcmVhZGluZ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6OTgwOlx0ICogdWVmaSB2YXJpYWJsZSBvciByZXZpc2lvbiBpcyBub3Qgc3VwcG9ydGVkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05ODEtXHQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05ODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo5ODQ6XHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXHUwMDNldHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05ODUtXHRcdFx0XHRcdCAgICAgIElXTF9VRUZJX1BVTkNUVVJJTkdfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDAyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjEwMDM6SVdMX0VYUE9SVF9TWU1CT0woaXdsX3VlZmlfZ2V0X3B1bmN0dXJpbmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjEwMDU6aW50IGl3bF91ZWZpX2dldF9kc2JyKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwgdTMyICp2YWx1ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMDYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTAwNzpcdHN0cnVjdCB1ZWZpX2Nudl93bGFuX2RzYnJfZGF0YSAqZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMDgtXHRpbnQgcmV0ID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMDEwOlx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKGZ3cnQtXHUwMDNldHJhbnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDExLVx0XHRcdFx0XHRcdCAgIFx1MDAyNklXTF9FRklfV0lGSV9CVF9HVUlELFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMDMxOmludCBpd2xfdWVmaV9nZXRfcGh5X2ZpbHRlcnMoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAzMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMDMzOlx0c3RydWN0IHVlZmlfY252X3dwZmNfZGF0YSAqZGF0YSBfX2ZyZWUoa2ZyZWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAzNC1cdHN0cnVjdCBpd2xfcGh5X3NwZWNpZmljX2NmZyAqZmlsdGVycyA9IFx1MDAyNmZ3cnQtXHUwMDNlcGh5X2ZpbHRlcnM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTAzNjpcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cdTAwM2V0cmFucywgSVdMX1VFRklfV1BGQ19OQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAzNy1cdFx0XHRcdFx0ICAgICAgXCYjMzQ7V1BGQ1wmIzM0Oywgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtNC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjU6I2lmbmRlZiBfX2l3bF9md191ZWZpX19cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjY6I2RlZmluZSBfX2l3bF9md191ZWZpX19cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg9NDQ9c3RydWN0IHBudm1fc2t1X3BhY2thZ2Uge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6NTI6c3RydWN0IHVlZmlfY252X3dsYW5fc2dvbV9kYXRhIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTUzLVx0dTggcmV2aXNpb247XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDo1NzpzdHJ1Y3QgdWVmaV9jbnZfd2xhbl91YXRzX2RhdGEge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtNTgtXHR1OCByZXZpc2lvbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC02Mi0vKiBVTkVCJiMzOTtzIGxheW91dCBpcyBpZGVudGljYWwgdG8gVUFUUyYjMzk7cyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6NjM6I2RlZmluZSB1ZWZpX2Nudl93bGFuX3VuZWJfZGF0YSB1ZWZpX2Nudl93bGFuX3VhdHNfZGF0YVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDo2NTpzdHJ1Y3QgdWVmaV9jbnZfY29tbW9uX3N0ZXBfZGF0YSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC02Ni1cdHU4IHJldmlzaW9uO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTg2LS8qKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6ODc6ICogc3RydWN0IHVlZmlfY252X3Zhcl93cmRzIC0gV1JEUyB0YWJsZSBhcyBkZWZpbmVkIGluIFVFRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTg4LSAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtOTctICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDo5ODpzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dyZHMge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtOTktXHR1OCByZXZpc2lvbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xMTItI2RlZmluZSBVRUZJX1NBUl9XUkRTX1RBQkxFX1NJWkVfUkVWMlx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxMTM6XHQob2Zmc2V0b2Yoc3RydWN0IHVlZmlfY252X3Zhcl93cmRzLCB2YWxzKSAmIzQzO1x0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTExNC1cdCBVRUZJX1NBUl9QUk9GSUxFX1NJWkVfUkVWMilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xMTYtI2RlZmluZSBVRUZJX1NBUl9XUkRTX1RBQkxFX1NJWkVfUkVWM1x0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxMTc6XHQob2Zmc2V0b2Yoc3RydWN0IHVlZmlfY252X3Zhcl93cmRzLCB2YWxzKSAmIzQzO1x0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTExOC1cdCBVRUZJX1NBUl9QUk9GSUxFX1NJWkVfUkVWMylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xMjAtLyoqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxMjE6ICogc3RydWN0IHVlZmlfY252X3Zhcl9ld3JkIC0gRVdSRCB0YWJsZSBhcyBkZWZpbmVkIGluIFVFRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTEyMi0gKiBAcmV2aXNpb246IHRoZSByZXZpc2lvbiBvZiB0aGUgdGFibGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xMjUtICogQHZhbHM6IHRoZSBhZGRpdGlvbmFsIFNBUiBwcm9maWxlcyAoIzItIzQpIGFzIGFuIGFycmF5IG9mIFNBUiBwcm9maWxlcy5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjEyNjogKlx0QSBTQVIgcHJvZmlsZSBpcyBkZWZpbmVkIHRoZSBcdTAwMjZzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dyZHM6OnZhbHMuIFRoZSBzaXplXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xMjctICpcdG9mIGVhY2ggcHJvZmlsZSBkZXBlbmRzIG9uIHRoZSBudW1iZXIgb2Ygc3ViYmFuZHMgd2hpY2ggZGVwZW5kcyBvbiB0aGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjEyODogKlx0cmV2aXNpb24uIFRoaXMgaXMgZXhwbGFpbmVkIGluIFx1MDAyNnN0cnVjdCB1ZWZpX2Nudl92YXJfd3Jkcy5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTEyOS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjEzMDpzdHJ1Y3QgdWVmaV9jbnZfdmFyX2V3cmQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTMxLVx0dTggcmV2aXNpb247XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTM3LSNkZWZpbmUgVUVGSV9TQVJfRVdSRF9UQUJMRV9TSVpFX1JFVjJcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxMzg6XHQob2Zmc2V0b2Yoc3RydWN0IHVlZmlfY252X3Zhcl9ld3JkLCB2YWxzKSAmIzQzO1x0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTM5LVx0IFVFRklfU0FSX1BST0ZJTEVfU0laRV9SRVYyICogKEJJT1NfU0FSX01BWF9QUk9GSUxFX05VTSAtIDEpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE0MS0jZGVmaW5lIFVFRklfU0FSX0VXUkRfVEFCTEVfU0laRV9SRVYzXHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MTQyOlx0KG9mZnNldG9mKHN0cnVjdCB1ZWZpX2Nudl92YXJfZXdyZCwgdmFscykgJiM0MztcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE0My1cdCBVRUZJX1NBUl9QUk9GSUxFX1NJWkVfUkVWMyAqIChCSU9TX1NBUl9NQVhfUFJPRklMRV9OVU0gLSAxKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNDUtLyoqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxNDY6ICogc3RydWN0IHVlZmlfY252X3Zhcl93Z2RzIC0gV0dEUyB0YWJsZSBhcyBkZWZpbmVkIGluIFVFRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE0Ny0gKiBAcmV2aXNpb246IHRoZSByZXZpc2lvbiBvZiB0aGUgdGFibGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNTUtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxNTY6c3RydWN0IHVlZmlfY252X3Zhcl93Z2RzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE1Ny1cdHU4IHJldmlzaW9uO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE2OS0jZGVmaW5lIFVFRklfV0dEU19UQUJMRV9TSVpFX1JFVjNcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxNzA6XHQob2Zmc2V0b2Yoc3RydWN0IHVlZmlfY252X3Zhcl93Z2RzLCB2YWxzKSAmIzQzO1x0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTcxLVx0IFVFRklfV0dEU19QUk9GSUxFX1NJWkVfUkVWMyAqIEJJT1NfR0VPX01BWF9QUk9GSUxFX05VTSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNzMtI2RlZmluZSBVRUZJX1dHRFNfVEFCTEVfU0laRV9SRVY0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MTc0Olx0KG9mZnNldG9mKHN0cnVjdCB1ZWZpX2Nudl92YXJfd2dkcywgdmFscykgJiM0MztcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE3NS1cdCBVRUZJX1dHRFNfUFJPRklMRV9TSVpFX1JFVjQgKiBCSU9TX0dFT19NQVhfUFJPRklMRV9OVU0pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTc3LS8qKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MTc4OiAqIHN0cnVjdCB1ZWZpX2Nudl92YXJfcHBhZyAtIFBQQUcgdGFibGUgYXMgZGVmaW5lZCBpbiBVRUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNzktICogQHJldmlzaW9uOiB0aGUgcmV2aXNpb24gb2YgdGhlIHRhYmxlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTg3LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MTg4OnN0cnVjdCB1ZWZpX2Nudl92YXJfcHBhZyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xODktXHR1OCByZXZpc2lvbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xOTQtI2RlZmluZSBVRUZJX1BQQUdfREFUQV9TSVpFX1Y0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MTk1Olx0KG9mZnNldG9mKHN0cnVjdCB1ZWZpX2Nudl92YXJfcHBhZywgdmFscykgJiM0MztcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xOTYtXHRzaXplb2YoczgpICogVUVGSV9QUEFHX05VTV9DSEFJTlMgKiBVRUZJX1BQQUdfU1VCX0JBTkRTX05VTV9SRVY0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTk3LSNkZWZpbmUgVUVGSV9QUEFHX0RBVEFfU0laRV9WNVx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjE5ODpcdChvZmZzZXRvZihzdHJ1Y3QgdWVmaV9jbnZfdmFyX3BwYWcsIHZhbHMpICYjNDM7XHRcXFxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMjU1CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNzEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdpRmkgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBgaXdsd2lmaS0kKENPTkZJR19FRkkpICYjNDM7PSBmdy91ZWZpLm9gLiBTbywgYENPTkZJR19FRklgIGlzIGEgcmVxdWlyZW1lbnQgZm9yIGNvbXBpbGluZyBgZncvdWVmaS5jYC4gUmlnaHQsIGxldCBtZSBjb25maXJtIHRoYXQgYENPTkZJR19FRklgIGlzIGRlZmluaXRlbHkgbmVlZGVkLiBZdXAsIGdvdCBpdC4gSG1tLCBhcmUgdGhlcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnM/IExldCYjMzk7cyBzZWUuLi4gaXQmIzM5O3MgYENPTkZJR19JV0xXSUZJYCBhbmQgYENPTkZJR19FRklgLiBJIHNlZW0gdG8gcmVjYWxsIGBDT05GSUdfRUZJYCBvZnRlbiBiZWluZyBlbmFibGVkIGluIHN5emthbGxlciBjb25maWd1cmF0aW9ucy4gQnV0LCB3aGF0IGFib3V0IHRoZSBkZXBlbmRlbmNpZXM/IFNwZWNpZmljYWxseSBgQ09ORklHX01BQzgwMjExYCBvciBgQ09ORklHX0NGRzgwMjExYD8gSSBrbm93IHRoYXQgYElXTFdJRklgIGVpdGhlciBzZWxlY3RzIG9yIGRlcGVuZHMgb24gdGhlbSwgc28gbGV0IG1lIHF1aWNrbHkgcmUtZXhhbWluZSB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ2AgZmlsZS4gT2ssIHllcywgYGNvbmZpZyBJV0xXSUZJYCBkZXBlbmRzIG9uIGBQQ0kgJmFtcDsmYW1wOyBNQUM4MDIxMSAmYW1wOyZhbXA7IEhBU19JT01FTWAuCgpOb3csIGxldCYjMzk7cyBnZXQgYmFjayB0byB0aGUgcGF0Y2ggaXRzZWxmLgoKYGBgYwoJCQlpZiAodGx2X2xlbiAmbHQ7IHNpemVvZigqdGx2X3NrdV9pZCkpIHsKCQkJCUlXTF9FUlIodHJhbnMsICYjMzQ7aW52YWxpZCBQTlZNIFNLVSBUTFYgbGVuOiAldVxuJiMzNDssCgkJCQkJdGx2X2xlbik7CgkJCQlyZXR1cm4gLUVJTlZBTDsKCQkJfQpgYGAKClRoaXMgaXMgY2xlYXJseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCYjMzk7cyBkZXNpZ25lZCB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3aGVuIGB0bHZfbGVuYCBpcyBzbWFsbGVyIHRoYW4gdGhlIHNpemUgb2YgdGhlIGB0bHZfc2t1X2lkYCBzdHJ1Y3R1cmUuIFdhaXQsIGB0bHZfc2t1X2lkYCBpcyBhIGBzdHJ1Y3QgaXdsX3NrdV9pZGAuCgpgYGBjCnN0cnVjdCBpd2xfc2t1X2lkIHsKCV9fbGUzMiBkYXRhWzNdOwp9IF9fcGFja2VkOwpgYGAKClNvLCBpZiBgdGx2X2xlbmAgaXMgbGVzcyB0aGFuIDEyLCB0aGUgY29kZSB3b3VsZCBiZSB0cnlpbmcgdG8gYWNjZXNzIGB0bHZfc2t1X2lkLSZndDtkYXRhWzBdYCwgYGRhdGFbMV1gLCBhbmQgYGRhdGFbMl1gIGJleW9uZCB0aGUgYm91bmRzIG9mIHRoZSBwcm92aWRlZCBUTFYsIHJpZ2h0PyBFeGFjdGx5LiBUaGVyZWZvcmUsIHRoaXMgaXMgYSBsZWdpdGltYXRlIGZ1bmN0aW9uYWwgZml4LCBwcmV2ZW50aW5nIGEgcG90ZW50aWFsbHkgc2VyaW91cyBtZW1vcnkgcmVhZCB2dWxuZXJhYmlsaXR5LgoKVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGlzIHRoaXMgY29kZSBwYXRoIHJlYWNoYWJsZT8gT2theSwgYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgaXMgY2FsbGVkIGR1cmluZyBmaXJtd2FyZSBpbml0aWFsaXphdGlvbiBpZiB0aGUgVUVGSSB2YXJpYWJsZSBgSVdMX1VFRklfUkVEVUNFRF9QT1dFUl9OQU1FYCBpcyBwcmVzZW50LiBBbmQsIHN5emthbGxlciBjYW4gZWFzaWx5IGNyZWF0ZSB0aGlzIFVFRkkgdmFyaWFibGUsIHRodXMgdHJpZ2dlcmluZyBpd2x3aWZpIGluaXRpYWxpemF0aW9uLiBXYWl0LCBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgIGlzIGNhbGxlZCBmcm9tIGBpd2xfcG52bV9sb2FkYC4gYGl3bF9wbnZtX2xvYWRgIGlzIGNhbGxlZCBmcm9tIGBpd2xfbXZtX2xvYWRfdWNvZGVfd2FpdF9hbGl2ZWAgYW5kIGBpd2xfbWxkX3J1bl9md19pbml0X3NlcXVlbmNlYC4gVGhlc2UgYXJlIGFsbCBwYXJ0IG9mIHRoZSBzdGFuZGFyZCBkcml2ZXIgaW5pdGlhbGl6YXRpb24gZmxvdyB3aGVuIHRoZSBmaXJtd2FyZSBpcyBsb2FkZWQuIFNvLCB5ZXMsIGl0JiMzOTtzIHJlYWNoYWJsZSBkdXJpbmcgbm9ybWFsIGRyaXZlciBvcGVyYXRpb24uCgpTbywganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNsZWFyOgoKVGhlIGtleSBmdW5jdGlvbnMgYXJlOgotIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgCi0gYGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zYAotIGBpd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcmAKCkFuZCB0aGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMgYXJlOgotIGBJV0xXSUZJYAotIGBFRklgCgpOb3csIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgaXMgYElXTFdJRklgIHN1ZmZpY2llbnQ/IGBDT05GSUdfSVdMV0lGSWAgaXMgaW5kZWVkIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24sIGJ1dCBzaG91bGQgSSBjb25zaWRlciBgQ09ORklHX0lXTFdJRklfTVZNYCBvciBgQ09ORklHX0lXTFdJRklfQlNTYD8gTGV0IG1lIHF1aWNrbHkgcmUtZXhhbWluZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnYCB0byBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJV0xXSUZJX01WTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ4NDgKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkluaXRpYWwgQXNzZXNzbWVudDogTG9jYXRpbmcgdGhlIElXTFdJRklfTVZNIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgaGFuZyBvbiBhIHNlY29uZC4gTXkgbWVudGFsIG1hcCBvZiB0aGUga2VybmVsIHNvdXJjZSB0cmVlIGlzIHVzdWFsbHkgcHJldHR5IHNvbGlkLCBidXQgZm9yIGEgc3BsaXQgc2Vjb25kLCBJIGhhZCB0byBkb3VibGUtY2hlY2sgdGhhdCBsb2NhdGlvbi4gKklXTFdJRklfTVZNKi4uLiByaWdodCwgdGhhdCYjMzk7cyB0aGUgbXVsdGktdmlydHVhbCBtYWNoaW5lIHN0dWZmIGZvciB0aGUgSW50ZWwgd2lyZWxlc3MgZHJpdmVyLiBCdXQgdGhlIEtjb25maWcgZmlsZSBmb3IgKnRoYXQqIHNwZWNpZmljIGNvbXBvbmVudD8gTXkgZmlyc3QgaW5zdGluY3Qgd2FzIGl0IHdvdWxkIHByb2JhYmx5IGJlIGluIHRoZSBjb3JlIGl3bHdpZmkgZGlyZWN0b3J5LCBidXQgaXQmIzM5O3Mgb2Z0ZW4gY29tcGFydG1lbnRhbGl6ZWQuIExldCBtZSBxdWlja2x5IHNvbGlkaWZ5IGluIG15IG1pbmQgdGhhdCBpdCYjMzk7cyBsb2NhdGVkIHVuZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9LY29uZmlnYC4gVGhhdCBzcGVjaWZpYyBwYXRoIHRlbGxzIG1lIGhvdyBtb2R1bGFyIGl0IGlzLiBUaGlzIHByb2JhYmx5IG1lYW5zIGl0JiMzOTtzIGEgd2VsbC1kZWZpbmVkIGFuZCBwb3RlbnRpYWxseSBpbmRlcGVuZGVudCBtb2R1bGUgd2l0aGluIHRoZSBsYXJnZXIgSW50ZWwgd2lyZWxlc3MgZHJpdmVyIGZyYW1ld29yay4gR29vZC4gS25vd2luZyAqZXhhY3RseSogd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gbGl2ZXMgaXMga2V5IGZvciB1bmRlcnN0YW5kaW5nIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGJ1aWxkIG9wdGlvbnMuIE5vdyBJIGNhbiBtb3ZlIGZvcndhcmQsIGNvbmZpZGVudCB0aGF0IEkga25vdyB3aGVyZSB0byBsb29rIGlmIEkgbmVlZCB0byBhZGp1c3Qgc2V0dGluZ3MgcmVsYXRlZCB0byB0aGF0IHBhcnRpY3VsYXIgc2VjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVdMV0lGSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTE4MgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipLY29uZmlnIEh1bnQgaW4gaXdsd2lmaSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IG15IGJlYXJpbmdzIGluIHRoZSBpd2x3aWZpIGNvZGUuIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2hpY2ggS2NvbmZpZyBmaWxlcyBhcmUgcmVsZXZhbnQgaGVyZS4gVGhlIGZpcnN0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSAqdGhlcmUqLiBJIHNob3VsZCBwcm9iYWJseSBzdGFydCBieSBkb2luZyBhIHF1aWNrIGBsc2AgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtsbCBnaXZlIG1lIGEgbGlzdCBvZiBhbGwgdGhlIGZpbGVzIGFuZCBzdWJkaXJlY3RvcmllcywgbWFraW5nIGl0IGVhc2llciB0byBzcG90IGxpa2VseSBjYW5kaWRhdGVzIGZvciBLY29uZmlnIGZpbGVzLiBLbm93aW5nIHRoZSBnZW5lcmFsIHN0cnVjdHVyZSwgSSBleHBlY3QgdG8gc2VlIGBLY29uZmlnYCBmaWxlcyBzcHJpbmtsZWQgYXJvdW5kLCBwb3NzaWJseSBpbiBzdWJkaXJlY3RvcmllcyByZXByZXNlbnRpbmcgZGlmZmVyZW50IHdpcmVsZXNzIGNhcmQgZmFtaWxpZXMgb3IgZmVhdHVyZSBzZXRzLiBJIGFsc28gYW50aWNpcGF0ZSB0aGVyZSBjb3VsZCBiZSBhIHRvcC1sZXZlbCBgS2NvbmZpZ2AgdGhhdCBpbmNsdWRlcyBvdGhlcnMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2l3bC1hZ24taHcuaCYjMzQ7LAogICAgJiMzNDtpd2wtY29uZmlnLmgmIzM0OywKICAgICYjMzQ7aXdsLWNzci5oJiMzNDssCiAgICAmIzM0O2l3bC1kYmctdGx2LmMmIzM0OywKICAgICYjMzQ7aXdsLWRiZy10bHYuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGVidWcuYyYjMzQ7LAogICAgJiMzNDtpd2wtZGVidWcuaCYjMzQ7LAogICAgJiMzNDtpd2wtZGV2dHJhY2UtZGF0YS5oJiMzNDssCiAgICAmIzM0O2l3bC1kZXZ0cmFjZS1pby5oJiMzNDssCiAgICAmIzM0O2l3bC1kZXZ0cmFjZS1pd2x3aWZpLmgmIzM0OywKICAgICYjMzQ7aXdsLWRldnRyYWNlLW1zZy5oJiMzNDssCiAgICAmIzM0O2l3bC1kZXZ0cmFjZS11Y29kZS5oJiMzNDssCiAgICAmIzM0O2l3bC1kZXZ0cmFjZS5jJiMzNDssCiAgICAmIzM0O2l3bC1kZXZ0cmFjZS5oJiMzNDssCiAgICAmIzM0O2l3bC1kcnYuYyYjMzQ7LAogICAgJiMzNDtpd2wtZHJ2LmgmIzM0OywKICAgICYjMzQ7aXdsLWZoLmgmIzM0OywKICAgICYjMzQ7aXdsLWlvLmMmIzM0OywKICAgICYjMzQ7aXdsLWlvLmgmIzM0OywKICAgICYjMzQ7aXdsLW1vZHBhcmFtcy5oJiMzNDssCiAgICAmIzM0O2l3bC1udm0tcGFyc2UuYyYjMzQ7LAogICAgJiMzNDtpd2wtbnZtLXBhcnNlLmgmIzM0OywKICAgICYjMzQ7aXdsLW52bS11dGlscy5jJiMzNDssCiAgICAmIzM0O2l3bC1udm0tdXRpbHMuaCYjMzQ7LAogICAgJiMzNDtpd2wtb3AtbW9kZS5oJiMzNDssCiAgICAmIzM0O2l3bC1waHktZGIuYyYjMzQ7LAogICAgJiMzNDtpd2wtcGh5LWRiLmgmIzM0OywKICAgICYjMzQ7aXdsLXBycGguaCYjMzQ7LAogICAgJiMzNDtpd2wtc2NkLmgmIzM0OywKICAgICYjMzQ7aXdsLXRyYW5zLmMmIzM0OywKICAgICYjMzQ7aXdsLXRyYW5zLmgmIzM0OywKICAgICYjMzQ7aXdsLXV0aWxzLmMmIzM0OywKICAgICYjMzQ7aXdsLXV0aWxzLmgmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IFsKICAgICYjMzQ7Y2ZnJiMzNDssCiAgICAmIzM0O2R2bSYjMzQ7LAogICAgJiMzNDtmdyYjMzQ7LAogICAgJiMzNDttZWkmIzM0OywKICAgICYjMzQ7bWxkJiMzNDssCiAgICAmIzM0O212bSYjMzQ7LAogICAgJiMzNDtwY2llJiMzNDssCiAgICAmIzM0O3Rlc3RzJiMzNDsKICBdCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU4MTkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGVidWdnaW5nIHRoZSBXaXJlbGVzcyBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIHdpcmVsZXNzIGRyaXZlciBpc3N1ZSBhbmQgbXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZmVhdHVyZSBpbiBxdWVzdGlvbiBpcyBiZWluZyBlbmFibGVkIG9yIGRpc2FibGVkLiBHaXZlbiB0aGF0IHRoaXMgc2VlbXMgdG8gYmUgYW4gSW50ZWwgd2lyZWxlc3MgZHJpdmVyLCBteSBmaXJzdCBzdG9wIGlzIGxpa2VseSBnb2luZyB0byBiZSBpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2AgZGlyZWN0b3J5LiBXaXRoaW4gdGhhdCwgSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGVyZSYjMzk7cyBhIGBLY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBzdGFuZGFyZCBwbGFjZSBmb3IgZGVmaW5pbmcgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBrZXJuZWwgbW9kdWxlcywgYW5kIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uIEl0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlc2UgZmVhdHVyZXMgYXJlIGVuYWJsZWQsIGRpc2FibGVkLCBvciBjb25kaXRpb25hbGx5IGNvbXBpbGVkLiBJZiB0aGlzIGRyaXZlciBpcyBsaWtlIHRoZSBvdGhlcnMgSSYjMzk7dmUgd29ya2VkIHdpdGgsIHRoaXMgaXMgdGhlIG1vc3QgbGlrZWx5IGxvY2F0aW9uIGZvciBmaW5kaW5nIHRoZSBzcGVjaWZpYyBLY29uZmlnIGZpbGUgdG8gcmV2aWV3LiBJJiMzOTtsbCBzdGFydCB0aGVyZSBhbmQgc2VlIGlmIEkgY2FuIHRyYWNlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnICYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMDoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjEwNAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIGZyYW1lZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6CgoqKldoZXJlJiMzOTtzIFRoYXQgRGFuZyBEZWZpbml0aW9uPyoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLi4uIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHRyeWluZyB0byB0cmFjZSBhIGZ1bmN0aW9uIGNhbGwsIGFuZCBJJiMzOTt2ZSBoaXQgYSBzbmFnLiBXaGF0IHRoZSBoZWNrIGlzIGBJV0xXSUZJX01WTWA/IEl0JiMzOTtzIG1lbnRpb25lZCBoZXJlLCBjbGVhcmx5LCBidXQgSSYjMzk7bSBkcmF3aW5nIGEgYmxhbmsuIElzIGl0IGEgbWFjcm8sIGEgY29uc3RhbnQsIGEgc3RydWN0dXJlLCBhbiBlbnVtLCB3aGF0PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBJV0xXSUZJX01WTWAgYWN0dWFsbHkgKmlzKiB0byBtYWtlIGFueSBoZWFkd2F5LiBUaW1lIHRvIGdvIGh1bnRpbmcgZm9yIGl0cyBkZWZpbml0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUsIHRoZSBjb250ZXh0LCBhbmQgaG93IGl0JiMzOTtzIGJlaW5nIHVzZWQuIEkgY2FuJiMzOTt0IHByb2NlZWQgdW50aWwgSSB1bmRlcnN0YW5kIGl0cyBmdW5kYW1lbnRhbCBuYXR1cmUuIEFscmlnaHQsIGxldCYjMzk7cyBzdGFydCBkaWdnaW5nISBJIHNob3VsZCBrbm93IHRoaXMsIHdoYXQgZmlsZSBpcyBpdCBpbj8gSSBuZWVkIHRvIGZpbmQgaXRzIG9yaWdpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVdMV0lGSV9NVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MzY0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgSW50ZWwgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgSW50ZWwgd2lyZWxlc3MgZHJpdmVycy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gc3RhcnQgd2l0aCB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGF0IHNwZWNpZmljIGFyZWEsIHdoaWNoLCBpZiBtZW1vcnkgc2VydmVzLCBzaG91bGQgYmUgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvS2NvbmZpZ2AuIFRoYXQmIzM5O3MgdGhlIGdvLXRvIHBsYWNlIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmFibGUgZmVhdHVyZXMgYW5kIGRlcGVuZGVuY2llcy4gSSBleHBlY3QgdG8gZmluZCBkZWZpbml0aW9ucyBvZiB0aGUgdmFyaW91cyBkcml2ZXIgb3B0aW9ucywgYWxvbmcgd2l0aCB0aGVpciBkZWZhdWx0IHNldHRpbmdzLCBoZWxwIHRleHQgZXhwbGFpbmluZyB0aGVpciBwdXJwb3NlLCBhbmQsIGNydWNpYWxseSwgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXMgb3IgaGFyZHdhcmUuIFRoaXMgZmlsZSBpcyB0aGUgYmFja2JvbmUgZm9yIGNvbmZpZ3VyaW5nIHRoZSBJbnRlbCB3aXJlbGVzcyBzdXBwb3J0LCBhbmQgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgaXQgd2lsbCBiZSBjcml0aWNhbCBmb3IgYW55IG1vZGlmaWNhdGlvbnMgb3IgZGVlcGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRyaXZlciYjMzk7cyBiZWhhdmlvci4gVGltZSB0byBkZWx2ZSBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVdMV0lGSV9NVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY2MDYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIHRoZSBzdW1tYXJ5LCBhc3N1bWluZyBJJiMzOTttIHRoZSBleHBlcnQgdGhpbmtpbmcgdGhyb3VnaCB0aGlzOgoKKipJbml0aWFsIEltcHJlc3Npb246IEV4cGxvcmluZyBQb3NzaWJsZSBBY3JvbnltcyoqCgpIbW0sIHRoaW5raW5nIHRoaXMgdGhyb3VnaC4uLkkmIzM5O20gbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHBvdGVudGlhbCBhY3JvbnltcyBoZXJlLiBUaGF0IGluaXRpYWwgc3RyaW5nLCBgSVdMTVZNYCwgaXQmIzM5O3Mgbm90IGltbWVkaWF0ZWx5IG9idmlvdXMgd2hhdCBpdCByZXByZXNlbnRzLiBJIG5lZWQgdG8gc3RhcnQgZGVjb25zdHJ1Y3RpbmcgaXQuIElzIHRoZXJlIHNvbWUgc3BlY2lmaWMgZmllbGQgb3IgY29udGV4dCB3aGVyZSB0aGlzIHdvdWxkIG1ha2Ugc2Vuc2U/IFdoYXQgYXJlIHRoZSBrZXkgZWxlbWVudHMgaXQgbWlnaHQgcmVmZXIgdG8/IFBlcmhhcHMgaXQmIzM5O3MgYW4gb2JzY3VyZSBtZXRob2QsIGEgcmVzZWFyY2ggcHJvamVjdCYjMzk7cyBpbnRlcm5hbCBuYW1lLCBvciBtYXliZSBzb21ldGhpbmcgdmVyeSBpbmR1c3RyeS1zcGVjaWZpYy4uLiBSaWdodCBub3csIG15IG1pbmQgaXMgZXhwbG9yaW5nIHRoZSBwb3NzaWJpbGl0aWVzLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZSBsZXR0ZXJzIHN0YXJ0IHRvIGNsaWNrIGluIGFueSBmYW1pbGlhciBjb21iaW5hdGlvbnMuIFBlcmhhcHMgaXQmIzM5O3MgYSBuZXcgb3Igb2JzY3VyZSB0ZXJtIHRoYXQgSSBuZWVkIHRvIGxvb2sgaW50bz8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElXTE1WTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz02Nj1jb25maWcgSVdMRFZNXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjc0OmNvbmZpZyBJV0xNVk1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy03NS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFdpcmVsZXNzIFdpRmkgTVZNIEZpcm13YXJlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY5MjUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBJV0xNVk1gIERlcGVuZGVuY3kqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBmaXJtd2FyZSBzdXBwb3J0LiBSaWdodCwgc28gYElXTE1WTWAgLSB0aGF0IHNlZW1zIGxpa2UgdGhlIGtleSBjb25maWd1cmF0aW9uIGRlZmluZSBmb3IgdGhlIE1WTSBmaXJtd2FyZS4gSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYWN0dWFsbHksIGdpdmVuIHRoYXQgSSBrbm93IG15IHdheSBhcm91bmQgdGhlIGtlcm5lbCBjb2RlYmFzZS4gSSYjMzk7bSBzZWVpbmcgdGhhdCBgaXdsX212bV9sb2FkX3Vjb2RlX3dhaXRfYWxpdmVgIGZ1bmN0aW9uIHJlc2lkZXMgd2l0aGluIGBtdm0vZncuY2AuICBUaGF0IHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQgYElXTE1WTWAgaXMgYSBoYXJkIHJlcXVpcmVtZW50IGZvciB0aGUgd2hvbGUgcHJvY2Vzcy4gSSB3YW50IHRvIGRvdWJsZS1jaGVjayBteSB1bmRlcnN0YW5kaW5nIHRob3VnaCwgc28gdGhlIG5leHQgc3RlcCBpcyB0byBoZWFkIG92ZXIgdG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlYC4gSXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbXBpbGF0aW9uIHJ1bGVzIGFuZCBkZXBlbmRlbmNpZXMgZm9yIGFueXRoaW5nIHRoYXQgbGl2ZXMgd2l0aGluIHRoYXQgYGZ3L2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBwcm9vZiBpcyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZncvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlPTMyPWl3bHdpZmktb2Jqc1x0XHQmIzQzOz0gaXdsLXRyYW5zLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjM0Oml3bHdpZmktb2Jqc1x0XHQmIzQzOz0gZncvaW1nLm8gZncvbm90aWYtd2FpdC5vIGZ3L3JzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6MzU6aXdsd2lmaS1vYmpzXHRcdCYjNDM7PSBmdy9kYmcubyBmdy9kYmctb2xkLm8gZncvcG52bS5vIGZ3L2R1bXAub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTozNjppd2x3aWZpLW9ianNcdFx0JiM0Mzs9IGZ3L3JlZ3VsYXRvcnkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTozNzppd2x3aWZpLSQoQ09ORklHX0lXTE1WTSkgJiM0Mzs9IGZ3L3BhZ2luZy5vIGZ3L3NtZW0ubyBmdy9pbml0Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6Mzg6aXdsd2lmaS0kKENPTkZJR19JV0xNTEQpICYjNDM7PSBmdy9zbWVtLm8gZncvaW5pdC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjM5Oml3bHdpZmktJChDT05GSUdfQUNQSSkgJiM0Mzs9IGZ3L2FjcGkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTo0MDppd2x3aWZpLSQoQ09ORklHX0VGSSlcdCYjNDM7PSBmdy91ZWZpLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6NDE6aXdsd2lmaS0kKENPTkZJR19JV0xXSUZJX0RFQlVHRlMpICYjNDM7PSBmdy9kZWJ1Z2ZzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtNDItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NjIxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBpd2x3aWZpIERyaXZlciBDb25maWd1cmF0aW9uIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIGhlcmUmIzM5O3MgdGhlIGJyZWFrZG93biBvZiBob3cgdG8gYXBwcm9hY2ggZnV6emluZyB0aGlzIGl3bHdpZmkgZHJpdmVyIHZ1bG5lcmFiaWxpdHkuIEkmIzM5O3ZlIHRyYWNlZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJdCBzZWVtcyBgZncvdWVmaS5vYCBpcyBjb21waWxlZCBkaXJlY3RseSBpbnRvIGBpd2x3aWZpLmtvYCB3aGVuIHRoZSBgQ09ORklHX0VGSWAgb3B0aW9uIGlzIGVuYWJsZWQsIGFuZCBgaXdsd2lmaS5rb2AgaXRzZWxmIGlzIGJ1aWx0IHdoZW4gYENPTkZJR19JV0xXSUZJYCBpcyBlbmFibGVkLiBJbXBvcnRhbnRseSwgYGZ3L3Budm0ub2AgYWxzbyBlbmRzIHVwIGluY2x1ZGVkIHdpdGhpbiBgaXdsd2lmaS1vYmpzYC4gVGhhdCBtZWFucyBoYXZpbmcgYm90aCBgQ09ORklHX0lXTFdJRklgIGFuZCBgQ09ORklHX0VGSWAgYWN0aXZlIHNob3VsZCBiZSBlbm91Z2ggdG8gZ2V0IHRoZSBjb3JlIGNvZGUgY29tcGlsZWQgaW4uCgpOb3csIHRvIGFjdHVhbGx5IHRyaWdnZXIgdGhlIHZ1bG5lcmFibGUgY29kZSBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhcmUgZXhlcmNpc2VkLiAgVGhhdCYjMzk7cyB3aGVyZSB0aGUgYENPTkZJR19JV0xNVk1gIG9yIGBDT05GSUdfSVdMTUxEYCBvcHRpb25zIGNvbWUgaW50byBwbGF5LiAgVG8gYmUgb24gdGhlIHNhZmUgc2lkZSwgYW5kIHRvIG1heGltaXplIGNvdmVyYWdlLCBJIHNob3VsZCBlbmFibGUgYm90aCBvZiB0aGVzZS4gIFRoZXkmIzM5O3JlIGtleSB0byBpbml0aWFsaXppbmcgdGhlIGRyaXZlciBpbiBhIHdheSB0aGF0IG1ha2VzIGl0IHZ1bG5lcmFibGUuCgpTbywgdG8gc3VtbWFyaXplIGZvciBmdXp6aW5nIHB1cnBvc2VzOgoKKiAgICoqV29ydGhGdXp6aW5nOioqIEFic29sdXRlbHkuIFRoZSBwYXRjaCBmaXhlcyBhIGRlZmluaXRlIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXR5IHdoZW4gcGFyc2luZyBVRUZJIHZhcmlhYmxlcyByZWxhdGVkIHRvIHJlZHVjZWQgcG93ZXIgc2V0dGluZ3Mgd2l0aGluIHRoZSBpd2x3aWZpIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgdW5kZXIgdGhlIHJpZ2h0IFVFRkkgdmFyaWFibGUgY29uZGl0aW9ucy4KKiAgICoqUmVhc29uaW5nOioqIFRoZSBidWcgaXMgd2l0aGluIHRoZSBpd2x3aWZpIGRyaXZlciwgdHJpZ2dlcmVkIGJ5IHBhcnNpbmcgVUVGSSB2YXJpYWJsZXMuCiogICAqKkZvY3VzIFN5bWJvbHM6KiogSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIGZ1bmN0aW9uczogYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAsIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AsIGFuZCBgaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXJgLiBUaG9zZSBhcmUgd2hlcmUgdGhlIHZ1bG5lcmFiaWxpdGllcyBhcmUuCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogSGVyZSYjMzk7cyB0aGUgY3JpdGljYWwgc2V0IG9mIGNvbmZpZ3MgSSBuZWVkIHRvIGVuYWJsZToKICAgICogICBgSVdMV0lGSWAKICAgICogICBgRUZJYAogICAgKiAgIGBJV0xNVk1gCiAgICAqICAgYElXTE1MRGAKCkkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBgSVdMTUxEYCBpcyBhIHZhbGlkIG9wdGlvbiBpbiB0aGUgY29uZmlndXJhdGlvbjsgaXQgaXMgcG9zc2libGUgdGhhdCBpdCBpcyBqdXN0IGEgZGVmYXVsdCwgc28gaXQgbmVlZHMgdG8gYmUgY2hlY2tlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElXTE1MRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9NzQ9Y29uZmlnIElXTE1WTVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy04My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo4NDpjb25maWcgSVdMTUxEXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctODUtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE1MRCBGaXJtd2FyZSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NTc1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVmFsaWRhdGluZyBhbmQgQW5hbHl6aW5nIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgSVdMTUxEYCBpcyBpbmRlZWQgYSB2YWxpZCBpZGVudGlmaWVyLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm93LCBteSBuZXh0IHN0ZXAgaXMgdG8gaW52ZXN0aWdhdGUgdGhlIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgb2YgYElXTFdJRklgLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgaXQmIzM5O3MgaGlnaGx5IHByb2JhYmxlIHRoYXQgYElXTFdJRklgIHJlbGllcyBvbiBgTUFDODAyMTFgLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzIHJlbGF0aW9uc2hpcCwgYXMgdW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCBmb3IgYW55IGNoYW5nZXMgb3IgaW50ZWdyYXRpb24gd29yayByZWxhdGVkIHRvIHRoZXNlIGlkZW50aWZpZXJzLiBUaGF0JiMzOTtzIHdoZXJlIEkgd2lsbCBiZWdpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjA6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9Mj1jb25maWcgSVdMV0lGSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIE5leHQgR2VuIEFHTiAtIFdpcmVsZXNzLU4vQWR2YW5jZWQtTi9VbHRpbWF0ZS1OIChpd2x3aWZpKSBcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBQQ0kgXHUwMDI2XHUwMDI2IEhBU19JT01FTSBcdTAwMjZcdTAwMjYgQ0ZHODAyMTFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo1Olx0ZGVwZW5kcyBvbiBJV0xNRUkgfHwgIUlXTE1FSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTYtXHRzZWxlY3QgRldfTE9BREVSXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTQ5PWNvbmZpZyBJV0xXSUZJX0tVTklUX1RFU1RTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTAtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjUxOlx0ZGVwZW5kcyBvbiBLVU5JVFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTUyLVx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9NTg9Y29uZmlnIElXTFdJRklfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU5LVx0Ym9vbFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjYwOlx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjYxOlx0ZGVwZW5kcyBvbiBJV0xNVk0gfHwgSVdMRFZNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNjItXHRzZWxlY3QgTEVEU19UUklHR0VSU1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz02Nj1jb25maWcgSVdMRFZNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNjctXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIERWTSBGaXJtd2FyZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6Njg6XHRkZXBlbmRzIG9uIE1BQzgwMjExXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNjktXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTc0PWNvbmZpZyBJV0xNVk1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNzYtXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo3NzpcdGRlcGVuZHMgb24gTUFDODAyMTFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo3ODpcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy03OS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9ODQ9Y29uZmlnIElXTE1MRFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy04Ni1cdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjg3Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjg4Olx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTg5LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz0xMDI9Y29tbWVudCBcJiMzNDtXQVJOSU5HOiBpd2x3aWZpIGlzIHVzZWxlc3Mgd2l0aG91dCBJV0xEVk0gb3IgSVdMTVZNIG9yIElXTE1MRFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEwMzpcdGRlcGVuZHMgb24gSVdMRFZNPW4gXHUwMDI2XHUwMDI2IElXTE1WTT1uIFx1MDAyNlx1MDAyNiBJV0xNTEQ9blxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTMxPWNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzItXHRib29sIFwmIzM0O2l3bHdpZmkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMzOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTM0LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz0xMzk9Y29uZmlnIElXTFdJRklfREVWSUNFX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNDAtXHRib29sIFwmIzM0O2l3bHdpZmkgZGV2aWNlIGFjY2VzcyB0cmFjaW5nXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTQxOlx0ZGVwZW5kcyBvbiBFVkVOVF9UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTQyLVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTE2MD1jb25maWcgSVdMTUVJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTYxLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgTWFuYWdlbWVudCBFbmdpbmUgY29tbXVuaWNhdGlvbiBvdmVyIFdMQU5cJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxNjI6XHRkZXBlbmRzIG9uIElOVEVMX01FSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjE2MzpcdGRlcGVuZHMgb24gUE1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxNjQ6XHRkZXBlbmRzIG9uIENGRzgwMjExXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTY1Olx0ZGVwZW5kcyBvbiBCUk9LRU5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNjYtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMDg1CgkJCQkJCQlvdXRwdXQ6IDEzOAoJCQkJCQkJdGhvdWdodHM6IDE3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciBJbnRlbCBXaXJlbGVzcyBEcml2ZXJzKioKCk9rYXksIHNvIEkmIzM5O20gbWFwcGluZyBvdXQgdGhlIGRlcGVuZGVuY2llcyBoZXJlIGZvciB0aGUgSW50ZWwgd2lyZWxlc3MgZHJpdmVycywgZmlndXJpbmcgb3V0IHdoaWNoIGNvbXBvbmVudHMgYXJlIGtleSBmb3IgZnV6emluZy4gYElXTFdJRklgIHJlbGllcyBvbiBgUENJYCwgYEhBU19JT01FTWAsIGFuZCBgQ0ZHODAyMTFgLCBzbyB0aGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gVGhlbiwgYElXTE1WTWAgYW5kIGBJV0xNTERgIGJvdGggZGVwZW5kIG9uIGBNQUM4MDIxMWAuIEkmIzM5O2xsIGZvY3VzIG9uIGBJV0xXSUZJYCwgYEVGSWAsIGBJV0xNVk1gLCBhbmQgYElXTE1MRGAgYXMgbXkgcHJpbWFyeSB0YXJnZXRzIGZvciBub3cuCgpOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duIGFuZCBpZGVudGlmeSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCBhcmUgbGlrZWx5IHRvIGJlIHZ1bG5lcmFibGUuIEFmdGVyIGNoZWNraW5nIHRoZSBGb2N1c1N5bWJvbHMsIEkgc2VlIHRoYXQgYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgd2FzIG1vZGlmaWVkIOKAkyB0aGF0JiMzOTtzIGRlZmluaXRlbHkgaW50ZXJlc3RpbmcuIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AgY2FsbHMgdGhhdCBvbmUsIGFuZCBgaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXJgIGlzIHJlc3BvbnNpYmxlIGZvciByZWFkaW5nIHRoZSBVRUZJIHZhcmlhYmxlLiBBbGwgb2YgdGhlc2UgZnVuY3Rpb25zIGxvb2sgbGlrZSBwcmltZSBjYW5kaWRhdGVzIGZvciBmdXp6aW5nLiBUaGV5IGhhbmRsZSBpbnRlcmFjdGlvbnMgd2l0aCBVRUZJIGFuZCBsaWtlbHkgaW52b2x2ZSBzb21lIGNyaXRpY2FsIGRhdGEgcGFyc2luZy4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIHRoZXNlLgoKQWxyaWdodCwgdGltZSB0byBzZXQgdGhlIHJlc3VsdHMgYW5kIG1vdmUgb24gdG8gdGhlIG5leHQgcGhhc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIwOjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJV0xXSUZJJiMzNDssCiAgICAmIzM0O0VGSSYjMzQ7LAogICAgJiMzNDtJV0xNVk0mIzM0OywKICAgICYjMzQ7SVdMTUxEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlJiMzNDssCiAgICAmIzM0O2l3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zJiMzNDssCiAgICAmIzM0O2l3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3aGVuIHBhcnNpbmcgVUVGSSB2YXJpYWJsZXMgZm9yIHJlZHVjZWQgcG93ZXIgc2V0dGluZ3MgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGUgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiB3aGVuIHNwZWNpZmljIFVFRkkgdmFyaWFibGVzIGFyZSBwcmVzZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJV0xXSUZJJiMzNDssCiAgICAmIzM0O0VGSSYjMzQ7LAogICAgJiMzNDtJV0xNVk0mIzM0OywKICAgICYjMzQ7SVdMTUxEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlJiMzNDssCiAgICAmIzM0O2l3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zJiMzNDssCiAgICAmIzM0O2l3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3aGVuIHBhcnNpbmcgVUVGSSB2YXJpYWJsZXMgZm9yIHJlZHVjZWQgcG93ZXIgc2V0dGluZ3MgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGUgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiB3aGVuIHNwZWNpZmljIFVFRkkgdmFyaWFibGVzIGFyZSBwcmVzZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MDg6NDIuMDA1MDkwMzEyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0MzAyMDQxOTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklXTFdJRklcIixcbiAgICBcIkVGSVwiLFxuICAgIFwiSVdMTVZNXCIsXG4gICAgXCJJV0xNTERcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VcIixcbiAgICBcIml3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zXCIsXG4gICAgXCJpd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3aGVuIHBhcnNpbmcgVUVGSSB2YXJpYWJsZXMgZm9yIHJlZHVjZWQgcG93ZXIgc2V0dGluZ3MgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGUgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiB3aGVuIHNwZWNpZmljIFVFRkkgdmFyaWFibGVzIGFyZSBwcmVzZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDowODo0Mi4wMDUwOTY0MzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMDI2NDc0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDNmNzE3ZDI5NThjMjJiNjAzZGQzODUyYTUyNGQ3OWM2YTI4MzU2NzdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMTUgMjA6MDg6NDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1xcbmluZGV4IDJlZjBhN2E5MjBhZGI1Li40Y2QzNmI0MjI2MmMzNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXFxuQEAgLTI0OCw2ICsyNDgsMTIgQEAgaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4gXFx0XFx0XFx0SVdMX0RFQlVHX0ZXKHRyYW5zLFxcbiBcXHRcXHRcXHRcXHQgICAgIFxcXCJHb3QgSVdMX1VDT0RFX1RMVl9QTlZNX1NLVSBsZW4gJWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCAgICAgdGx2X2xlbik7XFxuK1xcdFxcdFxcdGlmICh0bHZfbGVuIFxcdTAwM2Mgc2l6ZW9mKCp0bHZfc2t1X2lkKSkge1xcbitcXHRcXHRcXHRcXHRJV0xfRVJSKHRyYW5zLCBcXFwiaW52YWxpZCBQTlZNIFNLVSBUTFYgbGVuOiAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0dGx2X2xlbik7XFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHR9XFxuK1xcbiBcXHRcXHRcXHRJV0xfREVCVUdfRlcodHJhbnMsIFxcXCJza3VfaWQgMHglMHggMHglMHggMHglMHhcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCAgICAgbGUzMl90b19jcHUodGx2X3NrdV9pZC1cXHUwMDNlZGF0YVswXSksXFxuIFxcdFxcdFxcdFxcdCAgICAgbGUzMl90b19jcHUodGx2X3NrdV9pZC1cXHUwMDNlZGF0YVsxXSksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjA4OjQyLjQzNjA5NTA1MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQzODcxMDI3ODk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklXTFdJRklcIixcbiAgICBcIkVGSVwiLFxuICAgIFwiSVdMTVZNXCIsXG4gICAgXCJJV0xNTERcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VcIixcbiAgICBcIml3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zXCIsXG4gICAgXCJpd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3aGVuIHBhcnNpbmcgVUVGSSB2YXJpYWJsZXMgZm9yIHJlZHVjZWQgcG93ZXIgc2V0dGluZ3MgaW4gdGhlIGl3bHdpZmkgZHJpdmVyLiBUaGUgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiB3aGVuIHNwZWNpZmljIFVFRkkgdmFyaWFibGVzIGFyZSBwcmVzZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNmNzE3ZDI5NThjMjJiNjAzZGQzODUyYTUyNGQ3OWM2YTI4MzU2NzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAyMDowODo0MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNcbmluZGV4IDJlZjBhN2E5MjBhZGI1Li40Y2QzNmI0MjI2MmMzNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1xuQEAgLTI0OCw2ICsyNDgsMTIgQEAgaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbiBcdFx0XHRJV0xfREVCVUdfRlcodHJhbnMsXG4gXHRcdFx0XHQgICAgIFwiR290IElXTF9VQ09ERV9UTFZfUE5WTV9TS1UgbGVuICVkXFxuXCIsXG4gXHRcdFx0XHQgICAgIHRsdl9sZW4pO1xuK1x0XHRcdGlmICh0bHZfbGVuIFx1MDAzYyBzaXplb2YoKnRsdl9za3VfaWQpKSB7XG4rXHRcdFx0XHRJV0xfRVJSKHRyYW5zLCBcImludmFsaWQgUE5WTSBTS1UgVExWIGxlbjogJXVcXG5cIixcbitcdFx0XHRcdFx0dGx2X2xlbik7XG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0XHR9XG4rXG4gXHRcdFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcInNrdV9pZCAweCUweCAweCUweCAweCUweFxcblwiLFxuIFx0XHRcdFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMF0pLFxuIFx0XHRcdFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMV0pLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MDg6NDIuNDM2MDk2NDAyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDExMDIwMjQxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBGaXJtd2FyZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggaGVyZSB0aGF0J3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jYC4gU3BlY2lmaWNhbGx5LCBpdCBhcHBlYXJzIHRvIGJlIGFkZGluZyBhIGNydWNpYWwgYm91bmRzIGNoZWNrIHdpdGhpbiB0aGUgYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWAgZnVuY3Rpb24uIFRoZSBpbnRlbnQgaXMgY2xlYXI6IHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93IGJ5IHZlcmlmeWluZyB0aGUgdmFsaWRpdHkgb2YgdGhlIHJlY2VpdmVkIGRhdGEuXG5cbkl0J3MgYWRkaW5nIGEgY29tcGFyaXNvbjogYHRsdl9sZW5gIG5lZWRzIHRvIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgc2l6ZW9mKCp0bHZfc2t1X2lkKWAuIElmIGB0bHZfbGVuYCBpcyBzbWFsbGVyIHRoYW4gZXhwZWN0ZWQsIHRoZSBmdW5jdGlvbiBub3cgY29ycmVjdGx5IHJldHVybnMgYC1FSU5WQUxgLiBUaGlzIGlzIGEgY2xhc3NpYyBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgdGVjaG5pcXVlLCBhbmQgYSBzZW5zaWJsZSBhZGRpdGlvbiB0byBzYWZlZ3VhcmQgYWdhaW5zdCBtYWxmb3JtZWQgZGF0YSBkdXJpbmcgZmlybXdhcmUgcHJvY2Vzc2luZy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQsIGJ1dCB0aGlzIHBhdGNoIGxvb2tzIGxpa2UgYSBnb29kIHN0ZXAgdG93YXJkIGVuaGFuY2VkIHJvYnVzdG5lc3MuIEknbGwgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBkYXRhIHN0cnVjdHVyZSBpbnZvbHZlZCB0b28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODIsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDowODo0Ni41NDYzMDEwNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODE3NTg4NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTE2Nj1zdGF0aWMgaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9zZWN0aW9uKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjIyMDppbnQgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTIyMS1cXHRcXHRcXHRcXHRjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MDg6NDYuNzI4MDY1NTUzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE5Mjk4NDgzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCB0aGlua2luZyB0aHJvdWdoIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgOlxuXG4qKkFuYWx5emluZyBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2UqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgdGhpcyBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYCBmdW5jdGlvbiBpcyBhY3R1YWxseSBkb2luZy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gcmVhZCB0aHJvdWdoIHRoZSBjb2RlIHRvIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UuIEknbGwgbmVlZCB0byBwaW5wb2ludCBpdHMgZnVuY3Rpb24gYW5kIGhvdyBpdCBjb250cmlidXRlcyB0byBwb3dlciBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgVUVGSSBlbnZpcm9ubWVudCwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgSW50ZWwgd2lyZWxlc3MgZGV2aWNlcy4gRG9lcyBpdCBwYXJzZSBjb25maWd1cmF0aW9uIGRhdGE/IERvZXMgaXQgaW50ZXJhY3Qgd2l0aCB0aGUgZmlybXdhcmUgaW4gYW55IHdheT8gRG9lcyBpdCBkZWFsIHdpdGggZGV2aWNlLXNwZWNpZmljIHJlZ2lzdGVycz8gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGtleSBkYXRhIHN0cnVjdHVyZXMsIGZ1bmN0aW9uIGNhbGxzIHRvIG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIsIGFuZCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIHdpdGggdGhlIFVFRkkgc3lzdGVtLiBJJ2xsIGJlIHdhdGNoaW5nIGZvciBhbnkgZXZpZGVuY2Ugb2Y6XG5cbiogICAqKkNvbmZpZ3VyYXRpb24gUGFyc2luZyoqOiBJcyBpdCByZWFkaW5nIGEgc2V0dXAgdGFibGU/IEEgc3BlY2lmaWMgRUZJIHZhcmlhYmxlP1xuKiAgICoqUG93ZXIgU3RhdGUgVHJhbnNpdGlvbnMqKjogRG9lcyB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5IHNldCBwb3dlciBtYW5hZ2VtZW50IHJlbGF0ZWQgcmVnaXN0ZXJzLCBvciBtYWtlIGZ1bmN0aW9uIGNhbGxzIHRoYXQgd2lsbD9cbiogICAqKkVycm9yIEhhbmRsaW5nKio6IEhvdyBkb2VzIGl0IG1hbmFnZSBmYWlsdXJlIGNvbmRpdGlvbnM/IEFyZSB0aGVyZSBzcGVjaWZpYyBlcnJvciBjb2Rlcz8gQXJlIHRoZXJlIGFueSByZXR1cm4gdmFsdWVzIGluZGljYXRpbmcgc3VjY2VzcyBvciBmYWlsdXJlP1xuKiAgICoqSW50ZXJhY3Rpb24gd2l0aCBIYXJkd2FyZSoqOiBJcyBpdCBwcm9iaW5nIGhhcmR3YXJlIGNhcGFiaWxpdGllcyBvciBvbmx5IGRlYWxpbmcgd2l0aCBhIHNwZWNpZmljIHBvd2VyIHN0YXRlIHJlcXVlc3Q/XG4qICAgKipTZWN1cml0eSBDb25jZXJucyoqOiBEb2VzIHRoaXMgZnVuY3Rpb24gaW50ZXJhY3Qgd2l0aCBhbnkgc2Vuc2l0aXZlIGRhdGEgb3IgY29uZmlndXJhdGlvbnM/XG5cbkknbGwgYmUgc3BlY2lmaWNhbGx5IGxvb2tpbmcgdG8gc2VlIGlmIHRoZXJlIGFyZSBvcHRpbWl6YXRpb25zIG9yIHBvd2VyLXNhdmluZyBhZGp1c3RtZW50cy4gSXQgaXMgaW1wb3J0YW50IHRvIGtub3cgd2hpY2ggcG93ZXIgc2V0dGluZ3MsIGFuZCB0aGVpciByZXN1bHRpbmcgZWZmZWN0IG9uIHRoZSBkZXZpY2UsIGFyZSBiZWluZyBjb25maWd1cmVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGZ1bmN0aW9uJ3Mgcm9sZSBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgcG93ZXIgbWFuYWdlbWVudCBmb3IgSW50ZWwgd2lyZWxlc3MgZGV2aWNlcyB3aXRoaW4gdGhlIFVFRkkgZW52aXJvbm1lbnQuIEknbGwgYmUga2VlcGluZyBhbiBleWUgb3V0IGZvciBhbnl0aGluZyBub24tb2J2aW91cywgcGVyaGFwcyBzb21ldGhpbmcgdGhhdCBpc24ndCBpbW1lZGlhdGVseSBhcHBhcmVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU0MCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjA4OjUwLjkyMTA1MjMwNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzI3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMjAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjIwOlxcdGludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2Uoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuIDIyMTpcXHRcXHRcXHRcXHRcXHRjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbixcXG4gMjIyOlxcdFxcdFxcdFxcdFxcdHN0cnVjdCBpd2xfcG52bV9pbWFnZSAqcG52bV9kYXRhLFxcbiAyMjM6XFx0XFx0XFx0XFx0XFx0X19sZTMyIHNrdV9pZFszXSlcXG4gMjI0OlxcdHtcXG4gMjI1OlxcdFxcdGNvbnN0IHN0cnVjdCBpd2xfdWNvZGVfdGx2ICp0bHY7XFxuIDIyNjpcXHRcXG4gMjI3OlxcdFxcdElXTF9ERUJVR19GVyh0cmFucywgXFxcIlBhcnNpbmcgUkVEVUNFX1BPV0VSIGRhdGFcXFxcblxcXCIpO1xcbiAyMjg6XFx0XFxuIDIyOTpcXHRcXHR3aGlsZSAobGVuIFxcdTAwM2U9IHNpemVvZigqdGx2KSkge1xcbiAyMzA6XFx0XFx0XFx0dTMyIHRsdl9sZW4sIHRsdl90eXBlO1xcbiAyMzE6XFx0XFxuIDIzMjpcXHRcXHRcXHRsZW4gLT0gc2l6ZW9mKCp0bHYpO1xcbiAyMzM6XFx0XFx0XFx0dGx2ID0gKGNvbnN0IHZvaWQgKilkYXRhO1xcbiAyMzQ6XFx0XFxuIDIzNTpcXHRcXHRcXHR0bHZfbGVuID0gbGUzMl90b19jcHUodGx2LVxcdTAwM2VsZW5ndGgpO1xcbiAyMzY6XFx0XFx0XFx0dGx2X3R5cGUgPSBsZTMyX3RvX2NwdSh0bHYtXFx1MDAzZXR5cGUpO1xcbiAyMzc6XFx0XFxuIDIzODpcXHRcXHRcXHRpZiAobGVuIFxcdTAwM2MgdGx2X2xlbikge1xcbiAyMzk6XFx0XFx0XFx0XFx0SVdMX0VSUih0cmFucywgXFxcImludmFsaWQgVExWIGxlbjogJXpkLyV1XFxcXG5cXFwiLFxcbiAyNDA6XFx0XFx0XFx0XFx0XFx0bGVuLCB0bHZfbGVuKTtcXG4gMjQxOlxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAyNDI6XFx0XFx0XFx0fVxcbiAyNDM6XFx0XFxuIDI0NDpcXHRcXHRcXHRpZiAodGx2X3R5cGUgPT0gSVdMX1VDT0RFX1RMVl9QTlZNX1NLVSkge1xcbiAyNDU6XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IGl3bF9za3VfaWQgKnRsdl9za3VfaWQgPVxcbiAyNDY6XFx0XFx0XFx0XFx0XFx0KGNvbnN0IHZvaWQgKikoZGF0YSArIHNpemVvZigqdGx2KSk7XFxuIDI0NzpcXHRcXG4gMjQ4OlxcdFxcdFxcdFxcdElXTF9ERUJVR19GVyh0cmFucyxcXG4gMjQ5OlxcdFxcdFxcdFxcdFxcdCAgICAgXFxcIkdvdCBJV0xfVUNPREVfVExWX1BOVk1fU0tVIGxlbiAlZFxcXFxuXFxcIixcXG4gMjUwOlxcdFxcdFxcdFxcdFxcdCAgICAgdGx2X2xlbik7XFxuIDI1MTpcXHRcXHRcXHRcXHRpZiAodGx2X2xlbiBcXHUwMDNjIHNpemVvZigqdGx2X3NrdV9pZCkpIHtcXG4gMjUyOlxcdFxcdFxcdFxcdFxcdElXTF9FUlIodHJhbnMsIFxcXCJpbnZhbGlkIFBOVk0gU0tVIFRMViBsZW46ICV1XFxcXG5cXFwiLFxcbiAyNTM6XFx0XFx0XFx0XFx0XFx0XFx0dGx2X2xlbik7XFxuIDI1NDpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMjU1OlxcdFxcdFxcdFxcdH1cXG4gMjU2OlxcdFxcbiAyNTc6XFx0XFx0XFx0XFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcXFwic2t1X2lkIDB4JTB4IDB4JTB4IDB4JTB4XFxcXG5cXFwiLFxcbiAyNTg6XFx0XFx0XFx0XFx0XFx0ICAgICBsZTMyX3RvX2NwdSh0bHZfc2t1X2lkLVxcdTAwM2VkYXRhWzBdKSxcXG4gMjU5OlxcdFxcdFxcdFxcdFxcdCAgICAgbGUzMl90b19jcHUodGx2X3NrdV9pZC1cXHUwMDNlZGF0YVsxXSksXFxuIDI2MDpcXHRcXHRcXHRcXHRcXHQgICAgIGxlMzJfdG9fY3B1KHRsdl9za3VfaWQtXFx1MDAzZWRhdGFbMl0pKTtcXG4gMjYxOlxcdFxcbiAyNjI6XFx0XFx0XFx0XFx0ZGF0YSArPSBzaXplb2YoKnRsdikgKyBBTElHTih0bHZfbGVuLCA0KTtcXG4gMjYzOlxcdFxcdFxcdFxcdGxlbiAtPSBBTElHTih0bHZfbGVuLCA0KTtcXG4gMjY0OlxcdFxcbiAyNjU6XFx0XFx0XFx0XFx0aWYgKHNrdV9pZFswXSA9PSB0bHZfc2t1X2lkLVxcdTAwM2VkYXRhWzBdIFxcdTAwMjZcXHUwMDI2XFxuIDI2NjpcXHRcXHRcXHRcXHQgICAgc2t1X2lkWzFdID09IHRsdl9za3VfaWQtXFx1MDAzZWRhdGFbMV0gXFx1MDAyNlxcdTAwMjZcXG4gMjY3OlxcdFxcdFxcdFxcdCAgICBza3VfaWRbMl0gPT0gdGx2X3NrdV9pZC1cXHUwMDNlZGF0YVsyXSkge1xcbiAyNjg6XFx0XFx0XFx0XFx0XFx0aW50IHJldCA9IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9zZWN0aW9uKHRyYW5zLFxcbiAyNjk6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIGRhdGEsIGxlbixcXG4gMjcwOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBwbnZtX2RhdGEpO1xcbiAyNzE6XFx0XFx0XFx0XFx0XFx0aWYgKCFyZXQpXFxuIDI3MjpcXHRcXHRcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4gMjczOlxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuIDI3NDpcXHRcXHRcXHRcXHRcXHRJV0xfREVCVUdfRlcodHJhbnMsIFxcXCJTS1UgSUQgZGlkbid0IG1hdGNoIVxcXFxuXFxcIik7XFxuIDI3NTpcXHRcXHRcXHRcXHR9XFxuIDI3NjpcXHRcXHRcXHR9IGVsc2Uge1xcbiAyNzc6XFx0XFx0XFx0XFx0ZGF0YSArPSBzaXplb2YoKnRsdikgKyBBTElHTih0bHZfbGVuLCA0KTtcXG4gMjc4OlxcdFxcdFxcdFxcdGxlbiAtPSBBTElHTih0bHZfbGVuLCA0KTtcXG4gMjc5OlxcdFxcdFxcdH1cXG4gMjgwOlxcdFxcdH1cXG4gMjgxOlxcdFxcbiAyODI6XFx0XFx0cmV0dXJuIC1FTk9FTlQ7XFxuIDI4MzpcXHR9XFxuIDI4NDpcXHRcXG4gMjg1OlxcdHU4ICppd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXFxuIDI4NjpcXHR7XFxuIDI4NzpcXHRcXHRzdHJ1Y3QgcG52bV9za3VfcGFja2FnZSAqcGFja2FnZTtcXG4gMjg4OlxcdFxcdHVuc2lnbmVkIGxvbmcgcGFja2FnZV9zaXplO1xcbiAyODk6XFx0XFx0dTggKmRhdGE7XFxuIDI5MDpcXHRcXG4gMjkxOlxcdFxcdHBhY2thZ2UgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUodHJhbnMsXFxuIDI5MjpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgSVdMX1VFRklfUkVEVUNFRF9QT1dFUl9OQU1FLFxcbiAyOTM6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IFxcXCJSZWR1Y2VkIFBvd2VyXFxcIixcXG4gMjk0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBzaXplb2YoKnBhY2thZ2UpLFxcbiAyOTU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZwYWNrYWdlX3NpemUpO1xcbiAyOTY6XFx0XFx0aWYgKElTX0VSUihwYWNrYWdlKSlcXG4gMjk3OlxcdFxcdFxcdHJldHVybiBFUlJfQ0FTVChwYWNrYWdlKTtcXG4gMjk4OlxcdFxcbiAyOTk6XFx0XFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcXFwicmV2ICVkLCB0b3RhbF9zaXplICVkLCBuX3NrdXMgJWRcXFxcblxcXCIsXFxuIDMwMDpcXHRcXHRcXHQgICAgIHBhY2thZ2UtXFx1MDAzZXJldiwgcGFja2FnZS1cXHUwMDNldG90YWxfc2l6ZSwgcGFja2FnZS1cXHUwMDNlbl9za3VzKTtcXG4gMzAxOlxcdFxcbiAzMDI6XFx0XFx0KmxlbiA9IHBhY2thZ2Vfc2l6ZSAtIHNpemVvZigqcGFja2FnZSk7XFxuIDMwMzpcXHRcXHRkYXRhID0ga21lbWR1cChwYWNrYWdlLVxcdTAwM2VkYXRhLCAqbGVuLCBHRlBfS0VSTkVMKTtcXG4gMzA0OlxcdFxcdGlmICghZGF0YSkge1xcbiAzMDU6XFx0XFx0XFx0a2ZyZWUocGFja2FnZSk7XFxuIDMwNjpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcXG4gMzA3OlxcdFxcdH1cXG4gMzA4OlxcdFxcbiAzMDk6XFx0XFx0a2ZyZWUocGFja2FnZSk7XFxuIDMxMDpcXHRcXG4gMzExOlxcdFxcdHJldHVybiBkYXRhO1xcbiAzMTI6XFx0fVxcbiAzMTM6XFx0XFxuIDMxNDpcXHRzdGF0aWMgaW50IGl3bF91ZWZpX3N0ZXBfcGFyc2Uoc3RydWN0IHVlZmlfY252X2NvbW1vbl9zdGVwX2RhdGEgKmNvbW1vbl9zdGVwX2RhdGEsXFxuIDMxNTpcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuIDMxNjpcXHR7XFxuIDMxNzpcXHRcXHRpZiAoY29tbW9uX3N0ZXBfZGF0YS1cXHUwMDNlcmV2aXNpb24gIT0gMSlcXG4gMzE4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAzMTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjA4OjUwLjkyMTE3NzM4NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMTc3NjkxMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlIEZ1bmN0aW9uKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgLiBUaGUgbmFtZSBpdHNlbGYgc3VnZ2VzdHMgaXQncyBoYW5kbGluZyB0aGUgcGFyc2luZyBvZiBVRUZJIHZhcmlhYmxlcywgc3BlY2lmaWNhbGx5IGluIHJlbGF0aW9uIHRvIHBvd2VyIHJlZHVjdGlvbiwgcHJlc3VtYWJseSBmb3IgYW4gSW50ZWwgd2lyZWxlc3MgZGV2aWNlLiBMZXQncyBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBzbyB0aGUgbmF0dXJhbCBuZXh0IHN0ZXAgaXMgdG8gdHJhY2UgdGhlIGNhbGwgZ3JhcGguIEknbGwgbmVlZCB0byBpZGVudGlmeSBwcmVjaXNlbHkgKndoZXJlKiB0aGlzIGZ1bmN0aW9uLCBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYCwgaXMgYmVpbmcgaW52b2tlZCB3aXRoaW4gdGhlIGRyaXZlci4gRGV0ZXJtaW5pbmcgdGhlIGNhbGwgc2l0ZXMgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgd2l0aGluIHdoaWNoIHBvd2VyIG1hbmFnZW1lbnQgZGVjaXNpb25zIGFyZSBtYWRlIGFuZCBob3cgdGhlc2UgVUVGSSB2YXJpYWJsZXMgYXJlIHVsdGltYXRlbHkgdXRpbGl6ZWQuIEkgd2FudCB0byBzZWUgaG93IHRoZSBwYXJzZWQgZGF0YSBpcyB1c2VkIHRvIG9wdGltaXplIHRoZSBwb3dlciBjb25zdW1wdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYxMCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MDg6NTQuMDM4OTQ4NjY0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3MjA0NjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYz00MDc9aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDMyOlxcdHJldCA9IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZSh0cmFucywgZGF0YSwgbGVuZ3RoLCBwbnZtX2RhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDMzLVxcdFxcdFxcdFxcdFxcdCAgc2t1X2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTE2Nj1zdGF0aWMgaW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9zZWN0aW9uKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjIyMDppbnQgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTIyMS1cXHRcXHRcXHRcXHRjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oPTMyNT11OCAqaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozMjY6aW50IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0zMjctXFx0XFx0XFx0XFx0Y29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaD0zNjA9c3RhdGljIGlubGluZSBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDozNjE6aXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTM2Mi1cXHRcXHRcXHQgICAgY29uc3QgdTggKmRhdGEsIHNpemVfdCBsZW4sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjA4OjU0LjEzNjE1NzI5NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNjI2Mzc5OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKlRyYWNpbmcgRG93biB0aGUgQ2FsbCBDaGFpbioqXG5cbkFscmlnaHQsIHNvIEkndmUgZ290IHRoaXMgZnVuY3Rpb24sIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AsIGFuZCBpdCBsb29rcyBsaWtlIGl0J3MgYnVyaWVkIGRlZXAgd2l0aGluIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGVyZSB0aGUgaGVjayBpcyB0aGlzIGNhbGxlZCBmcm9tP1wiIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoaXMgZnVuY3Rpb24uIExldCdzIHNlZSB3aGVyZSB0aGUgY2FsbCB0byBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgIG9yaWdpbmF0ZXMuIFRpbWUgdG8gc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSBjYWxsIGdyYXBoIHRvIGZpZ3VyZSBvdXQgaXRzIHB1cnBvc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NDYsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDowODo1Ny4xOTg3OTgwMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzOTA2MDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTQwNj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQwNzppd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MDgtXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBpd2xfdWNvZGVfY2FwYWJpbGl0aWVzICpjYXBhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDU1PWludCBpd2xfcG52bV9sb2FkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDY3LVxcdGl3bF9wbnZtX2xvYWRfcG52bV90b190cmFucyh0cmFucywgZncsIHNrdV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDY4OlxcdGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHRyYW5zLCBcXHUwMDI2ZnctXFx1MDAzZXVjb2RlX2NhcGEsIHNrdV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDY5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDowODo1Ny4zMTI3Mjg1OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjUwNDYxNDg5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHNpdHVhdGlvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBJbnRlbCBXaXJlbGVzcyBGaXJtd2FyZSBMb2FkaW5nIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlIEludGVsIHdpcmVsZXNzIGZpcm13YXJlIGdldHMgbG9hZGVkLiBTcGVjaWZpY2FsbHksIEknbSBmb2N1c2luZyBvbiBgaXdsX3Budm1fbG9hZGAuIEkga25vdyB0aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgZnJvbSBgaXdsX212bV9sb2FkX3Vjb2RlX3dhaXRfYWxpdmVgIGFuZCByZWxhdGVkIGZ1bmN0aW9ucywgYnV0IEkgbmVlZCB0byBwaW5wb2ludCBldmVyeSBjYWxsIHNpdGUuIEknbSBnb2luZyB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgZGV0ZXJtaW5lIGV2ZXJ5IGluc3RhbmNlIHdoZXJlIGBpd2xfcG52bV9sb2FkYCBpcyBhY3R1YWxseSBjYWxsZWQuIEdvdHRhIHVuZGVyc3RhbmQgdGhlIGVudGlyZSBjaGFpbiBvZiBldmVudHMgdG8gaGF2ZSBhIGdvb2QgcGljdHVyZSBvZiB3aGF0J3MgaGFwcGVuaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDE3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MDk6MTMuODE3MzQ2MDA1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODU0NTk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpd2xfcG52bV9sb2FkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTM1OT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjM2MDppd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzYxLVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgaXdsX2Z3ICpmdyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTQwNj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQwNzppd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFucyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MDgtXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBpd2xfdWNvZGVfY2FwYWJpbGl0aWVzICpjYXBhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ1NTppbnQgaXdsX3Budm1fbG9hZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NTYtXFx0XFx0ICBzdHJ1Y3QgaXdsX25vdGlmX3dhaXRfZGF0YSAqbm90aWZfd2FpdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQ2Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0Njc6XFx0aXdsX3Budm1fbG9hZF9wbnZtX3RvX3RyYW5zKHRyYW5zLCBmdywgc2t1X2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzo0Njg6XFx0aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnModHJhbnMsIFxcdTAwMjZmdy1cXHUwMDNldWNvZGVfY2FwYSwgc2t1X2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00NjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00ODAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQ4MTpJV0xfRVhQT1JUX1NZTUJPTChpd2xfcG52bV9sb2FkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5oLTE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5oOjE2OmludCBpd2xfcG52bV9sb2FkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5oLTE3LVxcdFxcdCAgc3RydWN0IGl3bF9ub3RpZl93YWl0X2RhdGEgKm5vdGlmX3dhaXQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9mdy5jPTI3Mj1zdGF0aWMgaW50IGl3bF9tbGRfcnVuX2Z3X2luaXRfc2VxdWVuY2Uoc3RydWN0IGl3bF9tbGQgKm1sZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2Z3LmMtMjg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2Z3LmM6MjkwOlxcdHJldCA9IGl3bF9wbnZtX2xvYWQobWxkLVxcdTAwM2V0cmFucywgXFx1MDAyNm1sZC1cXHUwMDNlbm90aWZfd2FpdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9mdy5jLTI5MS1cXHRcXHRcXHQgICAgbWxkLVxcdTAwM2VmdywgYWxpdmVfZGF0YS5za3VfaWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYz0yODY9c3RhdGljIGludCBpd2xfbXZtX2xvYWRfdWNvZGVfd2FpdF9hbGl2ZShzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYy00MDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYzo0MDc6XFx0cmV0ID0gaXdsX3Budm1fbG9hZChtdm0tXFx1MDAzZXRyYW5zLCBcXHUwMDI2bXZtLVxcdTAwM2Vub3RpZl93YWl0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMtNDA4LVxcdFxcdFxcdCAgICBtdm0tXFx1MDAzZWZ3LCBhbGl2ZV9kYXRhLnNrdV9pZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjA5OjEzLjkxNTg5ODA2NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODQ0NjQ5ODQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgaXdsd2lmaSBGaXJtd2FyZSBMb2FkaW5nKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgaXdsd2lmaSBmaXJtd2FyZSBsb2FkaW5nIHNlcXVlbmNlLCBzcGVjaWZpY2FsbHkgaG93IHRoZSByZWR1Y2VkIHBvd2VyIFBOVk0gZGF0YSBpcyBoYW5kbGVkLiBNeSBwcmltYXJ5IGludGVyZXN0IGlzIGluIHVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgc291cmNlLiBGaXJzdCwgSSBzZWUgdGhpcyBpcyBwYXJ0IG9mIHRoZSBvdmVyYWxsIGZpcm13YXJlIGxvYWRpbmcsIG5hdHVyYWxseS4gQnV0LCB3aGVyZSBpcyB0aGUgZGF0YSBhY3R1YWxseSBjb21pbmcgZnJvbT9cblxuSSBmaW5kIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2AsIGFuZCB0aGF0J3MgdGhlIGtleS4gSW5zaWRlLCB0aGUgY29kZSB0cmllcyBgaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIodHJhbnMsIFx1MDAyNmxlbmd0aClgLiBJbnRlcmVzdGluZy4gSWYgdGhhdCBmYWlscywgaXQgZmFsbHMgYmFjayB0byBgaXdsX3Budm1fZ2V0X2Zyb21fZnModHJhbnMsIFx1MDAyNmRhdGEsIFx1MDAyNmxlbmd0aClgLiBBaGEhIE5vdyBpdCdzIGNsZWFyOiBgaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXJgIGlzIHJlYWRpbmcgZnJvbSBVRUZJIHZhcmlhYmxlcywgSSdtIHN1cmUgb2YgaXQuIEFuZCBgaXdsX3Budm1fZ2V0X2Zyb21fZnNgIGlzIHRoZSBmYWxsYmFjaywgd2hpY2gsIG5hdHVyYWxseSwgdXNlcyBmaXJtd2FyZSBmaWxlcyBsaWtlIGBpd2x3aWZpLSoucG52bWAuXG5cbldhaXQgYSBtaW51dGUsIGlmIGl0J3MgVUVGSSwgaXQgbXVzdCBiZSB1c2luZyBzb21ldGhpbmcgbGlrZSBgZWZpdmFyX2VudHJ5X2dldGAgb3IgYSBzaW1pbGFyIGZ1bmN0aW9uIHRvIGFjY2VzcyB0aGUgdmFyaWFibGUuIEkgbmVlZCB0byBiZSBzdXJlOyBsZXQgbWUgbG9vayBhdCBgaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlYCB0byB2ZXJpZnkgdGhlIGxvdy1sZXZlbCB2YXJpYWJsZSBhY2Nlc3MuIFRoaXMgaXMgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBwcm9jZXNzLCBob3cgdXBkYXRlcyBhcmUgaGFuZGxlZCwgYW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyNDIsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MDk6MjAuNzYwNTUxMDk5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzg1ODgyMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTgyPXN0YXRpYyB2b2lkICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4Mzppd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04NC1cXHRcXHRcXHRcXHQgICAgZWZpX2d1aWRfdCAqZ3VpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTExOD1zdGF0aWMgdm9pZCAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTE5Oml3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMjAtXFx0XFx0XFx0ICAgICAgIGVmaV9jaGFyMTZfdCAqdWVmaV92YXJfbmFtZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEyNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTI1OlxcdHJldHVybiBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZCh0cmFucywgXFx1MDAyNklXTF9FRklfV0lGSV9HVUlELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEyNi1cXHRcXHRcXHRcXHRcXHRcXHQgICB1ZWZpX3Zhcl9uYW1lLCB2YXJfbmFtZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTI4NT11OCAqaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjI5MTpcXHRwYWNrYWdlID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI5Mi1cXHRcXHRcXHRcXHRcXHRcXHQgSVdMX1VFRklfUkVEVUNFRF9QT1dFUl9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MzI5PXZvaWQgaXdsX3VlZmlfZ2V0X3N0ZXBfdGFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MzM3OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZCh0cmFucywgXFx1MDAyNklXTF9FRklfV0lGSV9CVF9HVUlELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTMzOC1cXHRcXHRcXHRcXHRcXHRcXHQgICBJV0xfVUVGSV9TVEVQX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0zODM9dm9pZCBpd2xfdWVmaV9nZXRfc2dvbV90YWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTM5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzozOTI6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZSh0cmFucywgSVdMX1VFRklfU0dPTV9OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTM5My1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiU0dPTVxcXCIsIHNpemVvZigqZGF0YSksIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9NDIwPXZvaWQgaXdsX3VlZmlfZ2V0X3VhdHNfdGFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDI2OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUodHJhbnMsIElXTF9VRUZJX1VBVFNfTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MjctXFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcIlVBVFNcXFwiLCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTQzOD12b2lkIGl3bF91ZWZpX2dldF91bmViX3RhYmxlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjQ0MzpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHRyYW5zLCBJV0xfVUVGSV9VTkVCX05BTUUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDQ0LVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXCJVTkVCXFxcIiwgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz00OTc9aW50IGl3bF91ZWZpX2dldF93cmRzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTUwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo1MDU6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfV1JEU19OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTUwNi1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiV1JEU1xcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz01NDU9aW50IGl3bF91ZWZpX2dldF9ld3JkX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo1NTQ6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfRVdSRF9OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU1NS1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiRVdSRFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz01OTk9aW50IGl3bF91ZWZpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTYwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2MDg6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfV0dEU19OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTYwOS1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiV0dEU1xcXCIsIFVFRklfV0dEU19UQUJMRV9TSVpFX1JFVjMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz02NzY9aW50IGl3bF91ZWZpX2dldF9wcGFnX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2ODM6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfUFBBR19OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY4NC1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiUFBBR1xcXCIsIFVFRklfUFBBR19EQVRBX1NJWkVfVjUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02OTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NjkzOlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjk0LVxcdFxcdFxcdFxcdFxcdCAgICAgIElXTF9VRUZJX1BQQUdfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTc0NT1pbnQgaXdsX3VlZmlfZ2V0X3Rhc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NzUxOlxcdHVlZmlfdGFzID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXFx1MDAzZXRyYW5zLCBJV0xfVUVGSV9XVEFTX05BTUUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzUyLVxcdFxcdFxcdFxcdFxcdFxcdCAgXFxcIldUQVNcXFwiLCBzaXplb2YoKnVlZmlfdGFzKSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz03OTg9aW50IGl3bF91ZWZpX2dldF9wd3JfbGltaXQoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjgwNDpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXFx1MDAzZXRyYW5zLCBJV0xfVUVGSV9TUExDX05BTUUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODA1LVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXCJTUExDXFxcIiwgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz04MjE9aW50IGl3bF91ZWZpX2dldF9tY2Moc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCBjaGFyICptY2MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6ODI2OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsIElXTF9VRUZJX1dSRERfTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MjctXFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcIldSRERcXFwiLCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTg1Mj1pbnQgaXdsX3VlZmlfZ2V0X2Vja3Yoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCB1MzIgKmV4dGxfY2xrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjg1NzpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQoZndydC1cXHUwMDNldHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODU4LVxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZJV0xfRUZJX1dJRklfQlRfR1VJRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTg3Nj1pbnQgaXdsX3VlZmlfZ2V0X3diZW0oc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCB1MzIgKnZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjg4MTpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXFx1MDAzZXRyYW5zLCBJV0xfVUVGSV9XQkVNX05BTUUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODgyLVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXCJXQkVNXFxcIiwgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz04OTk9c3RhdGljIGludCBpd2xfdWVmaV9sb2FkX2RzbV92YWx1ZXMoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjkwNjpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKGZ3cnQtXFx1MDAzZXRyYW5zLCBJV0xfVUVGSV9EU01fTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05MDctXFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcIkRTTVxcXCIsIHNpemVvZigqZGF0YSksIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9OTc2PWludCBpd2xfdWVmaV9nZXRfcHVuY3R1cmluZyhzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05ODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6OTg0OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTg1LVxcdFxcdFxcdFxcdFxcdCAgICAgIElXTF9VRUZJX1BVTkNUVVJJTkdfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTEwMDU9aW50IGl3bF91ZWZpX2dldF9kc2JyKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwgdTMyICp2YWx1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTAxMDpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQoZndydC1cXHUwMDNldHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAxMS1cXHRcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2SVdMX0VGSV9XSUZJX0JUX0dVSUQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0xMDMxPWludCBpd2xfdWVmaV9nZXRfcGh5X2ZpbHRlcnMoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMDM2OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsIElXTF9VRUZJX1dQRkNfTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDM3LVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXCJXUEZDXFxcIiwgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjA5OjIwLjg5OTE0NjI2NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTQxNDU0ODE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC5cblxuKipGdXp6aW5nIHRoZSBVRUZJIFZhcmlhYmxlIFJlYWRzIGluIGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKipcblxuQWxyaWdodCwgc28gYGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkYCBpcyByZWFkaW5nIFVFRkkgdmFyaWFibGVzLiBJbnRlcmVzdGluZy4gVGhlIHF1ZXN0aW9uIG5vdyBpczogY2FuIEkgZnV6eiB0aGlzPyBUaGUgYW5zd2VyICpzaG91bGQqIGJlIHllcywgZ2l2ZW4gdGhhdCB0aGUga2VybmVsIHJlYWRzIHRoZW0uIE5vdywgdGhlcmUgYXJlIGEgY291cGxlIG9mIHdheXMgdGhpcyBjb3VsZCBoYXBwZW4sIHJpZ2h0PyBTeXprYWxsZXIgY291bGQgbW9jayB0aGUgRUZJIHN1YnN5c3RlbSBhbmQgcHJvdmlkZSBmdXp6ZWQgdmFyaWFibGVzLCBvciB0aGVyZSdzIHNvbWUgKm90aGVyKiBwYXRoIHRoYXQgbGVhZHMgdG8gdGhpcy4gQnV0IGhhbmcgb24uLi4gSSBkb24ndCB0aGluayBzeXprYWxsZXIgZGlyZWN0bHkgbW9ja3MgRUZJIHZhcmlhYmxlcyB1bmxlc3MgdGhlcmUncyBzb21lIGV4cGxpY2l0IG1lY2hhbmlzbSBkZWZpbmVkIGZvciBpdCwgYXQgbGVhc3Qgbm90IHRoYXQgSSBjYW4gcmVjYWxsIG9mZiB0aGUgdG9wIG9mIG15IGhlYWQuIFxuXG5XYWl0IGEgbWludXRlLi4uIGRpZG4ndCBJIHNlZSBzb21ldGhpbmcgZWxzZSBpbiB0aGF0IGNvZGU/IE9oIHllYWghIGBpd2xfcG52bV9sb2FkX3JlZHVjZV9wb3dlcl90b190cmFuc2Ag4oCTIHRoYXQgZnVuY3Rpb24gKmFsc28qIHBhcnNlcyBkYXRhLCBidXQgaW4gdGhpcyBjYXNlLCB0aGUgZGF0YSBjb21lcyBmcm9tIHRoZSAqZmlsZXN5c3RlbSouIFNvLCB0aGF0IGNvdWxkIGJlIHRoZSBlbnRyeXBvaW50LiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgIHRvIHNlZSBpZiB0aGF0J3MgYSB2aWFibGUgYXZlbnVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTI0MSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDowOTozMi4zMTM2OTYyMjVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDA2LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQwNjpcXHRzdGF0aWMgdm9pZFxcbiA0MDc6XFx0aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuIDQwODpcXHRcXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGl3bF91Y29kZV9jYXBhYmlsaXRpZXMgKmNhcGEsXFxuIDQwOTpcXHRcXHRcXHRcXHRcXHQgICAgX19sZTMyIHNrdV9pZFszXSlcXG4gNDEwOlxcdHtcXG4gNDExOlxcdFxcdHN0cnVjdCBpd2xfcG52bV9pbWFnZSAqcG52bV9kYXRhID0gTlVMTDtcXG4gNDEyOlxcdFxcdHU4ICpkYXRhID0gTlVMTDtcXG4gNDEzOlxcdFxcdHNpemVfdCBsZW5ndGg7XFxuIDQxNDpcXHRcXHRpbnQgcmV0O1xcbiA0MTU6XFx0XFxuIDQxNjpcXHRcXHRpZiAodHJhbnMtXFx1MDAzZWZhaWxlZF90b19sb2FkX3JlZHVjZV9wb3dlcl9pbWFnZSlcXG4gNDE3OlxcdFxcdFxcdHJldHVybjtcXG4gNDE4OlxcdFxcbiA0MTk6XFx0XFx0aWYgKHRyYW5zLVxcdTAwM2VyZWR1Y2VfcG93ZXJfbG9hZGVkKVxcbiA0MjA6XFx0XFx0XFx0Z290byBzZXQ7XFxuIDQyMTpcXHRcXG4gNDIyOlxcdFxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcih0cmFucywgXFx1MDAyNmxlbmd0aCk7XFxuIDQyMzpcXHRcXHRpZiAoSVNfRVJSKGRhdGEpKSB7XFxuIDQyNDpcXHRcXHRcXHR0cmFucy1cXHUwMDNlZmFpbGVkX3RvX2xvYWRfcmVkdWNlX3Bvd2VyX2ltYWdlID0gdHJ1ZTtcXG4gNDI1OlxcdFxcdFxcdHJldHVybjtcXG4gNDI2OlxcdFxcdH1cXG4gNDI3OlxcdFxcbiA0Mjg6XFx0XFx0cG52bV9kYXRhID0ga3phbGxvY19vYmooKnBudm1fZGF0YSk7XFxuIDQyOTpcXHRcXHRpZiAoIXBudm1fZGF0YSlcXG4gNDMwOlxcdFxcdFxcdGdvdG8gZnJlZTtcXG4gNDMxOlxcdFxcbiA0MzI6XFx0XFx0cmV0ID0gaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHRyYW5zLCBkYXRhLCBsZW5ndGgsIHBudm1fZGF0YSxcXG4gNDMzOlxcdFxcdFxcdFxcdFxcdFxcdCAgc2t1X2lkKTtcXG4gNDM0OlxcdFxcdGlmIChyZXQpIHtcXG4gNDM1OlxcdFxcdFxcdHRyYW5zLVxcdTAwM2VmYWlsZWRfdG9fbG9hZF9yZWR1Y2VfcG93ZXJfaW1hZ2UgPSB0cnVlO1xcbiA0MzY6XFx0XFx0XFx0Z290byBmcmVlO1xcbiA0Mzc6XFx0XFx0fVxcbiA0Mzg6XFx0XFxuIDQzOTpcXHRcXHRyZXQgPSBpd2xfdHJhbnNfbG9hZF9yZWR1Y2VfcG93ZXIodHJhbnMsIHBudm1fZGF0YSwgY2FwYSk7XFxuIDQ0MDpcXHRcXHRpZiAocmV0KSB7XFxuIDQ0MTpcXHRcXHRcXHRJV0xfREVCVUdfRlcodHJhbnMsXFxuIDQ0MjpcXHRcXHRcXHRcXHQgICAgIFxcXCJGYWlsZWQgdG8gbG9hZCByZWR1Y2UgcG93ZXIgdGFibGUgJWRcXFxcblxcXCIsXFxuIDQ0MzpcXHRcXHRcXHRcXHQgICAgIHJldCk7XFxuIDQ0NDpcXHRcXHRcXHR0cmFucy1cXHUwMDNlZmFpbGVkX3RvX2xvYWRfcmVkdWNlX3Bvd2VyX2ltYWdlID0gdHJ1ZTtcXG4gNDQ1OlxcdFxcdFxcdGdvdG8gZnJlZTtcXG4gNDQ2OlxcdFxcdH1cXG4gNDQ3OlxcdFxcbiA0NDg6XFx0c2V0OlxcbiA0NDk6XFx0XFx0aXdsX3RyYW5zX3NldF9yZWR1Y2VfcG93ZXIodHJhbnMsIGNhcGEpO1xcbiA0NTA6XFx0ZnJlZTpcXG4gNDUxOlxcdFxcdGtmcmVlKGRhdGEpO1xcbiA0NTI6XFx0XFx0a2ZyZWUocG52bV9kYXRhKTtcXG4gNDUzOlxcdH1cXG4gNDU0OlxcdFxcbiA0NTU6XFx0aW50IGl3bF9wbnZtX2xvYWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuIDQ1NjpcXHRcXHRcXHQgIHN0cnVjdCBpd2xfbm90aWZfd2FpdF9kYXRhICpub3RpZl93YWl0LFxcbiA0NTc6XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgaXdsX2Z3ICpmdywgX19sZTMyIHNrdV9pZFszXSlcXG4gNDU4OlxcdHtcXG4gNDU5OlxcdFxcdHN0cnVjdCBpd2xfbm90aWZpY2F0aW9uX3dhaXQgcG52bV93YWl0O1xcbiA0NjA6XFx0XFx0c3RhdGljIGNvbnN0IHUxNiBudGZfY21kc1tdID0geyBXSURFX0lEKFJFR1VMQVRPUllfQU5EX05WTV9HUk9VUCxcXG4gNDYxOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFBOVk1fSU5JVF9DT01QTEVURV9OVEZZKSB9O1xcbiA0NjI6XFx0XFxuIDQ2MzpcXHRcXHQvKiBpZiB0aGUgU0tVX0lEIGlzIGVtcHR5LCB0aGVyZSdzIG5vdGhpbmcgdG8gZG8gKi9cXG4gNDY0OlxcdFxcdGlmICghc2t1X2lkWzBdIFxcdTAwMjZcXHUwMDI2ICFza3VfaWRbMV0gXFx1MDAyNlxcdTAwMjYgIXNrdV9pZFsyXSlcXG4gNDY1OlxcdFxcdFxcdHJldHVybiAwO1xcbiA0NjY6XFx0XFxuIDQ2NzpcXHRcXHRpd2xfcG52bV9sb2FkX3Budm1fdG9fdHJhbnModHJhbnMsIGZ3LCBza3VfaWQpO1xcbiA0Njg6XFx0XFx0aXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnModHJhbnMsIFxcdTAwMjZmdy1cXHUwMDNldWNvZGVfY2FwYSwgc2t1X2lkKTtcXG4gNDY5OlxcdFxcbiA0NzA6XFx0XFx0aXdsX2luaXRfbm90aWZpY2F0aW9uX3dhaXQobm90aWZfd2FpdCwgXFx1MDAyNnBudm1fd2FpdCxcXG4gNDcxOlxcdFxcdFxcdFxcdFxcdCAgIG50Zl9jbWRzLCBBUlJBWV9TSVpFKG50Zl9jbWRzKSxcXG4gNDcyOlxcdFxcdFxcdFxcdFxcdCAgIGl3bF9wbnZtX2NvbXBsZXRlX2ZuLCB0cmFucyk7XFxuIDQ3MzpcXHRcXG4gNDc0OlxcdFxcdC8qIGtpY2sgdGhlIGRvb3JiZWxsICovXFxuIDQ3NTpcXHRcXHRpd2xfd3JpdGVfdW1hY19wcnBoKHRyYW5zLCBVUkVHX0RPT1JCRUxMX1RPX0lTUjYsXFxuIDQ3NjpcXHRcXHRcXHRcXHQgICAgVVJFR19ET09SQkVMTF9UT19JU1I2X1BOVk0pO1xcbiA0Nzc6XFx0XFxuIDQ3ODpcXHRcXHRyZXR1cm4gaXdsX3dhaXRfbm90aWZpY2F0aW9uKG5vdGlmX3dhaXQsIFxcdTAwMjZwbnZtX3dhaXQsXFxuIDQ3OTpcXHRcXHRcXHRcXHRcXHQgICAgIE1WTV9VQ09ERV9QTlZNX1RJTUVPVVQpO1xcbiA0ODA6XFx0fVxcbiA0ODE6XFx0SVdMX0VYUE9SVF9TWU1CT0woaXdsX3Budm1fbG9hZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjA5OjMyLjMxMzc3OTU4NVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDUwNjUwMTE0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyBEYXRhIFNvdXJjZSBmb3IgUG93ZXIgUmVkdWN0aW9uIEluZm9ybWF0aW9uKipcblxuSG1tLCBpdCBzZWVtcyBsaWtlIGBpd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcmAgaXMgdGhlICpvbmx5KiBwbGFjZSB0aGUgc3lzdGVtIGlzIHB1bGxpbmcgZGF0YSBmcm9tIGZvciBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgLiBUaGF0J3MgYSBjcml0aWNhbCBkZXBlbmRlbmN5LCBhbmQgYSBwb3RlbnRpYWwgc2luZ2xlIHBvaW50IG9mIGZhaWx1cmUgb3IgYm90dGxlbmVjay4gSSBuZWVkIHRvIHJldmlzaXQgdGhhdCBmdW5jdGlvbiwgYGl3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyYCwgd2l0aCBhIGZpbmUtdG9vdGggY29tYi4gQW55IGlzc3VlcyB0aGVyZSwgYW5kIHRoZSBlbnRpcmUgcG93ZXIgcmVkdWN0aW9uIG1lY2hhbmlzbSBmb3IgdGhlIFBOVk0gaXMgY29tcHJvbWlzZWQuIExldCdzIG1ha2Ugc3VyZSBpdCBpcyBmdW5jdGlvbmluZyBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyOTI3LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDowOTo0Ni44MjAyODI0MDdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE2NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjg1LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjg1OlxcdHU4ICppd2xfdWVmaV9nZXRfcmVkdWNlZF9wb3dlcihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXFxuIDI4NjpcXHR7XFxuIDI4NzpcXHRcXHRzdHJ1Y3QgcG52bV9za3VfcGFja2FnZSAqcGFja2FnZTtcXG4gMjg4OlxcdFxcdHVuc2lnbmVkIGxvbmcgcGFja2FnZV9zaXplO1xcbiAyODk6XFx0XFx0dTggKmRhdGE7XFxuIDI5MDpcXHRcXG4gMjkxOlxcdFxcdHBhY2thZ2UgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUodHJhbnMsXFxuIDI5MjpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgSVdMX1VFRklfUkVEVUNFRF9QT1dFUl9OQU1FLFxcbiAyOTM6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IFxcXCJSZWR1Y2VkIFBvd2VyXFxcIixcXG4gMjk0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBzaXplb2YoKnBhY2thZ2UpLFxcbiAyOTU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZwYWNrYWdlX3NpemUpO1xcbiAyOTY6XFx0XFx0aWYgKElTX0VSUihwYWNrYWdlKSlcXG4gMjk3OlxcdFxcdFxcdHJldHVybiBFUlJfQ0FTVChwYWNrYWdlKTtcXG4gMjk4OlxcdFxcbiAyOTk6XFx0XFx0SVdMX0RFQlVHX0ZXKHRyYW5zLCBcXFwicmV2ICVkLCB0b3RhbF9zaXplICVkLCBuX3NrdXMgJWRcXFxcblxcXCIsXFxuIDMwMDpcXHRcXHRcXHQgICAgIHBhY2thZ2UtXFx1MDAzZXJldiwgcGFja2FnZS1cXHUwMDNldG90YWxfc2l6ZSwgcGFja2FnZS1cXHUwMDNlbl9za3VzKTtcXG4gMzAxOlxcdFxcbiAzMDI6XFx0XFx0KmxlbiA9IHBhY2thZ2Vfc2l6ZSAtIHNpemVvZigqcGFja2FnZSk7XFxuIDMwMzpcXHRcXHRkYXRhID0ga21lbWR1cChwYWNrYWdlLVxcdTAwM2VkYXRhLCAqbGVuLCBHRlBfS0VSTkVMKTtcXG4gMzA0OlxcdFxcdGlmICghZGF0YSkge1xcbiAzMDU6XFx0XFx0XFx0a2ZyZWUocGFja2FnZSk7XFxuIDMwNjpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcXG4gMzA3OlxcdFxcdH1cXG4gMzA4OlxcdFxcbiAzMDk6XFx0XFx0a2ZyZWUocGFja2FnZSk7XFxuIDMxMDpcXHRcXG4gMzExOlxcdFxcdHJldHVybiBkYXRhO1xcbiAzMTI6XFx0fVxcbiAzMTM6XFx0XFxuIDMxNDpcXHRzdGF0aWMgaW50IGl3bF91ZWZpX3N0ZXBfcGFyc2Uoc3RydWN0IHVlZmlfY252X2NvbW1vbl9zdGVwX2RhdGEgKmNvbW1vbl9zdGVwX2RhdGEsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjA5OjQ2LjgyMDM2NTc0N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTU1NTA4MTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUsIHRoZSBzeXN0ZW0ncyByZWFkaW5nIGZyb20gVUVGSSB2YXJpYWJsZXMsIGludGVyZXN0aW5nLiBUaGUgcmVhbCBxdWVzdGlvbiBpcywgaG93IGRvZXMgc3l6a2FsbGVyIGFjdHVhbGx5ICp0ZXN0KiB0aGlzIGludGVyYWN0aW9uPyBNeSBmaXJzdCB0aG91Z2h0IGlzIHRoZSBzdGFuZGFyZCBhcHByb2FjaCDigJMgYGVmaXZhcmZzYCBvciBzb21ldGhpbmcgbGlrZSB0aGF0LCB3aGVyZSBpdCBtb2NrcyB0aGUgdmFyaWFibGVzIGRpcmVjdGx5LiBCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiB0aGUgY29kZSBwYXRoIGZvciB0aGlzIHNlZW1zIHRvIGJlIHRocm91Z2ggYGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZWAsIGFuZCAqdGhhdCogY2FsbHMgYGVmaS5nZXRfdmFyaWFibGVgLiBSaWdodC4gU28sIHRoZSBrZXkgaXMgZGlnZ2luZyBpbnRvIGBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVgLiBUaGF0J3Mgd2hlcmUgdGhlIGludGVyZXN0aW5nIHN0dWZmIGxpa2VseSBpcy4gTGV0J3Mgc3RhcnQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNjM4LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDowOTo1MC4zNzU4Nzc0MDZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDgyLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDgyOlxcdHN0YXRpYyB2b2lkICpcXG4gIDgzOlxcdGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZV9ndWlkKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbiAgODQ6XFx0XFx0XFx0XFx0XFx0ICAgIGVmaV9ndWlkX3QgKmd1aWQsXFxuICA4NTpcXHRcXHRcXHRcXHRcXHQgICAgZWZpX2NoYXIxNl90ICp1ZWZpX3Zhcl9uYW1lLFxcbiAgODY6XFx0XFx0XFx0XFx0XFx0ICAgIGNoYXIgKnZhcl9uYW1lLFxcbiAgODc6XFx0XFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCBleHBlY3RlZF9zaXplLFxcbiAgODg6XFx0XFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGxvbmcgKnNpemUpXFxuICA4OTpcXHR7XFxuICA5MDpcXHRcXHR2b2lkICp2YXI7XFxuICA5MTpcXHRcXHR1bnNpZ25lZCBsb25nIHZhcl9zaXplO1xcbiAgOTI6XFx0XFxuICA5MzpcXHRcXHR2YXIgPSBpd2xfdWVmaV9nZXRfdmFyaWFibGUodWVmaV92YXJfbmFtZSwgZ3VpZCwgXFx1MDAyNnZhcl9zaXplKTtcXG4gIDk0OlxcdFxcbiAgOTU6XFx0XFx0aWYgKElTX0VSUih2YXIpKSB7XFxuICA5NjpcXHRcXHRcXHRJV0xfREVCVUdfUkFESU8odHJhbnMsXFxuICA5NzpcXHRcXHRcXHRcXHRcXHRcXFwiJXMgVUVGSSB2YXJpYWJsZSBub3QgZm91bmQgMHglbHhcXFxcblxcXCIsIHZhcl9uYW1lLFxcbiAgOTg6XFx0XFx0XFx0XFx0XFx0UFRSX0VSUih2YXIpKTtcXG4gIDk5OlxcdFxcdFxcdHJldHVybiB2YXI7XFxuIDEwMDpcXHRcXHR9XFxuIDEwMTpcXHRcXG4gMTAyOlxcdFxcdGlmICh2YXJfc2l6ZSBcXHUwMDNjIGV4cGVjdGVkX3NpemUpIHtcXG4gMTAzOlxcdFxcdFxcdElXTF9ERUJVR19SQURJTyh0cmFucyxcXG4gMTA0OlxcdFxcdFxcdFxcdFxcdFxcXCJJbnZhbGlkICVzIFVFRkkgdmFyaWFibGUgbGVuICglbHUpXFxcXG5cXFwiLFxcbiAxMDU6XFx0XFx0XFx0XFx0XFx0dmFyX25hbWUsIHZhcl9zaXplKTtcXG4gMTA2OlxcdFxcdFxcdGtmcmVlKHZhcik7XFxuIDEwNzpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG4gMTA4OlxcdFxcdH1cXG4gMTA5OlxcdFxcbiAxMTA6XFx0XFx0SVdMX0RFQlVHX1JBRElPKHRyYW5zLCBcXFwiJXMgZnJvbSBVRUZJIHdpdGggc2l6ZSAlbHVcXFxcblxcXCIsIHZhcl9uYW1lLFxcbiAxMTE6XFx0XFx0XFx0XFx0dmFyX3NpemUpO1xcbiAxMTI6XFx0XFxuIDExMzpcXHRcXHRpZiAoc2l6ZSlcXG4gMTE0OlxcdFxcdFxcdCpzaXplID0gdmFyX3NpemU7XFxuIDExNTpcXHRcXHRyZXR1cm4gdmFyO1xcbiAxMTY6XFx0fVxcbiAxMTc6XFx0XFxuIDExODpcXHRzdGF0aWMgdm9pZCAqXFxuIDExOTpcXHRpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuIDEyMDpcXHRcXHRcXHRcXHQgICAgICAgZWZpX2NoYXIxNl90ICp1ZWZpX3Zhcl9uYW1lLFxcbiAxMjE6XFx0XFx0XFx0XFx0ICAgICAgIGNoYXIgKnZhcl9uYW1lLFxcbiAxMjI6XFx0XFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGludCBleHBlY3RlZF9zaXplLFxcbiAxMjM6XFx0XFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgKnNpemUpXFxuIDEyNDpcXHR7XFxuIDEyNTpcXHRcXHRyZXR1cm4gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQodHJhbnMsIFxcdTAwMjZJV0xfRUZJX1dJRklfR1VJRCxcXG4gMTI2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIHVlZmlfdmFyX25hbWUsIHZhcl9uYW1lLFxcbiAxMjc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgZXhwZWN0ZWRfc2l6ZSwgc2l6ZSk7XFxuIDEyODpcXHR9XFxuIDEyOTpcXHRcXG4gMTMwOlxcdGludCBpd2xfdWVmaV9oYW5kbGVfdGx2X21lbV9kZXNjKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCB1OCAqZGF0YSxcXG4gMTMxOlxcdFxcdFxcdFxcdFxcdCB1MzIgdGx2X2xlbiwgc3RydWN0IGl3bF9wbnZtX2ltYWdlICpwbnZtX2RhdGEpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjA5OjUwLjM3NjAyMzYyNloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTE2MjUwMDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGVsdmluZyBpbnRvIFVFRkkgVmFyaWFibGUgUmV0cmlldmFsIHdpdGggaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgYGl3bF91ZWZpX2dldF92YXJpYWJsZWAgYW5kIGltbWVkaWF0ZWx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGxvdy1sZXZlbCBpbnRlcmFjdGlvbnMgaGVyZS4gVGhpcyBpcyBhIGNydWNpYWwgZnVuY3Rpb24gZm9yLCBJIGFzc3VtZSwgcmV0cmlldmluZyBVRUZJIHZhcmlhYmxlcyB0aGF0IGFyZSBnb2luZyB0byBiZSB1c2VkIGluIHRoZSBJbnRlbCBXaXJlbGVzcyBkcml2ZXIgKGl3bHdpZmkpIGNvbnRleHQsIGxpa2VseSBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIGZpcm13YXJlIGxvYWRpbmcsIG9yIHBvdGVudGlhbGx5IGR1cmluZyBydW50aW1lIGZvciBjb25maWd1cmF0aW9uLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZXhhY3QgcHVycG9zZS4gSXMgaXQgYSBkaXJlY3Qgd3JhcHBlciBhcm91bmQgYEdldFZhcmlhYmxlKClgIGZyb20gdGhlIFVFRkkgcnVudGltZSBzZXJ2aWNlcz8gQXJlIHRoZXJlIGFueSBzaWduaWZpY2FudCBlcnJvciBjaGVja3Mgb3IgcmV0cmllcyBpbXBsZW1lbnRlZCBoZXJlPyBJZiBpdCdzIGEgd3JhcHBlciwgd2hhdCBsZXZlbCBvZiBhYnN0cmFjdGlvbiBkb2VzIGl0IG9mZmVyPyBEb2VzIGl0IGhhbmRsZSB0aGUgY29tcGxleGl0aWVzIG9mIHZhcmlhYmxlIGF0dHJpYnV0ZXMgbGlrZSBiZWluZyByZWFkLW9ubHkgb3Igdm9sYXRpbGU/IEkgaGF2ZSB0byBjb25zaWRlciB0aGUgcG90ZW50aWFsIGZvciByYWNlIGNvbmRpdGlvbnMgb3IgYWNjZXNzIHZpb2xhdGlvbnMgaWYgbXVsdGlwbGUgcHJvY2Vzc2VzIGFyZSB0cnlpbmcgdG8gbWFuaXB1bGF0ZSBvciBhY2Nlc3MgdGhlIHNhbWUgdmFyaWFibGVzIHNpbXVsdGFuZW91c2x5LlxuXG5CZXlvbmQgdGhhdCwgSSdtIGltbWVkaWF0ZWx5IGludGVyZXN0ZWQgaW4gdGhlIHBvdGVudGlhbCBpbXBhY3Qgb24gc3lzdGVtIHBlcmZvcm1hbmNlLiBIb3cgZWZmaWNpZW50bHkgaXMgaXQgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZmlybXdhcmU/IFdoYXQncyB0aGUgb3ZlcmhlYWQgaW52b2x2ZWQgaW4gdGhlIGNvbW11bmljYXRpb24/IElzIHRoZXJlIGFueSBjYWNoaW5nIGltcGxlbWVudGVkLCBhbmQgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2FjaGUgaW52YWxpZGF0aW9uIHN0cmF0ZWd5P1xuXG5GdXJ0aGVybW9yZSwgSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMsIG9mIGNvdXJzZS4gQXJlIHRoZXJlIGFueSBrbm93biB2dWxuZXJhYmlsaXRpZXMgcmVsYXRlZCB0byBVRUZJIHZhcmlhYmxlIGFjY2VzcyB0aGF0IHRoaXMgZnVuY3Rpb24gbWlnaHQgaW5hZHZlcnRlbnRseSBleHBvc2U/IENvdWxkIGEgbWFsaWNpb3VzIGFjdG9yIGxldmVyYWdlIGEgdnVsbmVyYWJpbGl0eSBpbiB0aGUgdmFyaWFibGUgcmV0cmlldmFsIHByb2Nlc3MgZm9yIGEgc3lzdGVtIGNvbXByb21pc2U/IEFyZSB0aGVyZSBhbnkgY2hlY2tzIGZvciBwb3RlbnRpYWxseSBtYWxpY2lvdXMgVUVGSSB2YXJpYWJsZXM/XG5cbkZpbmFsbHksIHdoYXTigJlzIHRoZSBlcnJvciBoYW5kbGluZz8gSG93IGRvZXMgaXQgaGFuZGxlIHNjZW5hcmlvcyB3aGVyZSB0aGUgdmFyaWFibGUgZG9lc27igJl0IGV4aXN0LCB0aGUgZmlybXdhcmUgcmV0dXJucyBhbiBlcnJvciwgb3IgdGhlIGJ1ZmZlciBpcyB0b28gc21hbGw/IFdoYXQgYXJlIHRoZSByZXR1cm4gY29kZXMgb3IgZXJyb3IgY29kZXMgaXQgdXNlcywgYW5kIGhvdyBkb2VzIHRoYXQgcHJvcGFnYXRlIHVwIHRoZSBjYWxsIHN0YWNrIHRvIHRoZSByZXN0IG9mIHRoZSBkcml2ZXI/IFRoZSByb2J1c3RuZXNzIG9mIHRoZSBlcnJvciBoYW5kbGluZyB3aWxsIGxpa2VseSBiZSB0aGUgZmlyc3QgcG9pbnQgb2YgdnVsbmVyYWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ2NTMsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjA5OjU1LjQ5MjI3NjA2MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI2NDI5NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIml3bF91ZWZpX2dldF92YXJpYWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz0yMz1zdHJ1Y3QgaXdsX3VlZmlfcG52bV9tZW1fZGVzYyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyOTpzdGF0aWMgdm9pZCAqaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKGVmaV9jaGFyMTZfdCAqbmFtZSwgZWZpX2d1aWRfdCAqZ3VpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMC1cXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBsb25nICpkYXRhX3NpemUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYz02MD12b2lkICppd2xfdWVmaV9nZXRfcG52bShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2NzpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKElXTF9VRUZJX09FTV9QTlZNX05BTUUsIFxcdTAwMjZJV0xfRUZJX1dJRklfR1VJRCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02OC1cXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZwYWNrYWdlX3NpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9ODM9aXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo5MzpcXHR2YXIgPSBpd2xfdWVmaV9nZXRfdmFyaWFibGUodWVmaV92YXJfbmFtZSwgZ3VpZCwgXFx1MDAyNnZhcl9zaXplKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MDk6NTUuOTE4NzEyODAxWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NDI3MTI4NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiBgaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlYCwgdmlld2VkIHRocm91Z2ggdGhlIGxlbnMgb2YgbXkgZXhwZXJ0aXNlOlxuXG4qKk15IFBlcnNwZWN0aXZlIG9uIGBpd2xfdWVmaV9nZXRfdmFyaWFibGVgKipcblxuQWxyaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBgaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlYCwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBmdW5jdGlvbiBpcyBsaWtlbHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIGFuIEludGVsIHdpcmVsZXNzIGRldmljZSBkcml2ZXIsIHByb2JhYmx5IG9uIGEgc3lzdGVtIHRoYXQgbGV2ZXJhZ2VzIFVFRkkuIFRoZSBcIml3bFwiIHByZWZpeCBpcyBhIGRlYWQgZ2l2ZWF3YXkg4oCTIGl0IHNjcmVhbXMgSW50ZWwgV2lyZWxlc3MgTEFOLiBBbmQgdGhhdCBcInVlZmlcIiBwYXJ0PyBJdCBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggaW50ZXJhY3Rpb25zIHdpdGggdGhlIFVFRkkgZmlybXdhcmUsIHNwZWNpZmljYWxseSB0byByZXRyaWV2ZSBhIHZhcmlhYmxlLlxuXG5NeSBmaXJzdCB0aG91Z2h0IGlzLCBcIndoeSBhcmUgd2UgcXVlcnlpbmcgYSBVRUZJIHZhcmlhYmxlP1wiLiAgSXQgY291bGQgYmUgYW55dGhpbmcgZnJvbSBib290LXRpbWUgY29uZmlndXJhdGlvbiwgaGFyZHdhcmUtc3BlY2lmaWMgc2V0dGluZ3MsIGEgdW5pcXVlIGlkZW50aWZpZXIsIG9yIHNvbWV0aGluZyByZWxhdGVkIHRvIGEgc3BlY2lmaWMgZmVhdHVyZSBsaWtlIHNlY3VyZSBib290IHN0YXR1cy4gVGhpcyBmdW5jdGlvbiBpcyB0aGUgZ2F0ZXdheSB0byBmZXRjaGluZyB0aGF0IGluZm9ybWF0aW9uLiAgV2UnbGwgbmVlZCB0byBmaWd1cmUgb3V0ICp3aGF0KiB2YXJpYWJsZSBpcyBiZWluZyBmZXRjaGVkIGJ5IGxvb2tpbmcgYXQgdGhlIGJyb2FkZXIgY29udGV4dCBvZiB0aGUgZHJpdmVyIGFuZCBob3cgaXQncyB1c2VkLlxuXG5UaGUgaW50ZXJlc3RpbmcgYXNwZWN0IHdpbGwgYmUgKmhvdyogaXQncyBkb25lLiBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgd2UnbGwgYmUgZGVhbGluZyB3aXRoIFVFRkkgcnVudGltZSBzZXJ2aWNlcyAobGlrZWx5IHVzaW5nIGEgR1VJRCB0byBpZGVudGlmeSB0aGUgdmFyaWFibGUpIGFuZCBoYW5kbGluZyB0aGUgdmFyaW91cyBlcnJvciBjb2RlcyB0aGF0IGNvbWUgd2l0aCBpbnRlcmFjdGluZyB3aXRoIGZpcm13YXJlLiBUaGVyZSBjb3VsZCBiZSBpc3N1ZXMgd2l0aCB2YXJpYWJsZSBwZXJtaXNzaW9ucywgaW5jb3JyZWN0IGJ1ZmZlciBzaXplcywgb3IgdGhlIHZhcmlhYmxlIHNpbXBseSBub3QgZXhpc3RpbmcgaW4gdGhlIGZpcnN0IHBsYWNlLiBFcnJvciBoYW5kbGluZyB3aWxsIGJlIGNyaXRpY2FsIGhlcmUsIGFuZCBJJ2xsIHdhbnQgdG8gc2VlIGhvdyByb2J1c3RseSBpdCdzIGltcGxlbWVudGVkLiBJJ20gZ29pbmcgdG8gYmUgbG9va2luZyBmb3IgY2hlY2tzIG9uIHJldHVybiB2YWx1ZXMgZnJvbSB0aGUgVUVGSSBydW50aW1lIHNlcnZpY2UgY2FsbHMgYW5kIGhvdyB0aGUgZHJpdmVyIGRlYWxzIHdpdGggdGhlIHZhcmlvdXMgZmFpbHVyZXMuXG5cbkknbSBhbHNvIGN1cmlvdXMgYWJvdXQgdGhlIHBvdGVudGlhbCBzZWN1cml0eSBpbXBsaWNhdGlvbnMuIElmIHRoaXMgZnVuY3Rpb24gaXMgcG9vcmx5IGltcGxlbWVudGVkLCBpdCBjb3VsZCBpbnRyb2R1Y2UgdnVsbmVyYWJpbGl0aWVzLiBJbXByb3Blcmx5IHZhbGlkYXRlZCBpbnB1dCBwYXJhbWV0ZXJzIGNvdWxkIGxlYWQgdG8gYnVmZmVyIG92ZXJmbG93cyBvciBpbmZvcm1hdGlvbiBsZWFrcy4gSSdsbCBuZWVkIHRvIHNjcnV0aW5pemUgYW55IGRhdGEgdGhhdOKAmXMgcGFzc2VkIGZyb20gb3IgcmV0dXJuZWQgdG8gdGhlIFVFRkkgZmlybXdhcmUgZm9yIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLlxuXG5PdmVyYWxsLCBgaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlYCBoYXMgbWUgdGhpbmtpbmcgYWJvdXQgVUVGSSBydW50aW1lIGludGVyYWN0aW9ucywgZXJyb3IgaGFuZGxpbmcsIHBvdGVudGlhbCBzZWN1cml0eSBpbXBsaWNhdGlvbnMsIGFuZCB0aGUgc3BlY2lmaWMgdXNlIGNhc2Ugd2l0aGluIHRoaXMgSW50ZWwgd2lyZWxlc3MgZHJpdmVyLiBNeSBjdXJpb3NpdHkgaXMgZGVmaW5pdGVseSBwaXF1ZWQsIGxldCdzIHNlZSB3aGF0J3MgcmVhbGx5IGhhcHBlbmluZyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTU1ODgsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDoxMDowMC41NjE0Mjg4MVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY0ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjksXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjk6XFx0c3RhdGljIHZvaWQgKml3bF91ZWZpX2dldF92YXJpYWJsZShlZmlfY2hhcjE2X3QgKm5hbWUsIGVmaV9ndWlkX3QgKmd1aWQsXFxuICAzMDpcXHRcXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBsb25nICpkYXRhX3NpemUpXFxuICAzMTpcXHR7XFxuICAzMjpcXHRcXHRlZmlfc3RhdHVzX3Qgc3RhdHVzO1xcbiAgMzM6XFx0XFx0dm9pZCAqZGF0YTtcXG4gIDM0OlxcdFxcbiAgMzU6XFx0XFx0aWYgKCFkYXRhX3NpemUpXFxuICAzNjpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG4gIDM3OlxcdFxcbiAgMzg6XFx0XFx0aWYgKCFlZmlfcnRfc2VydmljZXNfc3VwcG9ydGVkKEVGSV9SVF9TVVBQT1JURURfR0VUX1ZBUklBQkxFKSlcXG4gIDM5OlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9ERVYpO1xcbiAgNDA6XFx0XFxuICA0MTpcXHRcXHQvKiBmaXJzdCBjYWxsIHdpdGggTlVMTCBkYXRhIHRvIGdldCB0aGUgZXhhY3QgZW50cnkgc2l6ZSAqL1xcbiAgNDI6XFx0XFx0KmRhdGFfc2l6ZSA9IDA7XFxuICA0MzpcXHRcXHRzdGF0dXMgPSBlZmkuZ2V0X3ZhcmlhYmxlKG5hbWUsIGd1aWQsIE5VTEwsIGRhdGFfc2l6ZSwgTlVMTCk7XFxuICA0NDpcXHRcXHRpZiAoc3RhdHVzICE9IEVGSV9CVUZGRVJfVE9PX1NNQUxMIHx8ICEqZGF0YV9zaXplKVxcbiAgNDU6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTyk7XFxuICA0NjpcXHRcXG4gIDQ3OlxcdFxcdGRhdGEgPSBrbWFsbG9jKCpkYXRhX3NpemUsIEdGUF9LRVJORUwpO1xcbiAgNDg6XFx0XFx0aWYgKCFkYXRhKVxcbiAgNDk6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuICA1MDpcXHRcXG4gIDUxOlxcdFxcdHN0YXR1cyA9IGVmaS5nZXRfdmFyaWFibGUobmFtZSwgZ3VpZCwgTlVMTCwgZGF0YV9zaXplLCBkYXRhKTtcXG4gIDUyOlxcdFxcdGlmIChzdGF0dXMgIT0gRUZJX1NVQ0NFU1MpIHtcXG4gIDUzOlxcdFxcdFxcdGtmcmVlKGRhdGEpO1xcbiAgNTQ6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7XFxuICA1NTpcXHRcXHR9XFxuICA1NjpcXHRcXG4gIDU3OlxcdFxcdHJldHVybiBkYXRhO1xcbiAgNTg6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDoxMDowMC41NjE1NzcxMloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5OTIxNDkyMDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgYW4gRUZJIFZhcmlhYmxlIEludGVyYWN0aW9uIGluIGl3bHdpZmkqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIHRvdWNoZXMgYGVmaS5nZXRfdmFyaWFibGVgLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluaywgXCJDYW4gc3l6a2FsbGVyIGZ1enogdGhpcz9cIiBXZSBrbm93IHN5emthbGxlciBjYW4gaGl0IEVGSSB2YXJpYWJsZXMgaWYgaXQgY2FuIHdyaXRlIHRvIGAvc3lzL2Zpcm13YXJlL2VmaS9lZml2YXJzL2AsIHdoaWNoIGl0IGRlZmluaXRlbHkgY2FuLiBUaGVuIEkgcmVtZW1iZXIgdGhhdCBgaXdsd2lmaWAgbG9hZHMgc29tZXRoaW5nIGR1cmluZyBpbml0aWFsaXphdGlvbi4gQWhhISBJZiBzeXprYWxsZXIgd3JpdGVzIHRvIGAvc3lzL2Zpcm13YXJlL2VmaS9lZml2YXJzL2AgKmJlZm9yZSogdHJpZ2dlcmluZyBgaXdsd2lmaWAgaW5pdGlhbGl6YXRpb24g4oCTIGJ5IGJpbmRpbmcgdGhlIGRyaXZlciBvciBjcmVhdGluZyBhIHZpcnR1YWwgZGV2aWNlIOKAkyB3ZSBjb3VsZCBoYXZlIGEgZnV6emluZyB0YXJnZXQhXG5cbkJ1dCBob2xkIG9uLCBgaXdsd2lmaWAgaXMgYSBQQ0kgZHJpdmVyLiBDYW4gc3l6a2FsbGVyIGRvIHZpcnR1YWwgUENJIGRldmljZXM/IEl0IGhhcyBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9kZXZpY2VgLCByaWdodD8gVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIGl0ICptb2NrKiBgaXdsd2lmaWAgc3BlY2lmaWNhbGx5PyBUaGlua2luZyBhYm91dCBpdCwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIHZpcnR1YWwsIGJ1dCB0aGF0J3Mgbm90IHRoZSBzYW1lLiBgaXdsd2lmaWAgc2VlbXMgdG8gbmVlZCBlaXRoZXIgYSByZWFsIFBDSSBkZXZpY2Ugb3IgYSAqbW9ja2VkKiBvbmUuIE9rYXksIHN5emthbGxlciBkb2VzIGhhdmUgc29tZSBQQ0kgZnV6emluZyBzdXBwb3J0OyBgdmhjaWAsIGB2ZmlvYCwgYW5kIHRoZSBgc3l6X3BjaV9kZXZpY2VgIGNhbGxzIGNvbWUgdG8gbWluZC5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuY2AuIElmIHN5emthbGxlciBpcyB0ZXN0aW5nIHRoaXMsIGl0ICpzaG91bGQqIGJlIHJlYWNoYWJsZS4gV2FpdCBhIG1pbnV0ZS4uLiB0aGUgYXV0aG9yIGlzIGBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZWAhIFRoYXQgbWVhbnMgc3l6a2FsbGVyIGZvdW5kIHRoZSBidWcgYW5kIHRoaXMgaXMgdGhlIGZpeCFcblxuTm93IEkgbmVlZCB0byByZW1lbWJlciB3aGF0IHRoZSBwcm9tcHQgc2F5czogXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIC4uLiBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIi4gU2luY2UgKnN5emthbGxlciogZm91bmQgdGhlIGJ1ZywgaXQgKm11c3QqIGJlIHJlYWNoYWJsZSBpbiBzeXprYWxsZXIncyBlbnZpcm9ubWVudCEgQnV0IGhvdz8gV2FzIGl0IGBtYWM4MDIxMV9od3NpbWA/IE5vLCB0aGF0J3MgYSBkaWZmZXJlbnQgZHJpdmVyLiBTbywgYHN5el9wY2lfZGV2aWNlYCB0aGVuPyBZZXMsIHRoYXQncyB0aGUgbGlrZWx5IG1lY2hhbmlzbSBzeXprYWxsZXIgdXNlcyB0byBlbXVsYXRlIFBDSSBkZXZpY2VzIVxuXG5Ob3cgSSBqdXN0IG5lZWQgdG8gdmVyaWZ5IHRoYXQgYGl3bHdpZmlgIGlzIGVuYWJsZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24sIHNvIEkgbmVlZCB0byBvdXRwdXQgYEVuYWJsZUNvbmZpZ3NgLiBMZXQncyBjaGVjayB0aGUgS2NvbmZpZyBlbnRyeSBmb3IgYGl3bHdpZmlgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjU1MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjEwOjEwLjQ4MzA3MjI4OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3MDI2NjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xXSUZJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6Mjpjb25maWcgSVdMV0lGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE5leHQgR2VuIEFHTiAtIFdpcmVsZXNzLU4vQWR2YW5jZWQtTi9VbHRpbWF0ZS1OIChpd2x3aWZpKSBcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9NDc9aWYgSVdMV0lGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy00OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NDk6Y29uZmlnIElXTFdJRklfS1VOSVRfVEVTVFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTAtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NTg6Y29uZmlnIElXTFdJRklfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01OS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9ODQ9Y29uZmlnIElXTE1MRFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk0LSMgZG9uJ3QgY2FsbCBpdCBfTU9EVUxFIC0tIHdpbGwgY29uZnVzZSBLY29uZmlnL2ZpeGRlcC8uLi5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6OTU6Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTEwNT1tZW51IFxcXCJEZWJ1Z2dpbmcgT3B0aW9uc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMDc6Y29uZmlnIElXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA4LVxcdGJvb2wgXFxcIkVuYWJsZSBmdWxsIGRlYnVnZ2luZyBvdXRwdXQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMxOmNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMyLVxcdGJvb2wgXFxcIml3bHdpZmkgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTM5OmNvbmZpZyBJV0xXSUZJX0RFVklDRV9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTE0MC1cXHRib29sIFxcXCJpd2x3aWZpIGRldmljZSBhY2Nlc3MgdHJhY2luZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MTA6MTAuNjEwMTA2MTU2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNDUzOTgzMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKklXbHdpZmkgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgYElXTFdJRklgLiBUaGF0J3MgdGhlIG1haW4gY29uZmlndXJhdGlvbiBvcHRpb24sIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZSBJIGhhdmVuJ3Qgb3Zlcmxvb2tlZCBhbnkgb3RoZXIgZGVwZW5kZW50IGNvbmZpZ3MsIHBhcnRpY3VsYXJseSBmb3IgVUVGSSBzdXBwb3J0IHdpdGhpbiBgaXdsd2lmaWAuIEl0J3MgYSBrZXkgYXJlYSB0byBuYWlsIGRvd24gaWYgd2Ugd2FudCBmdWxsIGZ1bmN0aW9uYWxpdHkgYW5kIHRoYXQgaW5jbHVkZXMgYmVpbmcgYWJsZSB0byBib290IHJlbGlhYmx5LlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBidWlsZCBzeXN0ZW0gdG8gY29uZmlybS4gSSdtIGdvaW5nIHRvIGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZWAgYW5kIGBmdy9NYWtlZmlsZWAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgb3B0aW9ucyBvciBjb25kaXRpb25zIHRoYXQgZGljdGF0ZSB0aGUgaW5jbHVzaW9uIG9mIFVFRkktcmVsYXRlZCBjb21wb25lbnRzIG9yIGZpcm13YXJlLiBUaGF0J3MgdXN1YWxseSB3aGVyZSB0aGVzZSBzb3J0cyBvZiBkZXBlbmRlbmNpZXMgYXJlIGRlZmluZWQuIElmIGl0J3Mgbm90IGV4cGxpY2l0LCBJJ2xsIG5lZWQgdG8gY2hhc2UgZG93biB0aGUgaW5jbHVkZSBwYXRocy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgzNTAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDoxMDoxMy45NTU1MDc1NDVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODc1NDAxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1ZWZpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzYyIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlPTM5PWl3bHdpZmktJChDT05GSUdfQUNQSSkgKz0gZncvYWNwaS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTo0MDppd2x3aWZpLSQoQ09ORklHX0VGSSlcXHQrPSBmdy91ZWZpLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlLTQxLWl3bHdpZmktJChDT05GSUdfSVdMV0lGSV9ERUJVR0ZTKSArPSBmdy9kZWJ1Z2ZzLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jPTExMjk9dm9pZCBpd2xfYWNwaV9nZXRfZ3VpZF9sb2NrX3N0YXR1cyhzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FjcGkuYy0xMTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jOjExNTM6XFx0ZndydC1cXHUwMDNldWVmaV90YWJsZXNfbG9ja19zdGF0dXMgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jLTExNTQtXFx0XFx0d2lmaV9wa2ctXFx1MDAzZXBhY2thZ2UuZWxlbWVudHNbMV0uaW50ZWdlci52YWx1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jLTExNTctXFx0XFx0XFx0XFxcIkxvYWRlZCBVRUZJIFdJRkkgR1VJRCBsb2NrIHN0YXR1czogJWQgZnJvbSBBQ1BJXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jOjExNTg6XFx0XFx0XFx0ZndydC1cXHUwMDNldWVmaV90YWJsZXNfbG9ja19zdGF0dXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYWNwaS5jLTExNTktb3V0X2ZyZWU6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaD0xMDM5PXN0cnVjdCBpd2xfZndfY21kX3ZlcnNpb24ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmgtMTA1MC0gKiBAbWF4X2FjcGlfcmV2aXNpb246IG1heCBzdXBwb3J0ZWQgQUNQSSByZXZpc2lvbiBvZiBjb21tYW5kLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oOjEwNTE6ICogQG1heF91ZWZpX3JldmlzaW9uOiBtYXggc3VwcG9ydGVkIFVFRkkgcmV2aXNpb24gb2YgY29tbWFuZC5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaC0xMDUyLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oPTEwNTM9c3RydWN0IGl3bF9md19jbWRfYmlvc190YWJsZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ZpbGUuaC0xMDU2LVxcdHU4IG1heF9hY3BpX3JldmlzaW9uO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvZmlsZS5oOjEwNTc6XFx0dTggbWF4X3VlZmlfcmV2aXNpb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9maWxlLmgtMTA1OC19IF9fcGFja2VkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9pbWcuYz05PXU4IGl3bF9md19sb29rdXBfY21kX2Jpb3Nfc3VwcG9ydGVkX3JldmlzaW9uKGNvbnN0IHN0cnVjdCBpd2xfZncgKmZ3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9pbWcuYy0zMC1cXHRcXHRcXHRcXHRyZXR1cm4gZW50cnktXFx1MDAzZW1heF9hY3BpX3JldmlzaW9uO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvaW1nLmM6MzE6XFx0XFx0XFx0cmV0dXJuIGVudHJ5LVxcdTAwM2VtYXhfdWVmaV9yZXZpc2lvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2ltZy5jLTMyLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTEyLSNpbmNsdWRlIFxcXCJmdy9hcGkvYWxpdmUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzoxMzojaW5jbHVkZSBcXFwiZncvdWVmaS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTE0LSNpbmNsdWRlIFxcXCJmdy9pbWcuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jPTM2PXN0YXRpYyBpbnQgaXdsX3Budm1faGFuZGxlX3NlY3Rpb24oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHU4ICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTMzLVxcdFxcdGNhc2UgSVdMX1VDT0RFX1RMVl9NRU1fREVTQzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYzoxMzQ6XFx0XFx0XFx0aWYgKGl3bF91ZWZpX2hhbmRsZV90bHZfbWVtX2Rlc2ModHJhbnMsIGRhdGEsIHRsdl9sZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMTM1LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCBwbnZtX2RhdGEpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9MzA3PXN0YXRpYyBjb25zdCB1OCAqaXdsX2dldF9wbnZtX2ltYWdlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zX3AsIHNpemVfdCAqbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtMzIwLVxcdGlmIChwbnZtX3NyYyA9PSBJV0xfUE5WTV9TT1VSQ0VfQklPUykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjMyMTpcXHRcXHRwYWNrYWdlID0gaXdsX3VlZmlfZ2V0X3Budm0odHJhbnNfcCwgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy0zMjItXFx0XFx0aWYgKCFJU19FUlJfT1JfTlVMTChwYWNrYWdlKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM9NDA3PWl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jOjQyMjpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIodHJhbnMsIFxcdTAwMjZsZW5ndGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jLTQyMy1cXHRpZiAoSVNfRVJSKGRhdGEpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYy00MzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmM6NDMyOlxcdHJldCA9IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZSh0cmFucywgZGF0YSwgbGVuZ3RoLCBwbnZtX2RhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMtNDMzLVxcdFxcdFxcdFxcdFxcdCAgc2t1X2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jLTktI2luY2x1ZGUgXFxcImZ3L3J1bnRpbWUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuYzoxMDojaW5jbHVkZSBcXFwiZncvdWVmaS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jLTExLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5LmM9MTM9ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuYy0xNC1cXHRpbnQgcmV0ID0gLUVOT0VOVDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5LmM6MTU6XFx0aWYgKGZ3cnQtXFx1MDAzZXVlZmlfdGFibGVzX2xvY2tfc3RhdHVzIFxcdTAwM2UgVUVGSV9XSUZJX0dVSURfVU5MT0NLRUQpXFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jOjE2OlxcdFxcdHJldCA9IGl3bF91ZWZpX2dldF8gIyMgX19uYW1lKF9fVkFfQVJHU19fKTtcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5LmMtMTctXFx0aWYgKHJldCBcXHUwMDNjIDApXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9ydW50aW1lLmg9ODg9c3RydWN0IGl3bF90eGZfaXRlcl9kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oLTExMC0gKiBAYXBfdHlwZV9jbWRfdmFsaWQ6IGlmIFxcdTAwMjZhcF90eXBlX2NtZCBpcyB2YWxpZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oOjExMTogKiBAdWVmaV90YWJsZXNfbG9ja19zdGF0dXM6IFRoZSBzdGF0dXMgb2YgdGhlIFdJRkkgR1VJRCBVRUZJIHZhcmlhYmxlcyBsb2NrOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oLTExMi0gKlxcdDA6IFVubG9ja2VkLCAxIGFuZCAyOiBMb2NrZWQuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3J1bnRpbWUuaD0xNDg9c3RydWN0IGl3bF9md19ydW50aW1lIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oLTIxOS1cXHRib29sIGFwX3R5cGVfY21kX3ZhbGlkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcnVudGltZS5oOjIyMDpcXHR1OCB1ZWZpX3RhYmxlc19sb2NrX3N0YXR1cztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3J1bnRpbWUuaC0yMjEtXFx0c3RydWN0IGl3bF9waHlfc3BlY2lmaWNfY2ZnIHBoeV9maWx0ZXJzO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTE6I2luY2x1ZGUgXFxcImZ3L3VlZmkuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMi0jaW5jbHVkZSBcXFwiZncvYXBpL2FsaXZlLmhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyMzpzdHJ1Y3QgaXdsX3VlZmlfcG52bV9tZW1fZGVzYyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjQtXFx0X19sZTMyIGFkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyOTpzdGF0aWMgdm9pZCAqaXdsX3VlZmlfZ2V0X3ZhcmlhYmxlKGVmaV9jaGFyMTZfdCAqbmFtZSwgZWZpX2d1aWRfdCAqZ3VpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMC1cXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBsb25nICpkYXRhX3NpemUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2MDp2b2lkICppd2xfdWVmaV9nZXRfcG52bShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgc2l6ZV90ICpsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Njc6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92YXJpYWJsZShJV0xfVUVGSV9PRU1fUE5WTV9OQU1FLCBcXHUwMDI2SVdMX0VGSV9XSUZJX0dVSUQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjgtXFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2cGFja2FnZV9zaXplKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jPTgyPXN0YXRpYyB2b2lkICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4Mzppd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04NC1cXHRcXHRcXHRcXHQgICAgZWZpX2d1aWRfdCAqZ3VpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4NTpcXHRcXHRcXHRcXHQgICAgZWZpX2NoYXIxNl90ICp1ZWZpX3Zhcl9uYW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg2LVxcdFxcdFxcdFxcdCAgICBjaGFyICp2YXJfbmFtZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjkzOlxcdHZhciA9IGl3bF91ZWZpX2dldF92YXJpYWJsZSh1ZWZpX3Zhcl9uYW1lLCBndWlkLCBcXHUwMDI2dmFyX3NpemUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTk0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM9MTE4PXN0YXRpYyB2b2lkICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMTk6aXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjEyMDpcXHRcXHRcXHQgICAgICAgZWZpX2NoYXIxNl90ICp1ZWZpX3Zhcl9uYW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEyMS1cXHRcXHRcXHQgICAgICAgY2hhciAqdmFyX25hbWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMjQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjEyNTpcXHRyZXR1cm4gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQodHJhbnMsIFxcdTAwMjZJV0xfRUZJX1dJRklfR1VJRCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMjY6XFx0XFx0XFx0XFx0XFx0XFx0ICAgdWVmaV92YXJfbmFtZSwgdmFyX25hbWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTI3LVxcdFxcdFxcdFxcdFxcdFxcdCAgIGV4cGVjdGVkX3NpemUsIHNpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjEzMDppbnQgaXdsX3VlZmlfaGFuZGxlX3Rsdl9tZW1fZGVzYyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3QgdTggKmRhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTMxLVxcdFxcdFxcdFxcdCB1MzIgdGx2X2xlbiwgc3RydWN0IGl3bF9wbnZtX2ltYWdlICpwbnZtX2RhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTMyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMzM6XFx0Y29uc3Qgc3RydWN0IGl3bF91ZWZpX3Budm1fbWVtX2Rlc2MgKmRlc2MgPSAoY29uc3Qgdm9pZCAqKWRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTM0LVxcdHUzMiBkYXRhX2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTE2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxNjY6c3RhdGljIGludCBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfc2VjdGlvbihzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xNjctXFx0XFx0XFx0XFx0XFx0IGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTkzLVxcdFxcdGNhc2UgSVdMX1VDT0RFX1RMVl9NRU1fREVTQzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxOTQ6XFx0XFx0XFx0aWYgKGl3bF91ZWZpX2hhbmRsZV90bHZfbWVtX2Rlc2ModHJhbnMsIGRhdGEsIHRsdl9sZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTk1LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCBwbnZtX2RhdGEpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjIyMDppbnQgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTIyMS1cXHRcXHRcXHRcXHRjb25zdCB1OCAqZGF0YSwgc2l6ZV90IGxlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI2Ny1cXHRcXHRcXHQgICAgc2t1X2lkWzJdID09IHRsdl9za3VfaWQtXFx1MDAzZWRhdGFbMl0pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoyNjg6XFx0XFx0XFx0XFx0aW50IHJldCA9IGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9zZWN0aW9uKHRyYW5zLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI2OS1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgZGF0YSwgbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjI4NTp1OCAqaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXIoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIHNpemVfdCAqbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTI4Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0yOTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MjkxOlxcdHBhY2thZ2UgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUodHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMjkyLVxcdFxcdFxcdFxcdFxcdFxcdCBJV0xfVUVGSV9SRURVQ0VEX1BPV0VSX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MzE0OnN0YXRpYyBpbnQgaXdsX3VlZmlfc3RlcF9wYXJzZShzdHJ1Y3QgdWVmaV9jbnZfY29tbW9uX3N0ZXBfZGF0YSAqY29tbW9uX3N0ZXBfZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMTUtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjMyOTp2b2lkIGl3bF91ZWZpX2dldF9zdGVwX3RhYmxlKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTMzMC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MzMxOlxcdHN0cnVjdCB1ZWZpX2Nudl9jb21tb25fc3RlcF9kYXRhICpkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTMzMi1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjMzNzpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQodHJhbnMsIFxcdTAwMjZJV0xfRUZJX1dJRklfQlRfR1VJRCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zMzgtXFx0XFx0XFx0XFx0XFx0XFx0ICAgSVdMX1VFRklfU1RFUF9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjM0MzpcXHRyZXQgPSBpd2xfdWVmaV9zdGVwX3BhcnNlKGRhdGEsIHRyYW5zKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zNDQtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zNDgtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjM0OTpJV0xfRVhQT1JUX1NZTUJPTChpd2xfdWVmaV9nZXRfc3RlcF90YWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjM1MTpzdGF0aWMgaW50IGl3bF91ZWZpX3Nnb21fcGFyc2Uoc3RydWN0IHVlZmlfY252X3dsYW5fc2dvbV9kYXRhICpzZ29tX2RhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzUyLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MzgzOnZvaWQgaXdsX3VlZmlfZ2V0X3Nnb21fdGFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzg0LVxcdFxcdFxcdCAgICAgc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTM4NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Mzg2OlxcdHN0cnVjdCB1ZWZpX2Nudl93bGFuX3Nnb21fZGF0YSAqZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0zODctXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTM5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzozOTI6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZSh0cmFucywgSVdMX1VFRklfU0dPTV9OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTM5My1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiU0dPTVxcXCIsIHNpemVvZigqZGF0YSksIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMzk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjM5NzpcXHRyZXQgPSBpd2xfdWVmaV9zZ29tX3BhcnNlKGRhdGEsIGZ3cnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTM5OC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQwMi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDAzOklXTF9FWFBPUlRfU1lNQk9MKGl3bF91ZWZpX2dldF9zZ29tX3RhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDA1OnN0YXRpYyBpbnQgaXdsX3VlZmlfdWF0c19wYXJzZShzdHJ1Y3QgdWVmaV9jbnZfd2xhbl91YXRzX2RhdGEgKnVhdHNfZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MDYtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo0MjA6dm9pZCBpd2xfdWVmaV9nZXRfdWF0c190YWJsZShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MjEtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDIyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo0MjM6XFx0c3RydWN0IHVlZmlfY252X3dsYW5fdWF0c19kYXRhICpkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQyNC1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo0MjY6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZSh0cmFucywgSVdMX1VFRklfVUFUU19OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQyNy1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiVUFUU1xcXCIsIHNpemVvZigqZGF0YSksIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjQzMTpcXHRyZXQgPSBpd2xfdWVmaV91YXRzX3BhcnNlKGRhdGEsIGZ3cnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQzMi1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQzNS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDM2OklXTF9FWFBPUlRfU1lNQk9MKGl3bF91ZWZpX2dldF91YXRzX3RhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00MzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDM4OnZvaWQgaXdsX3VlZmlfZ2V0X3VuZWJfdGFibGUoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDM5LVxcdFxcdFxcdCAgICAgc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQ0MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDQxOlxcdHN0cnVjdCB1ZWZpX2Nudl93bGFuX3VuZWJfZGF0YSAqZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00NDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDQzOlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUodHJhbnMsIElXTF9VRUZJX1VORUJfTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00NDQtXFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcIlVORUJcXFwiLCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTQ2NS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDY2OklXTF9FWFBPUlRfU1lNQk9MKGl3bF91ZWZpX2dldF91bmViX3RhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00NjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDY4OnN0YXRpYyB2b2lkIGl3bF91ZWZpX3NldF9zYXJfcHJvZmlsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDY5LVxcdFxcdFxcdFxcdCAgICAgY29uc3QgdTggKnZhbHMsIHU4IHByb2ZfaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy00OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NDk3OmludCBpd2xfdWVmaV9nZXRfd3Jkc190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNDk4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo0OTk6XFx0c3RydWN0IHVlZmlfY252X3Zhcl93cmRzICpkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTUwMC1cXHR1bnNpZ25lZCBsb25nIHNpemU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01MDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NTA1OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsIElXTF9VRUZJX1dSRFNfTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01MDYtXFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcIldSRFNcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTM3LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjUzODpcXHRpd2xfdWVmaV9zZXRfc2FyX3Byb2ZpbGUoZndydCwgZGF0YS1cXHUwMDNldmFscywgMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01MzktXFx0XFx0XFx0XFx0IG51bV9zdWJiYW5kcywgZGF0YS1cXHUwMDNlbW9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01NDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NTQ1OmludCBpd2xfdWVmaV9nZXRfZXdyZF90YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTQ2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo1NDc6XFx0c3RydWN0IHVlZmlfY252X3Zhcl9ld3JkICpkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU0OC1cXHR1bnNpZ25lZCBsb25nIGV4cGVjdGVkX3NpemU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01NTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NTU0OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsIElXTF9VRUZJX0VXUkRfTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy01NTUtXFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcIkVXUkRcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTkwLVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjU5MTpcXHRcXHRpd2xfdWVmaV9zZXRfc2FyX3Byb2ZpbGUoZndydCwgXFx1MDAyNmRhdGEtXFx1MDAzZXZhbHNbaSAqIHByb2ZpbGVfc2l6ZV0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNTkyLVxcdFxcdFxcdFxcdFxcdCBpICsgMSwgbnVtX3N1YmJhbmRzLCBkYXRhLVxcdTAwM2Vtb2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTU5OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo1OTk6aW50IGl3bF91ZWZpX2dldF93Z2RzX3RhYmxlKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02MDAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjYwMTpcXHRzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dnZHMgKmRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjAyLVxcdHVuc2lnbmVkIGxvbmcgZXhwZWN0ZWRfc2l6ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTYwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2MDg6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfV0dEU19OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTYwOS1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiV0dEU1xcXCIsIFVFRklfV0dEU19UQUJMRV9TSVpFX1JFVjMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Njc2OmludCBpd2xfdWVmaV9nZXRfcHBhZ190YWJsZShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjc3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2Nzg6XFx0c3RydWN0IHVlZmlfY252X3Zhcl9wcGFnICpkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY3OS1cXHRpbnQgbl9zdWJiYW5kcztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo2ODM6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfUFBBR19OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTY4NC1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiUFBBR1xcXCIsIFVFRklfUFBBR19EQVRBX1NJWkVfVjUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy02OTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NjkzOlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNjk0LVxcdFxcdFxcdFxcdFxcdCAgICAgIElXTF9VRUZJX1BQQUdfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3NDU6aW50IGl3bF91ZWZpX2dldF90YXNfdGFibGUoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc0Ni1cXHRcXHRcXHQgICBzdHJ1Y3QgaXdsX3Rhc19kYXRhICp0YXNfZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NDcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc0ODpcXHRzdHJ1Y3QgdWVmaV9jbnZfdmFyX3d0YXMgKnVlZmlfdGFzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc0OS1cXHRpbnQgcmV0LCBlbmFibGVkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3NTE6XFx0dWVmaV90YXMgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsIElXTF9VRUZJX1dUQVNfTkFNRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3NTI6XFx0XFx0XFx0XFx0XFx0XFx0ICBcXFwiV1RBU1xcXCIsIHNpemVvZigqdWVmaV90YXMpLCBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3NTM6XFx0aWYgKElTX0VSUih1ZWZpX3RhcykpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzU0LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3NTY6XFx0aWYgKHVlZmlfdGFzLVxcdTAwM2VyZXZpc2lvbiBcXHUwMDNjIElXTF9VRUZJX01JTl9XVEFTX1JFVklTSU9OIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NzU3OlxcdCAgICB1ZWZpX3Rhcy1cXHUwMDNlcmV2aXNpb24gXFx1MDAzZSBJV0xfVUVGSV9NQVhfV1RBU19SRVZJU0lPTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc1OC1cXHRcXHRyZXQgPSAtRUlOVkFMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc1OS1cXHRcXHRJV0xfREVCVUdfUkFESU8oZndydCwgXFxcIlVuc3VwcG9ydGVkIFVFRkkgV1RBUyByZXZpc2lvbjolZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3NjA6XFx0XFx0XFx0XFx0dWVmaV90YXMtXFx1MDAzZXJldmlzaW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NjEtXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NjQtXFx0SVdMX0RFQlVHX1JBRElPKGZ3cnQsIFxcXCJUQVMgc2VsZWN0aW9uIGFzIHJlYWQgZnJvbSBCSU9TOiAweCV4XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc2NTpcXHRcXHRcXHR1ZWZpX3Rhcy1cXHUwMDNldGFzX3NlbGVjdGlvbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc2NzpcXHRlbmFibGVkID0gdWVmaV90YXMtXFx1MDAzZXRhc19zZWxlY3Rpb24gXFx1MDAyNiBJV0xfV1RBU19FTkFCTEVEX01TSztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NjgtXFx0dGFzX2RhdGEtXFx1MDAzZXRhYmxlX3NvdXJjZSA9IEJJT1NfU09VUkNFX1VFRkk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6NzY5OlxcdHRhc19kYXRhLVxcdTAwM2V0YWJsZV9yZXZpc2lvbiA9IHVlZmlfdGFzLVxcdTAwM2VyZXZpc2lvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3NzA6XFx0dGFzX2RhdGEtXFx1MDAzZXRhc19zZWxlY3Rpb24gPSB1ZWZpX3Rhcy1cXHUwMDNldGFzX3NlbGVjdGlvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NzEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03NzUtXFx0SVdMX0RFQlVHX1JBRElPKGZ3cnQsIFxcXCJSZWFkaW5nIFRBUyB0YWJsZSByZXZpc2lvbiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3NzY6XFx0XFx0XFx0dWVmaV90YXMtXFx1MDAzZXJldmlzaW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3Nzc6XFx0aWYgKHVlZmlfdGFzLVxcdTAwM2VibGFja19saXN0X3NpemUgXFx1MDAzZSBJV0xfV1RBU19CTEFDS19MSVNUX01BWCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc3OC1cXHRcXHRJV0xfREVCVUdfUkFESU8oZndydCwgXFxcIlRBUyBpbnZhbGlkIGFycmF5IHNpemUgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Nzc5OlxcdFxcdFxcdFxcdHVlZmlfdGFzLVxcdTAwM2VibGFja19saXN0X3NpemUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc4MC1cXHRcXHRyZXQgPSAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc4NDpcXHR0YXNfZGF0YS1cXHUwMDNlYmxvY2tfbGlzdF9zaXplID0gdWVmaV90YXMtXFx1MDAzZWJsYWNrX2xpc3Rfc2l6ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3ODU6XFx0SVdMX0RFQlVHX1JBRElPKGZ3cnQsIFxcXCJUQVMgYXJyYXkgc2l6ZSAldVxcXFxuXFxcIiwgdWVmaV90YXMtXFx1MDAzZWJsYWNrX2xpc3Rfc2l6ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc4NzpcXHRmb3IgKHU4IGkgPSAwOyBpIFxcdTAwM2MgdWVmaV90YXMtXFx1MDAzZWJsYWNrX2xpc3Rfc2l6ZTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Nzg4OlxcdFxcdHRhc19kYXRhLVxcdTAwM2VibG9ja19saXN0X2FycmF5W2ldID0gdWVmaV90YXMtXFx1MDAzZWJsYWNrX2xpc3RbaV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzg5LVxcdFxcdElXTF9ERUJVR19SQURJTyhmd3J0LCBcXFwiVEFTIGJsb2NrIGxpc3QgY291bnRyeSAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo3OTA6XFx0XFx0XFx0XFx0dWVmaV90YXMtXFx1MDAzZWJsYWNrX2xpc3RbaV0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTc5MS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03OTMtb3V0OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjc5NDpcXHRrZnJlZSh1ZWZpX3Rhcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtNzk1LVxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03OTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6Nzk4OmludCBpd2xfdWVmaV9nZXRfcHdyX2xpbWl0KHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy03OTktXFx0XFx0XFx0ICAgdTY0ICpkZmx0X3B3cl9saW1pdClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MDAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjgwMTpcXHRzdHJ1Y3QgdWVmaV9jbnZfdmFyX3NwbGMgKmRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODAyLVxcdGludCByZXQgPSAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTgwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4MDQ6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfU1BMQ19OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTgwNS1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiU1BMQ1xcXCIsIHNpemVvZigqZGF0YSksIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjgyMTppbnQgaXdsX3VlZmlfZ2V0X21jYyhzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsIGNoYXIgKm1jYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04MjIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjgyMzpcXHRzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dyZGQgKmRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODI0LVxcdGludCByZXQgPSAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTgyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4MjY6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfV1JERF9OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTgyNy1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiV1JERFxcXCIsIHNpemVvZigqZGF0YSksIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjg1MjppbnQgaXdsX3VlZmlfZ2V0X2Vja3Yoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCB1MzIgKmV4dGxfY2xrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg1My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6ODU0OlxcdHN0cnVjdCB1ZWZpX2Nudl92YXJfZWNrdiAqZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04NTUtXFx0aW50IHJldCA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjg1NzpcXHRkYXRhID0gaXdsX3VlZmlfZ2V0X3ZlcmlmaWVkX3ZhcmlhYmxlX2d1aWQoZndydC1cXHUwMDNldHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODU4LVxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZJV0xfRUZJX1dJRklfQlRfR1VJRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4NzY6aW50IGl3bF91ZWZpX2dldF93YmVtKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwgdTMyICp2YWx1ZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy04Nzcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjg3ODpcXHRzdHJ1Y3QgdWVmaV9jbnZfd2xhbl93YmVtX2RhdGEgKmRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODc5LVxcdGludCByZXQgPSAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo4ODE6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfV0JFTV9OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTg4Mi1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiV0JFTVxcXCIsIHNpemVvZigqZGF0YSksIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtODk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjg5OTpzdGF0aWMgaW50IGl3bF91ZWZpX2xvYWRfZHNtX3ZhbHVlcyhzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTAwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo5MDE6XFx0c3RydWN0IHVlZmlfY252X3Zhcl9nZW5lcmFsX2NmZyAqZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05MDItXFx0aW50IHJldCA9IC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05MDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6OTA2OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsIElXTF9VRUZJX0RTTV9OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTkwNy1cXHRcXHRcXHRcXHRcXHQgICAgICBcXFwiRFNNXFxcIiwgc2l6ZW9mKCpkYXRhKSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05NDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6OTQ4OmludCBpd2xfdWVmaV9nZXRfZHNtKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwgZW51bSBpd2xfZHNtX2Z1bmNzIGZ1bmMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTQ5LVxcdFxcdCAgICAgdTMyICp2YWx1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTk1NS1cXHRpZiAoIWZ3cnQtXFx1MDAzZWRzbV9mdW5jc192YWxpZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjk1NjpcXHRcXHRpbnQgcmV0ID0gaXdsX3VlZmlfbG9hZF9kc21fdmFsdWVzKGZ3cnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTk1Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTk3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzo5NzY6aW50IGl3bF91ZWZpX2dldF9wdW5jdHVyaW5nKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05Nzcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjk3ODpcXHRzdHJ1Y3QgdWVmaV9jbnZfdmFyX3B1bmN0dXJpbmdfZGF0YSAqZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05NzktXFx0LyogZGVmYXVsdCB2YWx1ZSBpcyBub3QgZW5hYmxlZCBpZiB0aGVyZSBpcyBhbnkgaXNzdWUgaW4gcmVhZGluZ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjk4MDpcXHQgKiB1ZWZpIHZhcmlhYmxlIG9yIHJldmlzaW9uIGlzIG5vdCBzdXBwb3J0ZWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05ODEtXFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy05ODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6OTg0OlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGUoZndydC1cXHUwMDNldHJhbnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtOTg1LVxcdFxcdFxcdFxcdFxcdCAgICAgIElXTF9VRUZJX1BVTkNUVVJJTkdfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMDItfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjEwMDM6SVdMX0VYUE9SVF9TWU1CT0woaXdsX3VlZmlfZ2V0X3B1bmN0dXJpbmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTAwNTppbnQgaXdsX3VlZmlfZ2V0X2RzYnIoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LCB1MzIgKnZhbHVlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMDYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjEwMDc6XFx0c3RydWN0IHVlZmlfY252X3dsYW5fZHNicl9kYXRhICpkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMDgtXFx0aW50IHJldCA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmMtMTAwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMDEwOlxcdGRhdGEgPSBpd2xfdWVmaV9nZXRfdmVyaWZpZWRfdmFyaWFibGVfZ3VpZChmd3J0LVxcdTAwM2V0cmFucyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDExLVxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZJV0xfRUZJX1dJRklfQlRfR1VJRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmM6MTAzMTppbnQgaXdsX3VlZmlfZ2V0X3BoeV9maWx0ZXJzKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDMyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYzoxMDMzOlxcdHN0cnVjdCB1ZWZpX2Nudl93cGZjX2RhdGEgKmRhdGEgX19mcmVlKGtmcmVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDM0LVxcdHN0cnVjdCBpd2xfcGh5X3NwZWNpZmljX2NmZyAqZmlsdGVycyA9IFxcdTAwMjZmd3J0LVxcdTAwM2VwaHlfZmlsdGVycztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuYy0xMDM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jOjEwMzY6XFx0ZGF0YSA9IGl3bF91ZWZpX2dldF92ZXJpZmllZF92YXJpYWJsZShmd3J0LVxcdTAwM2V0cmFucywgSVdMX1VFRklfV1BGQ19OQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5jLTEwMzctXFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcIldQRkNcXFwiLCBzaXplb2YoKmRhdGEpLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTQtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6NTojaWZuZGVmIF9faXdsX2Z3X3VlZmlfX1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjY6I2RlZmluZSBfX2l3bF9md191ZWZpX19cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC03LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg9NDQ9c3RydWN0IHBudm1fc2t1X3BhY2thZ2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6NTI6c3RydWN0IHVlZmlfY252X3dsYW5fc2dvbV9kYXRhIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC01My1cXHR1OCByZXZpc2lvbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjU3OnN0cnVjdCB1ZWZpX2Nudl93bGFuX3VhdHNfZGF0YSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtNTgtXFx0dTggcmV2aXNpb247XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC02Mi0vKiBVTkVCJ3MgbGF5b3V0IGlzIGlkZW50aWNhbCB0byBVQVRTJ3MgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDo2MzojZGVmaW5lIHVlZmlfY252X3dsYW5fdW5lYl9kYXRhIHVlZmlfY252X3dsYW5fdWF0c19kYXRhXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6NjU6c3RydWN0IHVlZmlfY252X2NvbW1vbl9zdGVwX2RhdGEge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTY2LVxcdHU4IHJldmlzaW9uO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtODYtLyoqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6ODc6ICogc3RydWN0IHVlZmlfY252X3Zhcl93cmRzIC0gV1JEUyB0YWJsZSBhcyBkZWZpbmVkIGluIFVFRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC04OC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtOTctICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6OTg6c3RydWN0IHVlZmlfY252X3Zhcl93cmRzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC05OS1cXHR1OCByZXZpc2lvbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTExMi0jZGVmaW5lIFVFRklfU0FSX1dSRFNfVEFCTEVfU0laRV9SRVYyXFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjExMzpcXHQob2Zmc2V0b2Yoc3RydWN0IHVlZmlfY252X3Zhcl93cmRzLCB2YWxzKSArXFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTExNC1cXHQgVUVGSV9TQVJfUFJPRklMRV9TSVpFX1JFVjIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xMTYtI2RlZmluZSBVRUZJX1NBUl9XUkRTX1RBQkxFX1NJWkVfUkVWM1xcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxMTc6XFx0KG9mZnNldG9mKHN0cnVjdCB1ZWZpX2Nudl92YXJfd3JkcywgdmFscykgK1xcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xMTgtXFx0IFVFRklfU0FSX1BST0ZJTEVfU0laRV9SRVYzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTIwLS8qKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjEyMTogKiBzdHJ1Y3QgdWVmaV9jbnZfdmFyX2V3cmQgLSBFV1JEIHRhYmxlIGFzIGRlZmluZWQgaW4gVUVGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTEyMi0gKiBAcmV2aXNpb246IHRoZSByZXZpc2lvbiBvZiB0aGUgdGFibGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTEyNS0gKiBAdmFsczogdGhlIGFkZGl0aW9uYWwgU0FSIHByb2ZpbGVzICgjMi0jNCkgYXMgYW4gYXJyYXkgb2YgU0FSIHByb2ZpbGVzLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjEyNjogKlxcdEEgU0FSIHByb2ZpbGUgaXMgZGVmaW5lZCB0aGUgXFx1MDAyNnN0cnVjdCB1ZWZpX2Nudl92YXJfd3Jkczo6dmFscy4gVGhlIHNpemVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xMjctICpcXHRvZiBlYWNoIHByb2ZpbGUgZGVwZW5kcyBvbiB0aGUgbnVtYmVyIG9mIHN1YmJhbmRzIHdoaWNoIGRlcGVuZHMgb24gdGhlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MTI4OiAqXFx0cmV2aXNpb24uIFRoaXMgaXMgZXhwbGFpbmVkIGluIFxcdTAwMjZzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dyZHMuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTI5LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjEzMDpzdHJ1Y3QgdWVmaV9jbnZfdmFyX2V3cmQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTEzMS1cXHR1OCByZXZpc2lvbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTEzNy0jZGVmaW5lIFVFRklfU0FSX0VXUkRfVEFCTEVfU0laRV9SRVYyXFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjEzODpcXHQob2Zmc2V0b2Yoc3RydWN0IHVlZmlfY252X3Zhcl9ld3JkLCB2YWxzKSArXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTEzOS1cXHQgVUVGSV9TQVJfUFJPRklMRV9TSVpFX1JFVjIgKiAoQklPU19TQVJfTUFYX1BST0ZJTEVfTlVNIC0gMSkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNDEtI2RlZmluZSBVRUZJX1NBUl9FV1JEX1RBQkxFX1NJWkVfUkVWM1xcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxNDI6XFx0KG9mZnNldG9mKHN0cnVjdCB1ZWZpX2Nudl92YXJfZXdyZCwgdmFscykgK1xcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNDMtXFx0IFVFRklfU0FSX1BST0ZJTEVfU0laRV9SRVYzICogKEJJT1NfU0FSX01BWF9QUk9GSUxFX05VTSAtIDEpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTQ1LS8qKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjE0NjogKiBzdHJ1Y3QgdWVmaV9jbnZfdmFyX3dnZHMgLSBXR0RTIHRhYmxlIGFzIGRlZmluZWQgaW4gVUVGSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE0Ny0gKiBAcmV2aXNpb246IHRoZSByZXZpc2lvbiBvZiB0aGUgdGFibGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE1NS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxNTY6c3RydWN0IHVlZmlfY252X3Zhcl93Z2RzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNTctXFx0dTggcmV2aXNpb247XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNjktI2RlZmluZSBVRUZJX1dHRFNfVEFCTEVfU0laRV9SRVYzXFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjE3MDpcXHQob2Zmc2V0b2Yoc3RydWN0IHVlZmlfY252X3Zhcl93Z2RzLCB2YWxzKSArXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE3MS1cXHQgVUVGSV9XR0RTX1BST0ZJTEVfU0laRV9SRVYzICogQklPU19HRU9fTUFYX1BST0ZJTEVfTlVNKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTczLSNkZWZpbmUgVUVGSV9XR0RTX1RBQkxFX1NJWkVfUkVWNFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxNzQ6XFx0KG9mZnNldG9mKHN0cnVjdCB1ZWZpX2Nudl92YXJfd2dkcywgdmFscykgK1xcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNzUtXFx0IFVFRklfV0dEU19QUk9GSUxFX1NJWkVfUkVWNCAqIEJJT1NfR0VPX01BWF9QUk9GSUxFX05VTSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oLTE3Ny0vKipcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxNzg6ICogc3RydWN0IHVlZmlfY252X3Zhcl9wcGFnIC0gUFBBRyB0YWJsZSBhcyBkZWZpbmVkIGluIFVFRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xNzktICogQHJldmlzaW9uOiB0aGUgcmV2aXNpb24gb2YgdGhlIHRhYmxlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xODctICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmg6MTg4OnN0cnVjdCB1ZWZpX2Nudl92YXJfcHBhZyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTg5LVxcdHU4IHJldmlzaW9uO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy91ZWZpLmgtMTk0LSNkZWZpbmUgVUVGSV9QUEFHX0RBVEFfU0laRV9WNFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaDoxOTU6XFx0KG9mZnNldG9mKHN0cnVjdCB1ZWZpX2Nudl92YXJfcHBhZywgdmFscykgK1xcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xOTYtXFx0c2l6ZW9mKHM4KSAqIFVFRklfUFBBR19OVU1fQ0hBSU5TICogVUVGSV9QUEFHX1NVQl9CQU5EU19OVU1fUkVWNClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3VlZmkuaC0xOTctI2RlZmluZSBVRUZJX1BQQUdfREFUQV9TSVpFX1Y1XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvdWVmaS5oOjE5ODpcXHQob2Zmc2V0b2Yoc3RydWN0IHVlZmlfY252X3Zhcl9wcGFnLCB2YWxzKSArXFx0XFxcXFxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDoxMDoxNC4wNzQyNjY3MTRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyMzQ4NzU0NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgV2lGaSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBgaXdsd2lmaS0kKENPTkZJR19FRkkpICs9IGZ3L3VlZmkub2AuIFNvLCBgQ09ORklHX0VGSWAgaXMgYSByZXF1aXJlbWVudCBmb3IgY29tcGlsaW5nIGBmdy91ZWZpLmNgLiBSaWdodCwgbGV0IG1lIGNvbmZpcm0gdGhhdCBgQ09ORklHX0VGSWAgaXMgZGVmaW5pdGVseSBuZWVkZWQuIFl1cCwgZ290IGl0LiBIbW0sIGFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucz8gTGV0J3Mgc2VlLi4uIGl0J3MgYENPTkZJR19JV0xXSUZJYCBhbmQgYENPTkZJR19FRklgLiBJIHNlZW0gdG8gcmVjYWxsIGBDT05GSUdfRUZJYCBvZnRlbiBiZWluZyBlbmFibGVkIGluIHN5emthbGxlciBjb25maWd1cmF0aW9ucy4gQnV0LCB3aGF0IGFib3V0IHRoZSBkZXBlbmRlbmNpZXM/IFNwZWNpZmljYWxseSBgQ09ORklHX01BQzgwMjExYCBvciBgQ09ORklHX0NGRzgwMjExYD8gSSBrbm93IHRoYXQgYElXTFdJRklgIGVpdGhlciBzZWxlY3RzIG9yIGRlcGVuZHMgb24gdGhlbSwgc28gbGV0IG1lIHF1aWNrbHkgcmUtZXhhbWluZSB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ2AgZmlsZS4gT2ssIHllcywgYGNvbmZpZyBJV0xXSUZJYCBkZXBlbmRzIG9uIGBQQ0kgXHUwMDI2XHUwMDI2IE1BQzgwMjExIFx1MDAyNlx1MDAyNiBIQVNfSU9NRU1gLlxuXG5Ob3csIGxldCdzIGdldCBiYWNrIHRvIHRoZSBwYXRjaCBpdHNlbGYuXG5cbmBgYGNcblx0XHRcdGlmICh0bHZfbGVuIFx1MDAzYyBzaXplb2YoKnRsdl9za3VfaWQpKSB7XG5cdFx0XHRcdElXTF9FUlIodHJhbnMsIFwiaW52YWxpZCBQTlZNIFNLVSBUTFYgbGVuOiAldVxcblwiLFxuXHRcdFx0XHRcdHRsdl9sZW4pO1xuXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcblx0XHRcdH1cbmBgYFxuXG5UaGlzIGlzIGNsZWFybHkgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQncyBkZXNpZ25lZCB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3aGVuIGB0bHZfbGVuYCBpcyBzbWFsbGVyIHRoYW4gdGhlIHNpemUgb2YgdGhlIGB0bHZfc2t1X2lkYCBzdHJ1Y3R1cmUuIFdhaXQsIGB0bHZfc2t1X2lkYCBpcyBhIGBzdHJ1Y3QgaXdsX3NrdV9pZGAuXG5cbmBgYGNcbnN0cnVjdCBpd2xfc2t1X2lkIHtcblx0X19sZTMyIGRhdGFbM107XG59IF9fcGFja2VkO1xuYGBgXG5cblNvLCBpZiBgdGx2X2xlbmAgaXMgbGVzcyB0aGFuIDEyLCB0aGUgY29kZSB3b3VsZCBiZSB0cnlpbmcgdG8gYWNjZXNzIGB0bHZfc2t1X2lkLVx1MDAzZWRhdGFbMF1gLCBgZGF0YVsxXWAsIGFuZCBgZGF0YVsyXWAgYmV5b25kIHRoZSBib3VuZHMgb2YgdGhlIHByb3ZpZGVkIFRMViwgcmlnaHQ/IEV4YWN0bHkuIFRoZXJlZm9yZSwgdGhpcyBpcyBhIGxlZ2l0aW1hdGUgZnVuY3Rpb25hbCBmaXgsIHByZXZlbnRpbmcgYSBwb3RlbnRpYWxseSBzZXJpb3VzIG1lbW9yeSByZWFkIHZ1bG5lcmFiaWxpdHkuXG5cblRoZSByZWFsIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIGNvZGUgcGF0aCByZWFjaGFibGU/IE9rYXksIGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgIGlzIGNhbGxlZCBkdXJpbmcgZmlybXdhcmUgaW5pdGlhbGl6YXRpb24gaWYgdGhlIFVFRkkgdmFyaWFibGUgYElXTF9VRUZJX1JFRFVDRURfUE9XRVJfTkFNRWAgaXMgcHJlc2VudC4gQW5kLCBzeXprYWxsZXIgY2FuIGVhc2lseSBjcmVhdGUgdGhpcyBVRUZJIHZhcmlhYmxlLCB0aHVzIHRyaWdnZXJpbmcgaXdsd2lmaSBpbml0aWFsaXphdGlvbi4gV2FpdCwgYGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zYCBpcyBjYWxsZWQgZnJvbSBgaXdsX3Budm1fbG9hZGAuIGBpd2xfcG52bV9sb2FkYCBpcyBjYWxsZWQgZnJvbSBgaXdsX212bV9sb2FkX3Vjb2RlX3dhaXRfYWxpdmVgIGFuZCBgaXdsX21sZF9ydW5fZndfaW5pdF9zZXF1ZW5jZWAuIFRoZXNlIGFyZSBhbGwgcGFydCBvZiB0aGUgc3RhbmRhcmQgZHJpdmVyIGluaXRpYWxpemF0aW9uIGZsb3cgd2hlbiB0aGUgZmlybXdhcmUgaXMgbG9hZGVkLiBTbywgeWVzLCBpdCdzIHJlYWNoYWJsZSBkdXJpbmcgbm9ybWFsIGRyaXZlciBvcGVyYXRpb24uXG5cblNvLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2xlYXI6XG5cblRoZSBrZXkgZnVuY3Rpb25zIGFyZTpcbi0gYGl3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZWBcbi0gYGl3bF9wbnZtX2xvYWRfcmVkdWNlX3Bvd2VyX3RvX3RyYW5zYFxuLSBgaXdsX3VlZmlfZ2V0X3JlZHVjZWRfcG93ZXJgXG5cbkFuZCB0aGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMgYXJlOlxuLSBgSVdMV0lGSWBcbi0gYEVGSWBcblxuTm93LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIGlzIGBJV0xXSUZJYCBzdWZmaWNpZW50PyBgQ09ORklHX0lXTFdJRklgIGlzIGluZGVlZCB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uLCBidXQgc2hvdWxkIEkgY29uc2lkZXIgYENPTkZJR19JV0xXSUZJX01WTWAgb3IgYENPTkZJR19JV0xXSUZJX0JTU2A/IExldCBtZSBxdWlja2x5IHJlLWV4YW1pbmUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZ2AgdG8gY29uZmlybS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMyNTUsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MTA6MjQuMzA5MTQ0MzczWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDYyMTEzOTAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xXSUZJX01WTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MTA6MjQuNDE1MzcxOTIzWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NzIxMzUwMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IExvY2F0aW5nIHRoZSBJV0xXSUZJX01WTSBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgaGFuZyBvbiBhIHNlY29uZC4gTXkgbWVudGFsIG1hcCBvZiB0aGUga2VybmVsIHNvdXJjZSB0cmVlIGlzIHVzdWFsbHkgcHJldHR5IHNvbGlkLCBidXQgZm9yIGEgc3BsaXQgc2Vjb25kLCBJIGhhZCB0byBkb3VibGUtY2hlY2sgdGhhdCBsb2NhdGlvbi4gKklXTFdJRklfTVZNKi4uLiByaWdodCwgdGhhdCdzIHRoZSBtdWx0aS12aXJ0dWFsIG1hY2hpbmUgc3R1ZmYgZm9yIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIuIEJ1dCB0aGUgS2NvbmZpZyBmaWxlIGZvciAqdGhhdCogc3BlY2lmaWMgY29tcG9uZW50PyBNeSBmaXJzdCBpbnN0aW5jdCB3YXMgaXQgd291bGQgcHJvYmFibHkgYmUgaW4gdGhlIGNvcmUgaXdsd2lmaSBkaXJlY3RvcnksIGJ1dCBpdCdzIG9mdGVuIGNvbXBhcnRtZW50YWxpemVkLiBMZXQgbWUgcXVpY2tseSBzb2xpZGlmeSBpbiBteSBtaW5kIHRoYXQgaXQncyBsb2NhdGVkIHVuZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9LY29uZmlnYC4gVGhhdCBzcGVjaWZpYyBwYXRoIHRlbGxzIG1lIGhvdyBtb2R1bGFyIGl0IGlzLiBUaGlzIHByb2JhYmx5IG1lYW5zIGl0J3MgYSB3ZWxsLWRlZmluZWQgYW5kIHBvdGVudGlhbGx5IGluZGVwZW5kZW50IG1vZHVsZSB3aXRoaW4gdGhlIGxhcmdlciBJbnRlbCB3aXJlbGVzcyBkcml2ZXIgZnJhbWV3b3JrLiBHb29kLiBLbm93aW5nICpleGFjdGx5KiB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBsaXZlcyBpcyBrZXkgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgb3B0aW9ucy4gTm93IEkgY2FuIG1vdmUgZm9yd2FyZCwgY29uZmlkZW50IHRoYXQgSSBrbm93IHdoZXJlIHRvIGxvb2sgaWYgSSBuZWVkIHRvIGFkanVzdCBzZXR0aW5ncyByZWxhdGVkIHRvIHRoYXQgcGFydGljdWxhciBzZWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDg0OCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjEwOjI4LjE4NzUwOTk5MloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE2NTM0MDIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xXSUZJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjEwOjI4LjI2OTE3MTgyNVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDE3OTM2MTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqS2NvbmZpZyBIdW50IGluIGl3bHdpZmkqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IG15IGJlYXJpbmdzIGluIHRoZSBpd2x3aWZpIGNvZGUuIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGljaCBLY29uZmlnIGZpbGVzIGFyZSByZWxldmFudCBoZXJlLiBUaGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSB3aGF0J3MgYWN0dWFsbHkgKnRoZXJlKi4gSSBzaG91bGQgcHJvYmFibHkgc3RhcnQgYnkgZG9pbmcgYSBxdWljayBgbHNgIGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9gIGRpcmVjdG9yeS4gVGhhdCdsbCBnaXZlIG1lIGEgbGlzdCBvZiBhbGwgdGhlIGZpbGVzIGFuZCBzdWJkaXJlY3RvcmllcywgbWFraW5nIGl0IGVhc2llciB0byBzcG90IGxpa2VseSBjYW5kaWRhdGVzIGZvciBLY29uZmlnIGZpbGVzLiBLbm93aW5nIHRoZSBnZW5lcmFsIHN0cnVjdHVyZSwgSSBleHBlY3QgdG8gc2VlIGBLY29uZmlnYCBmaWxlcyBzcHJpbmtsZWQgYXJvdW5kLCBwb3NzaWJseSBpbiBzdWJkaXJlY3RvcmllcyByZXByZXNlbnRpbmcgZGlmZmVyZW50IHdpcmVsZXNzIGNhcmQgZmFtaWxpZXMgb3IgZmVhdHVyZSBzZXRzLiBJIGFsc28gYW50aWNpcGF0ZSB0aGVyZSBjb3VsZCBiZSBhIHRvcC1sZXZlbCBgS2NvbmZpZ2AgdGhhdCBpbmNsdWRlcyBvdGhlcnMuIExldCdzIHNlZSB3aGF0IHdlIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MTgyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MTA6MzEuNjg3MTExMjQ3WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2ODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiaXdsLWFnbi1ody5oXCIsXG4gICAgXCJpd2wtY29uZmlnLmhcIixcbiAgICBcIml3bC1jc3IuaFwiLFxuICAgIFwiaXdsLWRiZy10bHYuY1wiLFxuICAgIFwiaXdsLWRiZy10bHYuaFwiLFxuICAgIFwiaXdsLWRlYnVnLmNcIixcbiAgICBcIml3bC1kZWJ1Zy5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtZGF0YS5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtaW8uaFwiLFxuICAgIFwiaXdsLWRldnRyYWNlLWl3bHdpZmkuaFwiLFxuICAgIFwiaXdsLWRldnRyYWNlLW1zZy5oXCIsXG4gICAgXCJpd2wtZGV2dHJhY2UtdWNvZGUuaFwiLFxuICAgIFwiaXdsLWRldnRyYWNlLmNcIixcbiAgICBcIml3bC1kZXZ0cmFjZS5oXCIsXG4gICAgXCJpd2wtZHJ2LmNcIixcbiAgICBcIml3bC1kcnYuaFwiLFxuICAgIFwiaXdsLWZoLmhcIixcbiAgICBcIml3bC1pby5jXCIsXG4gICAgXCJpd2wtaW8uaFwiLFxuICAgIFwiaXdsLW1vZHBhcmFtcy5oXCIsXG4gICAgXCJpd2wtbnZtLXBhcnNlLmNcIixcbiAgICBcIml3bC1udm0tcGFyc2UuaFwiLFxuICAgIFwiaXdsLW52bS11dGlscy5jXCIsXG4gICAgXCJpd2wtbnZtLXV0aWxzLmhcIixcbiAgICBcIml3bC1vcC1tb2RlLmhcIixcbiAgICBcIml3bC1waHktZGIuY1wiLFxuICAgIFwiaXdsLXBoeS1kYi5oXCIsXG4gICAgXCJpd2wtcHJwaC5oXCIsXG4gICAgXCJpd2wtc2NkLmhcIixcbiAgICBcIml3bC10cmFucy5jXCIsXG4gICAgXCJpd2wtdHJhbnMuaFwiLFxuICAgIFwiaXdsLXV0aWxzLmNcIixcbiAgICBcIml3bC11dGlscy5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IFtcbiAgICBcImNmZ1wiLFxuICAgIFwiZHZtXCIsXG4gICAgXCJmd1wiLFxuICAgIFwibWVpXCIsXG4gICAgXCJtbGRcIixcbiAgICBcIm12bVwiLFxuICAgIFwicGNpZVwiLFxuICAgIFwidGVzdHNcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDoxMDozMS42ODcyNzA2NjdaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzODkwMzIyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRlYnVnZ2luZyB0aGUgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgd2lyZWxlc3MgZHJpdmVyIGlzc3VlIGFuZCBteSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBmZWF0dXJlIGluIHF1ZXN0aW9uIGlzIGJlaW5nIGVuYWJsZWQgb3IgZGlzYWJsZWQuIEdpdmVuIHRoYXQgdGhpcyBzZWVtcyB0byBiZSBhbiBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIG15IGZpcnN0IHN0b3AgaXMgbGlrZWx5IGdvaW5nIHRvIGJlIGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vYCBkaXJlY3RvcnkuIFdpdGhpbiB0aGF0LCBJJ20gcHJldHR5IHN1cmUgdGhlcmUncyBhIGBLY29uZmlnYCBmaWxlLiBUaGF0J3MgdGhlIHN0YW5kYXJkIHBsYWNlIGZvciBkZWZpbmluZyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGtlcm5lbCBtb2R1bGVzLCBhbmQgdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLiBJdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlc2UgZmVhdHVyZXMgYXJlIGVuYWJsZWQsIGRpc2FibGVkLCBvciBjb25kaXRpb25hbGx5IGNvbXBpbGVkLiBJZiB0aGlzIGRyaXZlciBpcyBsaWtlIHRoZSBvdGhlcnMgSSd2ZSB3b3JrZWQgd2l0aCwgdGhpcyBpcyB0aGUgbW9zdCBsaWtlbHkgbG9jYXRpb24gZm9yIGZpbmRpbmcgdGhlIHNwZWNpZmljIEtjb25maWcgZmlsZSB0byByZXZpZXcuIEknbGwgc3RhcnQgdGhlcmUgYW5kIHNlZSBpZiBJIGNhbiB0cmFjZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTgxOSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDoxMDozNC44MjYxNzU5NzVaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTg3MDYxMCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDoxMDozNC45MjgwNTIxNjZaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU5MDYxMjgwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGZyYW1lZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6XG5cbioqV2hlcmUncyBUaGF0IERhbmcgRGVmaW5pdGlvbj8qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLi4uIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIHRyYWNlIGEgZnVuY3Rpb24gY2FsbCwgYW5kIEkndmUgaGl0IGEgc25hZy4gV2hhdCB0aGUgaGVjayBpcyBgSVdMV0lGSV9NVk1gPyBJdCdzIG1lbnRpb25lZCBoZXJlLCBjbGVhcmx5LCBidXQgSSdtIGRyYXdpbmcgYSBibGFuay4gSXMgaXQgYSBtYWNybywgYSBjb25zdGFudCwgYSBzdHJ1Y3R1cmUsIGFuIGVudW0sIHdoYXQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYElXTFdJRklfTVZNYCBhY3R1YWxseSAqaXMqIHRvIG1ha2UgYW55IGhlYWR3YXkuIFRpbWUgdG8gZ28gaHVudGluZyBmb3IgaXRzIGRlZmluaXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBzY29wZSwgdGhlIGNvbnRleHQsIGFuZCBob3cgaXQncyBiZWluZyB1c2VkLiBJIGNhbid0IHByb2NlZWQgdW50aWwgSSB1bmRlcnN0YW5kIGl0cyBmdW5kYW1lbnRhbCBuYXR1cmUuIEFscmlnaHQsIGxldCdzIHN0YXJ0IGRpZ2dpbmchIEkgc2hvdWxkIGtub3cgdGhpcywgd2hhdCBmaWxlIGlzIGl0IGluPyBJIG5lZWQgdG8gZmluZCBpdHMgb3JpZ2luLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjEwNCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjEwOjM4LjUxODY2Njc0MloiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY3NDA4NTEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xXSUZJX01WTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MTA6MzguNjE1NDEzMzczWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDIwMjYzMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIEludGVsIFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgSW50ZWwgd2lyZWxlc3MgZHJpdmVycy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gc3RhcnQgd2l0aCB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGF0IHNwZWNpZmljIGFyZWEsIHdoaWNoLCBpZiBtZW1vcnkgc2VydmVzLCBzaG91bGQgYmUgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvS2NvbmZpZ2AuIFRoYXQncyB0aGUgZ28tdG8gcGxhY2UgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZ3VyYWJsZSBmZWF0dXJlcyBhbmQgZGVwZW5kZW5jaWVzLiBJIGV4cGVjdCB0byBmaW5kIGRlZmluaXRpb25zIG9mIHRoZSB2YXJpb3VzIGRyaXZlciBvcHRpb25zLCBhbG9uZyB3aXRoIHRoZWlyIGRlZmF1bHQgc2V0dGluZ3MsIGhlbHAgdGV4dCBleHBsYWluaW5nIHRoZWlyIHB1cnBvc2UsIGFuZCwgY3J1Y2lhbGx5LCBhbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBoYXJkd2FyZS4gVGhpcyBmaWxlIGlzIHRoZSBiYWNrYm9uZSBmb3IgY29uZmlndXJpbmcgdGhlIEludGVsIHdpcmVsZXNzIHN1cHBvcnQsIGFuZCBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiBpdCB3aWxsIGJlIGNyaXRpY2FsIGZvciBhbnkgbW9kaWZpY2F0aW9ucyBvciBkZWVwZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZHJpdmVyJ3MgYmVoYXZpb3IuIFRpbWUgdG8gZGVsdmUgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MzY0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MTA6NDIuMjE3NDQxOTg4WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDYwNTcwOTEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xXSUZJX01WTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDoxMDo0Mi4zMjM1MDkzMTlaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA2NTcwMTAwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHRoZSBzdW1tYXJ5LCBhc3N1bWluZyBJJ20gdGhlIGV4cGVydCB0aGlua2luZyB0aHJvdWdoIHRoaXM6XG5cbioqSW5pdGlhbCBJbXByZXNzaW9uOiBFeHBsb3JpbmcgUG9zc2libGUgQWNyb255bXMqKlxuXG5IbW0sIHRoaW5raW5nIHRoaXMgdGhyb3VnaC4uLkknbSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggcG90ZW50aWFsIGFjcm9ueW1zIGhlcmUuIFRoYXQgaW5pdGlhbCBzdHJpbmcsIGBJV0xNVk1gLCBpdCdzIG5vdCBpbW1lZGlhdGVseSBvYnZpb3VzIHdoYXQgaXQgcmVwcmVzZW50cy4gSSBuZWVkIHRvIHN0YXJ0IGRlY29uc3RydWN0aW5nIGl0LiBJcyB0aGVyZSBzb21lIHNwZWNpZmljIGZpZWxkIG9yIGNvbnRleHQgd2hlcmUgdGhpcyB3b3VsZCBtYWtlIHNlbnNlPyBXaGF0IGFyZSB0aGUga2V5IGVsZW1lbnRzIGl0IG1pZ2h0IHJlZmVyIHRvPyBQZXJoYXBzIGl0J3MgYW4gb2JzY3VyZSBtZXRob2QsIGEgcmVzZWFyY2ggcHJvamVjdCdzIGludGVybmFsIG5hbWUsIG9yIG1heWJlIHNvbWV0aGluZyB2ZXJ5IGluZHVzdHJ5LXNwZWNpZmljLi4uIFJpZ2h0IG5vdywgbXkgbWluZCBpcyBleHBsb3JpbmcgdGhlIHBvc3NpYmlsaXRpZXMuIExldCdzIHNlZSBpZiB0aGUgbGV0dGVycyBzdGFydCB0byBjbGljayBpbiBhbnkgZmFtaWxpYXIgY29tYmluYXRpb25zLiBQZXJoYXBzIGl0J3MgYSBuZXcgb3Igb2JzY3VyZSB0ZXJtIHRoYXQgSSBuZWVkIHRvIGxvb2sgaW50bz9cblxuXG4iLCJJbnB1dFRva2VucyI6MzY2MDYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjEwOjQ1LjM4OTIxMzYyNFoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0MDkwMDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xNVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTY2PWNvbmZpZyBJV0xEVk1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy03My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NzQ6Y29uZmlnIElXTE1WTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy03NS1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgV2lyZWxlc3MgV2lGaSBNVk0gRmlybXdhcmUgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MTA6NDUuNTIzMzA3ODkxWiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0OTM5OTgwMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgSVdMTVZNYCBEZXBlbmRlbmN5KipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGZpcm13YXJlIHN1cHBvcnQuIFJpZ2h0LCBzbyBgSVdMTVZNYCAtIHRoYXQgc2VlbXMgbGlrZSB0aGUga2V5IGNvbmZpZ3VyYXRpb24gZGVmaW5lIGZvciB0aGUgTVZNIGZpcm13YXJlLiBJdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGFjdHVhbGx5LCBnaXZlbiB0aGF0IEkga25vdyBteSB3YXkgYXJvdW5kIHRoZSBrZXJuZWwgY29kZWJhc2UuIEknbSBzZWVpbmcgdGhhdCBgaXdsX212bV9sb2FkX3Vjb2RlX3dhaXRfYWxpdmVgIGZ1bmN0aW9uIHJlc2lkZXMgd2l0aGluIGBtdm0vZncuY2AuICBUaGF0IHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQgYElXTE1WTWAgaXMgYSBoYXJkIHJlcXVpcmVtZW50IGZvciB0aGUgd2hvbGUgcHJvY2Vzcy4gSSB3YW50IHRvIGRvdWJsZS1jaGVjayBteSB1bmRlcnN0YW5kaW5nIHRob3VnaCwgc28gdGhlIG5leHQgc3RlcCBpcyB0byBoZWFkIG92ZXIgdG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlYC4gSXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbXBpbGF0aW9uIHJ1bGVzIGFuZCBkZXBlbmRlbmNpZXMgZm9yIGFueXRoaW5nIHRoYXQgbGl2ZXMgd2l0aGluIHRoYXQgYGZ3L2AgZGlyZWN0b3J5LiBUaGF0J3Mgd2hlcmUgdGhlIHByb29mIGlzIVxuXG5cbiIsIklucHV0VG9rZW5zIjozNjkyNSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjEwOjQ5LjAxNzMwODc1NloiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODkwNDQyNzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZncvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZT0zMj1pd2x3aWZpLW9ianNcXHRcXHQrPSBpd2wtdHJhbnMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGUtMzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTozNDppd2x3aWZpLW9ianNcXHRcXHQrPSBmdy9pbWcubyBmdy9ub3RpZi13YWl0Lm8gZncvcnMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6MzU6aXdsd2lmaS1vYmpzXFx0XFx0Kz0gZncvZGJnLm8gZncvZGJnLW9sZC5vIGZ3L3Budm0ubyBmdy9kdW1wLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjM2Oml3bHdpZmktb2Jqc1xcdFxcdCs9IGZ3L3JlZ3VsYXRvcnkub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6Mzc6aXdsd2lmaS0kKENPTkZJR19JV0xNVk0pICs9IGZ3L3BhZ2luZy5vIGZ3L3NtZW0ubyBmdy9pbml0Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL01ha2VmaWxlOjM4Oml3bHdpZmktJChDT05GSUdfSVdMTUxEKSArPSBmdy9zbWVtLm8gZncvaW5pdC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTozOTppd2x3aWZpLSQoQ09ORklHX0FDUEkpICs9IGZ3L2FjcGkub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvTWFrZWZpbGU6NDA6aXdsd2lmaS0kKENPTkZJR19FRkkpXFx0Kz0gZncvdWVmaS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZTo0MTppd2x3aWZpLSQoQ09ORklHX0lXTFdJRklfREVCVUdGUykgKz0gZncvZGVidWdmcy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9NYWtlZmlsZS00Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjA6MTA6NDkuMTA2MzU3Nzg4WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3MDI4MjY0MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGl3bHdpZmkgRHJpdmVyIENvbmZpZ3VyYXRpb24gZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBoZXJlJ3MgdGhlIGJyZWFrZG93biBvZiBob3cgdG8gYXBwcm9hY2ggZnV6emluZyB0aGlzIGl3bHdpZmkgZHJpdmVyIHZ1bG5lcmFiaWxpdHkuIEkndmUgdHJhY2VkIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIEl0IHNlZW1zIGBmdy91ZWZpLm9gIGlzIGNvbXBpbGVkIGRpcmVjdGx5IGludG8gYGl3bHdpZmkua29gIHdoZW4gdGhlIGBDT05GSUdfRUZJYCBvcHRpb24gaXMgZW5hYmxlZCwgYW5kIGBpd2x3aWZpLmtvYCBpdHNlbGYgaXMgYnVpbHQgd2hlbiBgQ09ORklHX0lXTFdJRklgIGlzIGVuYWJsZWQuIEltcG9ydGFudGx5LCBgZncvcG52bS5vYCBhbHNvIGVuZHMgdXAgaW5jbHVkZWQgd2l0aGluIGBpd2x3aWZpLW9ianNgLiBUaGF0IG1lYW5zIGhhdmluZyBib3RoIGBDT05GSUdfSVdMV0lGSWAgYW5kIGBDT05GSUdfRUZJYCBhY3RpdmUgc2hvdWxkIGJlIGVub3VnaCB0byBnZXQgdGhlIGNvcmUgY29kZSBjb21waWxlZCBpbi5cblxuTm93LCB0byBhY3R1YWxseSB0cmlnZ2VyIHRoZSB2dWxuZXJhYmxlIGNvZGUgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZmlybXdhcmUgbG9hZGluZyBhbmQgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYXJlIGV4ZXJjaXNlZC4gIFRoYXQncyB3aGVyZSB0aGUgYENPTkZJR19JV0xNVk1gIG9yIGBDT05GSUdfSVdMTUxEYCBvcHRpb25zIGNvbWUgaW50byBwbGF5LiAgVG8gYmUgb24gdGhlIHNhZmUgc2lkZSwgYW5kIHRvIG1heGltaXplIGNvdmVyYWdlLCBJIHNob3VsZCBlbmFibGUgYm90aCBvZiB0aGVzZS4gIFRoZXkncmUga2V5IHRvIGluaXRpYWxpemluZyB0aGUgZHJpdmVyIGluIGEgd2F5IHRoYXQgbWFrZXMgaXQgdnVsbmVyYWJsZS5cblxuU28sIHRvIHN1bW1hcml6ZSBmb3IgZnV6emluZyBwdXJwb3NlczpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIEFic29sdXRlbHkuIFRoZSBwYXRjaCBmaXhlcyBhIGRlZmluaXRlIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXR5IHdoZW4gcGFyc2luZyBVRUZJIHZhcmlhYmxlcyByZWxhdGVkIHRvIHJlZHVjZWQgcG93ZXIgc2V0dGluZ3Mgd2l0aGluIHRoZSBpd2x3aWZpIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLCB1bmRlciB0aGUgcmlnaHQgVUVGSSB2YXJpYWJsZSBjb25kaXRpb25zLlxuKiAgICoqUmVhc29uaW5nOioqIFRoZSBidWcgaXMgd2l0aGluIHRoZSBpd2x3aWZpIGRyaXZlciwgdHJpZ2dlcmVkIGJ5IHBhcnNpbmcgVUVGSSB2YXJpYWJsZXMuXG4qICAgKipGb2N1cyBTeW1ib2xzOioqIEkgbmVlZCB0byBmb2N1cyBvbiB0aGVzZSBmdW5jdGlvbnM6IGBpd2xfdWVmaV9yZWR1Y2VfcG93ZXJfcGFyc2VgLCBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgLCBhbmQgYGl3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyYC4gVGhvc2UgYXJlIHdoZXJlIHRoZSB2dWxuZXJhYmlsaXRpZXMgYXJlLlxuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBIZXJlJ3MgdGhlIGNyaXRpY2FsIHNldCBvZiBjb25maWdzIEkgbmVlZCB0byBlbmFibGU6XG4gICAgKiAgIGBJV0xXSUZJYFxuICAgICogICBgRUZJYFxuICAgICogICBgSVdMTVZNYFxuICAgICogICBgSVdMTUxEYFxuXG5JIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYElXTE1MRGAgaXMgYSB2YWxpZCBvcHRpb24gaW4gdGhlIGNvbmZpZ3VyYXRpb247IGl0IGlzIHBvc3NpYmxlIHRoYXQgaXQgaXMganVzdCBhIGRlZmF1bHQsIHNvIGl0IG5lZWRzIHRvIGJlIGNoZWNrZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NjIxLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjEwOjU1LjgwOTE4NjEwNVoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIzNTQxMTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xNTERcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz03ND1jb25maWcgSVdMTVZNXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjg0OmNvbmZpZyBJV0xNTERcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctODUtXFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgTUxEIEZpcm13YXJlIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjEwOjU2LjEzMjczMTQ4NVoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDc0NzI3NDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlZhbGlkYXRpbmcgYW5kIEFuYWx5emluZyBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBJV0xNTERgIGlzIGluZGVlZCBhIHZhbGlkIGlkZW50aWZpZXIuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgbXkgbmV4dCBzdGVwIGlzIHRvIGludmVzdGlnYXRlIHRoZSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIG9mIGBJV0xXSUZJYC4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGl0J3MgaGlnaGx5IHByb2JhYmxlIHRoYXQgYElXTFdJRklgIHJlbGllcyBvbiBgTUFDODAyMTFgLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzIHJlbGF0aW9uc2hpcCwgYXMgdW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCBmb3IgYW55IGNoYW5nZXMgb3IgaW50ZWdyYXRpb24gd29yayByZWxhdGVkIHRvIHRoZXNlIGlkZW50aWZpZXJzLiBUaGF0J3Mgd2hlcmUgSSB3aWxsIGJlZ2luLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODU3NSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjExOjAwLjYwNzQ2MTM5WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQzNzEwODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTI9Y29uZmlnIElXTFdJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgV2lyZWxlc3MgV2lGaSBOZXh0IEdlbiBBR04gLSBXaXJlbGVzcy1OL0FkdmFuY2VkLU4vVWx0aW1hdGUtTiAoaXdsd2lmaSkgXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo0OlxcdGRlcGVuZHMgb24gUENJIFxcdTAwMjZcXHUwMDI2IEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBDRkc4MDIxMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo1OlxcdGRlcGVuZHMgb24gSVdMTUVJIHx8ICFJV0xNRUlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNi1cXHRzZWxlY3QgRldfTE9BREVSXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9NDk9Y29uZmlnIElXTFdJRklfS1VOSVRfVEVTVFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTAtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NTE6XFx0ZGVwZW5kcyBvbiBLVU5JVFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01Mi1cXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTU4PWNvbmZpZyBJV0xXSUZJX0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTktXFx0Ym9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo2MDpcXHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjYxOlxcdGRlcGVuZHMgb24gSVdMTVZNIHx8IElXTERWTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy02Mi1cXHRzZWxlY3QgTEVEU19UUklHR0VSU1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTY2PWNvbmZpZyBJV0xEVk1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNjctXFx0dHJpc3RhdGUgXFxcIkludGVsIFdpcmVsZXNzIFdpRmkgRFZNIEZpcm13YXJlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjY4OlxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNjktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTc0PWNvbmZpZyBJV0xNVk1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy03Ni1cXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6Nzc6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo3ODpcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTc5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz04ND1jb25maWcgSVdMTUxEXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctODYtXFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjg3OlxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6ODg6XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy04OS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTAyPWNvbW1lbnQgXFxcIldBUk5JTkc6IGl3bHdpZmkgaXMgdXNlbGVzcyB3aXRob3V0IElXTERWTSBvciBJV0xNVk0gb3IgSVdMTUxEXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMDM6XFx0ZGVwZW5kcyBvbiBJV0xEVk09biBcXHUwMDI2XFx1MDAyNiBJV0xNVk09biBcXHUwMDI2XFx1MDAyNiBJV0xNTEQ9blxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTMxPWNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMyLVxcdGJvb2wgXFxcIml3bHdpZmkgZGVidWdmcyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMzM6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzNC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTM5PWNvbmZpZyBJV0xXSUZJX0RFVklDRV9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTE0MC1cXHRib29sIFxcXCJpd2x3aWZpIGRldmljZSBhY2Nlc3MgdHJhY2luZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTQxOlxcdGRlcGVuZHMgb24gRVZFTlRfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNDItXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTYwPWNvbmZpZyBJV0xNRUlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTYxLVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBNYW5hZ2VtZW50IEVuZ2luZSBjb21tdW5pY2F0aW9uIG92ZXIgV0xBTlxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTYyOlxcdGRlcGVuZHMgb24gSU5URUxfTUVJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjE2MzpcXHRkZXBlbmRzIG9uIFBNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjE2NDpcXHRkZXBlbmRzIG9uIENGRzgwMjExXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjE2NTpcXHRkZXBlbmRzIG9uIEJST0tFTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNjYtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMDoxMTowMC43MTE4MzY3M1oiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDMwODM3NDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIEludGVsIFdpcmVsZXNzIERyaXZlcnMqKlxuXG5Pa2F5LCBzbyBJJ20gbWFwcGluZyBvdXQgdGhlIGRlcGVuZGVuY2llcyBoZXJlIGZvciB0aGUgSW50ZWwgd2lyZWxlc3MgZHJpdmVycywgZmlndXJpbmcgb3V0IHdoaWNoIGNvbXBvbmVudHMgYXJlIGtleSBmb3IgZnV6emluZy4gYElXTFdJRklgIHJlbGllcyBvbiBgUENJYCwgYEhBU19JT01FTWAsIGFuZCBgQ0ZHODAyMTFgLCBzbyB0aGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGVuLCBgSVdMTVZNYCBhbmQgYElXTE1MRGAgYm90aCBkZXBlbmQgb24gYE1BQzgwMjExYC4gSSdsbCBmb2N1cyBvbiBgSVdMV0lGSWAsIGBFRklgLCBgSVdMTVZNYCwgYW5kIGBJV0xNTERgIGFzIG15IHByaW1hcnkgdGFyZ2V0cyBmb3Igbm93LlxuXG5Ob3csIGxldCdzIGRyaWxsIGRvd24gYW5kIGlkZW50aWZ5IHNwZWNpZmljIGZ1bmN0aW9ucyB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgdnVsbmVyYWJsZS4gQWZ0ZXIgY2hlY2tpbmcgdGhlIEZvY3VzU3ltYm9scywgSSBzZWUgdGhhdCBgaXdsX3VlZmlfcmVkdWNlX3Bvd2VyX3BhcnNlYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCB3YXMgbW9kaWZpZWQg4oCTIHRoYXQncyBkZWZpbml0ZWx5IGludGVyZXN0aW5nLiBgaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNgIGNhbGxzIHRoYXQgb25lLCBhbmQgYGl3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyYCBpcyByZXNwb25zaWJsZSBmb3IgcmVhZGluZyB0aGUgVUVGSSB2YXJpYWJsZS4gQWxsIG9mIHRoZXNlIGZ1bmN0aW9ucyBsb29rIGxpa2UgcHJpbWUgY2FuZGlkYXRlcyBmb3IgZnV6emluZy4gVGhleSBoYW5kbGUgaW50ZXJhY3Rpb25zIHdpdGggVUVGSSBhbmQgbGlrZWx5IGludm9sdmUgc29tZSBjcml0aWNhbCBkYXRhIHBhcnNpbmcuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZXNlLlxuXG5BbHJpZ2h0LCB0aW1lIHRvIHNldCB0aGUgcmVzdWx0cyBhbmQgbW92ZSBvbiB0byB0aGUgbmV4dCBwaGFzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAwODUsIk91dHB1dFRva2VucyI6MTM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIwOjExOjA2LjE0MjY3NjY2NVoiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDQ0MTM3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVdMV0lGSVwiLFxuICAgIFwiRUZJXCIsXG4gICAgXCJJV0xNVk1cIixcbiAgICBcIklXTE1MRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIml3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZVwiLFxuICAgIFwiaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNcIixcbiAgICBcIml3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHdoZW4gcGFyc2luZyBVRUZJIHZhcmlhYmxlcyBmb3IgcmVkdWNlZCBwb3dlciBzZXR0aW5ncyBpbiB0aGUgaXdsd2lmaSBkcml2ZXIuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uIHdoZW4gc3BlY2lmaWMgVUVGSSB2YXJpYWJsZXMgYXJlIHByZXNlbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVdMV0lGSVwiLFxuICAgIFwiRUZJXCIsXG4gICAgXCJJV0xNVk1cIixcbiAgICBcIklXTE1MRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIml3bF91ZWZpX3JlZHVjZV9wb3dlcl9wYXJzZVwiLFxuICAgIFwiaXdsX3Budm1fbG9hZF9yZWR1Y2VfcG93ZXJfdG9fdHJhbnNcIixcbiAgICBcIml3bF91ZWZpX2dldF9yZWR1Y2VkX3Bvd2VyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHdoZW4gcGFyc2luZyBVRUZJIHZhcmlhYmxlcyBmb3IgcmVkdWNlZCBwb3dlciBzZXR0aW5ncyBpbiB0aGUgaXdsd2lmaSBkcml2ZXIuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uIHdoZW4gc3BlY2lmaWMgVUVGSSB2YXJpYWJsZXMgYXJlIHByZXNlbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow8cm9x[1] Phase: Succeeded StartedAt: 2026-07-15 20:11:19 +0000 UTC FinishedAt: 2026-07-15 20:11:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-15 20:11:19 +0000 UTC FinishedAt: 2026-07-15 20:11:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[2] Phase: Succeeded StartedAt: 2026-07-15 20:11:19 +0000 UTC FinishedAt: 2026-07-15 21:40:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-15 20:11:19 +0000 UTC FinishedAt: 2026-07-15 21:40:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-15 20:11:19 +0000 UTC FinishedAt: 2026-07-15 20:11:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-15 20:11:19 +0000 UTC FinishedAt: 2026-07-15 20:11:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow8cm9x/series-workflow8cm9x-convert-artifact-126554623/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-15 20:11:31 +0000 UTC FinishedAt: 2026-07-15 21:09:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-15 20:11:31 +0000 UTC FinishedAt: 2026-07-15 21:09:20 +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:*98ae5d36-a296-485a-9980-e20c4ab1d494,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-workflow8cm9x/series-workflow8cm9x-convert-artifact-126554623/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": "6492ff94-efa3-46b7-b67a-d4453a19bce2", "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-workflow8cm9x/series-workflow8cm9x-build-action-2097278085/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-15 20:11:31 +0000 UTC FinishedAt: 2026-07-15 21:09:10 +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:*98ae5d36-a296-485a-9980-e20c4ab1d494,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-workflow8cm9x/series-workflow8cm9x-convert-artifact-126554623/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": "6492ff94-efa3-46b7-b67a-d4453a19bce2", "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-workflow8cm9x/series-workflow8cm9x-build-action-2097278085/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-15 21:09:20 +0000 UTC FinishedAt: 2026-07-15 21:09:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-15 21:09:20 +0000 UTC FinishedAt: 2026-07-15 21:09:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-15 21:09:20 +0000 UTC FinishedAt: 2026-07-15 21:09:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-15 21:09:20 +0000 UTC FinishedAt: 2026-07-15 21:09:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow8cm9x/series-workflow8cm9x-convert-artifact-210700302/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-15 21:09:40 +0000 UTC FinishedAt: 2026-07-15 21:11:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-15 21:09:40 +0000 UTC FinishedAt: 2026-07-15 21:11:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6492ff94-efa3-46b7-b67a-d4453a19bce2,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-workflow8cm9x/series-workflow8cm9x-build-action-2097278085/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-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-15 21:11:50 +0000 UTC FinishedAt: 2026-07-15 21:11:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-15 21:11:50 +0000 UTC FinishedAt: 2026-07-15 21:11:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-15 21:11:50 +0000 UTC FinishedAt: 2026-07-15 21:35:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-15 21:11:50 +0000 UTC FinishedAt: 2026-07-15 21:35:35 +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:*98ae5d36-a296-485a-9980-e20c4ab1d494,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-workflow8cm9x/series-workflow8cm9x-convert-artifact-210700302/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": "a782ae5d-6582-4bb6-bb1d-747dd8a4c9ad", "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-workflow8cm9x/series-workflow8cm9x-build-action-3009043874/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-15 21:11:50 +0000 UTC FinishedAt: 2026-07-15 21:35:25 +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:*98ae5d36-a296-485a-9980-e20c4ab1d494,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-workflow8cm9x/series-workflow8cm9x-convert-artifact-210700302/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": "a782ae5d-6582-4bb6-bb1d-747dd8a4c9ad", "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-workflow8cm9x/series-workflow8cm9x-build-action-3009043874/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-15 21:35:35 +0000 UTC FinishedAt: 2026-07-15 21:35:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-15 21:35:35 +0000 UTC FinishedAt: 2026-07-15 21:35:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-15 21:35:35 +0000 UTC FinishedAt: 2026-07-15 21:37:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-15 21:35:35 +0000 UTC FinishedAt: 2026-07-15 21:37: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:*a782ae5d-6582-4bb6-bb1d-747dd8a4c9ad,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-workflow8cm9x/series-workflow8cm9x-build-action-3009043874/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-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-15 21:37:31 +0000 UTC FinishedAt: 2026-07-15 21:40:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-15 21:37:31 +0000 UTC FinishedAt: 2026-07-15 21:40:03 +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":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"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:*6492ff94-efa3-46b7-b67a-d4453a19bce2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a782ae5d-6582-4bb6-bb1d-747dd8a4c9ad,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-workflow8cm9x/series-workflow8cm9x-build-action-2097278085/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-workflow8cm9x/series-workflow8cm9x-build-action-3009043874/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-15 21:37:31 +0000 UTC FinishedAt: 2026-07-15 21:37:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-15 21:37:31 +0000 UTC FinishedAt: 2026-07-15 21:37:38 +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":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"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-workflow8cm9x/series-workflow8cm9x-convert-artifact-2168455731/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-15 21:37:31 +0000 UTC FinishedAt: 2026-07-15 21:37:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-15 21:37:31 +0000 UTC FinishedAt: 2026-07-15 21:37:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-15 21:37:31 +0000 UTC FinishedAt: 2026-07-15 21:37:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-15 21:37:41 +0000 UTC FinishedAt: 2026-07-15 21:40:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8cm9x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["iwl_uefi_reduce_power_parse","iwl_pnvm_load_reduce_power_to_trans","iwl_uefi_get_reduced_power"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","EFI","IWLMVM","IWLMLD"],"series_id":"7154841b-ca2b-4c9f-9d8e-affc90f92a0f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-15 21:37:41 +0000 UTC FinishedAt: 2026-07-15 21:39:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6492ff94-efa3-46b7-b67a-d4453a19bce2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a782ae5d-6582-4bb6-bb1d-747dd8a4c9ad,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-workflow8cm9x/series-workflow8cm9x-build-action-2097278085/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-workflow8cm9x/series-workflow8cm9x-build-action-3009043874/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-workflow8cm9x/series-workflow8cm9x-convert-artifact-2168455731/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,}