ZGlmZiAtLWdpdCBhL2phdmEvcHJvZ3VhcmQuZmxhZ3MgYi9qYXZhL3Byb2d1YXJkLmZsYWdzCmluZGV4IDBhNWQyZGQuLjgyOWEwOTYgMTAwNjQ0Ci0tLSBhL2phdmEvcHJvZ3VhcmQuZmxhZ3MKKysrIGIvamF2YS9wcm9ndWFyZC5mbGFncwpAQCAtMSwzICsxLDggQEAKIC1rZWVwIGNsYXNzIGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLkJpbmFyeURpY3Rpb25hcnkgewogICBpbnQgbURpY3RMZW5ndGg7CisgIDxpbml0PiguLi4pOyAKK30KKworLWtlZXAgY2xhc3MgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uU3VnZ2VzdCB7CisgIDxpbml0PiguLi4pOwogfQpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvbGF5b3V0L2lucHV0X3RyYW5zLnhtbCBiL2phdmEvcmVzL2xheW91dC9pbnB1dF90cmFucy54bWwKaW5kZXggOTQ4MDZmNy4uZjY2ZThjZCAxMDA3NTUKLS0tIGEvamF2YS9yZXMvbGF5b3V0L2lucHV0X3RyYW5zLnhtbAorKysgYi9qYXZhL3Jlcy9sYXlvdXQvaW5wdXRfdHJhbnMueG1sCkBAIC0yNCw3ICsyNCw3IEBACiAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2FsaWduUGFyZW50Qm90dG9tPSJ0cnVlIgogICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgogICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKLSAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSIjQTAwMDAwMDAiCisgICAgICAgIGFuZHJvaWQ6YmFja2dyb3VuZD0iQGNvbG9yL2xhdGlua2V5Ym9hcmRfZXh0ZW5zaW9uX2JhY2tncm91bmQiCiAgICAgICAgIGFuZHJvaWQ6dmVydGljYWxDb3JyZWN0aW9uPSIwZGlwIgogICAgICAgICBhbmRyb2lkOmtleUJhY2tncm91bmQ9IkBkcmF3YWJsZS9idG5fa2V5Ym9hcmRfa2V5X2Z1bGx0cmFucyIKICAgICAgICAgLz4KZGlmZiAtLWdpdCBhL2phdmEvcmVzL3ZhbHVlcy9jb2xvcnMueG1sIGIvamF2YS9yZXMvdmFsdWVzL2NvbG9ycy54bWwKaW5kZXggYzkwZDlmNi4uZDRiYjEzOCAxMDA2NDQKLS0tIGEvamF2YS9yZXMvdmFsdWVzL2NvbG9ycy54bWwKKysrIGIvamF2YS9yZXMvdmFsdWVzL2NvbG9ycy54bWwKQEAgLTIxLDQgKzIxLDkgQEAKICAgICA8Y29sb3IgbmFtZT0iY2FuZGlkYXRlX25vcm1hbCI+I0ZGMDAwMDAwPC9jb2xvcj4KICAgICA8Y29sb3IgbmFtZT0iY2FuZGlkYXRlX3JlY29tbWVuZGVkIj4jRkZFMzU5MDA8L2NvbG9yPgogICAgIDxjb2xvciBuYW1lPSJjYW5kaWRhdGVfb3RoZXIiPiNmZjgwODA4MDwvY29sb3I+CisgICAgPGNvbG9yIG5hbWU9ImxhdGlua2V5Ym9hcmRfdHJhbnNwYXJlbnQiPiMwMDAwMDAwMDwvY29sb3I+CisgICAgPGNvbG9yIG5hbWU9ImxhdGlua2V5Ym9hcmRfYmFyX2xhbmd1YWdlX3NoYWRvdyI+IzgwMDAwMDAwPC9jb2xvcj4KKyAgICA8Y29sb3IgbmFtZT0ibGF0aW5rZXlib2FyZF9iYXJfbGFuZ3VhZ2VfdGV4dCI+I0ZGODA4MDgwPC9jb2xvcj4KKyAgICA8Y29sb3IgbmFtZT0ibGF0aW5rZXlib2FyZF9leHRlbnNpb25fYmFja2dyb3VuZCI+I0EwMDAwMDAwPC9jb2xvcj4KKyAgICA8Y29sb3IgbmFtZT0ibGF0aW5rZXlib2FyZF90ZXh0X2NvbG9yIj4jRkYwMDAwMDA8L2NvbG9yPgogPC9yZXNvdXJjZXM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamF2YS9yZXMvdmFsdWVzL2RpbWVucy54bWwgYi9qYXZhL3Jlcy92YWx1ZXMvZGltZW5zLnhtbAppbmRleCA1YjIwOTVjLi5mMDU3YzE2IDEwMDY0NAotLS0gYS9qYXZhL3Jlcy92YWx1ZXMvZGltZW5zLnhtbAorKysgYi9qYXZhL3Jlcy92YWx1ZXMvZGltZW5zLnhtbApAQCAtMjMsNCArMjMsNyBAQAogICAgIDxkaW1lbiBuYW1lPSJidWJibGVfcG9pbnRlcl9vZmZzZXQiPjIyZGlwPC9kaW1lbj4KICAgICA8ZGltZW4gbmFtZT0iY2FuZGlkYXRlX3N0cmlwX2hlaWdodCI+NDJkaXA8L2RpbWVuPgogICAgIDxkaW1lbiBuYW1lPSJzcGFjZWJhcl92ZXJ0aWNhbF9jb3JyZWN0aW9uIj40ZGlwPC9kaW1lbj4KKyAgICA8IS0tIElmIHRoZSBzY3JlZW4gaGVpZ2h0IGluIGxhbmRzY2FwZSBpcyBsYXJnZXIgdGhhbiB0aGUgYmVsb3cgdmFsdWUsIHRoZW4gdGhlIGtleWJvYXJkCisgICAgICAgICB3aWxsIG5vdCBnbyBpbnRvIGV4dHJhY3QgKGZ1bGxzY3JlZW4pIG1vZGUuIC0tPgorICAgIDxkaW1lbiBuYW1lPSJtYXhfaGVpZ2h0X2Zvcl9mdWxsc2NyZWVuIj4yLjVpbjwvZGltZW4+CiA8L3Jlc291cmNlcz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy94bWwtaXcva2JkX3F3ZXJ0eS54bWwgYi9qYXZhL3Jlcy94bWwtaXcva2JkX3F3ZXJ0eS54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYjg5M2YxYQotLS0gL2Rldi9udWxsCisrKyBiL2phdmEvcmVzL3htbC1pdy9rYmRfcXdlcnR5LnhtbApAQCAtMCwwICsxLDE2NCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKy8qIAorKioKKyoqIENvcHlyaWdodCAyMDEwLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IAorKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiAKKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdCAKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCAKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAKKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCistLT4KKworPEtleWJvYXJkIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICBhbmRyb2lkOmtleVdpZHRoPSIxMCVwIgorICAgIGFuZHJvaWQ6aG9yaXpvbnRhbEdhcD0iMHB4IgorICAgIGFuZHJvaWQ6dmVydGljYWxHYXA9IjBweCIKKyAgICBhbmRyb2lkOmtleUhlaWdodD0iQGRpbWVuL2tleV9oZWlnaHQiCisgICAgPgorCisgICAgPFJvdz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLXpyIgCisJICAgICBhbmRyb2lkOmhvcml6b250YWxHYXA9IjUlcCIKKwkgICAgIGFuZHJvaWQ6a2V5RWRnZUZsYWdzPSJsZWZ0Ii8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i16giLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLXkCIvPgorICAgICAgICA8S2V5IGFuZHJvaWQ6a2V5TGFiZWw9IteYIi8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i15UiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLXnyIvPgorICAgICAgICA8S2V5IGFuZHJvaWQ6a2V5TGFiZWw9ItedIi8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i16QiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmNvZGVzPSItNSIgCisJICAgICBhbmRyb2lkOmhvcml6b250YWxHYXA9IjEuMjUlcCIKKwkgICAgIGFuZHJvaWQ6a2V5SWNvbj0iQGRyYXdhYmxlL3N5bV9rZXlib2FyZF9kZWxldGUiCisgICAgICAgICAgICBhbmRyb2lkOmtleVdpZHRoPSIxMy43NSVwIiBhbmRyb2lkOmtleUVkZ2VGbGFncz0icmlnaHQiCisgICAgICAgICAgICBhbmRyb2lkOmljb25QcmV2aWV3PSJAZHJhd2FibGUvc3ltX2tleWJvYXJkX2ZlZWRiYWNrX2RlbGV0ZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6aXNSZXBlYXRhYmxlPSJ0cnVlIi8+CisgICAgPC9Sb3c+CisKKyAgICA8Um93PgorICAgICAgICA8S2V5IGFuZHJvaWQ6a2V5TGFiZWw9ItepIiBhbmRyb2lkOmtleUVkZ2VGbGFncz0ibGVmdCIvPgorICAgICAgICA8S2V5IGFuZHJvaWQ6a2V5TGFiZWw9IteTIi8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i15IiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLXmyIvPgorICAgICAgICA8S2V5IGFuZHJvaWQ6a2V5TGFiZWw9IteiIi8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i15kiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLXlyIvPgorICAgICAgICA8S2V5IGFuZHJvaWQ6a2V5TGFiZWw9ItecIi8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i15oiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLXoyIgYW5kcm9pZDprZXlFZGdlRmxhZ3M9InJpZ2h0Ii8+CisgICAgPC9Sb3c+CisgICAgCisgICAgPFJvdz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLXliIgYW5kcm9pZDpob3Jpem9udGFsR2FwPSI1JXAiIGFuZHJvaWQ6a2V5RWRnZUZsYWdzPSJsZWZ0Ii8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i16EiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLXkSIvPgorICAgICAgICA8S2V5IGFuZHJvaWQ6a2V5TGFiZWw9IteUIi8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i16AiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLXniIvPgorICAgICAgICA8S2V5IGFuZHJvaWQ6a2V5TGFiZWw9ItemIi8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i16oiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLXpSIgYW5kcm9pZDprZXlFZGdlRmxhZ3M9InJpZ2h0Ii8+CisgICAgPC9Sb3c+CisKKyAgICA8Um93IGFuZHJvaWQ6a2V5Ym9hcmRNb2RlPSJAK2lkL21vZGVfbm9ybWFsIiBhbmRyb2lkOnJvd0VkZ2VGbGFncz0iYm90dG9tIj4KKyAgICAgICAgPEtleSBhbmRyb2lkOmNvZGVzPSItMiIgYW5kcm9pZDprZXlMYWJlbD0iQHN0cmluZy9sYWJlbF9zeW1ib2xfa2V5IiAKKyAgICAgICAgICAgICAgICBhbmRyb2lkOnBvcHVwS2V5Ym9hcmQ9IkB4bWwva2JkX3BvcHVwX3RlbXBsYXRlIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6cG9wdXBDaGFyYWN0ZXJzPSJfIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6a2V5V2lkdGg9IjIwJXAiIGFuZHJvaWQ6a2V5RWRnZUZsYWdzPSJsZWZ0Ii8+CisgICAgICAgIDxLZXkgYW5kcm9pZDpjb2Rlcz0iQGludGVnZXIva2V5X2YxIiBhbmRyb2lkOmtleUljb249IkBkcmF3YWJsZS9zeW1fa2V5Ym9hcmRfZ2xvYmUiCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlXaWR0aD0iMTAlcCIvPgorICAgICAgICA8S2V5IGFuZHJvaWQ6Y29kZXM9IjMyIiBhbmRyb2lkOmtleUljb249IkBkcmF3YWJsZS9zeW1fa2V5Ym9hcmRfc3BhY2UiCisgICAgICAgICAgICAgICAgYW5kcm9pZDppY29uUHJldmlldz0iQGRyYXdhYmxlL3N5bV9rZXlib2FyZF9mZWVkYmFja19zcGFjZSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmtleVdpZHRoPSI0MCVwIiBhbmRyb2lkOmlzUmVwZWF0YWJsZT0idHJ1ZSIvPgorICAgICAgICA8S2V5IGFuZHJvaWQ6Y29kZXM9IjQ2IiBhbmRyb2lkOmtleUxhYmVsPSIuIiBhbmRyb2lkOnBvcHVwS2V5Ym9hcmQ9IkB4bWwvcG9wdXBfcHVuY3R1YXRpb24iIAorICAgICAgICAgICAgICAgIGFuZHJvaWQ6a2V5V2lkdGg9IjEwJXAiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmNvZGVzPSIxMCIgYW5kcm9pZDprZXlJY29uPSJAZHJhd2FibGUvc3ltX2tleWJvYXJkX3JldHVybiIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmljb25QcmV2aWV3PSJAZHJhd2FibGUvc3ltX2tleWJvYXJkX2ZlZWRiYWNrX3JldHVybiIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmtleVdpZHRoPSIyMCVwIiBhbmRyb2lkOmtleUVkZ2VGbGFncz0icmlnaHQiLz4KKyAgICA8L1Jvdz4KKworICAgIDxSb3cgYW5kcm9pZDprZXlib2FyZE1vZGU9IkAraWQvbW9kZV91cmwiIGFuZHJvaWQ6cm93RWRnZUZsYWdzPSJib3R0b20iPgorICAgICAgICA8S2V5IGFuZHJvaWQ6Y29kZXM9Ii0yIiBhbmRyb2lkOmtleUxhYmVsPSJAc3RyaW5nL2xhYmVsX3N5bWJvbF9rZXkiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpwb3B1cEtleWJvYXJkPSJAeG1sL2tiZF9wb3B1cF90ZW1wbGF0ZSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOnBvcHVwQ2hhcmFjdGVycz0iXyIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmtleVdpZHRoPSIyMCVwIiBhbmRyb2lkOmtleUVkZ2VGbGFncz0ibGVmdCIvPgorICAgICAgICA8S2V5IGFuZHJvaWQ6a2V5TGFiZWw9Ii8iIGFuZHJvaWQ6a2V5V2lkdGg9IjEwJXAiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmNvZGVzPSIzMiIgYW5kcm9pZDprZXlJY29uPSJAZHJhd2FibGUvc3ltX2tleWJvYXJkX3NwYWNlIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6aWNvblByZXZpZXc9IkBkcmF3YWJsZS9zeW1fa2V5Ym9hcmRfZmVlZGJhY2tfc3BhY2UiCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlXaWR0aD0iNDAlcCIgYW5kcm9pZDppc1JlcGVhdGFibGU9InRydWUiLz4KKyAgICAgICAgPCEtLUtleSBhbmRyb2lkOmtleUxhYmVsPSJAc3RyaW5nL3BvcHVsYXJfZG9tYWluXzAiCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlPdXRwdXRUZXh0PSJAc3RyaW5nL3BvcHVsYXJfZG9tYWluXzAiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpwb3B1cEtleWJvYXJkPSJAeG1sL3BvcHVwX2RvbWFpbnMiCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlXaWR0aD0iMjAlcCIvLS0+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0iLiIgYW5kcm9pZDpwb3B1cEtleWJvYXJkPSJAeG1sL3BvcHVwX3B1bmN0dWF0aW9uIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6a2V5V2lkdGg9IjEwJXAiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmNvZGVzPSIxMCIgYW5kcm9pZDprZXlJY29uPSJAZHJhd2FibGUvc3ltX2tleWJvYXJkX3JldHVybiIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmljb25QcmV2aWV3PSJAZHJhd2FibGUvc3ltX2tleWJvYXJkX2ZlZWRiYWNrX3JldHVybiIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmtleVdpZHRoPSIyMCVwIiBhbmRyb2lkOmtleUVkZ2VGbGFncz0icmlnaHQiLz4KKyAgICA8L1Jvdz4KKworICAgIDxSb3cgYW5kcm9pZDprZXlib2FyZE1vZGU9IkAraWQvbW9kZV9lbWFpbCIgYW5kcm9pZDpyb3dFZGdlRmxhZ3M9ImJvdHRvbSI+CisgICAgICAgIDxLZXkgYW5kcm9pZDpjb2Rlcz0iLTIiIGFuZHJvaWQ6a2V5TGFiZWw9IkBzdHJpbmcvbGFiZWxfc3ltYm9sX2tleSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOnBvcHVwS2V5Ym9hcmQ9IkB4bWwva2JkX3BvcHVwX3RlbXBsYXRlIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6cG9wdXBDaGFyYWN0ZXJzPSJfIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6a2V5V2lkdGg9IjIwJXAiIGFuZHJvaWQ6a2V5RWRnZUZsYWdzPSJsZWZ0Ii8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0iXEAiIGFuZHJvaWQ6a2V5V2lkdGg9IjEwJXAiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmNvZGVzPSIzMiIgYW5kcm9pZDprZXlJY29uPSJAZHJhd2FibGUvc3ltX2tleWJvYXJkX3NwYWNlIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6aWNvblByZXZpZXc9IkBkcmF3YWJsZS9zeW1fa2V5Ym9hcmRfZmVlZGJhY2tfc3BhY2UiCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlXaWR0aD0iNDAlcCIgYW5kcm9pZDppc1JlcGVhdGFibGU9InRydWUiLz4KKyAgICAgICAgPCEtLUtleSBhbmRyb2lkOmtleUxhYmVsPSJAc3RyaW5nL3BvcHVsYXJfZG9tYWluXzAiCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlPdXRwdXRUZXh0PSJAc3RyaW5nL3BvcHVsYXJfZG9tYWluXzAiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpwb3B1cEtleWJvYXJkPSJAeG1sL3BvcHVwX2RvbWFpbnMiCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlXaWR0aD0iMjAlcCIvLS0+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0iLiIgYW5kcm9pZDpwb3B1cEtleWJvYXJkPSJAeG1sL3BvcHVwX3B1bmN0dWF0aW9uIi8+CisgICAgICAgIDxLZXkgYW5kcm9pZDpjb2Rlcz0iMTAiIGFuZHJvaWQ6a2V5SWNvbj0iQGRyYXdhYmxlL3N5bV9rZXlib2FyZF9yZXR1cm4iCisgICAgICAgICAgICAgICAgYW5kcm9pZDppY29uUHJldmlldz0iQGRyYXdhYmxlL3N5bV9rZXlib2FyZF9mZWVkYmFja19yZXR1cm4iCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlXaWR0aD0iMjAlcCIgYW5kcm9pZDprZXlFZGdlRmxhZ3M9InJpZ2h0Ii8+CisgICAgPC9Sb3c+CisKKyAgICA8Um93IGFuZHJvaWQ6a2V5Ym9hcmRNb2RlPSJAK2lkL21vZGVfaW0iIGFuZHJvaWQ6cm93RWRnZUZsYWdzPSJib3R0b20iPgorICAgICAgICA8S2V5IGFuZHJvaWQ6Y29kZXM9Ii0yIiBhbmRyb2lkOmtleUxhYmVsPSJAc3RyaW5nL2xhYmVsX3N5bWJvbF9rZXkiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpwb3B1cEtleWJvYXJkPSJAeG1sL2tiZF9wb3B1cF90ZW1wbGF0ZSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOnBvcHVwQ2hhcmFjdGVycz0iXyIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmtleVdpZHRoPSIyMCVwIiBhbmRyb2lkOmtleUVkZ2VGbGFncz0ibGVmdCIvPgorICAgICAgICA8S2V5IGFuZHJvaWQ6Y29kZXM9IkBpbnRlZ2VyL2tleV9mMSIgYW5kcm9pZDprZXlJY29uPSJAZHJhd2FibGUvc3ltX2tleWJvYXJkX2dsb2JlIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6a2V5V2lkdGg9IjEwJXAiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmNvZGVzPSIzMiIgYW5kcm9pZDprZXlJY29uPSJAZHJhd2FibGUvc3ltX2tleWJvYXJkX3NwYWNlIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6aWNvblByZXZpZXc9IkBkcmF3YWJsZS9zeW1fa2V5Ym9hcmRfZmVlZGJhY2tfc3BhY2UiCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlXaWR0aD0iNDAlcCIgYW5kcm9pZDppc1JlcGVhdGFibGU9InRydWUiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmNvZGVzPSI0NiIgYW5kcm9pZDprZXlMYWJlbD0iLiIgYW5kcm9pZDpwb3B1cEtleWJvYXJkPSJAeG1sL3BvcHVwX3B1bmN0dWF0aW9uIiAKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmtleVdpZHRoPSIxMCVwIi8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0iOi0pIiBhbmRyb2lkOmtleU91dHB1dFRleHQ9IjotKSAiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpwb3B1cEtleWJvYXJkPSJAeG1sL3BvcHVwX3NtaWxleXMiCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlXaWR0aD0iMjAlcCIgYW5kcm9pZDprZXlFZGdlRmxhZ3M9InJpZ2h0Ii8+CisgICAgPC9Sb3c+CisKKyAgICA8Um93IGFuZHJvaWQ6a2V5Ym9hcmRNb2RlPSJAK2lkL21vZGVfd2ViZW50cnkiIGFuZHJvaWQ6cm93RWRnZUZsYWdzPSJib3R0b20iPgorICAgICAgICA8S2V5IGFuZHJvaWQ6Y29kZXM9Ii0yIiBhbmRyb2lkOmtleUxhYmVsPSJAc3RyaW5nL2xhYmVsX3N5bWJvbF9rZXkiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpwb3B1cEtleWJvYXJkPSJAeG1sL2tiZF9wb3B1cF90ZW1wbGF0ZSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOnBvcHVwQ2hhcmFjdGVycz0iXyIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmtleVdpZHRoPSIyMCVwIiBhbmRyb2lkOmtleUVkZ2VGbGFncz0ibGVmdCIvPgorICAgICAgICA8S2V5IGFuZHJvaWQ6Y29kZXM9IkBpbnRlZ2VyL2tleV9mMSIgYW5kcm9pZDprZXlJY29uPSJAZHJhd2FibGUvc3ltX2tleWJvYXJkX2dsb2JlIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6a2V5V2lkdGg9IjEwJXAiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmNvZGVzPSIzMiIgYW5kcm9pZDprZXlJY29uPSJAZHJhd2FibGUvc3ltX2tleWJvYXJkX3NwYWNlIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6aWNvblByZXZpZXc9IkBkcmF3YWJsZS9zeW1fa2V5Ym9hcmRfZmVlZGJhY2tfc3BhY2UiCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlXaWR0aD0iMjAlcCIgYW5kcm9pZDppc1JlcGVhdGFibGU9InRydWUiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmNvZGVzPSI5IiBhbmRyb2lkOmtleUljb249IkBkcmF3YWJsZS9zeW1fa2V5Ym9hcmRfdGFiIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6aWNvblByZXZpZXc9IkBkcmF3YWJsZS9zeW1fa2V5Ym9hcmRfZmVlZGJhY2tfdGFiIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6a2V5V2lkdGg9IjIwJXAiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSIuIiBhbmRyb2lkOnBvcHVwS2V5Ym9hcmQ9IkB4bWwvcG9wdXBfcHVuY3R1YXRpb24iLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmNvZGVzPSIxMCIgYW5kcm9pZDprZXlJY29uPSJAZHJhd2FibGUvc3ltX2tleWJvYXJkX3JldHVybiIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmljb25QcmV2aWV3PSJAZHJhd2FibGUvc3ltX2tleWJvYXJkX2ZlZWRiYWNrX3JldHVybiIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmtleVdpZHRoPSIyMCVwIiBhbmRyb2lkOmtleUVkZ2VGbGFncz0icmlnaHQiLz4KKyAgICA8L1Jvdz4KKzwvS2V5Ym9hcmQ+CisgICAgCmRpZmYgLS1naXQgYS9qYXZhL3Jlcy94bWwtcnUva2JkX3F3ZXJ0eS54bWwgYi9qYXZhL3Jlcy94bWwtcnUva2JkX3F3ZXJ0eS54bWwKaW5kZXggY2JiNTE4Zi4uOTc3M2EzMCAxMDA3NTUKLS0tIGEvamF2YS9yZXMveG1sLXJ1L2tiZF9xd2VydHkueG1sCisrKyBiL2phdmEvcmVzL3htbC1ydS9rYmRfcXdlcnR5LnhtbApAQCAtNzAsNyArNzAsOSBAQAogICAgICAgICA8S2V5IGFuZHJvaWQ6a2V5TGFiZWw9ItC8Ii8+CiAgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i0LgiLz4KICAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLRgiIvPgotICAgICAgICA8S2V5IGFuZHJvaWQ6a2V5TGFiZWw9ItGMIi8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i0YwiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpwb3B1cEtleWJvYXJkPSJAeG1sL2tiZF9wb3B1cF90ZW1wbGF0ZSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOnBvcHVwQ2hhcmFjdGVycz0i0YoiIC8+CiAgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i0LEiLz4KICAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLRjiIvPgogICAgICAgICA8S2V5IGFuZHJvaWQ6Y29kZXM9Ii01IiBhbmRyb2lkOmtleUljb249IkBkcmF3YWJsZS9zeW1fa2V5Ym9hcmRfZGVsZXRlIgpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vQmluYXJ5RGljdGlvbmFyeS5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vQmluYXJ5RGljdGlvbmFyeS5qYXZhCmluZGV4IDg3ZGU5NGIuLjY0NzNmNDUgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0JpbmFyeURpY3Rpb25hcnkuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9CaW5hcnlEaWN0aW9uYXJ5LmphdmEKQEAgLTE2LDYgKzE2LDExIEBACiAKIHBhY2thZ2UgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW47CiAKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5uaW8uQnl0ZUJ1ZmZlcjsKK2ltcG9ydCBqYXZhLm5pby5CeXRlT3JkZXI7CitpbXBvcnQgamF2YS5uaW8uY2hhbm5lbHMuQ2hhbm5lbHM7CiBpbXBvcnQgamF2YS51dGlsLkFycmF5czsKIAogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwpAQCAtMjcsNiArMzIsNyBAQAogICovCiBwdWJsaWMgY2xhc3MgQmluYXJ5RGljdGlvbmFyeSBleHRlbmRzIERpY3Rpb25hcnkgewogCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJCaW5hcnlEaWN0aW9uYXJ5IjsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNQVhfV09SRF9MRU5HVEggPSA0ODsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUFYX0FMVEVSTkFUSVZFUyA9IDE2OwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNQVhfV09SRFMgPSAxNjsKQEAgLTM1LDEwICs0MSwxMyBAQAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gRU5BQkxFX01JU1NFRF9DSEFSQUNURVJTID0gdHJ1ZTsKIAogICAgIHByaXZhdGUgaW50IG1OYXRpdmVEaWN0OwotICAgIHByaXZhdGUgaW50IG1EaWN0TGVuZ3RoOyAvLyBUaGlzIHZhbHVlIGlzIHNldCBmcm9tIG5hdGl2ZSBjb2RlLCBkb24ndCBjaGFuZ2UgdGhlIG5hbWUhISEhCisgICAgcHJpdmF0ZSBpbnQgbURpY3RMZW5ndGg7CiAgICAgcHJpdmF0ZSBpbnRbXSBtSW5wdXRDb2RlcyA9IG5ldyBpbnRbTUFYX1dPUkRfTEVOR1RIICogTUFYX0FMVEVSTkFUSVZFU107CiAgICAgcHJpdmF0ZSBjaGFyW10gbU91dHB1dENoYXJzID0gbmV3IGNoYXJbTUFYX1dPUkRfTEVOR1RIICogTUFYX1dPUkRTXTsKICAgICBwcml2YXRlIGludFtdIG1GcmVxdWVuY2llcyA9IG5ldyBpbnRbTUFYX1dPUkRTXTsKKyAgICAvLyBLZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBuYXRpdmUgZGljdCBkaXJlY3QgYnVmZmVyIGluIEphdmEgdG8gYXZvaWQKKyAgICAvLyB1bmV4cGVjdGVkIGRlYWxsb2NhdGlvbiBvZiB0aGUgZGlyZWN0IGJ1ZmZlci4KKyAgICBwcml2YXRlIEJ5dGVCdWZmZXIgbU5hdGl2ZURpY3REaXJlY3RCdWZmZXI7CiAKICAgICBzdGF0aWMgewogICAgICAgICB0cnkgewpAQCAtNTksOCArNjgsMjcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHByaXZhdGUgbmF0aXZlIGludCBvcGVuTmF0aXZlKEFzc2V0TWFuYWdlciBhbSwgU3RyaW5nIHJlc291cmNlUGF0aCwgaW50IHR5cGVkTGV0dGVyTXVsdGlwbGllciwKLSAgICAgICAgICAgIGludCBmdWxsV29yZE11bHRpcGxpZXIpOworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIGRpY3Rpb25hcnkgZnJvbSBhIGJ5dGUgYnVmZmVyLiBUaGlzIGlzIHVzZWQgZm9yIHRlc3RpbmcuCisgICAgICogQHBhcmFtIGNvbnRleHQgYXBwbGljYXRpb24gY29udGV4dCBmb3IgcmVhZGluZyByZXNvdXJjZXMKKyAgICAgKiBAcGFyYW0gcmVzSWQgdGhlIHJlc291cmNlIGNvbnRhaW5pbmcgdGhlIHJhdyBiaW5hcnkgZGljdGlvbmFyeQorICAgICAqLworICAgIHB1YmxpYyBCaW5hcnlEaWN0aW9uYXJ5KENvbnRleHQgY29udGV4dCwgQnl0ZUJ1ZmZlciBieXRlQnVmZmVyKSB7CisgICAgICAgIGlmIChieXRlQnVmZmVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmIChieXRlQnVmZmVyLmlzRGlyZWN0KCkpIHsKKyAgICAgICAgICAgICAgICBtTmF0aXZlRGljdERpcmVjdEJ1ZmZlciA9IGJ5dGVCdWZmZXI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1OYXRpdmVEaWN0RGlyZWN0QnVmZmVyID0gQnl0ZUJ1ZmZlci5hbGxvY2F0ZURpcmVjdChieXRlQnVmZmVyLmNhcGFjaXR5KCkpOworICAgICAgICAgICAgICAgIGJ5dGVCdWZmZXIucmV3aW5kKCk7CisgICAgICAgICAgICAgICAgbU5hdGl2ZURpY3REaXJlY3RCdWZmZXIucHV0KGJ5dGVCdWZmZXIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbURpY3RMZW5ndGggPSBieXRlQnVmZmVyLmNhcGFjaXR5KCk7CisgICAgICAgICAgICBtTmF0aXZlRGljdCA9IG9wZW5OYXRpdmUobU5hdGl2ZURpY3REaXJlY3RCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgIFRZUEVEX0xFVFRFUl9NVUxUSVBMSUVSLCBGVUxMX1dPUkRfRlJFUV9NVUxUSVBMSUVSKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgbmF0aXZlIGludCBvcGVuTmF0aXZlKEJ5dGVCdWZmZXIgYmIsIGludCB0eXBlZExldHRlck11bHRpcGxpZXIsIGludCBmdWxsV29yZE11bHRpcGxpZXIpOwogICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgY2xvc2VOYXRpdmUoaW50IGRpY3QpOwogICAgIHByaXZhdGUgbmF0aXZlIGJvb2xlYW4gaXNWYWxpZFdvcmROYXRpdmUoaW50IG5hdGl2ZURhdGEsIGNoYXJbXSB3b3JkLCBpbnQgd29yZExlbmd0aCk7CiAgICAgcHJpdmF0ZSBuYXRpdmUgaW50IGdldFN1Z2dlc3Rpb25zTmF0aXZlKGludCBkaWN0LCBpbnRbXSBpbnB1dENvZGVzLCBpbnQgY29kZXNTaXplLCAKQEAgLTY5LDkgKzk3LDI4IEBACiAgICAgICAgICAgICBpbnRbXSBuZXh0TGV0dGVyc0ZyZXF1ZW5jaWVzLCBpbnQgbmV4dExldHRlcnNTaXplKTsKIAogICAgIHByaXZhdGUgZmluYWwgdm9pZCBsb2FkRGljdGlvbmFyeShDb250ZXh0IGNvbnRleHQsIGludCByZXNJZCkgewotICAgICAgICBBc3NldE1hbmFnZXIgYW0gPSBjb250ZXh0LmdldFJlc291cmNlcygpLmdldEFzc2V0cygpOwotICAgICAgICBTdHJpbmcgYXNzZXROYW1lID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKS5nZXRTdHJpbmcocmVzSWQpOwotICAgICAgICBtTmF0aXZlRGljdCA9IG9wZW5OYXRpdmUoYW0sIGFzc2V0TmFtZSwgVFlQRURfTEVUVEVSX01VTFRJUExJRVIsIEZVTExfV09SRF9GUkVRX01VTFRJUExJRVIpOworICAgICAgICBJbnB1dFN0cmVhbSBpcyA9IGNvbnRleHQuZ2V0UmVzb3VyY2VzKCkub3BlblJhd1Jlc291cmNlKHJlc0lkKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGludCBhdmFpbCA9IGlzLmF2YWlsYWJsZSgpOworICAgICAgICAgICAgbU5hdGl2ZURpY3REaXJlY3RCdWZmZXIgPQorICAgICAgICAgICAgICAgICAgICBCeXRlQnVmZmVyLmFsbG9jYXRlRGlyZWN0KGF2YWlsKS5vcmRlcihCeXRlT3JkZXIubmF0aXZlT3JkZXIoKSk7CisgICAgICAgICAgICBpbnQgZ290ID0gQ2hhbm5lbHMubmV3Q2hhbm5lbChpcykucmVhZChtTmF0aXZlRGljdERpcmVjdEJ1ZmZlcik7CisgICAgICAgICAgICBpZiAoZ290ICE9IGF2YWlsKSB7CisgICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAiUmVhZCAiICsgZ290ICsgIiBieXRlcywgZXhwZWN0ZWQgIiArIGF2YWlsKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbU5hdGl2ZURpY3QgPSBvcGVuTmF0aXZlKG1OYXRpdmVEaWN0RGlyZWN0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgVFlQRURfTEVUVEVSX01VTFRJUExJRVIsIEZVTExfV09SRF9GUkVRX01VTFRJUExJRVIpOworICAgICAgICAgICAgICAgIG1EaWN0TGVuZ3RoID0gYXZhaWw7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIExvZy53KFRBRywgIk5vIGF2YWlsYWJsZSBzaXplIGZvciBiaW5hcnkgZGljdGlvbmFyeSIpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpcy5jbG9zZSgpOworICAgICAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIExvZy53KFRBRywgIkZhaWxlZCB0byBjbG9zZSBpbnB1dCBzdHJlYW0iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIEBPdmVycmlkZQpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vQ2FuZGlkYXRlVmlldy5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vQ2FuZGlkYXRlVmlldy5qYXZhCmluZGV4IDNhMTk5YmIuLmFlNDUwMDEgMTAwNzU1Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0NhbmRpZGF0ZVZpZXcuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9DYW5kaWRhdGVWaWV3LmphdmEKQEAgLTIxOSw3ICsyMTksNyBAQAogICAgICAgICAgICAgICAgICAgICBtRGl2aWRlci5nZXRJbnRyaW5zaWNIZWlnaHQoKSk7CiAgICAgICAgIH0KICAgICAgICAgaW50IHggPSAwOwotICAgICAgICBmaW5hbCBpbnQgY291bnQgPSBtU3VnZ2VzdGlvbnMuc2l6ZSgpOyAKKyAgICAgICAgZmluYWwgaW50IGNvdW50ID0gTWF0aC5taW4obVN1Z2dlc3Rpb25zLnNpemUoKSwgTUFYX1NVR0dFU1RJT05TKTsKICAgICAgICAgZmluYWwgaW50IHdpZHRoID0gZ2V0V2lkdGgoKTsKICAgICAgICAgZmluYWwgUmVjdCBiZ1BhZGRpbmcgPSBtQmdQYWRkaW5nOwogICAgICAgICBmaW5hbCBQYWludCBwYWludCA9IG1QYWludDsKQEAgLTMzNSw3ICszMzUsNyBAQAogCiAgICAgcHVibGljIHZvaWQgc2Nyb2xsUHJldigpIHsKICAgICAgICAgaW50IGkgPSAwOwotICAgICAgICBmaW5hbCBpbnQgY291bnQgPSBtU3VnZ2VzdGlvbnMuc2l6ZSgpOworICAgICAgICBmaW5hbCBpbnQgY291bnQgPSBNYXRoLm1pbihtU3VnZ2VzdGlvbnMuc2l6ZSgpLCBNQVhfU1VHR0VTVElPTlMpOwogICAgICAgICBpbnQgZmlyc3RJdGVtID0gMDsgLy8gQWN0dWFsbHkganVzdCBiZWZvcmUgdGhlIGZpcnN0IGl0ZW0sIGlmIGF0IHRoZSBib3VuZGFyeQogICAgICAgICB3aGlsZSAoaSA8IGNvdW50KSB7CiAgICAgICAgICAgICBpZiAobVdvcmRYW2ldIDwgZ2V0U2Nyb2xsWCgpIApAQCAtMzU0LDcgKzM1NCw3IEBACiAgICAgICAgIGludCBpID0gMDsKICAgICAgICAgaW50IHNjcm9sbFggPSBnZXRTY3JvbGxYKCk7CiAgICAgICAgIGludCB0YXJnZXRYID0gc2Nyb2xsWDsKLSAgICAgICAgZmluYWwgaW50IGNvdW50ID0gbVN1Z2dlc3Rpb25zLnNpemUoKTsKKyAgICAgICAgZmluYWwgaW50IGNvdW50ID0gTWF0aC5taW4obVN1Z2dlc3Rpb25zLnNpemUoKSwgTUFYX1NVR0dFU1RJT05TKTsKICAgICAgICAgaW50IHJpZ2h0RWRnZSA9IHNjcm9sbFggKyBnZXRXaWR0aCgpOwogICAgICAgICB3aGlsZSAoaSA8IGNvdW50KSB7CiAgICAgICAgICAgICBpZiAobVdvcmRYW2ldIDw9IHJpZ2h0RWRnZSAmJgpAQCAtNDQ3LDI1ICs0NDcsNiBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICAKLSAgICAvKioKLSAgICAgKiBGb3IgZmxpY2sgdGhyb3VnaCBmcm9tIGtleWJvYXJkLCBjYWxsIHRoaXMgbWV0aG9kIHdpdGggdGhlIHggY29vcmRpbmF0ZSBvZiB0aGUgZmxpY2sgCi0gICAgICogZ2VzdHVyZS4KLSAgICAgKiBAcGFyYW0geAotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHRha2VTdWdnZXN0aW9uQXQoZmxvYXQgeCkgewotICAgICAgICBtVG91Y2hYID0gKGludCkgeDsKLSAgICAgICAgLy8gVG8gZGV0ZWN0IGNhbmRpZGF0ZQotICAgICAgICBvbkRyYXcobnVsbCk7Ci0gICAgICAgIGlmIChtU2VsZWN0ZWRTdHJpbmcgIT0gbnVsbCkgewotICAgICAgICAgICAgaWYgKCFtU2hvd2luZ0NvbXBsZXRpb25zKSB7Ci0gICAgICAgICAgICAgICAgVGV4dEVudHJ5U3RhdGUuYWNjZXB0ZWRTdWdnZXN0aW9uKG1TdWdnZXN0aW9ucy5nZXQoMCksIG1TZWxlY3RlZFN0cmluZyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtU2VydmljZS5waWNrU3VnZ2VzdGlvbk1hbnVhbGx5KG1TZWxlY3RlZEluZGV4LCBtU2VsZWN0ZWRTdHJpbmcpOwotICAgICAgICB9Ci0gICAgICAgIGludmFsaWRhdGUoKTsKLSAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2VEZWxheWVkKG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoTVNHX1JFTU9WRV9USFJPVUdIX1BSRVZJRVcpLCAyMDApOwotICAgIH0KIAogICAgIHByaXZhdGUgdm9pZCBoaWRlUHJldmlldygpIHsKICAgICAgICAgbUN1cnJlbnRXb3JkSW5kZXggPSBPVVRfT0ZfQk9VTkRTOwpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vTGF0aW5JTUUuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0xhdGluSU1FLmphdmEKaW5kZXggYjRlZDgwYy4uZGIwYTgyMiAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vTGF0aW5JTUUuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9MYXRpbklNRS5qYXZhCkBAIC00MCw5ICs0MCw5IEBACiBpbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1DbG9jazsKIGltcG9ydCBhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZU1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC5zcGVlY2guU3BlZWNoUmVjb2duaXplcjsKLWltcG9ydCBhbmRyb2lkLnRleHQuQXV0b1RleHQ7CiBpbXBvcnQgYW5kcm9pZC50ZXh0LkNsaXBib2FyZE1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC50ZXh0LlRleHRVdGlsczsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuRGlzcGxheU1ldHJpY3M7CiBpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKIGltcG9ydCBhbmRyb2lkLnV0aWwuUHJpbnRXcml0ZXJQcmludGVyOwogaW1wb3J0IGFuZHJvaWQudXRpbC5QcmludGVyOwpAQCAtNzgsNiArNzgsNyBAQAogICAgICAgICBWb2ljZUlucHV0LlVpTGlzdGVuZXIsCiAgICAgICAgIFNoYXJlZFByZWZlcmVuY2VzLk9uU2hhcmVkUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVyIHsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIkxhdGluSU1FIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIFBFUkZfREVCVUcgPSBmYWxzZTsKICAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVRyA9IGZhbHNlOwogICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIFRSQUNFID0gZmFsc2U7CiAgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gVk9JQ0VfSU5TVEFMTEVEID0gdHJ1ZTsKQEAgLTE4OSw3ICsxOTAsNiBAQAogICAgIHByaXZhdGUgYm9vbGVhbiBtQXV0b0NvcnJlY3RPbjsKICAgICBwcml2YXRlIGJvb2xlYW4gbUNhcHNMb2NrOwogICAgIHByaXZhdGUgYm9vbGVhbiBtUGFzc3dvcmRUZXh0OwotICAgIHByaXZhdGUgYm9vbGVhbiBtRW1haWxUZXh0OwogICAgIHByaXZhdGUgYm9vbGVhbiBtVmlicmF0ZU9uOwogICAgIHByaXZhdGUgYm9vbGVhbiBtU291bmRPbjsKICAgICBwcml2YXRlIGJvb2xlYW4gbUF1dG9DYXA7CkBAIC00NTYsNyArNDU2LDYgQEAKICAgICAgICAgbUNvbXBsZXRpb25PbiA9IGZhbHNlOwogICAgICAgICBtQ29tcGxldGlvbnMgPSBudWxsOwogICAgICAgICBtQ2Fwc0xvY2sgPSBmYWxzZTsKLSAgICAgICAgbUVtYWlsVGV4dCA9IGZhbHNlOwogICAgICAgICBtRW50ZXJlZFRleHQgPSBudWxsOwogCiAgICAgICAgIHN3aXRjaCAoYXR0cmlidXRlLmlucHV0VHlwZSAmIEVkaXRvckluZm8uVFlQRV9NQVNLX0NMQVNTKSB7CkBAIC00NzksOSArNDc4LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhdGlvbiA9PSBFZGl0b3JJbmZvLlRZUEVfVEVYVF9WQVJJQVRJT05fVklTSUJMRV9QQVNTV09SRCApIHsKICAgICAgICAgICAgICAgICAgICAgbVByZWRpY3Rpb25PbiA9IGZhbHNlOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAodmFyaWF0aW9uID09IEVkaXRvckluZm8uVFlQRV9URVhUX1ZBUklBVElPTl9FTUFJTF9BRERSRVNTKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1FbWFpbFRleHQgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAodmFyaWF0aW9uID09IEVkaXRvckluZm8uVFlQRV9URVhUX1ZBUklBVElPTl9FTUFJTF9BRERSRVNTCiAgICAgICAgICAgICAgICAgICAgICAgICB8fCB2YXJpYXRpb24gPT0gRWRpdG9ySW5mby5UWVBFX1RFWFRfVkFSSUFUSU9OX1BFUlNPTl9OQU1FKSB7CiAgICAgICAgICAgICAgICAgICAgIG1BdXRvU3BhY2UgPSBmYWxzZTsKQEAgLTY4MSw3ICs2NzcsNyBAQAogCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgb25EaXNwbGF5Q29tcGxldGlvbnMoQ29tcGxldGlvbkluZm9bXSBjb21wbGV0aW9ucykgewotICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgaWYgKERFQlVHKSB7CiAgICAgICAgICAgICBMb2cuaSgiZm9vIiwgIlJlY2VpdmVkIGNvbXBsZXRpb25zOiIpOwogICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPChjb21wbGV0aW9ucyAhPSBudWxsID8gY29tcGxldGlvbnMubGVuZ3RoIDogMCk7IGkrKykgewogICAgICAgICAgICAgICAgIExvZy5pKCJmb28iLCAiICAjIiArIGkgKyAiOiAiICsgY29tcGxldGlvbnNbaV0pOwpAQCAtNzI0LDYgKzcyMCwxOSBAQAogICAgIH0KIAogICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIG9uRXZhbHVhdGVGdWxsc2NyZWVuTW9kZSgpIHsKKyAgICAgICAgRGlzcGxheU1ldHJpY3MgZG0gPSBnZXRSZXNvdXJjZXMoKS5nZXREaXNwbGF5TWV0cmljcygpOworICAgICAgICBmbG9hdCBkaXNwbGF5SGVpZ2h0ID0gZG0uaGVpZ2h0UGl4ZWxzOworICAgICAgICAvLyBJZiB0aGUgZGlzcGxheSBpcyBtb3JlIHRoYW4gWCBpbmNoZXMgaGlnaCwgZG9uJ3QgZ28gdG8gZnVsbHNjcmVlbiBtb2RlCisgICAgICAgIGZsb2F0IGRpbWVuID0gZ2V0UmVzb3VyY2VzKCkuZ2V0RGltZW5zaW9uKFIuZGltZW4ubWF4X2hlaWdodF9mb3JfZnVsbHNjcmVlbik7CisgICAgICAgIGlmIChkaXNwbGF5SGVpZ2h0ID4gZGltZW4pIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBzdXBlci5vbkV2YWx1YXRlRnVsbHNjcmVlbk1vZGUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBib29sZWFuIG9uS2V5RG93bihpbnQga2V5Q29kZSwgS2V5RXZlbnQgZXZlbnQpIHsKICAgICAgICAgc3dpdGNoIChrZXlDb2RlKSB7CiAgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfQkFDSzoKQEAgLTExMjIsNyArMTEzMSw3IEBACiAgICAgICAgICAgICBzZW5kS2V5Q2hhcigoY2hhcilwcmltYXJ5Q29kZSk7CiAgICAgICAgIH0KICAgICAgICAgdXBkYXRlU2hpZnRLZXlTdGF0ZShnZXRDdXJyZW50SW5wdXRFZGl0b3JJbmZvKCkpOwotICAgICAgICBtZWFzdXJlQ3BzKCk7CisgICAgICAgIGlmIChMYXRpbklNRS5QRVJGX0RFQlVHKSBtZWFzdXJlQ3BzKCk7CiAgICAgICAgIFRleHRFbnRyeVN0YXRlLnR5cGVkQ2hhcmFjdGVyKChjaGFyKSBwcmltYXJ5Q29kZSwgaXNXb3JkU2VwYXJhdG9yKHByaW1hcnlDb2RlKSk7CiAgICAgfQogCkBAIC0xODU4LDcgKzE4NjcsNyBAQAogICAgICAgICBsYXVuY2hTZXR0aW5ncyhMYXRpbklNRVNldHRpbmdzLmNsYXNzKTsKICAgICB9CiAKLSAgICBwcm90ZWN0ZWQgdm9pZCBsYXVuY2hTZXR0aW5ncyhDbGFzcyBzZXR0aW5nc0NsYXNzKSB7CisgICAgcHJvdGVjdGVkIHZvaWQgbGF1bmNoU2V0dGluZ3MoQ2xhc3M8TGF0aW5JTUVTZXR0aW5ncz4gc2V0dGluZ3NDbGFzcykgewogICAgICAgICBoYW5kbGVDbG9zZSgpOwogICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudCgpOwogICAgICAgICBpbnRlbnQuc2V0Q2xhc3MoTGF0aW5JTUUudGhpcywgc2V0dGluZ3NDbGFzcyk7CkBAIC0xOTk1LDcgKzIwMDQsNiBAQAogCiAgICAgLy8gQ2hhcmFjdGVycyBwZXIgc2Vjb25kIG1lYXN1cmVtZW50CiAKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIFBFUkZfREVCVUcgPSBmYWxzZTsKICAgICBwcml2YXRlIGxvbmcgbUxhc3RDcHNUaW1lOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDUFNfQlVGRkVSX1NJWkUgPSAxNjsKICAgICBwcml2YXRlIGxvbmdbXSBtQ3BzSW50ZXJ2YWxzID0gbmV3IGxvbmdbQ1BTX0JVRkZFUl9TSVpFXTsKQEAgLTIwMDMsNyArMjAxMSw2IEBACiAgICAgcHJpdmF0ZSBib29sZWFuIG1JbnB1dFR5cGVOb0F1dG9Db3JyZWN0OwogCiAgICAgcHJpdmF0ZSB2b2lkIG1lYXN1cmVDcHMoKSB7Ci0gICAgICAgIGlmICghTGF0aW5JTUUuUEVSRl9ERUJVRykgcmV0dXJuOwogICAgICAgICBsb25nIG5vdyA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwogICAgICAgICBpZiAobUxhc3RDcHNUaW1lID09IDApIG1MYXN0Q3BzVGltZSA9IG5vdyAtIDEwMDsgLy8gSW5pdGlhbAogICAgICAgICBtQ3BzSW50ZXJ2YWxzW21DcHNJbmRleF0gPSBub3cgLSBtTGFzdENwc1RpbWU7CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9MYXRpbktleWJvYXJkLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9MYXRpbktleWJvYXJkLmphdmEKaW5kZXggNmFlYTVkMS4uZWE2Yjc0ZSAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vTGF0aW5LZXlib2FyZC5qYXZhCisrKyBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0xhdGluS2V5Ym9hcmQuamF2YQpAQCAtNDcsNyArNDcsNiBAQAogICAgIHByaXZhdGUgRHJhd2FibGUgbVNoaWZ0TG9ja0ljb247CiAgICAgcHJpdmF0ZSBEcmF3YWJsZSBtU2hpZnRMb2NrUHJldmlld0ljb247CiAgICAgcHJpdmF0ZSBEcmF3YWJsZSBtT2xkU2hpZnRJY29uOwotICAgIHByaXZhdGUgRHJhd2FibGUgbU9sZFNoaWZ0UHJldmlld0ljb247CiAgICAgcHJpdmF0ZSBEcmF3YWJsZSBtU3BhY2VJY29uOwogICAgIHByaXZhdGUgRHJhd2FibGUgbVNwYWNlUHJldmlld0ljb247CiAgICAgcHJpdmF0ZSBEcmF3YWJsZSBtTWljSWNvbjsKQEAgLTY4LDcgKzY3LDYgQEAKICAgICBwcml2YXRlIExhbmd1YWdlU3dpdGNoZXIgbUxhbmd1YWdlU3dpdGNoZXI7CiAgICAgcHJpdmF0ZSBSZXNvdXJjZXMgbVJlczsKICAgICBwcml2YXRlIENvbnRleHQgbUNvbnRleHQ7Ci0gICAgcHJpdmF0ZSBpbnQgbU1vZGU7CiAgICAgLy8gV2hldGhlciB0aGlzIGtleWJvYXJkIGhhcyB2b2ljZSBpY29uIG9uIGl0CiAgICAgcHJpdmF0ZSBib29sZWFuIG1IYXNWb2ljZUJ1dHRvbjsKICAgICAvLyBXaGV0aGVyIHZvaWNlIGljb24gaXMgZW5hYmxlZCBhdCBhbGwKQEAgLTc3LDkgKzc1LDcgQEAKICAgICBwcml2YXRlIENoYXJTZXF1ZW5jZSBtMTIzTGFiZWw7CiAgICAgcHJpdmF0ZSBib29sZWFuIG1DdXJyZW50bHlJblNwYWNlOwogICAgIHByaXZhdGUgU2xpZGluZ0xvY2FsZURyYXdhYmxlIG1TbGlkaW5nTG9jYWxlSWNvbjsKLSAgICBwcml2YXRlIFJlY3QgbUJvdW5kcyA9IG5ldyBSZWN0KCk7CiAgICAgcHJpdmF0ZSBpbnRbXSBtUHJlZkxldHRlckZyZXF1ZW5jaWVzOwotICAgIHByaXZhdGUgYm9vbGVhbiBtUHJlZW1wdGl2ZUNvcnJlY3Rpb247CiAgICAgcHJpdmF0ZSBpbnQgbVByZWZMZXR0ZXI7CiAgICAgcHJpdmF0ZSBpbnQgbVByZWZMZXR0ZXJYOwogICAgIHByaXZhdGUgaW50IG1QcmVmTGV0dGVyWTsKQEAgLTEwNyw3ICsxMDMsNiBAQAogICAgICAgICBzdXBlcihjb250ZXh0LCB4bWxMYXlvdXRSZXNJZCwgbW9kZSk7CiAgICAgICAgIGZpbmFsIFJlc291cmNlcyByZXMgPSBjb250ZXh0LmdldFJlc291cmNlcygpOwogICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgIG1Nb2RlID0gbW9kZTsKICAgICAgICAgbVJlcyA9IHJlczsKICAgICAgICAgbVNoaWZ0TG9ja0ljb24gPSByZXMuZ2V0RHJhd2FibGUoUi5kcmF3YWJsZS5zeW1fa2V5Ym9hcmRfc2hpZnRfbG9ja2VkKTsKICAgICAgICAgbVNoaWZ0TG9ja1ByZXZpZXdJY29uID0gcmVzLmdldERyYXdhYmxlKFIuZHJhd2FibGUuc3ltX2tleWJvYXJkX2ZlZWRiYWNrX3NoaWZ0X2xvY2tlZCk7CkBAIC0yMjQsNyArMjE5LDYgQEAKICAgICAgICAgICAgICAgICAoKExhdGluS2V5KW1TaGlmdEtleSkuZW5hYmxlU2hpZnRMb2NrKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtT2xkU2hpZnRJY29uID0gbVNoaWZ0S2V5Lmljb247Ci0gICAgICAgICAgICBtT2xkU2hpZnRQcmV2aWV3SWNvbiA9IG1TaGlmdEtleS5pY29uUHJldmlldzsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzM4LDIxICszMzIsMTkgQEAKICAgICB9CiAKICAgICBwcml2YXRlIHZvaWQgZHJhd1NwYWNlQmFyKENhbnZhcyBjYW52YXMsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IG9wYWNpdHkpIHsKLSAgICAgICAgY2FudmFzLmRyYXdDb2xvcigweDAwMDAwMDAwLCBQb3J0ZXJEdWZmLk1vZGUuQ0xFQVIpOworICAgICAgICBjYW52YXMuZHJhd0NvbG9yKG1SZXMuZ2V0Q29sb3IoUi5jb2xvci5sYXRpbmtleWJvYXJkX3RyYW5zcGFyZW50KSwgUG9ydGVyRHVmZi5Nb2RlLkNMRUFSKTsKICAgICAgICAgUGFpbnQgcGFpbnQgPSBuZXcgUGFpbnQoKTsKICAgICAgICAgcGFpbnQuc2V0QW50aUFsaWFzKHRydWUpOwogICAgICAgICBwYWludC5zZXRBbHBoYShvcGFjaXR5KTsKICAgICAgICAgLy8gR2V0IHRoZSB0ZXh0IHNpemUgZnJvbSB0aGUgdGhlbWUKICAgICAgICAgcGFpbnQuc2V0VGV4dFNpemUoZ2V0VGV4dFNpemVGcm9tVGhlbWUoYW5kcm9pZC5SLnN0eWxlLlRleHRBcHBlYXJhbmNlX1NtYWxsLCAxNCkpOwogICAgICAgICBwYWludC5zZXRUZXh0QWxpZ24oQWxpZ24uQ0VOVEVSKTsKLSAgICAgICAgLy8vLyBEcmF3IGEgZHJvcCBzaGFkb3cgZm9yIHRoZSB0ZXh0Ci0gICAgICAgIC8vcGFpbnQuc2V0U2hhZG93TGF5ZXIoMmYsIDAsIDAsIDB4RkYwMDAwMDApOwogICAgICAgICBmaW5hbCBTdHJpbmcgbGFuZ3VhZ2UgPSBnZXRJbnB1dExhbmd1YWdlKG1TcGFjZUtleS53aWR0aCwgcGFpbnQpOwogICAgICAgICBmaW5hbCBpbnQgYXNjZW50ID0gKGludCkgLXBhaW50LmFzY2VudCgpOwotICAgICAgICBwYWludC5zZXRDb2xvcigweDgwMDAwMDAwKTsKKyAgICAgICAgcGFpbnQuc2V0Q29sb3IobVJlcy5nZXRDb2xvcihSLmNvbG9yLmxhdGlua2V5Ym9hcmRfYmFyX2xhbmd1YWdlX3NoYWRvdykpOwogICAgICAgICBjYW52YXMuZHJhd1RleHQobGFuZ3VhZ2UsCiAgICAgICAgICAgICAgICAgd2lkdGggLyAyLCBhc2NlbnQgLSAxLCBwYWludCk7Ci0gICAgICAgIHBhaW50LnNldENvbG9yKDB4RkY4MDgwODApOworICAgICAgICBwYWludC5zZXRDb2xvcihtUmVzLmdldENvbG9yKFIuY29sb3IubGF0aW5rZXlib2FyZF9iYXJfbGFuZ3VhZ2VfdGV4dCkpOwogICAgICAgICBjYW52YXMuZHJhd1RleHQobGFuZ3VhZ2UsCiAgICAgICAgICAgICAgICAgd2lkdGggLyAyLCBhc2NlbnQsIHBhaW50KTsKICAgICAgICAgLy8gUHV0IGFycm93cyBvbiBlaXRoZXIgc2lkZSBvZiB0aGUgdGV4dApAQCAtNTAzLDkgKzQ5NSwxMCBAQAogICAgICAgICAgICAgLy8gSGFuZGxlIHByZWZlcnJlZCBuZXh0IGxldHRlcgogICAgICAgICAgICAgZmluYWwgaW50W10gcHJlZiA9IG1QcmVmTGV0dGVyRnJlcXVlbmNpZXM7CiAgICAgICAgICAgICBpZiAobVByZWZMZXR0ZXIgPiAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHX1BSRUZFUlJFRF9MRVRURVIgJiYgbVByZWZMZXR0ZXIgPT0gY29kZQotICAgICAgICAgICAgICAgICAgICAgICAgJiYgIWtleS5pc0luc2lkZVN1cGVyKHgsIHkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIkNPUlJFQ1RFRCAhISEhISEiKTsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfUFJFRkVSUkVEX0xFVFRFUikgeworICAgICAgICAgICAgICAgICAgICBpZiAobVByZWZMZXR0ZXIgPT0gY29kZSAmJiAha2V5LmlzSW5zaWRlU3VwZXIoeCwgeSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIkNPUlJFQ1RFRCAhISEhISEiKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm4gbVByZWZMZXR0ZXIgPT0gY29kZTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC03MTgsNyArNzExLDcgQEAKICAgICAgICAgcHVibGljIHZvaWQgZHJhdyhDYW52YXMgY2FudmFzKSB7CiAgICAgICAgICAgICBjYW52YXMuc2F2ZSgpOwogICAgICAgICAgICAgaWYgKG1IaXRUaHJlc2hvbGQpIHsKLSAgICAgICAgICAgICAgICBtVGV4dFBhaW50LnNldENvbG9yKDB4RkYwMDAwMDApOworICAgICAgICAgICAgICAgIG1UZXh0UGFpbnQuc2V0Q29sb3IobVJlcy5nZXRDb2xvcihSLmNvbG9yLmxhdGlua2V5Ym9hcmRfdGV4dF9jb2xvcikpOwogICAgICAgICAgICAgICAgIGNhbnZhcy5jbGlwUmVjdCgwLCAwLCBtV2lkdGgsIG1IZWlnaHQpOwogICAgICAgICAgICAgICAgIGlmIChtQ3VycmVudExhbmd1YWdlID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgbUN1cnJlbnRMYW5ndWFnZSA9IGdldElucHV0TGFuZ3VhZ2UobVdpZHRoLCBtVGV4dFBhaW50KTsKZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0xhdGluS2V5Ym9hcmRWaWV3LmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9MYXRpbktleWJvYXJkVmlldy5qYXZhCmluZGV4IDc0ZmM0NzUuLjMyM2Y0YmYgMTAwNjQ0Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL0xhdGluS2V5Ym9hcmRWaWV3LmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vTGF0aW5LZXlib2FyZFZpZXcuamF2YQpAQCAtMjMsNyArMjMsNiBAQAogaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQ7CiBpbXBvcnQgYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuS2V5Ym9hcmQ7CiBpbXBvcnQgYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuS2V5Ym9hcmRWaWV3OwotaW1wb3J0IGFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLktleWJvYXJkVmlldy5PbktleWJvYXJkQWN0aW9uTGlzdGVuZXI7CiBpbXBvcnQgYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuS2V5Ym9hcmQuS2V5OwogaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKIGltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CkBAIC00NTIsMjcgKzQ1MSwzMCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIAotICAgIHZvaWQgc3RhcnRQbGF5aW5nKFN0cmluZyBzKSB7Ci0gICAgICAgIGlmICghREVCVUdfQVVUT19QTEFZKSByZXR1cm47Ci0gICAgICAgIGlmIChzID09IG51bGwpIHJldHVybjsKLSAgICAgICAgbVN0cmluZ1RvUGxheSA9IHMudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgbVBsYXlpbmcgPSB0cnVlOwotICAgICAgICBtRG93bkRlbGl2ZXJlZCA9IGZhbHNlOwotICAgICAgICBtU3RyaW5nSW5kZXggPSAwOwotICAgICAgICBtSGFuZGxlcjIuc2VuZEVtcHR5TWVzc2FnZURlbGF5ZWQoTVNHX1RPVUNIX0RPV04sIDEwKTsKKworICAgIHB1YmxpYyB2b2lkIHN0YXJ0UGxheWluZyhTdHJpbmcgcykgeworICAgICAgICBpZiAoREVCVUdfQVVUT19QTEFZKSB7CisgICAgICAgICAgICBpZiAocyA9PSBudWxsKSByZXR1cm47CisgICAgICAgICAgICBtU3RyaW5nVG9QbGF5ID0gcy50b0xvd2VyQ2FzZSgpOworICAgICAgICAgICAgbVBsYXlpbmcgPSB0cnVlOworICAgICAgICAgICAgbURvd25EZWxpdmVyZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIG1TdHJpbmdJbmRleCA9IDA7CisgICAgICAgICAgICBtSGFuZGxlcjIuc2VuZEVtcHR5TWVzc2FnZURlbGF5ZWQoTVNHX1RPVUNIX0RPV04sIDEwKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyB2b2lkIGRyYXcoQ2FudmFzIGMpIHsKICAgICAgICAgc3VwZXIuZHJhdyhjKTsKLSAgICAgICAgaWYgKERFQlVHX0FVVE9fUExBWSAmJiBtUGxheWluZykgewotICAgICAgICAgICAgbUhhbmRsZXIyLnJlbW92ZU1lc3NhZ2VzKE1TR19UT1VDSF9ET1dOKTsKLSAgICAgICAgICAgIG1IYW5kbGVyMi5yZW1vdmVNZXNzYWdlcyhNU0dfVE9VQ0hfVVApOwotICAgICAgICAgICAgaWYgKG1Eb3duRGVsaXZlcmVkKSB7Ci0gICAgICAgICAgICAgICAgbUhhbmRsZXIyLnNlbmRFbXB0eU1lc3NhZ2VEZWxheWVkKE1TR19UT1VDSF9VUCwgMjApOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtSGFuZGxlcjIuc2VuZEVtcHR5TWVzc2FnZURlbGF5ZWQoTVNHX1RPVUNIX0RPV04sIDIwKTsKKyAgICAgICAgaWYgKERFQlVHX0FVVE9fUExBWSkgeworICAgICAgICAgICAgaWYgKG1QbGF5aW5nKSB7CisgICAgICAgICAgICAgICAgbUhhbmRsZXIyLnJlbW92ZU1lc3NhZ2VzKE1TR19UT1VDSF9ET1dOKTsKKyAgICAgICAgICAgICAgICBtSGFuZGxlcjIucmVtb3ZlTWVzc2FnZXMoTVNHX1RPVUNIX1VQKTsKKyAgICAgICAgICAgICAgICBpZiAobURvd25EZWxpdmVyZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgbUhhbmRsZXIyLnNlbmRFbXB0eU1lc3NhZ2VEZWxheWVkKE1TR19UT1VDSF9VUCwgMjApOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1IYW5kbGVyMi5zZW5kRW1wdHlNZXNzYWdlRGVsYXllZChNU0dfVE9VQ0hfRE9XTiwgMjApOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoREVCVUdfTElORSkgewpkaWZmIC0tZ2l0IGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU3VnZ2VzdC5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vU3VnZ2VzdC5qYXZhCmluZGV4IGE3MGJlYTAuLjAxMDkxM2QgMTAwNzU1Ci0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1N1Z2dlc3QuamF2YQorKysgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9TdWdnZXN0LmphdmEKQEAgLTE2LDE4ICsxNiwxNyBAQAogCiBwYWNrYWdlIGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluOwogCitpbXBvcnQgamF2YS5uaW8uQnl0ZUJ1ZmZlcjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKIGltcG9ydCBhbmRyb2lkLnRleHQuQXV0b1RleHQ7CiBpbXBvcnQgYW5kcm9pZC50ZXh0LlRleHRVdGlsczsKIGltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwogaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OwogCi1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOwotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uV29yZENvbXBvc2VyOwotCiAvKioKICAqIFRoaXMgY2xhc3MgbG9hZHMgYSBkaWN0aW9uYXJ5IGFuZCBwcm92aWRlcyBhIGxpc3Qgb2Ygc3VnZ2VzdGlvbnMgZm9yIGEgZ2l2ZW4gc2VxdWVuY2Ugb2YgCiAgKiBjaGFyYWN0ZXJzLiBUaGlzIGluY2x1ZGVzIGNvcnJlY3Rpb25zIGFuZCBjb21wbGV0aW9ucy4KQEAgLTY5LDkgKzY4LDE3IEBACiAKICAgICBwcml2YXRlIGludCBtQ29ycmVjdGlvbk1vZGUgPSBDT1JSRUNUSU9OX0JBU0lDOwogCi0KICAgICBwdWJsaWMgU3VnZ2VzdChDb250ZXh0IGNvbnRleHQsIGludCBkaWN0aW9uYXJ5UmVzSWQpIHsKICAgICAgICAgbU1haW5EaWN0ID0gbmV3IEJpbmFyeURpY3Rpb25hcnkoY29udGV4dCwgZGljdGlvbmFyeVJlc0lkKTsKKyAgICAgICAgaW5pdFBvb2woKTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3VnZ2VzdChDb250ZXh0IGNvbnRleHQsIEJ5dGVCdWZmZXIgYnl0ZUJ1ZmZlcikgeworICAgICAgICBtTWFpbkRpY3QgPSBuZXcgQmluYXJ5RGljdGlvbmFyeShjb250ZXh0LCBieXRlQnVmZmVyKTsKKyAgICAgICAgaW5pdFBvb2woKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgaW5pdFBvb2woKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbVByZWZNYXhTdWdnZXN0aW9uczsgaSsrKSB7CiAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHNiID0gbmV3IFN0cmluZ0J1aWxkZXIoMzIpOwogICAgICAgICAgICAgbVN0cmluZ1Bvb2wuYWRkKHNiKTsKZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL2xhdGluL1dvcmRDb21wb3Nlci5qYXZhIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vV29yZENvbXBvc2VyLmphdmEKaW5kZXggMTlmNzE0YS4uMjU0N2FhMSAxMDA2NDQKLS0tIGEvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vV29yZENvbXBvc2VyLmphdmEKKysrIGIvamF2YS9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vV29yZENvbXBvc2VyLmphdmEKQEAgLTQ0LDcgKzQ0LDcgQEAKICAgICAgKi8KICAgICBwcml2YXRlIGJvb2xlYW4gbUlzQ2FwaXRhbGl6ZWQ7CiAKLSAgICBXb3JkQ29tcG9zZXIoKSB7CisgICAgcHVibGljIFdvcmRDb21wb3NlcigpIHsKICAgICAgICAgbUNvZGVzID0gbmV3IEFycmF5TGlzdDxpbnRbXT4oMTIpOwogICAgICAgICBtVHlwZWRXb3JkID0gbmV3IFN0cmluZ0J1aWxkZXIoMjApOwogICAgIH0KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3ZvaWNlL0xhdGluSU1FV2l0aFZvaWNlLmphdmEgYi9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC92b2ljZS9MYXRpbklNRVdpdGhWb2ljZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2JmNWI2Li4wMDAwMDAwCi0tLSBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3ZvaWNlL0xhdGluSU1FV2l0aFZvaWNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuCi0gKiAKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdAotICogdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YKLSAqIHRoZSBMaWNlbnNlIGF0Ci0gKiAKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICogCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUCi0gKiBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUKLSAqIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyCi0gKiB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLnZvaWNlOwotCi1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKLQotaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLkxhdGluSU1FOwotCi1wdWJsaWMgY2xhc3MgTGF0aW5JTUVXaXRoVm9pY2UgZXh0ZW5kcyBMYXRpbklNRSB7Ci0gICAgQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVkIHZvaWQgbGF1bmNoU2V0dGluZ3MoKSB7Ci0gICAgICAgIGxhdW5jaFNldHRpbmdzKExhdGluSU1FV2l0aFZvaWNlU2V0dGluZ3MuY2xhc3MpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3ZvaWNlL0xhdGluSU1FV2l0aFZvaWNlU2V0dGluZ3MuamF2YSBiL2phdmEvc3JjL2NvbS9hbmRyb2lkL2lucHV0bWV0aG9kL3ZvaWNlL0xhdGluSU1FV2l0aFZvaWNlU2V0dGluZ3MuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTNhNThlMS4uMDAwMDAwMAotLS0gYS9qYXZhL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC92b2ljZS9MYXRpbklNRVdpdGhWb2ljZVNldHRpbmdzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuCi0gKiAKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdAotICogdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YKLSAqIHRoZSBMaWNlbnNlIGF0Ci0gKiAKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICogCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUCi0gKiBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUKLSAqIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyCi0gKiB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLnZvaWNlOwotCi1pbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uTGF0aW5JTUVTZXR0aW5nczsKLQotcHVibGljIGNsYXNzIExhdGluSU1FV2l0aFZvaWNlU2V0dGluZ3MgZXh0ZW5kcyBMYXRpbklNRVNldHRpbmdzIHt9CmRpZmYgLS1naXQgYS9qYXZhL3NyYy9jb20vZ29vZ2xlL2FuZHJvaWQvdm9pY2VzZWFyY2gvTGF0aW5JTUVXaXRoVm9pY2UuamF2YSBiL2phdmEvc3JjL2NvbS9nb29nbGUvYW5kcm9pZC92b2ljZXNlYXJjaC9MYXRpbklNRVdpdGhWb2ljZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTMzOWQxLi4wMDAwMDAwCi0tLSBhL2phdmEvc3JjL2NvbS9nb29nbGUvYW5kcm9pZC92b2ljZXNlYXJjaC9MYXRpbklNRVdpdGhWb2ljZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4KLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QKLSAqIHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mCi0gKiB0aGUgTGljZW5zZSBhdAotICoKLSAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUCi0qIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZQotKiBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlcgotKiB0aGUgTGljZW5zZS4KLSovCi0KLXBhY2thZ2UgY29tLmdvb2dsZS5hbmRyb2lkLnZvaWNlc2VhcmNoOwotCi1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKLQotaW1wb3J0IGNvbS5hbmRyb2lkLmlucHV0bWV0aG9kLmxhdGluLkxhdGluSU1FOwotCi1wdWJsaWMgY2xhc3MgTGF0aW5JTUVXaXRoVm9pY2UgZXh0ZW5kcyBMYXRpbklNRSB7Ci0gICAgQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVkIHZvaWQgbGF1bmNoU2V0dGluZ3MoKSB7Ci0gICAgICAgIGxhdW5jaFNldHRpbmdzKExhdGluSU1FV2l0aFZvaWNlU2V0dGluZ3MuY2xhc3MpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2phdmEvc3JjL2NvbS9nb29nbGUvYW5kcm9pZC92b2ljZXNlYXJjaC9MYXRpbklNRVdpdGhWb2ljZVNldHRpbmdzLmphdmEgYi9qYXZhL3NyYy9jb20vZ29vZ2xlL2FuZHJvaWQvdm9pY2VzZWFyY2gvTGF0aW5JTUVXaXRoVm9pY2VTZXR0aW5ncy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTNjZWJmLi4wMDAwMDAwCi0tLSBhL2phdmEvc3JjL2NvbS9nb29nbGUvYW5kcm9pZC92b2ljZXNlYXJjaC9MYXRpbklNRVdpdGhWb2ljZVNldHRpbmdzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXBhY2thZ2UgY29tLmdvb2dsZS5hbmRyb2lkLnZvaWNlc2VhcmNoOwotCi1pbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uTGF0aW5JTUVTZXR0aW5nczsKLQotcHVibGljIGNsYXNzIExhdGluSU1FV2l0aFZvaWNlU2V0dGluZ3MgZXh0ZW5kcyBMYXRpbklNRVNldHRpbmdzIHt9CmRpZmYgLS1naXQgYS9uYXRpdmUvQW5kcm9pZC5tayBiL25hdGl2ZS9BbmRyb2lkLm1rCmluZGV4IDEyYjY5NjQuLjBkZjc0YzcgMTAwNjQ0Ci0tLSBhL25hdGl2ZS9BbmRyb2lkLm1rCisrKyBiL25hdGl2ZS9BbmRyb2lkLm1rCkBAIC01LDIwICs1LDEyIEBACiAKIExPQ0FMX1NSQ19GSUxFUyA6PSBcCiAJam5pL2NvbV9hbmRyb2lkX2lucHV0bWV0aG9kX2xhdGluX0JpbmFyeURpY3Rpb25hcnkuY3BwIFwKLQlzcmMvZGljdGlvbmFyeS5jcHAKKwlzcmMvZGljdGlvbmFyeS5jcHAgXAorCXNyYy9jaGFyX3V0aWxzLmNwcAogCiBMT0NBTF9DX0lOQ0xVREVTICs9IFwKLSAgICBleHRlcm5hbC9pY3U0Yy9jb21tb24gXAogCSQoSk5JX0hfSU5DTFVERSkKIAotTE9DQUxfTERMSUJTIDo9IC1sbQotCi1MT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9IFwKLSAgICBsaWJhbmRyb2lkX3J1bnRpbWUgXAotICAgIGxpYmN1dGlscyBcCi0gICAgbGlidXRpbHMgXAotICAgIGxpYmljdXVjCi0KIExPQ0FMX01PRFVMRSA6PSBsaWJqbmlfbGF0aW5pbWUKIAogTE9DQUxfTU9EVUxFX1RBR1MgOj0gdXNlcgpkaWZmIC0tZ2l0IGEvbmF0aXZlL2puaS9jb21fYW5kcm9pZF9pbnB1dG1ldGhvZF9sYXRpbl9CaW5hcnlEaWN0aW9uYXJ5LmNwcCBiL25hdGl2ZS9qbmkvY29tX2FuZHJvaWRfaW5wdXRtZXRob2RfbGF0aW5fQmluYXJ5RGljdGlvbmFyeS5jcHAKaW5kZXggZDA2OGYzZi4uYmI0NWNiNSAxMDA2NDQKLS0tIGEvbmF0aXZlL2puaS9jb21fYW5kcm9pZF9pbnB1dG1ldGhvZF9sYXRpbl9CaW5hcnlEaWN0aW9uYXJ5LmNwcAorKysgYi9uYXRpdmUvam5pL2NvbV9hbmRyb2lkX2lucHV0bWV0aG9kX2xhdGluX0JpbmFyeURpY3Rpb25hcnkuY3BwCkBAIC0xNSwzMSArMTUsMTggQEAKICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKi8KIAotI2RlZmluZSBMT0dfVEFHICJCaW5hcnlEaWN0aW9uYXJ5IgotI2luY2x1ZGUgInV0aWxzL0xvZy5oIgotCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxhc3NlcnQuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDxmY250bC5oPgogCi0jaW5jbHVkZSA8bmF0aXZlaGVscGVyL2puaS5oPgotI2luY2x1ZGUgInV0aWxzL0Fzc2V0TWFuYWdlci5oIgotI2luY2x1ZGUgInV0aWxzL0Fzc2V0LmgiCi0KKyNpbmNsdWRlIDxqbmkuaD4KICNpbmNsdWRlICJkaWN0aW9uYXJ5LmgiCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogdXNpbmcgbmFtZXNwYWNlIGxhdGluaW1lOwogCi11c2luZyBuYW1lc3BhY2UgYW5kcm9pZDsKLQotc3RhdGljIGpmaWVsZElEIHNEZXNjcmlwdG9yRmllbGQ7Ci1zdGF0aWMgamZpZWxkSUQgc0Fzc2V0TWFuYWdlck5hdGl2ZUZpZWxkOwotc3RhdGljIGptZXRob2RJRCBzQWRkV29yZE1ldGhvZDsKLXN0YXRpYyBqZmllbGRJRCBzRGljdExlbmd0aDsKLQogLy8KIC8vIGhlbHBlciBmdW5jdGlvbiB0byB0aHJvdyBhbiBleGNlcHRpb24KIC8vCkBAIC01NCwzNSArNDEsMTUgQEAKIH0KIAogc3RhdGljIGppbnQgbGF0aW5pbWVfQmluYXJ5RGljdGlvbmFyeV9vcGVuCi0gICAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmplY3QsIGpvYmplY3QgYXNzZXRNYW5hZ2VyLCBqc3RyaW5nIHJlc291cmNlU3RyaW5nLAorICAgICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqZWN0LCBqb2JqZWN0IGRpY3REaXJlY3RCdWZmZXIsCiAgICAgICAgICBqaW50IHR5cGVkTGV0dGVyTXVsdGlwbGllciwgamludCBmdWxsV29yZE11bHRpcGxpZXIpCiB7Ci0gICAgLy8gR2V0IHRoZSBuYXRpdmUgZmlsZSBkZXNjcmlwdG9yIGZyb20gdGhlIEZpbGVEZXNjcmlwdG9yIG9iamVjdAotICAgIEFzc2V0TWFuYWdlciAqYW0gPSAoQXNzZXRNYW5hZ2VyKikgZW52LT5HZXRJbnRGaWVsZChhc3NldE1hbmFnZXIsIHNBc3NldE1hbmFnZXJOYXRpdmVGaWVsZCk7Ci0gICAgaWYgKCFhbSkgewotICAgICAgICBMT0dFKCJESUNUOiBDb3VsZG4ndCBnZXQgQXNzZXRNYW5hZ2VyIG5hdGl2ZSBwZWVyXG4iKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGNvbnN0IGNoYXIgKnJlc291cmNlUGF0aCA9IGVudi0+R2V0U3RyaW5nVVRGQ2hhcnMocmVzb3VyY2VTdHJpbmcsIE5VTEwpOwotCi0gICAgQXNzZXQgKmRpY3RBc3NldCA9IGFtLT5vcGVuTm9uQXNzZXQocmVzb3VyY2VQYXRoLCBBc3NldDo6QUNDRVNTX0JVRkZFUik7Ci0gICAgaWYgKGRpY3RBc3NldCA9PSBOVUxMKSB7Ci0gICAgICAgIExPR0UoIkRJQ1Q6IENvdWxkbid0IGdldCBhc3NldCAlc1xuIiwgcmVzb3VyY2VQYXRoKTsKLSAgICAgICAgZW52LT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMocmVzb3VyY2VTdHJpbmcsIHJlc291cmNlUGF0aCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHZvaWQgKmRpY3QgPSAodm9pZCopIGRpY3RBc3NldC0+Z2V0QnVmZmVyKGZhbHNlKTsKKyAgICB2b2lkICpkaWN0ID0gZW52LT5HZXREaXJlY3RCdWZmZXJBZGRyZXNzKGRpY3REaXJlY3RCdWZmZXIpOwogICAgIGlmIChkaWN0ID09IE5VTEwpIHsKLSAgICAgICAgTE9HRSgiRElDVDogRGljdGlvbmFyeSBidWZmZXIgaXMgbnVsbFxuIik7Ci0gICAgICAgIGVudi0+UmVsZWFzZVN0cmluZ1VURkNoYXJzKHJlc291cmNlU3RyaW5nLCByZXNvdXJjZVBhdGgpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkRJQ1Q6IERpY3Rpb25hcnkgYnVmZmVyIGlzIG51bGxcbiIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IG5ldyBEaWN0aW9uYXJ5KGRpY3QsIHR5cGVkTGV0dGVyTXVsdGlwbGllciwgZnVsbFdvcmRNdWx0aXBsaWVyKTsKLSAgICBkaWN0aW9uYXJ5LT5zZXRBc3NldChkaWN0QXNzZXQpOwotICAgIGVudi0+U2V0SW50RmllbGQob2JqZWN0LCBzRGljdExlbmd0aCwgKGppbnQpIGRpY3RBc3NldC0+Z2V0TGVuZ3RoKCkpOwotCi0gICAgZW52LT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMocmVzb3VyY2VTdHJpbmcsIHJlc291cmNlUGF0aCk7CiAgICAgcmV0dXJuIChqaW50KSBkaWN0aW9uYXJ5OwogfQogCkBAIC0xMzEsMTQgKzk4LDEzIEBACiAgICAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmplY3QsIGppbnQgZGljdCkKIHsKICAgICBEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gKERpY3Rpb25hcnkqKSBkaWN0OwotICAgICgoQXNzZXQqKSBkaWN0aW9uYXJ5LT5nZXRBc3NldCgpKS0+Y2xvc2UoKTsKICAgICBkZWxldGUgKERpY3Rpb25hcnkqKSBkaWN0OwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHN0YXRpYyBKTklOYXRpdmVNZXRob2QgZ01ldGhvZHNbXSA9IHsKLSAgICB7Im9wZW5OYXRpdmUiLCAgICAgICAgICAgIihMYW5kcm9pZC9jb250ZW50L3Jlcy9Bc3NldE1hbmFnZXI7TGphdmEvbGFuZy9TdHJpbmc7SUkpSSIsCisgICAgeyJvcGVuTmF0aXZlIiwgICAgICAgICAgICIoTGphdmEvbmlvL0J5dGVCdWZmZXI7SUkpSSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCopbGF0aW5pbWVfQmluYXJ5RGljdGlvbmFyeV9vcGVufSwKICAgICB7ImNsb3NlTmF0aXZlIiwgICAgICAgICAgIihJKVYiLCAgICAgICAgICAgICh2b2lkKilsYXRpbmltZV9CaW5hcnlEaWN0aW9uYXJ5X2Nsb3NlfSwKICAgICB7ImdldFN1Z2dlc3Rpb25zTmF0aXZlIiwgIihJW0lJW0NbSUlJSUlbSUkpSSIsICAodm9pZCopbGF0aW5pbWVfQmluYXJ5RGljdGlvbmFyeV9nZXRTdWdnZXN0aW9uc30sCkBAIC0xNjcsMzAgKzEzMyw2IEBACiBzdGF0aWMgaW50IHJlZ2lzdGVyTmF0aXZlcyhKTklFbnYgKmVudikKIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBrQ2xhc3NQYXRoTmFtZSA9ICJjb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi9CaW5hcnlEaWN0aW9uYXJ5IjsKLSAgICBqY2xhc3MgY2xheno7Ci0KLSAgICBjbGF6eiA9IGVudi0+RmluZENsYXNzKCJqYXZhL2lvL0ZpbGVEZXNjcmlwdG9yIik7Ci0gICAgaWYgKGNsYXp6ID09IE5VTEwpIHsKLSAgICAgICAgTE9HRSgiQ2FuJ3QgZmluZCAlcyIsICJqYXZhL2lvL0ZpbGVEZXNjcmlwdG9yIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgc0Rlc2NyaXB0b3JGaWVsZCA9IGVudi0+R2V0RmllbGRJRChjbGF6eiwgImRlc2NyaXB0b3IiLCAiSSIpOwotCi0gICAgY2xhenogPSBlbnYtPkZpbmRDbGFzcygiYW5kcm9pZC9jb250ZW50L3Jlcy9Bc3NldE1hbmFnZXIiKTsKLSAgICBpZiAoY2xhenogPT0gTlVMTCkgewotICAgICAgICBMT0dFKCJDYW4ndCBmaW5kICVzIiwgImphdmEvaW8vRmlsZURlc2NyaXB0b3IiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBzQXNzZXRNYW5hZ2VyTmF0aXZlRmllbGQgPSBlbnYtPkdldEZpZWxkSUQoY2xhenosICJtT2JqZWN0IiwgIkkiKTsKLQotICAgIC8vIEdldCB0aGUgZmllbGQgcG9pbnRlciBmb3IgdGhlIGRpY3Rpb25hcnkgbGVuZ3RoCi0gICAgY2xhenogPSBlbnYtPkZpbmRDbGFzcyhrQ2xhc3NQYXRoTmFtZSk7Ci0gICAgaWYgKGNsYXp6ID09IE5VTEwpIHsKLSAgICAgICAgTE9HRSgiQ2FuJ3QgZmluZCAlcyIsIGtDbGFzc1BhdGhOYW1lKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBzRGljdExlbmd0aCA9IGVudi0+R2V0RmllbGRJRChjbGF6eiwgIm1EaWN0TGVuZ3RoIiwgIkkiKTsKLQogICAgIHJldHVybiByZWdpc3Rlck5hdGl2ZU1ldGhvZHMoZW52LAogICAgICAgICAgICAga0NsYXNzUGF0aE5hbWUsIGdNZXRob2RzLCBzaXplb2YoZ01ldGhvZHMpIC8gc2l6ZW9mKGdNZXRob2RzWzBdKSk7CiB9CmRpZmYgLS1naXQgYS9uYXRpdmUvc3JjL2NoYXJfdXRpbHMuY3BwIGIvbmF0aXZlL3NyYy9jaGFyX3V0aWxzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzFhMDYzCi0tLSAvZGV2L251bGwKKysrIGIvbmF0aXZlL3NyYy9jaGFyX3V0aWxzLmNwcApAQCAtMCwwICsxLDg5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworbmFtZXNwYWNlIGxhdGluaW1lIHsKKworc3RydWN0IExhdGluQ2FwaXRhbFNtYWxsUGFpciB7CisgIHVuc2lnbmVkIHNob3J0IGNhcGl0YWw7CisgIHVuc2lnbmVkIHNob3J0IHNtYWxsOworfTsKKworLy8gR2VuZXJhdGVkIGZyb20gaHR0cDovL3VuaWNvZGUub3JnL1B1YmxpYy9VTklEQVRBL1VuaWNvZGVEYXRhLnR4dAorLy8KKy8vIDEuIFJ1biB0aGUgZm9sbG93aW5nIGNvZGUuICBCYXNjaWFsbHkgdGFrZW4gZnJvbQorLy8gICAgRGljdGlvbmFyeTo6dG9Mb3dlckNhc2UodW5zaWduZWQgc2hvcnQgYykgaW4gZGljdGlvbmFyeS5jcHAuCisvLyAgICBUaGVuLCBnZXQgdGhlIGxpc3Qgb2YgY2hhcnMgd2hlcmUgY2MgIT0gY2NjLgorLy8KKy8vICAgIHVuc2lnbmVkIHNob3J0IGMsIGNjLCBjY2MsIGNjYzI7CisvLyAgICBmb3IgKGMgPSAwOyBjIDwgMHhGRkZGIDsgYysrKSB7CisvLyAgICAgICAgaWYgKGMgPCBzaXplb2YoQkFTRV9DSEFSUykgLyBzaXplb2YoQkFTRV9DSEFSU1swXSkpIHsKKy8vICAgICAgICAgICAgY2MgPSBCQVNFX0NIQVJTW2NdOworLy8gICAgICAgIH0gZWxzZSB7CisvLyAgICAgICAgICAgIGNjID0gYzsKKy8vICAgICAgICB9CisvLworLy8gICAgICAgIC8vIHRvbG93ZXIKKy8vICAgICAgICBpbnQgaXNCYXNlID0gMDsKKy8vICAgICAgICBpZiAoY2MgPj0nQScgJiYgY2MgPD0gJ1onKSB7CisvLyAgICAgICAgICAgIGNjYyA9IChjYyB8IDB4MjApOworLy8gICAgICAgICAgICBjY2MyID0gY2NjOworLy8gICAgICAgICAgICBpc0Jhc2UgPSAxOworLy8gICAgICAgIH0gZWxzZSBpZiAoY2MgPiAweDdGKSB7CisvLyAgICAgICAgICAgIGNjYyA9IHVfdG9sb3dlcihjYyk7CisvLyAgICAgICAgICAgIGNjYzIgPSBsYXRpbl90b2xvd2VyKGNjKTsKKy8vICAgICAgICB9IGVsc2UgeworLy8gICAgICAgICAgICBjY2MgPSBjYzsKKy8vICAgICAgICAgICAgY2NjMiA9IGNjYzsKKy8vICAgICAgICB9CisvLyAgICAgICAgaWYgKCFpc0Jhc2UgJiYgY2MgIT0gY2NjKSB7CisvLyAgICAgICAgICAgIHdwcmludGYoTCIgMHglMDRYID0+IDB4JTA0WCA9PiAweCUwNFggICVsYyA9PiAlbGMgPT4gJWxjIFxuIiwKKy8vICAgICAgICAgICAgICAgICAgICBjLCBjYywgY2NjLCBjLCBjYywgY2NjKTsKKy8vICAgICAgICAgICAgLy9hc3NlcnQoY2NjID09IGNjYzIpOworLy8gICAgICAgIH0KKy8vICAgIH0KKy8vCisvLyAgICBJbml0aWFsbHksIHN0YXJ0ZWQgd2l0aCBhbiBlbXB0eSBsYXRpbl90b2xvd2VyKCkgYXMgYmVsb3cuCisvLworLy8gICAgdW5zaWduZWQgc2hvcnQgbGF0aW5fdG9sb3dlcih1bnNpZ25lZCBzaG9ydCBjKSB7CisvLyAgICAgICAgcmV0dXJuIGM7CisvLyAgICB9CisvLworLy8KKy8vIDIuIFByb2Nlc3MgdGhlIGxpc3Qgb2J0YWluZWQgYnkgMSBieSB0aGUgZm9sbG93aW5nIHBlcmwgc2NyaXB0IGFuZCBhcHBseQorLy8gICAgJ3NvcnQgLXUnIGFzIHdlbGwuICBHZXQgdGhlIFNPUlRFRF9DSEFSX01BUFtdLgorLy8gICAgTm90ZSB0aGF0ICckMScgaW4gdGhlIHBlcmwgc2NyaXB0IGlzICdjYycgaW4gdGhlIGFib3ZlIEMgY29kZS4KKy8vCisvLyAgICB3aGlsZSg8PikgeworLy8gICAgICAgIC8gMHhcdyogPT4gMHgoXHcqKSA9LzsKKy8vICAgICAgICBvcGVuKEhETCwgImdyZXAgLWl3IF4iIC4gJDEgLiAiIFVuaWNvZGVEYXRhLnR4dCB8ICIpOworLy8gICAgICAgICRsaW5lID0gPEhETD47CisvLyAgICAgICAgY2hvbXAgJGxpbmU7CisvLyAgICAgICAgQGNvbHMgPSBzcGxpdCgvOy8sICRsaW5lKTsKKy8vICAgICAgICBwcmludCAiICAgIHsgMHgkMSwgMHgkY29sc1sxM10gfSwgIC8vICRjb2xzWzFdXG4iOworLy8gICAgfQorLy8KKy8vCisvLyAzLiBVcGRhdGUgdGhlIGxhdGluX3RvbG93ZXIoKSBmdW5jdGlvbiBhYm92ZSB3aXRoIFNPUlRFRF9DSEFSX01BUC4gIEVuYWJsZQorLy8gICAgdGhlIGFzc2VydChjY2MgPT0gY2NjMikgYWJvdmUgYW5kIGNvbmZpcm0gdGhlIGZ1bmN0aW9uIGV4aXRzIHN1Y2Nlc3NmdWxseS4KKy8vCitzdGF0aWMgY29uc3Qgc3RydWN0IExhdGluQ2FwaXRhbFNtYWxsUGFpciBTT1JURURfQ0hBUl9NQVBbXSA9IHsKKyAgICB7IDB4MDBDNCwgMHgwMEU0IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCisgICAgeyAweDAwQzUsIDB4MDBFNSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKKyAgICB7IDB4MDBDNiwgMHgwMEU2IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBBRQorICAgIHsgMHgwMEQwLCAweDAwRjAgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEVUSAorICAgIHsgMHgwMEQ1LCAweDAwRjUgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQorICAgIHsgMHgwMEQ2LCAweDAwRjYgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKKyAgICB7IDB4MDBEOCwgMHgwMEY4IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggU1RST0tFCisgICAgeyAweDAwREMsIDB4MDBGQyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUworICAgIHsgMHgwMERFLCAweDAwRkUgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFRIT1JOCisgICAgeyAweDAxMTAsIDB4MDExMSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIFNUUk9LRQorICAgIHsgMHgwMTI2LCAweDAxMjcgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBTVFJPS0UKKyAgICB7IDB4MDE0MSwgMHgwMTQyIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggU1RST0tFCisgICAgeyAweDAxNEEsIDB4MDE0QiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRU5HCisgICAgeyAweDAxNTIsIDB4MDE1MyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBPRQorICAgIHsgMHgwMTY2LCAweDAxNjcgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBTVFJPS0UKKyAgICB7IDB4MDE4MSwgMHgwMjUzIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBCIFdJVEggSE9PSworICAgIHsgMHgwMTgyLCAweDAxODMgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEIgV0lUSCBUT1BCQVIKKyAgICB7IDB4MDE4NCwgMHgwMTg1IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBUT05FIFNJWAorICAgIHsgMHgwMTg2LCAweDAyNTQgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIE9QRU4gTworICAgIHsgMHgwMTg3LCAweDAxODggfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBIT09LCisgICAgeyAweDAxODksIDB4MDI1NiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQUZSSUNBTiBECisgICAgeyAweDAxOEEsIDB4MDI1NyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIEhPT0sKKyAgICB7IDB4MDE4QiwgMHgwMThDIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggVE9QQkFSCisgICAgeyAweDAxOEUsIDB4MDFERCB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUkVWRVJTRUQgRQorICAgIHsgMHgwMThGLCAweDAyNTkgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFNDSFdBCisgICAgeyAweDAxOTAsIDB4MDI1QiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgT1BFTiBFCisgICAgeyAweDAxOTEsIDB4MDE5MiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRiBXSVRIIEhPT0sKKyAgICB7IDB4MDE5MywgMHgwMjYwIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggSE9PSworICAgIHsgMHgwMTk0LCAweDAyNjMgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEdBTU1BCisgICAgeyAweDAxOTYsIDB4MDI2OSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSU9UQQorICAgIHsgMHgwMTk3LCAweDAyNjggfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBTVFJPS0UKKyAgICB7IDB4MDE5OCwgMHgwMTk5IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggSE9PSworICAgIHsgMHgwMTlDLCAweDAyNkYgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFRVUk5FRCBNCisgICAgeyAweDAxOUQsIDB4MDI3MiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIExFRlQgSE9PSworICAgIHsgMHgwMTlGLCAweDAyNzUgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBNSURETEUgVElMREUKKyAgICB7IDB4MDFBMiwgMHgwMUEzIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPSQorICAgIHsgMHgwMUE0LCAweDAxQTUgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFAgV0lUSCBIT09LCisgICAgeyAweDAxQTYsIDB4MDI4MCB9LCAgLy8gTEFUSU4gTEVUVEVSIFlSCisgICAgeyAweDAxQTcsIDB4MDFBOCB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVE9ORSBUV08KKyAgICB7IDB4MDFBOSwgMHgwMjgzIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBFU0gKKyAgICB7IDB4MDFBQywgMHgwMUFEIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggSE9PSworICAgIHsgMHgwMUFFLCAweDAyODggfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBSRVRST0ZMRVggSE9PSworICAgIHsgMHgwMUIxLCAweDAyOEEgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFVQU0lMT04KKyAgICB7IDB4MDFCMiwgMHgwMjhCIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBWIFdJVEggSE9PSworICAgIHsgMHgwMUIzLCAweDAxQjQgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBIT09LCisgICAgeyAweDAxQjUsIDB4MDFCNiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIFNUUk9LRQorICAgIHsgMHgwMUI3LCAweDAyOTIgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEVaSAorICAgIHsgMHgwMUI4LCAweDAxQjkgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEVaSCBSRVZFUlNFRAorICAgIHsgMHgwMUJDLCAweDAxQkQgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFRPTkUgRklWRQorICAgIHsgMHgwMUU0LCAweDAxRTUgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBTVFJPS0UKKyAgICB7IDB4MDFFQSwgMHgwMUVCIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggT0dPTkVLCisgICAgeyAweDAxRjYsIDB4MDE5NSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSFdBSVIKKyAgICB7IDB4MDFGNywgMHgwMUJGIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBXWU5OCisgICAgeyAweDAyMUMsIDB4MDIxRCB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWU9HSAorICAgIHsgMHgwMjIwLCAweDAxOUUgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBMT05HIFJJR0hUIExFRworICAgIHsgMHgwMjIyLCAweDAyMjMgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIE9VCisgICAgeyAweDAyMjQsIDB4MDIyNSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIEhPT0sKKyAgICB7IDB4MDIyNiwgMHgwMjI3IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRE9UIEFCT1ZFCisgICAgeyAweDAyMkUsIDB4MDIyRiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVCBBQk9WRQorICAgIHsgMHgwMjNBLCAweDJDNjUgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBTVFJPS0UKKyAgICB7IDB4MDIzQiwgMHgwMjNDIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggU1RST0tFCisgICAgeyAweDAyM0QsIDB4MDE5QSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIEJBUgorICAgIHsgMHgwMjNFLCAweDJDNjYgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBESUFHT05BTCBTVFJPS0UKKyAgICB7IDB4MDI0MSwgMHgwMjQyIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBHTE9UVEFMIFNUT1AKKyAgICB7IDB4MDI0MywgMHgwMTgwIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBCIFdJVEggU1RST0tFCisgICAgeyAweDAyNDQsIDB4MDI4OSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBCQVIKKyAgICB7IDB4MDI0NSwgMHgwMjhDIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBUVVJORUQgVgorICAgIHsgMHgwMjQ2LCAweDAyNDcgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBTVFJPS0UKKyAgICB7IDB4MDI0OCwgMHgwMjQ5IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBKIFdJVEggU1RST0tFCisgICAgeyAweDAyNEEsIDB4MDI0QiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgU01BTEwgUSBXSVRIIEhPT0sgVEFJTAorICAgIHsgMHgwMjRDLCAweDAyNEQgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBTVFJPS0UKKyAgICB7IDB4MDI0RSwgMHgwMjRGIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggU1RST0tFCisgICAgeyAweDAzNzAsIDB4MDM3MSB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgSEVUQQorICAgIHsgMHgwMzcyLCAweDAzNzMgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIEFSQ0hBSUMgU0FNUEkKKyAgICB7IDB4MDM3NiwgMHgwMzc3IH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBQQU1QSFlMSUFOIERJR0FNTUEKKyAgICB7IDB4MDM5MSwgMHgwM0IxIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQQorICAgIHsgMHgwMzkyLCAweDAzQjIgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIEJFVEEKKyAgICB7IDB4MDM5MywgMHgwM0IzIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBHQU1NQQorICAgIHsgMHgwMzk0LCAweDAzQjQgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBCisgICAgeyAweDAzOTUsIDB4MDNCNSB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTgorICAgIHsgMHgwMzk2LCAweDAzQjYgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIFpFVEEKKyAgICB7IDB4MDM5NywgMHgwM0I3IH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEKKyAgICB7IDB4MDM5OCwgMHgwM0I4IH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBUSEVUQQorICAgIHsgMHgwMzk5LCAweDAzQjkgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIElPVEEKKyAgICB7IDB4MDM5QSwgMHgwM0JBIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBLQVBQQQorICAgIHsgMHgwMzlCLCAweDAzQkIgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIExBTURBCisgICAgeyAweDAzOUMsIDB4MDNCQyB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgTVUKKyAgICB7IDB4MDM5RCwgMHgwM0JEIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBOVQorICAgIHsgMHgwMzlFLCAweDAzQkUgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIFhJCisgICAgeyAweDAzOUYsIDB4MDNCRiB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTgorICAgIHsgMHgwM0EwLCAweDAzQzAgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIFBJCisgICAgeyAweDAzQTEsIDB4MDNDMSB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgUkhPCisgICAgeyAweDAzQTMsIDB4MDNDMyB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgU0lHTUEKKyAgICB7IDB4MDNBNCwgMHgwM0M0IH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBUQVUKKyAgICB7IDB4MDNBNSwgMHgwM0M1IH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OCisgICAgeyAweDAzQTYsIDB4MDNDNiB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgUEhJCisgICAgeyAweDAzQTcsIDB4MDNDNyB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgQ0hJCisgICAgeyAweDAzQTgsIDB4MDNDOCB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgUFNJCisgICAgeyAweDAzQTksIDB4MDNDOSB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EKKyAgICB7IDB4MDNDRiwgMHgwM0Q3IH0sICAvLyBHUkVFSyBDQVBJVEFMIEtBSSBTWU1CT0wKKyAgICB7IDB4MDNEOCwgMHgwM0Q5IH0sICAvLyBHUkVFSyBMRVRURVIgQVJDSEFJQyBLT1BQQQorICAgIHsgMHgwM0RBLCAweDAzREIgfSwgIC8vIEdSRUVLIExFVFRFUiBTVElHTUEKKyAgICB7IDB4MDNEQywgMHgwM0REIH0sICAvLyBHUkVFSyBMRVRURVIgRElHQU1NQQorICAgIHsgMHgwM0RFLCAweDAzREYgfSwgIC8vIEdSRUVLIExFVFRFUiBLT1BQQQorICAgIHsgMHgwM0UwLCAweDAzRTEgfSwgIC8vIEdSRUVLIExFVFRFUiBTQU1QSQorICAgIHsgMHgwM0UyLCAweDAzRTMgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBTSEVJCisgICAgeyAweDAzRTQsIDB4MDNFNSB9LCAgLy8gQ09QVElDIENBUElUQUwgTEVUVEVSIEZFSQorICAgIHsgMHgwM0U2LCAweDAzRTcgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBLSEVJCisgICAgeyAweDAzRTgsIDB4MDNFOSB9LCAgLy8gQ09QVElDIENBUElUQUwgTEVUVEVSIEhPUkkKKyAgICB7IDB4MDNFQSwgMHgwM0VCIH0sICAvLyBDT1BUSUMgQ0FQSVRBTCBMRVRURVIgR0FOR0lBCisgICAgeyAweDAzRUMsIDB4MDNFRCB9LCAgLy8gQ09QVElDIENBUElUQUwgTEVUVEVSIFNISU1BCisgICAgeyAweDAzRUUsIDB4MDNFRiB9LCAgLy8gQ09QVElDIENBUElUQUwgTEVUVEVSIERFSQorICAgIHsgMHgwM0Y3LCAweDAzRjggfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIFNITworICAgIHsgMHgwM0ZBLCAweDAzRkIgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIFNBTgorICAgIHsgMHgwM0ZELCAweDAzN0IgfSwgIC8vIEdSRUVLIENBUElUQUwgUkVWRVJTRUQgTFVOQVRFIFNJR01BIFNZTUJPTAorICAgIHsgMHgwM0ZFLCAweDAzN0MgfSwgIC8vIEdSRUVLIENBUElUQUwgRE9UVEVEIExVTkFURSBTSUdNQSBTWU1CT0wKKyAgICB7IDB4MDNGRiwgMHgwMzdEIH0sICAvLyBHUkVFSyBDQVBJVEFMIFJFVkVSU0VEIERPVFRFRCBMVU5BVEUgU0lHTUEgU1lNQk9MCisgICAgeyAweDA0MDIsIDB4MDQ1MiB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREpFCisgICAgeyAweDA0MDQsIDB4MDQ1NCB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVUtSQUlOSUFOIElFCisgICAgeyAweDA0MDUsIDB4MDQ1NSB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRFpFCisgICAgeyAweDA0MDYsIDB4MDQ1NiB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCisgICAgeyAweDA0MDgsIDB4MDQ1OCB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSkUKKyAgICB7IDB4MDQwOSwgMHgwNDU5IH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBMSkUKKyAgICB7IDB4MDQwQSwgMHgwNDVBIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBOSkUKKyAgICB7IDB4MDQwQiwgMHgwNDVCIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBUU0hFCisgICAgeyAweDA0MEYsIDB4MDQ1RiB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRFpIRQorICAgIHsgMHgwNDEwLCAweDA0MzAgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIEEKKyAgICB7IDB4MDQxMSwgMHgwNDMxIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCRQorICAgIHsgMHgwNDEyLCAweDA0MzIgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIFZFCisgICAgeyAweDA0MTMsIDB4MDQzMyB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFCisgICAgeyAweDA0MTQsIDB4MDQzNCB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREUKKyAgICB7IDB4MDQxNSwgMHgwNDM1IH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRQorICAgIHsgMHgwNDE2LCAweDA0MzYgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRQorICAgIHsgMHgwNDE3LCAweDA0MzcgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIFpFCisgICAgeyAweDA0MTgsIDB4MDQzOCB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSQorICAgIHsgMHgwNDFBLCAweDA0M0EgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBCisgICAgeyAweDA0MUIsIDB4MDQzQiB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUwKKyAgICB7IDB4MDQxQywgMHgwNDNDIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTQorICAgIHsgMHgwNDFELCAweDA0M0QgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVOCisgICAgeyAweDA0MUUsIDB4MDQzRSB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTworICAgIHsgMHgwNDFGLCAweDA0M0YgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIFBFCisgICAgeyAweDA0MjAsIDB4MDQ0MCB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVIKKyAgICB7IDB4MDQyMSwgMHgwNDQxIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUworICAgIHsgMHgwNDIyLCAweDA0NDIgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIFRFCisgICAgeyAweDA0MjMsIDB4MDQ0MyB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVQorICAgIHsgMHgwNDI0LCAweDA0NDQgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVGCisgICAgeyAweDA0MjUsIDB4MDQ0NSB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEEKKyAgICB7IDB4MDQyNiwgMHgwNDQ2IH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBUU0UKKyAgICB7IDB4MDQyNywgMHgwNDQ3IH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUKKyAgICB7IDB4MDQyOCwgMHgwNDQ4IH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSEEKKyAgICB7IDB4MDQyOSwgMHgwNDQ5IH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSENIQQorICAgIHsgMHgwNDJBLCAweDA0NEEgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBUkQgU0lHTgorICAgIHsgMHgwNDJCLCAweDA0NEIgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIFlFUlUKKyAgICB7IDB4MDQyQywgMHgwNDRDIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTT0ZUIFNJR04KKyAgICB7IDB4MDQyRCwgMHgwNDREIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFCisgICAgeyAweDA0MkUsIDB4MDQ0RSB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWVUKKyAgICB7IDB4MDQyRiwgMHgwNDRGIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZQQorICAgIHsgMHgwNDYwLCAweDA0NjEgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIE9NRUdBCisgICAgeyAweDA0NjIsIDB4MDQ2MyB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUFUCisgICAgeyAweDA0NjQsIDB4MDQ2NSB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU9USUZJRUQgRQorICAgIHsgMHgwNDY2LCAweDA0NjcgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIExJVFRMRSBZVVMKKyAgICB7IDB4MDQ2OCwgMHgwNDY5IH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJT1RJRklFRCBMSVRUTEUgWVVTCisgICAgeyAweDA0NkEsIDB4MDQ2QiB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQklHIFlVUworICAgIHsgMHgwNDZDLCAweDA0NkQgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIElPVElGSUVEIEJJRyBZVVMKKyAgICB7IDB4MDQ2RSwgMHgwNDZGIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLU0kKKyAgICB7IDB4MDQ3MCwgMHgwNDcxIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQU0kKKyAgICB7IDB4MDQ3MiwgMHgwNDczIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBGSVRBCisgICAgeyAweDA0NzQsIDB4MDQ3NSB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSVpISVRTQQorICAgIHsgMHgwNDc4LCAweDA0NzkgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIFVLCisgICAgeyAweDA0N0EsIDB4MDQ3QiB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUk9VTkQgT01FR0EKKyAgICB7IDB4MDQ3QywgMHgwNDdEIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFRJVExPCisgICAgeyAweDA0N0UsIDB4MDQ3RiB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgT1QKKyAgICB7IDB4MDQ4MCwgMHgwNDgxIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLT1BQQQorICAgIHsgMHgwNDhBLCAweDA0OEIgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIEkgV0lUSCBUQUlMCisgICAgeyAweDA0OEMsIDB4MDQ4RCB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0VNSVNPRlQgU0lHTgorICAgIHsgMHgwNDhFLCAweDA0OEYgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVSIFdJVEggVElDSworICAgIHsgMHgwNDkwLCAweDA0OTEgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIFVQVFVSTgorICAgIHsgMHgwNDkyLCAweDA0OTMgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIFNUUk9LRQorICAgIHsgMHgwNDk0LCAweDA0OTUgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIE1JRERMRSBIT09LCisgICAgeyAweDA0OTYsIDB4MDQ5NyB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFIFdJVEggREVTQ0VOREVSCisgICAgeyAweDA0OTgsIDB4MDQ5OSB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUgV0lUSCBERVNDRU5ERVIKKyAgICB7IDB4MDQ5QSwgMHgwNDlCIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgorICAgIHsgMHgwNDlDLCAweDA0OUQgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggVkVSVElDQUwgU1RST0tFCisgICAgeyAweDA0OUUsIDB4MDQ5RiB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBTVFJPS0UKKyAgICB7IDB4MDRBMCwgMHgwNEExIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVNIS0lSIEtBCisgICAgeyAweDA0QTIsIDB4MDRBMyB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gV0lUSCBERVNDRU5ERVIKKyAgICB7IDB4MDRBNCwgMHgwNEE1IH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExJR0FUVVJFIEVOIEdIRQorICAgIHsgMHgwNEE2LCAweDA0QTcgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIFBFIFdJVEggTUlERExFIEhPT0sKKyAgICB7IDB4MDRBOCwgMHgwNEE5IH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBQktIQVNJQU4gSEEKKyAgICB7IDB4MDRBQSwgMHgwNEFCIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUyBXSVRIIERFU0NFTkRFUgorICAgIHsgMHgwNEFDLCAweDA0QUQgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIFRFIFdJVEggREVTQ0VOREVSCisgICAgeyAweDA0QUUsIDB4MDRBRiB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU1RSQUlHSFQgVQorICAgIHsgMHgwNEIwLCAweDA0QjEgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFUgV0lUSCBTVFJPS0UKKyAgICB7IDB4MDRCMiwgMHgwNEIzIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQSBXSVRIIERFU0NFTkRFUgorICAgIHsgMHgwNEI0LCAweDA0QjUgfSwgIC8vIENZUklMTElDIENBUElUQUwgTElHQVRVUkUgVEUgVFNFCisgICAgeyAweDA0QjYsIDB4MDRCNyB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggREVTQ0VOREVSCisgICAgeyAweDA0QjgsIDB4MDRCOSB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggVkVSVElDQUwgU1RST0tFCisgICAgeyAweDA0QkEsIDB4MDRCQiB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hIQQorICAgIHsgMHgwNEJDLCAweDA0QkQgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIEFCS0hBU0lBTiBDSEUKKyAgICB7IDB4MDRCRSwgMHgwNEJGIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBQktIQVNJQU4gQ0hFIFdJVEggREVTQ0VOREVSCisgICAgeyAweDA0QzAsIDB4MDRDRiB9LCAgLy8gQ1lSSUxMSUMgTEVUVEVSIFBBTE9DSEtBCisgICAgeyAweDA0QzMsIDB4MDRDNCB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBIT09LCisgICAgeyAweDA0QzUsIDB4MDRDNiB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUwgV0lUSCBUQUlMCisgICAgeyAweDA0QzcsIDB4MDRDOCB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gV0lUSCBIT09LCisgICAgeyAweDA0QzksIDB4MDRDQSB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gV0lUSCBUQUlMCisgICAgeyAweDA0Q0IsIDB4MDRDQyB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0hBS0FTU0lBTiBDSEUKKyAgICB7IDB4MDRDRCwgMHgwNENFIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTSBXSVRIIFRBSUwKKyAgICB7IDB4MDRENCwgMHgwNEQ1IH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExJR0FUVVJFIEEgSUUKKyAgICB7IDB4MDREOCwgMHgwNEQ5IH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTQ0hXQQorICAgIHsgMHgwNEUwLCAweDA0RTEgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIEFCS0hBU0lBTiBEWkUKKyAgICB7IDB4MDRFOCwgMHgwNEU5IH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVJSRUQgTworICAgIHsgMHgwNEY2LCAweDA0RjcgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIERFU0NFTkRFUgorICAgIHsgMHgwNEZBLCAweDA0RkIgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIFNUUk9LRSBBTkQgSE9PSworICAgIHsgMHgwNEZDLCAweDA0RkQgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBIFdJVEggSE9PSworICAgIHsgMHgwNEZFLCAweDA0RkYgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBIFdJVEggU1RST0tFCisgICAgeyAweDA1MDAsIDB4MDUwMSB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS09NSSBERQorICAgIHsgMHgwNTAyLCAweDA1MDMgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIEtPTUkgREpFCisgICAgeyAweDA1MDQsIDB4MDUwNSB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS09NSSBaSkUKKyAgICB7IDB4MDUwNiwgMHgwNTA3IH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLT01JIERaSkUKKyAgICB7IDB4MDUwOCwgMHgwNTA5IH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLT01JIExKRQorICAgIHsgMHgwNTBBLCAweDA1MEIgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIEtPTUkgTkpFCisgICAgeyAweDA1MEMsIDB4MDUwRCB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS09NSSBTSkUKKyAgICB7IDB4MDUwRSwgMHgwNTBGIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLT01JIFRKRQorICAgIHsgMHgwNTEwLCAweDA1MTEgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIFJFVkVSU0VEIFpFCisgICAgeyAweDA1MTIsIDB4MDUxMyB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUwgV0lUSCBIT09LCisgICAgeyAweDA1MTQsIDB4MDUxNSB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTEhBCisgICAgeyAweDA1MTYsIDB4MDUxNyB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUkhBCisgICAgeyAweDA1MTgsIDB4MDUxOSB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUFFCisgICAgeyAweDA1MUEsIDB4MDUxQiB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUUEKKyAgICB7IDB4MDUxQywgMHgwNTFEIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBXRQorICAgIHsgMHgwNTFFLCAweDA1MUYgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIEFMRVVUIEtBCisgICAgeyAweDA1MjAsIDB4MDUyMSB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUwgV0lUSCBNSURETEUgSE9PSworICAgIHsgMHgwNTIyLCAweDA1MjMgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVOIFdJVEggTUlERExFIEhPT0sKKyAgICB7IDB4MDUyNCwgMHgwNTI1IH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRSBXSVRIIERFU0NFTkRFUgorICAgIHsgMHgwNTMxLCAweDA1NjEgfSwgIC8vIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIEFZQgorICAgIHsgMHgwNTMyLCAweDA1NjIgfSwgIC8vIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIEJFTgorICAgIHsgMHgwNTMzLCAweDA1NjMgfSwgIC8vIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIEdJTQorICAgIHsgMHgwNTM0LCAweDA1NjQgfSwgIC8vIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIERBCisgICAgeyAweDA1MzUsIDB4MDU2NSB9LCAgLy8gQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgRUNICisgICAgeyAweDA1MzYsIDB4MDU2NiB9LCAgLy8gQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgWkEKKyAgICB7IDB4MDUzNywgMHgwNTY3IH0sICAvLyBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBFSAorICAgIHsgMHgwNTM4LCAweDA1NjggfSwgIC8vIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIEVUCisgICAgeyAweDA1MzksIDB4MDU2OSB9LCAgLy8gQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgVE8KKyAgICB7IDB4MDUzQSwgMHgwNTZBIH0sICAvLyBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBaSEUKKyAgICB7IDB4MDUzQiwgMHgwNTZCIH0sICAvLyBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBJTkkKKyAgICB7IDB4MDUzQywgMHgwNTZDIH0sICAvLyBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBMSVdOCisgICAgeyAweDA1M0QsIDB4MDU2RCB9LCAgLy8gQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgWEVICisgICAgeyAweDA1M0UsIDB4MDU2RSB9LCAgLy8gQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgQ0EKKyAgICB7IDB4MDUzRiwgMHgwNTZGIH0sICAvLyBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBLRU4KKyAgICB7IDB4MDU0MCwgMHgwNTcwIH0sICAvLyBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBITworICAgIHsgMHgwNTQxLCAweDA1NzEgfSwgIC8vIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIEpBCisgICAgeyAweDA1NDIsIDB4MDU3MiB9LCAgLy8gQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgR0hBRAorICAgIHsgMHgwNTQzLCAweDA1NzMgfSwgIC8vIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIENIRUgKKyAgICB7IDB4MDU0NCwgMHgwNTc0IH0sICAvLyBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBNRU4KKyAgICB7IDB4MDU0NSwgMHgwNTc1IH0sICAvLyBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBZSQorICAgIHsgMHgwNTQ2LCAweDA1NzYgfSwgIC8vIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIE5PVworICAgIHsgMHgwNTQ3LCAweDA1NzcgfSwgIC8vIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIFNIQQorICAgIHsgMHgwNTQ4LCAweDA1NzggfSwgIC8vIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIFZPCisgICAgeyAweDA1NDksIDB4MDU3OSB9LCAgLy8gQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgQ0hBCisgICAgeyAweDA1NEEsIDB4MDU3QSB9LCAgLy8gQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgUEVICisgICAgeyAweDA1NEIsIDB4MDU3QiB9LCAgLy8gQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgSkhFSAorICAgIHsgMHgwNTRDLCAweDA1N0MgfSwgIC8vIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIFJBCisgICAgeyAweDA1NEQsIDB4MDU3RCB9LCAgLy8gQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgU0VICisgICAgeyAweDA1NEUsIDB4MDU3RSB9LCAgLy8gQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgVkVXCisgICAgeyAweDA1NEYsIDB4MDU3RiB9LCAgLy8gQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgVElXTgorICAgIHsgMHgwNTUwLCAweDA1ODAgfSwgIC8vIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIFJFSAorICAgIHsgMHgwNTUxLCAweDA1ODEgfSwgIC8vIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIENPCisgICAgeyAweDA1NTIsIDB4MDU4MiB9LCAgLy8gQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgWUlXTgorICAgIHsgMHgwNTUzLCAweDA1ODMgfSwgIC8vIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIFBJV1IKKyAgICB7IDB4MDU1NCwgMHgwNTg0IH0sICAvLyBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBLRUgKKyAgICB7IDB4MDU1NSwgMHgwNTg1IH0sICAvLyBBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBPSAorICAgIHsgMHgwNTU2LCAweDA1ODYgfSwgIC8vIEFSTUVOSUFOIENBUElUQUwgTEVUVEVSIEZFSAorICAgIHsgMHgxMEEwLCAweDJEMDAgfSwgIC8vIEdFT1JHSUFOIENBUElUQUwgTEVUVEVSIEFOCisgICAgeyAweDEwQTEsIDB4MkQwMSB9LCAgLy8gR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgQkFOCisgICAgeyAweDEwQTIsIDB4MkQwMiB9LCAgLy8gR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgR0FOCisgICAgeyAweDEwQTMsIDB4MkQwMyB9LCAgLy8gR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgRE9OCisgICAgeyAweDEwQTQsIDB4MkQwNCB9LCAgLy8gR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgRU4KKyAgICB7IDB4MTBBNSwgMHgyRDA1IH0sICAvLyBHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBWSU4KKyAgICB7IDB4MTBBNiwgMHgyRDA2IH0sICAvLyBHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBaRU4KKyAgICB7IDB4MTBBNywgMHgyRDA3IH0sICAvLyBHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBUQU4KKyAgICB7IDB4MTBBOCwgMHgyRDA4IH0sICAvLyBHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBJTgorICAgIHsgMHgxMEE5LCAweDJEMDkgfSwgIC8vIEdFT1JHSUFOIENBUElUQUwgTEVUVEVSIEtBTgorICAgIHsgMHgxMEFBLCAweDJEMEEgfSwgIC8vIEdFT1JHSUFOIENBUElUQUwgTEVUVEVSIExBUworICAgIHsgMHgxMEFCLCAweDJEMEIgfSwgIC8vIEdFT1JHSUFOIENBUElUQUwgTEVUVEVSIE1BTgorICAgIHsgMHgxMEFDLCAweDJEMEMgfSwgIC8vIEdFT1JHSUFOIENBUElUQUwgTEVUVEVSIE5BUgorICAgIHsgMHgxMEFELCAweDJEMEQgfSwgIC8vIEdFT1JHSUFOIENBUElUQUwgTEVUVEVSIE9OCisgICAgeyAweDEwQUUsIDB4MkQwRSB9LCAgLy8gR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgUEFSCisgICAgeyAweDEwQUYsIDB4MkQwRiB9LCAgLy8gR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgWkhBUgorICAgIHsgMHgxMEIwLCAweDJEMTAgfSwgIC8vIEdFT1JHSUFOIENBUElUQUwgTEVUVEVSIFJBRQorICAgIHsgMHgxMEIxLCAweDJEMTEgfSwgIC8vIEdFT1JHSUFOIENBUElUQUwgTEVUVEVSIFNBTgorICAgIHsgMHgxMEIyLCAweDJEMTIgfSwgIC8vIEdFT1JHSUFOIENBUElUQUwgTEVUVEVSIFRBUgorICAgIHsgMHgxMEIzLCAweDJEMTMgfSwgIC8vIEdFT1JHSUFOIENBUElUQUwgTEVUVEVSIFVOCisgICAgeyAweDEwQjQsIDB4MkQxNCB9LCAgLy8gR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgUEhBUgorICAgIHsgMHgxMEI1LCAweDJEMTUgfSwgIC8vIEdFT1JHSUFOIENBUElUQUwgTEVUVEVSIEtIQVIKKyAgICB7IDB4MTBCNiwgMHgyRDE2IH0sICAvLyBHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBHSEFOCisgICAgeyAweDEwQjcsIDB4MkQxNyB9LCAgLy8gR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgUUFSCisgICAgeyAweDEwQjgsIDB4MkQxOCB9LCAgLy8gR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgU0hJTgorICAgIHsgMHgxMEI5LCAweDJEMTkgfSwgIC8vIEdFT1JHSUFOIENBUElUQUwgTEVUVEVSIENISU4KKyAgICB7IDB4MTBCQSwgMHgyRDFBIH0sICAvLyBHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBDQU4KKyAgICB7IDB4MTBCQiwgMHgyRDFCIH0sICAvLyBHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBKSUwKKyAgICB7IDB4MTBCQywgMHgyRDFDIH0sICAvLyBHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBDSUwKKyAgICB7IDB4MTBCRCwgMHgyRDFEIH0sICAvLyBHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBDSEFSCisgICAgeyAweDEwQkUsIDB4MkQxRSB9LCAgLy8gR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgWEFOCisgICAgeyAweDEwQkYsIDB4MkQxRiB9LCAgLy8gR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgSkhBTgorICAgIHsgMHgxMEMwLCAweDJEMjAgfSwgIC8vIEdFT1JHSUFOIENBUElUQUwgTEVUVEVSIEhBRQorICAgIHsgMHgxMEMxLCAweDJEMjEgfSwgIC8vIEdFT1JHSUFOIENBUElUQUwgTEVUVEVSIEhFCisgICAgeyAweDEwQzIsIDB4MkQyMiB9LCAgLy8gR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgSElFCisgICAgeyAweDEwQzMsIDB4MkQyMyB9LCAgLy8gR0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgV0UKKyAgICB7IDB4MTBDNCwgMHgyRDI0IH0sICAvLyBHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBIQVIKKyAgICB7IDB4MTBDNSwgMHgyRDI1IH0sICAvLyBHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBIT0UKKyAgICB7IDB4MUUwMCwgMHgxRTAxIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBCRUxPVworICAgIHsgMHgxRTAyLCAweDFFMDMgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEIgV0lUSCBET1QgQUJPVkUKKyAgICB7IDB4MUUwNCwgMHgxRTA1IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBCIFdJVEggRE9UIEJFTE9XCisgICAgeyAweDFFMDYsIDB4MUUwNyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQiBXSVRIIExJTkUgQkVMT1cKKyAgICB7IDB4MUUwOCwgMHgxRTA5IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSBBTkQgQUNVVEUKKyAgICB7IDB4MUUwQSwgMHgxRTBCIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggRE9UIEFCT1ZFCisgICAgeyAweDFFMEMsIDB4MUUwRCB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIERPVCBCRUxPVworICAgIHsgMHgxRTBFLCAweDFFMEYgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBMSU5FIEJFTE9XCisgICAgeyAweDFFMTAsIDB4MUUxMSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIENFRElMTEEKKyAgICB7IDB4MUUxMiwgMHgxRTEzIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVworICAgIHsgMHgxRTE0LCAweDFFMTUgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBNQUNST04gQU5EIEdSQVZFCisgICAgeyAweDFFMTYsIDB4MUUxNyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE1BQ1JPTiBBTkQgQUNVVEUKKyAgICB7IDB4MUUxOCwgMHgxRTE5IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVworICAgIHsgMHgxRTFBLCAweDFFMUIgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBUSUxERSBCRUxPVworICAgIHsgMHgxRTFDLCAweDFFMUQgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDRURJTExBIEFORCBCUkVWRQorICAgIHsgMHgxRTFFLCAweDFFMUYgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEYgV0lUSCBET1QgQUJPVkUKKyAgICB7IDB4MUUyMCwgMHgxRTIxIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggTUFDUk9OCisgICAgeyAweDFFMjIsIDB4MUUyMyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBXSVRIIERPVCBBQk9WRQorICAgIHsgMHgxRTI0LCAweDFFMjUgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBET1QgQkVMT1cKKyAgICB7IDB4MUUyNiwgMHgxRTI3IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggRElBRVJFU0lTCisgICAgeyAweDFFMjgsIDB4MUUyOSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBXSVRIIENFRElMTEEKKyAgICB7IDB4MUUyQSwgMHgxRTJCIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggQlJFVkUgQkVMT1cKKyAgICB7IDB4MUUyQywgMHgxRTJEIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggVElMREUgQkVMT1cKKyAgICB7IDB4MUUyRSwgMHgxRTJGIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTIEFORCBBQ1VURQorICAgIHsgMHgxRTMwLCAweDFFMzEgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBBQ1VURQorICAgIHsgMHgxRTMyLCAweDFFMzMgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBET1QgQkVMT1cKKyAgICB7IDB4MUUzNCwgMHgxRTM1IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggTElORSBCRUxPVworICAgIHsgMHgxRTM2LCAweDFFMzcgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBET1QgQkVMT1cKKyAgICB7IDB4MUUzOCwgMHgxRTM5IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggRE9UIEJFTE9XIEFORCBNQUNST04KKyAgICB7IDB4MUUzQSwgMHgxRTNCIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggTElORSBCRUxPVworICAgIHsgMHgxRTNDLCAweDFFM0QgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDSVJDVU1GTEVYIEJFTE9XCisgICAgeyAweDFFM0UsIDB4MUUzRiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTSBXSVRIIEFDVVRFCisgICAgeyAweDFFNDAsIDB4MUU0MSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTSBXSVRIIERPVCBBQk9WRQorICAgIHsgMHgxRTQyLCAweDFFNDMgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIE0gV0lUSCBET1QgQkVMT1cKKyAgICB7IDB4MUU0NCwgMHgxRTQ1IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggRE9UIEFCT1ZFCisgICAgeyAweDFFNDYsIDB4MUU0NyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIERPVCBCRUxPVworICAgIHsgMHgxRTQ4LCAweDFFNDkgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBMSU5FIEJFTE9XCisgICAgeyAweDFFNEEsIDB4MUU0QiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIENJUkNVTUZMRVggQkVMT1cKKyAgICB7IDB4MUU0QywgMHgxRTREIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUgQU5EIEFDVVRFCisgICAgeyAweDFFNEUsIDB4MUU0RiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFIEFORCBESUFFUkVTSVMKKyAgICB7IDB4MUU1MCwgMHgxRTUxIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggTUFDUk9OIEFORCBHUkFWRQorICAgIHsgMHgxRTUyLCAweDFFNTMgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBNQUNST04gQU5EIEFDVVRFCisgICAgeyAweDFFNTQsIDB4MUU1NSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUCBXSVRIIEFDVVRFCisgICAgeyAweDFFNTYsIDB4MUU1NyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUCBXSVRIIERPVCBBQk9WRQorICAgIHsgMHgxRTU4LCAweDFFNTkgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBET1QgQUJPVkUKKyAgICB7IDB4MUU1QSwgMHgxRTVCIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggRE9UIEJFTE9XCisgICAgeyAweDFFNUMsIDB4MUU1RCB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIERPVCBCRUxPVyBBTkQgTUFDUk9OCisgICAgeyAweDFFNUUsIDB4MUU1RiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIExJTkUgQkVMT1cKKyAgICB7IDB4MUU2MCwgMHgxRTYxIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggRE9UIEFCT1ZFCisgICAgeyAweDFFNjIsIDB4MUU2MyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIERPVCBCRUxPVworICAgIHsgMHgxRTY0LCAweDFFNjUgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBBQ1VURSBBTkQgRE9UIEFCT1ZFCisgICAgeyAweDFFNjYsIDB4MUU2NyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OIEFORCBET1QgQUJPVkUKKyAgICB7IDB4MUU2OCwgMHgxRTY5IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggRE9UIEJFTE9XIEFORCBET1QgQUJPVkUKKyAgICB7IDB4MUU2QSwgMHgxRTZCIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggRE9UIEFCT1ZFCisgICAgeyAweDFFNkMsIDB4MUU2RCB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIERPVCBCRUxPVworICAgIHsgMHgxRTZFLCAweDFFNkYgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBMSU5FIEJFTE9XCisgICAgeyAweDFFNzAsIDB4MUU3MSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIENJUkNVTUZMRVggQkVMT1cKKyAgICB7IDB4MUU3MiwgMHgxRTczIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEJFTE9XCisgICAgeyAweDFFNzQsIDB4MUU3NSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIFRJTERFIEJFTE9XCisgICAgeyAweDFFNzYsIDB4MUU3NyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVggQkVMT1cKKyAgICB7IDB4MUU3OCwgMHgxRTc5IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggVElMREUgQU5EIEFDVVRFCisgICAgeyAweDFFN0EsIDB4MUU3QiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE1BQ1JPTiBBTkQgRElBRVJFU0lTCisgICAgeyAweDFFN0MsIDB4MUU3RCB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgViBXSVRIIFRJTERFCisgICAgeyAweDFFN0UsIDB4MUU3RiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgViBXSVRIIERPVCBCRUxPVworICAgIHsgMHgxRTgwLCAweDFFODEgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFcgV0lUSCBHUkFWRQorICAgIHsgMHgxRTgyLCAweDFFODMgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFcgV0lUSCBBQ1VURQorICAgIHsgMHgxRTg0LCAweDFFODUgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFcgV0lUSCBESUFFUkVTSVMKKyAgICB7IDB4MUU4NiwgMHgxRTg3IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBXIFdJVEggRE9UIEFCT1ZFCisgICAgeyAweDFFODgsIDB4MUU4OSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIERPVCBCRUxPVworICAgIHsgMHgxRThBLCAweDFFOEIgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFggV0lUSCBET1QgQUJPVkUKKyAgICB7IDB4MUU4QywgMHgxRThEIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBYIFdJVEggRElBRVJFU0lTCisgICAgeyAweDFFOEUsIDB4MUU4RiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIERPVCBBQk9WRQorICAgIHsgMHgxRTkwLCAweDFFOTEgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBDSVJDVU1GTEVYCisgICAgeyAweDFFOTIsIDB4MUU5MyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIERPVCBCRUxPVworICAgIHsgMHgxRTk0LCAweDFFOTUgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBMSU5FIEJFTE9XCisgICAgeyAweDFFOUUsIDB4MDBERiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgU0hBUlAgUworICAgIHsgMHgxRUEwLCAweDFFQTEgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBET1QgQkVMT1cKKyAgICB7IDB4MUVBMiwgMHgxRUEzIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggSE9PSyBBQk9WRQorICAgIHsgMHgxRUE0LCAweDFFQTUgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBBQ1VURQorICAgIHsgMHgxRUE2LCAweDFFQTcgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBHUkFWRQorICAgIHsgMHgxRUE4LCAweDFFQTkgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBIT09LIEFCT1ZFCisgICAgeyAweDFFQUEsIDB4MUVBQiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIFRJTERFCisgICAgeyAweDFFQUMsIDB4MUVBRCB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIERPVCBCRUxPVworICAgIHsgMHgxRUFFLCAweDFFQUYgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgQUNVVEUKKyAgICB7IDB4MUVCMCwgMHgxRUIxIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIEdSQVZFCisgICAgeyAweDFFQjIsIDB4MUVCMyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBIT09LIEFCT1ZFCisgICAgeyAweDFFQjQsIDB4MUVCNSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBUSUxERQorICAgIHsgMHgxRUI2LCAweDFFQjcgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgRE9UIEJFTE9XCisgICAgeyAweDFFQjgsIDB4MUVCOSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVCBCRUxPVworICAgIHsgMHgxRUJBLCAweDFFQkIgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBIT09LIEFCT1ZFCisgICAgeyAweDFFQkMsIDB4MUVCRCB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIFRJTERFCisgICAgeyAweDFFQkUsIDB4MUVCRiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFCisgICAgeyAweDFFQzAsIDB4MUVDMSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFCisgICAgeyAweDFFQzIsIDB4MUVDMyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEhPT0sgQUJPVkUKKyAgICB7IDB4MUVDNCwgMHgxRUM1IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgVElMREUKKyAgICB7IDB4MUVDNiwgMHgxRUM3IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgRE9UIEJFTE9XCisgICAgeyAweDFFQzgsIDB4MUVDOSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEhPT0sgQUJPVkUKKyAgICB7IDB4MUVDQSwgMHgxRUNCIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRE9UIEJFTE9XCisgICAgeyAweDFFQ0MsIDB4MUVDRCB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVCBCRUxPVworICAgIHsgMHgxRUNFLCAweDFFQ0YgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBIT09LIEFCT1ZFCisgICAgeyAweDFFRDAsIDB4MUVEMSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFCisgICAgeyAweDFFRDIsIDB4MUVEMyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFCisgICAgeyAweDFFRDQsIDB4MUVENSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEhPT0sgQUJPVkUKKyAgICB7IDB4MUVENiwgMHgxRUQ3IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgVElMREUKKyAgICB7IDB4MUVEOCwgMHgxRUQ5IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgRE9UIEJFTE9XCisgICAgeyAweDFFREEsIDB4MUVEQiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEFDVVRFCisgICAgeyAweDFFREMsIDB4MUVERCB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEdSQVZFCisgICAgeyAweDFFREUsIDB4MUVERiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEhPT0sgQUJPVkUKKyAgICB7IDB4MUVFMCwgMHgxRUUxIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgVElMREUKKyAgICB7IDB4MUVFMiwgMHgxRUUzIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgRE9UIEJFTE9XCisgICAgeyAweDFFRTQsIDB4MUVFNSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERPVCBCRUxPVworICAgIHsgMHgxRUU2LCAweDFFRTcgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBIT09LIEFCT1ZFCisgICAgeyAweDFFRTgsIDB4MUVFOSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEFDVVRFCisgICAgeyAweDFFRUEsIDB4MUVFQiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEdSQVZFCisgICAgeyAweDFFRUMsIDB4MUVFRCB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEhPT0sgQUJPVkUKKyAgICB7IDB4MUVFRSwgMHgxRUVGIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgVElMREUKKyAgICB7IDB4MUVGMCwgMHgxRUYxIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgRE9UIEJFTE9XCisgICAgeyAweDFFRjIsIDB4MUVGMyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEdSQVZFCisgICAgeyAweDFFRjQsIDB4MUVGNSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIERPVCBCRUxPVworICAgIHsgMHgxRUY2LCAweDFFRjcgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBIT09LIEFCT1ZFCisgICAgeyAweDFFRjgsIDB4MUVGOSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIFRJTERFCisgICAgeyAweDFFRkEsIDB4MUVGQiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTUlERExFLVdFTFNIIExMCisgICAgeyAweDFFRkMsIDB4MUVGRCB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTUlERExFLVdFTFNIIFYKKyAgICB7IDB4MUVGRSwgMHgxRUZGIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggTE9PUAorICAgIHsgMHgxRjA4LCAweDFGMDAgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkKKyAgICB7IDB4MUYwOSwgMHgxRjAxIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBCisgICAgeyAweDFGMEEsIDB4MUYwMiB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgVkFSSUEKKyAgICB7IDB4MUYwQiwgMHgxRjAzIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBWQVJJQQorICAgIHsgMHgxRjBDLCAweDFGMDQgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIE9YSUEKKyAgICB7IDB4MUYwRCwgMHgxRjA1IH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBPWElBCisgICAgeyAweDFGMEUsIDB4MUYwNiB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkKKyAgICB7IDB4MUYwRiwgMHgxRjA3IH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSQorICAgIHsgMHgxRjE4LCAweDFGMTAgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBQU0lMSQorICAgIHsgMHgxRjE5LCAweDFGMTEgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBEQVNJQQorICAgIHsgMHgxRjFBLCAweDFGMTIgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBQU0lMSSBBTkQgVkFSSUEKKyAgICB7IDB4MUYxQiwgMHgxRjEzIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggREFTSUEgQU5EIFZBUklBCisgICAgeyAweDFGMUMsIDB4MUYxNCB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIFBTSUxJIEFORCBPWElBCisgICAgeyAweDFGMUQsIDB4MUYxNSB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIERBU0lBIEFORCBPWElBCisgICAgeyAweDFGMjgsIDB4MUYyMCB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkKKyAgICB7IDB4MUYyOSwgMHgxRjIxIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBEQVNJQQorICAgIHsgMHgxRjJBLCAweDFGMjIgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBWQVJJQQorICAgIHsgMHgxRjJCLCAweDFGMjMgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBWQVJJQQorICAgIHsgMHgxRjJDLCAweDFGMjQgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBPWElBCisgICAgeyAweDFGMkQsIDB4MUYyNSB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIE9YSUEKKyAgICB7IDB4MUYyRSwgMHgxRjI2IH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkKKyAgICB7IDB4MUYyRiwgMHgxRjI3IH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkKKyAgICB7IDB4MUYzOCwgMHgxRjMwIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggUFNJTEkKKyAgICB7IDB4MUYzOSwgMHgxRjMxIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggREFTSUEKKyAgICB7IDB4MUYzQSwgMHgxRjMyIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggUFNJTEkgQU5EIFZBUklBCisgICAgeyAweDFGM0IsIDB4MUYzMyB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIERBU0lBIEFORCBWQVJJQQorICAgIHsgMHgxRjNDLCAweDFGMzQgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBQU0lMSSBBTkQgT1hJQQorICAgIHsgMHgxRjNELCAweDFGMzUgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgT1hJQQorICAgIHsgMHgxRjNFLCAweDFGMzYgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkKKyAgICB7IDB4MUYzRiwgMHgxRjM3IH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JCisgICAgeyAweDFGNDgsIDB4MUY0MCB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIFBTSUxJCisgICAgeyAweDFGNDksIDB4MUY0MSB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBCisgICAgeyAweDFGNEEsIDB4MUY0MiB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIFBTSUxJIEFORCBWQVJJQQorICAgIHsgMHgxRjRCLCAweDFGNDMgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBEQVNJQSBBTkQgVkFSSUEKKyAgICB7IDB4MUY0QywgMHgxRjQ0IH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggUFNJTEkgQU5EIE9YSUEKKyAgICB7IDB4MUY0RCwgMHgxRjQ1IH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggREFTSUEgQU5EIE9YSUEKKyAgICB7IDB4MUY1OSwgMHgxRjUxIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEKKyAgICB7IDB4MUY1QiwgMHgxRjUzIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIFZBUklBCisgICAgeyAweDFGNUQsIDB4MUY1NSB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIERBU0lBIEFORCBPWElBCisgICAgeyAweDFGNUYsIDB4MUY1NyB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSQorICAgIHsgMHgxRjY4LCAweDFGNjAgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkKKyAgICB7IDB4MUY2OSwgMHgxRjYxIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBCisgICAgeyAweDFGNkEsIDB4MUY2MiB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgVkFSSUEKKyAgICB7IDB4MUY2QiwgMHgxRjYzIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBWQVJJQQorICAgIHsgMHgxRjZDLCAweDFGNjQgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIE9YSUEKKyAgICB7IDB4MUY2RCwgMHgxRjY1IH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBPWElBCisgICAgeyAweDFGNkUsIDB4MUY2NiB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkKKyAgICB7IDB4MUY2RiwgMHgxRjY3IH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSQorICAgIHsgMHgxRjg4LCAweDFGODAgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFBST1NHRUdSQU1NRU5JCisgICAgeyAweDFGODksIDB4MUY4MSB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKyAgICB7IDB4MUY4QSwgMHgxRjgyIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKyAgICB7IDB4MUY4QiwgMHgxRjgzIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKyAgICB7IDB4MUY4QywgMHgxRjg0IH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBQUk9TR0VHUkFNTUVOSQorICAgIHsgMHgxRjhELCAweDFGODUgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JCisgICAgeyAweDFGOEUsIDB4MUY4NiB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JCisgICAgeyAweDFGOEYsIDB4MUY4NyB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JCisgICAgeyAweDFGOTgsIDB4MUY5MCB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFBST1NHRUdSQU1NRU5JCisgICAgeyAweDFGOTksIDB4MUY5MSB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFBST1NHRUdSQU1NRU5JCisgICAgeyAweDFGOUEsIDB4MUY5MiB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSQorICAgIHsgMHgxRjlCLCAweDFGOTMgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKyAgICB7IDB4MUY5QywgMHgxRjk0IH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgT1hJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKyAgICB7IDB4MUY5RCwgMHgxRjk1IH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKyAgICB7IDB4MUY5RSwgMHgxRjk2IH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JCisgICAgeyAweDFGOUYsIDB4MUY5NyB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JIEFORCBQUk9TR0VHUkFNTUVOSQorICAgIHsgMHgxRkE4LCAweDFGQTAgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFBST1NHRUdSQU1NRU5JCisgICAgeyAweDFGQTksIDB4MUZBMSB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKyAgICB7IDB4MUZBQSwgMHgxRkEyIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKyAgICB7IDB4MUZBQiwgMHgxRkEzIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKyAgICB7IDB4MUZBQywgMHgxRkE0IH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBQUk9TR0VHUkFNTUVOSQorICAgIHsgMHgxRkFELCAweDFGQTUgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JCisgICAgeyAweDFGQUUsIDB4MUZBNiB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JCisgICAgeyAweDFGQUYsIDB4MUZBNyB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JCisgICAgeyAweDFGQjgsIDB4MUZCMCB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBWUkFDSFkKKyAgICB7IDB4MUZCOSwgMHgxRkIxIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIE1BQ1JPTgorICAgIHsgMHgxRkJBLCAweDFGNzAgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggVkFSSUEKKyAgICB7IDB4MUZCQiwgMHgxRjcxIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIE9YSUEKKyAgICB7IDB4MUZCQywgMHgxRkIzIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBST1NHRUdSQU1NRU5JCisgICAgeyAweDFGQzgsIDB4MUY3MiB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIFZBUklBCisgICAgeyAweDFGQzksIDB4MUY3MyB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIE9YSUEKKyAgICB7IDB4MUZDQSwgMHgxRjc0IH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBWQVJJQQorICAgIHsgMHgxRkNCLCAweDFGNzUgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIE9YSUEKKyAgICB7IDB4MUZDQywgMHgxRkMzIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQUk9TR0VHUkFNTUVOSQorICAgIHsgMHgxRkQ4LCAweDFGRDAgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBWUkFDSFkKKyAgICB7IDB4MUZEOSwgMHgxRkQxIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggTUFDUk9OCisgICAgeyAweDFGREEsIDB4MUY3NiB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFZBUklBCisgICAgeyAweDFGREIsIDB4MUY3NyB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIE9YSUEKKyAgICB7IDB4MUZFOCwgMHgxRkUwIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggVlJBQ0hZCisgICAgeyAweDFGRTksIDB4MUZFMSB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIE1BQ1JPTgorICAgIHsgMHgxRkVBLCAweDFGN0EgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBWQVJJQQorICAgIHsgMHgxRkVCLCAweDFGN0IgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBPWElBCisgICAgeyAweDFGRUMsIDB4MUZFNSB9LCAgLy8gR1JFRUsgQ0FQSVRBTCBMRVRURVIgUkhPIFdJVEggREFTSUEKKyAgICB7IDB4MUZGOCwgMHgxRjc4IH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggVkFSSUEKKyAgICB7IDB4MUZGOSwgMHgxRjc5IH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggT1hJQQorICAgIHsgMHgxRkZBLCAweDFGN0MgfSwgIC8vIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggVkFSSUEKKyAgICB7IDB4MUZGQiwgMHgxRjdEIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIE9YSUEKKyAgICB7IDB4MUZGQywgMHgxRkYzIH0sICAvLyBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBST1NHRUdSQU1NRU5JCisgICAgeyAweDIxMjYsIDB4MDNDOSB9LCAgLy8gT0hNIFNJR04KKyAgICB7IDB4MjEyQSwgMHgwMDZCIH0sICAvLyBLRUxWSU4gU0lHTgorICAgIHsgMHgyMTJCLCAweDAwRTUgfSwgIC8vIEFOR1NUUk9NIFNJR04KKyAgICB7IDB4MjEzMiwgMHgyMTRFIH0sICAvLyBUVVJORUQgQ0FQSVRBTCBGCisgICAgeyAweDIxNjAsIDB4MjE3MCB9LCAgLy8gUk9NQU4gTlVNRVJBTCBPTkUKKyAgICB7IDB4MjE2MSwgMHgyMTcxIH0sICAvLyBST01BTiBOVU1FUkFMIFRXTworICAgIHsgMHgyMTYyLCAweDIxNzIgfSwgIC8vIFJPTUFOIE5VTUVSQUwgVEhSRUUKKyAgICB7IDB4MjE2MywgMHgyMTczIH0sICAvLyBST01BTiBOVU1FUkFMIEZPVVIKKyAgICB7IDB4MjE2NCwgMHgyMTc0IH0sICAvLyBST01BTiBOVU1FUkFMIEZJVkUKKyAgICB7IDB4MjE2NSwgMHgyMTc1IH0sICAvLyBST01BTiBOVU1FUkFMIFNJWAorICAgIHsgMHgyMTY2LCAweDIxNzYgfSwgIC8vIFJPTUFOIE5VTUVSQUwgU0VWRU4KKyAgICB7IDB4MjE2NywgMHgyMTc3IH0sICAvLyBST01BTiBOVU1FUkFMIEVJR0hUCisgICAgeyAweDIxNjgsIDB4MjE3OCB9LCAgLy8gUk9NQU4gTlVNRVJBTCBOSU5FCisgICAgeyAweDIxNjksIDB4MjE3OSB9LCAgLy8gUk9NQU4gTlVNRVJBTCBURU4KKyAgICB7IDB4MjE2QSwgMHgyMTdBIH0sICAvLyBST01BTiBOVU1FUkFMIEVMRVZFTgorICAgIHsgMHgyMTZCLCAweDIxN0IgfSwgIC8vIFJPTUFOIE5VTUVSQUwgVFdFTFZFCisgICAgeyAweDIxNkMsIDB4MjE3QyB9LCAgLy8gUk9NQU4gTlVNRVJBTCBGSUZUWQorICAgIHsgMHgyMTZELCAweDIxN0QgfSwgIC8vIFJPTUFOIE5VTUVSQUwgT05FIEhVTkRSRUQKKyAgICB7IDB4MjE2RSwgMHgyMTdFIH0sICAvLyBST01BTiBOVU1FUkFMIEZJVkUgSFVORFJFRAorICAgIHsgMHgyMTZGLCAweDIxN0YgfSwgIC8vIFJPTUFOIE5VTUVSQUwgT05FIFRIT1VTQU5ECisgICAgeyAweDIxODMsIDB4MjE4NCB9LCAgLy8gUk9NQU4gTlVNRVJBTCBSRVZFUlNFRCBPTkUgSFVORFJFRAorICAgIHsgMHgyNEI2LCAweDI0RDAgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQorICAgIHsgMHgyNEI3LCAweDI0RDEgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgorICAgIHsgMHgyNEI4LCAweDI0RDIgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQworICAgIHsgMHgyNEI5LCAweDI0RDMgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAorICAgIHsgMHgyNEJBLCAweDI0RDQgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQorICAgIHsgMHgyNEJCLCAweDI0RDUgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgorICAgIHsgMHgyNEJDLCAweDI0RDYgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRworICAgIHsgMHgyNEJELCAweDI0RDcgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAorICAgIHsgMHgyNEJFLCAweDI0RDggfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQorICAgIHsgMHgyNEJGLCAweDI0RDkgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgorICAgIHsgMHgyNEMwLCAweDI0REEgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSworICAgIHsgMHgyNEMxLCAweDI0REIgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAorICAgIHsgMHgyNEMyLCAweDI0REMgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQorICAgIHsgMHgyNEMzLCAweDI0REQgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgorICAgIHsgMHgyNEM0LCAweDI0REUgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTworICAgIHsgMHgyNEM1LCAweDI0REYgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAorICAgIHsgMHgyNEM2LCAweDI0RTAgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQorICAgIHsgMHgyNEM3LCAweDI0RTEgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgorICAgIHsgMHgyNEM4LCAweDI0RTIgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUworICAgIHsgMHgyNEM5LCAweDI0RTMgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAorICAgIHsgMHgyNENBLCAweDI0RTQgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQorICAgIHsgMHgyNENCLCAweDI0RTUgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgorICAgIHsgMHgyNENDLCAweDI0RTYgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVworICAgIHsgMHgyNENELCAweDI0RTcgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAorICAgIHsgMHgyNENFLCAweDI0RTggfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQorICAgIHsgMHgyNENGLCAweDI0RTkgfSwgIC8vIENJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgorICAgIHsgMHgyQzAwLCAweDJDMzAgfSwgIC8vIEdMQUdPTElUSUMgQ0FQSVRBTCBMRVRURVIgQVpVCisgICAgeyAweDJDMDEsIDB4MkMzMSB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBCVUtZCisgICAgeyAweDJDMDIsIDB4MkMzMiB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBWRURFCisgICAgeyAweDJDMDMsIDB4MkMzMyB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBHTEFHT0xJCisgICAgeyAweDJDMDQsIDB4MkMzNCB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBET0JSTworICAgIHsgMHgyQzA1LCAweDJDMzUgfSwgIC8vIEdMQUdPTElUSUMgQ0FQSVRBTCBMRVRURVIgWUVTVFUKKyAgICB7IDB4MkMwNiwgMHgyQzM2IH0sICAvLyBHTEFHT0xJVElDIENBUElUQUwgTEVUVEVSIFpISVZFVEUKKyAgICB7IDB4MkMwNywgMHgyQzM3IH0sICAvLyBHTEFHT0xJVElDIENBUElUQUwgTEVUVEVSIERaRUxPCisgICAgeyAweDJDMDgsIDB4MkMzOCB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBaRU1MSkEKKyAgICB7IDB4MkMwOSwgMHgyQzM5IH0sICAvLyBHTEFHT0xJVElDIENBUElUQUwgTEVUVEVSIElaSEUKKyAgICB7IDB4MkMwQSwgMHgyQzNBIH0sICAvLyBHTEFHT0xJVElDIENBUElUQUwgTEVUVEVSIElOSVRJQUwgSVpIRQorICAgIHsgMHgyQzBCLCAweDJDM0IgfSwgIC8vIEdMQUdPTElUSUMgQ0FQSVRBTCBMRVRURVIgSQorICAgIHsgMHgyQzBDLCAweDJDM0MgfSwgIC8vIEdMQUdPTElUSUMgQ0FQSVRBTCBMRVRURVIgREpFUlZJCisgICAgeyAweDJDMEQsIDB4MkMzRCB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBLQUtPCisgICAgeyAweDJDMEUsIDB4MkMzRSB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBMSlVESUpFCisgICAgeyAweDJDMEYsIDB4MkMzRiB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBNWVNMSVRFCisgICAgeyAweDJDMTAsIDB4MkM0MCB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBOQVNISQorICAgIHsgMHgyQzExLCAweDJDNDEgfSwgIC8vIEdMQUdPTElUSUMgQ0FQSVRBTCBMRVRURVIgT05VCisgICAgeyAweDJDMTIsIDB4MkM0MiB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBQT0tPSkkKKyAgICB7IDB4MkMxMywgMHgyQzQzIH0sICAvLyBHTEFHT0xJVElDIENBUElUQUwgTEVUVEVSIFJJVFNJCisgICAgeyAweDJDMTQsIDB4MkM0NCB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBTTE9WTworICAgIHsgMHgyQzE1LCAweDJDNDUgfSwgIC8vIEdMQUdPTElUSUMgQ0FQSVRBTCBMRVRURVIgVFZSSURPCisgICAgeyAweDJDMTYsIDB4MkM0NiB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBVS1UKKyAgICB7IDB4MkMxNywgMHgyQzQ3IH0sICAvLyBHTEFHT0xJVElDIENBUElUQUwgTEVUVEVSIEZSSVRVCisgICAgeyAweDJDMTgsIDB4MkM0OCB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBIRVJVCisgICAgeyAweDJDMTksIDB4MkM0OSB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBPVFUKKyAgICB7IDB4MkMxQSwgMHgyQzRBIH0sICAvLyBHTEFHT0xJVElDIENBUElUQUwgTEVUVEVSIFBFCisgICAgeyAweDJDMUIsIDB4MkM0QiB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBTSFRBCisgICAgeyAweDJDMUMsIDB4MkM0QyB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBUU0kKKyAgICB7IDB4MkMxRCwgMHgyQzREIH0sICAvLyBHTEFHT0xJVElDIENBUElUQUwgTEVUVEVSIENIUklWSQorICAgIHsgMHgyQzFFLCAweDJDNEUgfSwgIC8vIEdMQUdPTElUSUMgQ0FQSVRBTCBMRVRURVIgU0hBCisgICAgeyAweDJDMUYsIDB4MkM0RiB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBZRVJVCisgICAgeyAweDJDMjAsIDB4MkM1MCB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBZRVJJCisgICAgeyAweDJDMjEsIDB4MkM1MSB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBZQVRJCisgICAgeyAweDJDMjIsIDB4MkM1MiB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBTUElERVJZIEhBCisgICAgeyAweDJDMjMsIDB4MkM1MyB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBZVQorICAgIHsgMHgyQzI0LCAweDJDNTQgfSwgIC8vIEdMQUdPTElUSUMgQ0FQSVRBTCBMRVRURVIgU01BTEwgWVVTCisgICAgeyAweDJDMjUsIDB4MkM1NSB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBTTUFMTCBZVVMgV0lUSCBUQUlMCisgICAgeyAweDJDMjYsIDB4MkM1NiB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBZTworICAgIHsgMHgyQzI3LCAweDJDNTcgfSwgIC8vIEdMQUdPTElUSUMgQ0FQSVRBTCBMRVRURVIgSU9UQVRFRCBTTUFMTCBZVVMKKyAgICB7IDB4MkMyOCwgMHgyQzU4IH0sICAvLyBHTEFHT0xJVElDIENBUElUQUwgTEVUVEVSIEJJRyBZVVMKKyAgICB7IDB4MkMyOSwgMHgyQzU5IH0sICAvLyBHTEFHT0xJVElDIENBUElUQUwgTEVUVEVSIElPVEFURUQgQklHIFlVUworICAgIHsgMHgyQzJBLCAweDJDNUEgfSwgIC8vIEdMQUdPTElUSUMgQ0FQSVRBTCBMRVRURVIgRklUQQorICAgIHsgMHgyQzJCLCAweDJDNUIgfSwgIC8vIEdMQUdPTElUSUMgQ0FQSVRBTCBMRVRURVIgSVpISVRTQQorICAgIHsgMHgyQzJDLCAweDJDNUMgfSwgIC8vIEdMQUdPTElUSUMgQ0FQSVRBTCBMRVRURVIgU0hUQVBJQworICAgIHsgMHgyQzJELCAweDJDNUQgfSwgIC8vIEdMQUdPTElUSUMgQ0FQSVRBTCBMRVRURVIgVFJPS1VUQVNUSSBBCisgICAgeyAweDJDMkUsIDB4MkM1RSB9LCAgLy8gR0xBR09MSVRJQyBDQVBJVEFMIExFVFRFUiBMQVRJTkFURSBNWVNMSVRFCisgICAgeyAweDJDNjAsIDB4MkM2MSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIERPVUJMRSBCQVIKKyAgICB7IDB4MkM2MiwgMHgwMjZCIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggTUlERExFIFRJTERFCisgICAgeyAweDJDNjMsIDB4MUQ3RCB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUCBXSVRIIFNUUk9LRQorICAgIHsgMHgyQzY0LCAweDAyN0QgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBUQUlMCisgICAgeyAweDJDNjcsIDB4MkM2OCB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBXSVRIIERFU0NFTkRFUgorICAgIHsgMHgyQzY5LCAweDJDNkEgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBERVNDRU5ERVIKKyAgICB7IDB4MkM2QiwgMHgyQzZDIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggREVTQ0VOREVSCisgICAgeyAweDJDNkQsIDB4MDI1MSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQUxQSEEKKyAgICB7IDB4MkM2RSwgMHgwMjcxIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBNIFdJVEggSE9PSworICAgIHsgMHgyQzZGLCAweDAyNTAgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFRVUk5FRCBBCisgICAgeyAweDJDNzAsIDB4MDI1MiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVFVSTkVEIEFMUEhBCisgICAgeyAweDJDNzIsIDB4MkM3MyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIEhPT0sKKyAgICB7IDB4MkM3NSwgMHgyQzc2IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBIQUxGIEgKKyAgICB7IDB4MkM3RSwgMHgwMjNGIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggU1dBU0ggVEFJTAorICAgIHsgMHgyQzdGLCAweDAyNDAgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBTV0FTSCBUQUlMCisgICAgeyAweDJDODAsIDB4MkM4MSB9LCAgLy8gQ09QVElDIENBUElUQUwgTEVUVEVSIEFMRkEKKyAgICB7IDB4MkM4MiwgMHgyQzgzIH0sICAvLyBDT1BUSUMgQ0FQSVRBTCBMRVRURVIgVklEQQorICAgIHsgMHgyQzg0LCAweDJDODUgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBHQU1NQQorICAgIHsgMHgyQzg2LCAweDJDODcgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBEQUxEQQorICAgIHsgMHgyQzg4LCAweDJDODkgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBFSUUKKyAgICB7IDB4MkM4QSwgMHgyQzhCIH0sICAvLyBDT1BUSUMgQ0FQSVRBTCBMRVRURVIgU09VCisgICAgeyAweDJDOEMsIDB4MkM4RCB9LCAgLy8gQ09QVElDIENBUElUQUwgTEVUVEVSIFpBVEEKKyAgICB7IDB4MkM4RSwgMHgyQzhGIH0sICAvLyBDT1BUSUMgQ0FQSVRBTCBMRVRURVIgSEFURQorICAgIHsgMHgyQzkwLCAweDJDOTEgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBUSEVUSEUKKyAgICB7IDB4MkM5MiwgMHgyQzkzIH0sICAvLyBDT1BUSUMgQ0FQSVRBTCBMRVRURVIgSUFVREEKKyAgICB7IDB4MkM5NCwgMHgyQzk1IH0sICAvLyBDT1BUSUMgQ0FQSVRBTCBMRVRURVIgS0FQQQorICAgIHsgMHgyQzk2LCAweDJDOTcgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBMQVVMQQorICAgIHsgMHgyQzk4LCAweDJDOTkgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBNSQorICAgIHsgMHgyQzlBLCAweDJDOUIgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBOSQorICAgIHsgMHgyQzlDLCAweDJDOUQgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBLU0kKKyAgICB7IDB4MkM5RSwgMHgyQzlGIH0sICAvLyBDT1BUSUMgQ0FQSVRBTCBMRVRURVIgTworICAgIHsgMHgyQ0EwLCAweDJDQTEgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBQSQorICAgIHsgMHgyQ0EyLCAweDJDQTMgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBSTworICAgIHsgMHgyQ0E0LCAweDJDQTUgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBTSU1BCisgICAgeyAweDJDQTYsIDB4MkNBNyB9LCAgLy8gQ09QVElDIENBUElUQUwgTEVUVEVSIFRBVQorICAgIHsgMHgyQ0E4LCAweDJDQTkgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBVQQorICAgIHsgMHgyQ0FBLCAweDJDQUIgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBGSQorICAgIHsgMHgyQ0FDLCAweDJDQUQgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBLSEkKKyAgICB7IDB4MkNBRSwgMHgyQ0FGIH0sICAvLyBDT1BUSUMgQ0FQSVRBTCBMRVRURVIgUFNJCisgICAgeyAweDJDQjAsIDB4MkNCMSB9LCAgLy8gQ09QVElDIENBUElUQUwgTEVUVEVSIE9PVQorICAgIHsgMHgyQ0IyLCAweDJDQjMgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBESUFMRUNULVAgQUxFRgorICAgIHsgMHgyQ0I0LCAweDJDQjUgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBPTEQgQ09QVElDIEFJTgorICAgIHsgMHgyQ0I2LCAweDJDQjcgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBDUllQVE9HUkFNTUlDIEVJRQorICAgIHsgMHgyQ0I4LCAweDJDQjkgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBESUFMRUNULVAgS0FQQQorICAgIHsgMHgyQ0JBLCAweDJDQkIgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBESUFMRUNULVAgTkkKKyAgICB7IDB4MkNCQywgMHgyQ0JEIH0sICAvLyBDT1BUSUMgQ0FQSVRBTCBMRVRURVIgQ1JZUFRPR1JBTU1JQyBOSQorICAgIHsgMHgyQ0JFLCAweDJDQkYgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBPTEQgQ09QVElDIE9PVQorICAgIHsgMHgyQ0MwLCAweDJDQzEgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBTQU1QSQorICAgIHsgMHgyQ0MyLCAweDJDQzMgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBDUk9TU0VEIFNIRUkKKyAgICB7IDB4MkNDNCwgMHgyQ0M1IH0sICAvLyBDT1BUSUMgQ0FQSVRBTCBMRVRURVIgT0xEIENPUFRJQyBTSEVJCisgICAgeyAweDJDQzYsIDB4MkNDNyB9LCAgLy8gQ09QVElDIENBUElUQUwgTEVUVEVSIE9MRCBDT1BUSUMgRVNICisgICAgeyAweDJDQzgsIDB4MkNDOSB9LCAgLy8gQ09QVElDIENBUElUQUwgTEVUVEVSIEFLSE1JTUlDIEtIRUkKKyAgICB7IDB4MkNDQSwgMHgyQ0NCIH0sICAvLyBDT1BUSUMgQ0FQSVRBTCBMRVRURVIgRElBTEVDVC1QIEhPUkkKKyAgICB7IDB4MkNDQywgMHgyQ0NEIH0sICAvLyBDT1BUSUMgQ0FQSVRBTCBMRVRURVIgT0xEIENPUFRJQyBIT1JJCisgICAgeyAweDJDQ0UsIDB4MkNDRiB9LCAgLy8gQ09QVElDIENBUElUQUwgTEVUVEVSIE9MRCBDT1BUSUMgSEEKKyAgICB7IDB4MkNEMCwgMHgyQ0QxIH0sICAvLyBDT1BUSUMgQ0FQSVRBTCBMRVRURVIgTC1TSEFQRUQgSEEKKyAgICB7IDB4MkNEMiwgMHgyQ0QzIH0sICAvLyBDT1BUSUMgQ0FQSVRBTCBMRVRURVIgT0xEIENPUFRJQyBIRUkKKyAgICB7IDB4MkNENCwgMHgyQ0Q1IH0sICAvLyBDT1BUSUMgQ0FQSVRBTCBMRVRURVIgT0xEIENPUFRJQyBIQVQKKyAgICB7IDB4MkNENiwgMHgyQ0Q3IH0sICAvLyBDT1BUSUMgQ0FQSVRBTCBMRVRURVIgT0xEIENPUFRJQyBHQU5HSUEKKyAgICB7IDB4MkNEOCwgMHgyQ0Q5IH0sICAvLyBDT1BUSUMgQ0FQSVRBTCBMRVRURVIgT0xEIENPUFRJQyBESkEKKyAgICB7IDB4MkNEQSwgMHgyQ0RCIH0sICAvLyBDT1BUSUMgQ0FQSVRBTCBMRVRURVIgT0xEIENPUFRJQyBTSElNQQorICAgIHsgMHgyQ0RDLCAweDJDREQgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBPTEQgTlVCSUFOIFNISU1BCisgICAgeyAweDJDREUsIDB4MkNERiB9LCAgLy8gQ09QVElDIENBUElUQUwgTEVUVEVSIE9MRCBOVUJJQU4gTkdJCisgICAgeyAweDJDRTAsIDB4MkNFMSB9LCAgLy8gQ09QVElDIENBUElUQUwgTEVUVEVSIE9MRCBOVUJJQU4gTllJCisgICAgeyAweDJDRTIsIDB4MkNFMyB9LCAgLy8gQ09QVElDIENBUElUQUwgTEVUVEVSIE9MRCBOVUJJQU4gV0FVCisgICAgeyAweDJDRUIsIDB4MkNFQyB9LCAgLy8gQ09QVElDIENBUElUQUwgTEVUVEVSIENSWVBUT0dSQU1NSUMgU0hFSQorICAgIHsgMHgyQ0VELCAweDJDRUUgfSwgIC8vIENPUFRJQyBDQVBJVEFMIExFVFRFUiBDUllQVE9HUkFNTUlDIEdBTkdJQQorICAgIHsgMHhBNjQwLCAweEE2NDEgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIFpFTUxZQQorICAgIHsgMHhBNjQyLCAweEE2NDMgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIERaRUxPCisgICAgeyAweEE2NDQsIDB4QTY0NSB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUkVWRVJTRUQgRFpFCisgICAgeyAweEE2NDYsIDB4QTY0NyB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU9UQQorICAgIHsgMHhBNjQ4LCAweEE2NDkgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIERKRVJWCisgICAgeyAweEE2NEEsIDB4QTY0QiB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTU9OT0dSQVBIIFVLCisgICAgeyAweEE2NEMsIDB4QTY0RCB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQlJPQUQgT01FR0EKKyAgICB7IDB4QTY0RSwgMHhBNjRGIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBORVVUUkFMIFlFUgorICAgIHsgMHhBNjUwLCAweEE2NTEgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIFlFUlUgV0lUSCBCQUNLIFlFUgorICAgIHsgMHhBNjUyLCAweEE2NTMgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIElPVElGSUVEIFlBVAorICAgIHsgMHhBNjU0LCAweEE2NTUgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIFJFVkVSU0VEIFlVCisgICAgeyAweEE2NTYsIDB4QTY1NyB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU9USUZJRUQgQQorICAgIHsgMHhBNjU4LCAweEE2NTkgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIENMT1NFRCBMSVRUTEUgWVVTCisgICAgeyAweEE2NUEsIDB4QTY1QiB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkxFTkRFRCBZVVMKKyAgICB7IDB4QTY1QywgMHhBNjVEIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJT1RJRklFRCBDTE9TRUQgTElUVExFIFlVUworICAgIHsgMHhBNjVFLCAweEE2NUYgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIFlOCisgICAgeyAweEE2NjIsIDB4QTY2MyB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU09GVCBERQorICAgIHsgMHhBNjY0LCAweEE2NjUgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNPRlQgRUwKKyAgICB7IDB4QTY2NiwgMHhBNjY3IH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTT0ZUIEVNCisgICAgeyAweEE2NjgsIDB4QTY2OSB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTU9OT0NVTEFSIE8KKyAgICB7IDB4QTY2QSwgMHhBNjZCIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCSU5PQ1VMQVIgTworICAgIHsgMHhBNjZDLCAweEE2NkQgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIERPVUJMRSBNT05PQ1VMQVIgTworICAgIHsgMHhBNjgwLCAweEE2ODEgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIERXRQorICAgIHsgMHhBNjgyLCAweEE2ODMgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIERaV0UKKyAgICB7IDB4QTY4NCwgMHhBNjg1IH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSFdFCisgICAgeyAweEE2ODYsIDB4QTY4NyB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0NIRQorICAgIHsgMHhBNjg4LCAweEE2ODkgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIERaWkUKKyAgICB7IDB4QTY4QSwgMHhBNjhCIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURSBXSVRIIE1JRERMRSBIT09LCisgICAgeyAweEE2OEMsIDB4QTY4RCB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFdFCisgICAgeyAweEE2OEUsIDB4QTY4RiB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNXRQorICAgIHsgMHhBNjkwLCAweEE2OTEgfSwgIC8vIENZUklMTElDIENBUElUQUwgTEVUVEVSIFRTU0UKKyAgICB7IDB4QTY5MiwgMHhBNjkzIH0sICAvLyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBUQ0hFCisgICAgeyAweEE2OTQsIDB4QTY5NSB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSFdFCisgICAgeyAweEE2OTYsIDB4QTY5NyB9LCAgLy8gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hXRQorICAgIHsgMHhBNzIyLCAweEE3MjMgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEVHWVBUT0xPR0lDQUwgQUxFRgorICAgIHsgMHhBNzI0LCAweEE3MjUgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEVHWVBUT0xPR0lDQUwgQUlOCisgICAgeyAweEE3MjYsIDB4QTcyNyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSEVORworICAgIHsgMHhBNzI4LCAweEE3MjkgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFRaCisgICAgeyAweEE3MkEsIDB4QTcyQiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVFJFU0lMTE8KKyAgICB7IDB4QTcyQywgMHhBNzJEIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBDVUFUUklMTE8KKyAgICB7IDB4QTcyRSwgMHhBNzJGIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBDVUFUUklMTE8gV0lUSCBDT01NQQorICAgIHsgMHhBNzMyLCAweEE3MzMgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEFBCisgICAgeyAweEE3MzQsIDB4QTczNSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQU8KKyAgICB7IDB4QTczNiwgMHhBNzM3IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBBVQorICAgIHsgMHhBNzM4LCAweEE3MzkgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEFWCisgICAgeyAweEE3M0EsIDB4QTczQiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQVYgV0lUSCBIT1JJWk9OVEFMIEJBUgorICAgIHsgMHhBNzNDLCAweEE3M0QgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEFZCisgICAgeyAweEE3M0UsIDB4QTczRiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUkVWRVJTRUQgQyBXSVRIIERPVAorICAgIHsgMHhBNzQwLCAweEE3NDEgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBTVFJPS0UKKyAgICB7IDB4QTc0MiwgMHhBNzQzIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggRElBR09OQUwgU1RST0tFCisgICAgeyAweEE3NDQsIDB4QTc0NSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBXSVRIIFNUUk9LRSBBTkQgRElBR09OQUwgU1RST0tFCisgICAgeyAweEE3NDYsIDB4QTc0NyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQlJPS0VOIEwKKyAgICB7IDB4QTc0OCwgMHhBNzQ5IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggSElHSCBTVFJPS0UKKyAgICB7IDB4QTc0QSwgMHhBNzRCIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggTE9ORyBTVFJPS0UgT1ZFUkxBWQorICAgIHsgMHhBNzRDLCAweEE3NEQgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBMT09QCisgICAgeyAweEE3NEUsIDB4QTc0RiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgT08KKyAgICB7IDB4QTc1MCwgMHhBNzUxIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBQIFdJVEggU1RST0tFIFRIUk9VR0ggREVTQ0VOREVSCisgICAgeyAweEE3NTIsIDB4QTc1MyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUCBXSVRIIEZMT1VSSVNICisgICAgeyAweEE3NTQsIDB4QTc1NSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUCBXSVRIIFNRVUlSUkVMIFRBSUwKKyAgICB7IDB4QTc1NiwgMHhBNzU3IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBRIFdJVEggU1RST0tFIFRIUk9VR0ggREVTQ0VOREVSCisgICAgeyAweEE3NTgsIDB4QTc1OSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUSBXSVRIIERJQUdPTkFMIFNUUk9LRQorICAgIHsgMHhBNzVBLCAweEE3NUIgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFIgUk9UVU5EQQorICAgIHsgMHhBNzVDLCAweEE3NUQgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFJVTSBST1RVTkRBCisgICAgeyAweEE3NUUsIDB4QTc1RiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgViBXSVRIIERJQUdPTkFMIFNUUk9LRQorICAgIHsgMHhBNzYwLCAweEE3NjEgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFZZCisgICAgeyAweEE3NjIsIDB4QTc2MyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVklTSUdPVEhJQyBaCisgICAgeyAweEE3NjQsIDB4QTc2NSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVEhPUk4gV0lUSCBTVFJPS0UKKyAgICB7IDB4QTc2NiwgMHhBNzY3IH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBUSE9STiBXSVRIIFNUUk9LRSBUSFJPVUdIIERFU0NFTkRFUgorICAgIHsgMHhBNzY4LCAweEE3NjkgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFZFTkQKKyAgICB7IDB4QTc2QSwgMHhBNzZCIH0sICAvLyBMQVRJTiBDQVBJVEFMIExFVFRFUiBFVAorICAgIHsgMHhBNzZDLCAweEE3NkQgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIElTCisgICAgeyAweEE3NkUsIDB4QTc2RiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQ09OCisgICAgeyAweEE3NzksIDB4QTc3QSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSU5TVUxBUiBECisgICAgeyAweEE3N0IsIDB4QTc3QyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSU5TVUxBUiBGCisgICAgeyAweEE3N0QsIDB4MUQ3OSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSU5TVUxBUiBHCisgICAgeyAweEE3N0UsIDB4QTc3RiB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVFVSTkVEIElOU1VMQVIgRworICAgIHsgMHhBNzgwLCAweEE3ODEgfSwgIC8vIExBVElOIENBUElUQUwgTEVUVEVSIFRVUk5FRCBMCisgICAgeyAweEE3ODIsIDB4QTc4MyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSU5TVUxBUiBSCisgICAgeyAweEE3ODQsIDB4QTc4NSB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSU5TVUxBUiBTCisgICAgeyAweEE3ODYsIDB4QTc4NyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSU5TVUxBUiBUCisgICAgeyAweEE3OEIsIDB4QTc4QyB9LCAgLy8gTEFUSU4gQ0FQSVRBTCBMRVRURVIgU0FMVElMTE8KKyAgICB7IDB4RkYyMSwgMHhGRjQxIH0sICAvLyBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQorICAgIHsgMHhGRjIyLCAweEZGNDIgfSwgIC8vIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCisgICAgeyAweEZGMjMsIDB4RkY0MyB9LCAgLy8gRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEMKKyAgICB7IDB4RkYyNCwgMHhGRjQ0IH0sICAvLyBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAorICAgIHsgMHhGRjI1LCAweEZGNDUgfSwgIC8vIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCisgICAgeyAweEZGMjYsIDB4RkY0NiB9LCAgLy8gRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEYKKyAgICB7IDB4RkYyNywgMHhGRjQ3IH0sICAvLyBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgRworICAgIHsgMHhGRjI4LCAweEZGNDggfSwgIC8vIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBICisgICAgeyAweEZGMjksIDB4RkY0OSB9LCAgLy8gRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEkKKyAgICB7IDB4RkYyQSwgMHhGRjRBIH0sICAvLyBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgorICAgIHsgMHhGRjJCLCAweEZGNEIgfSwgIC8vIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCisgICAgeyAweEZGMkMsIDB4RkY0QyB9LCAgLy8gRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEwKKyAgICB7IDB4RkYyRCwgMHhGRjREIH0sICAvLyBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQorICAgIHsgMHhGRjJFLCAweEZGNEUgfSwgIC8vIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCisgICAgeyAweEZGMkYsIDB4RkY0RiB9LCAgLy8gRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIE8KKyAgICB7IDB4RkYzMCwgMHhGRjUwIH0sICAvLyBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAorICAgIHsgMHhGRjMxLCAweEZGNTEgfSwgIC8vIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCisgICAgeyAweEZGMzIsIDB4RkY1MiB9LCAgLy8gRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFIKKyAgICB7IDB4RkYzMywgMHhGRjUzIH0sICAvLyBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgUworICAgIHsgMHhGRjM0LCAweEZGNTQgfSwgIC8vIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCisgICAgeyAweEZGMzUsIDB4RkY1NSB9LCAgLy8gRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFUKKyAgICB7IDB4RkYzNiwgMHhGRjU2IH0sICAvLyBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgorICAgIHsgMHhGRjM3LCAweEZGNTcgfSwgIC8vIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCisgICAgeyAweEZGMzgsIDB4RkY1OCB9LCAgLy8gRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFgKKyAgICB7IDB4RkYzOSwgMHhGRjU5IH0sICAvLyBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQorICAgIHsgMHhGRjNBLCAweEZGNUEgfSAgIC8vIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCit9OworCitzdGF0aWMgaW50IGNvbXBhcmVfcGFpcl9jYXBpdGFsKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpIHsKKyAgICByZXR1cm4gKGludCkoKih1bnNpZ25lZCBzaG9ydCAqKWEpCisgICAgICAgICAgICAtIChpbnQpKChzdHJ1Y3QgTGF0aW5DYXBpdGFsU21hbGxQYWlyKiliKS0+Y2FwaXRhbDsKK30KKwordW5zaWduZWQgc2hvcnQgbGF0aW5fdG9sb3dlcih1bnNpZ25lZCBzaG9ydCBjKSB7CisgICAgc3RydWN0IExhdGluQ2FwaXRhbFNtYWxsUGFpciAqcCA9CisgICAgICAgICAgICAoc3RydWN0IExhdGluQ2FwaXRhbFNtYWxsUGFpciAqKWJzZWFyY2goJmMsIFNPUlRFRF9DSEFSX01BUCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFNPUlRFRF9DSEFSX01BUCkgLyBzaXplb2YoU09SVEVEX0NIQVJfTUFQWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFNPUlRFRF9DSEFSX01BUFswXSksCisgICAgICAgICAgICAgICAgICAgIGNvbXBhcmVfcGFpcl9jYXBpdGFsKTsKKyAgICByZXR1cm4gcCA/IHAtPnNtYWxsIDogYzsKK30KKworfSAvLyBuYW1lc3BhY2UgbGF0aW5pbWUKZGlmZiAtLWdpdCBhL25hdGl2ZS9zcmMvY2hhcl91dGlscy5oIGIvbmF0aXZlL3NyYy9jaGFyX3V0aWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTIxZWNiNAotLS0gL2Rldi9udWxsCisrKyBiL25hdGl2ZS9zcmMvY2hhcl91dGlscy5oCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIExBVElOSU1FX0NIQVJfVVRJTFNfSAorI2RlZmluZSBMQVRJTklNRV9DSEFSX1VUSUxTX0gKKworbmFtZXNwYWNlIGxhdGluaW1lIHsKKwordW5zaWduZWQgc2hvcnQgbGF0aW5fdG9sb3dlcih1bnNpZ25lZCBzaG9ydCBjKTsKKworfTsgLy8gbmFtZXNwYWNlIGxhdGluaW1lCisKKyNlbmRpZiAvLyBMQVRJTklNRV9DSEFSX1VUSUxTX0gKZGlmZiAtLWdpdCBhL25hdGl2ZS9zcmMvZGljdGlvbmFyeS5jcHAgYi9uYXRpdmUvc3JjL2RpY3Rpb25hcnkuY3BwCmluZGV4IDZlNmY0NDEuLmU3NWJlYjUgMTAwNjQ0Ci0tLSBhL25hdGl2ZS9zcmMvZGljdGlvbmFyeS5jcHAKKysrIGIvbmF0aXZlL3NyYy9kaWN0aW9uYXJ5LmNwcApAQCAtMTksMTkgKzE5LDEyIEBACiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzeXMvbW1hbi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPGN1dGlscy9sb2cuaD4KLQotI2luY2x1ZGUgPHVuaWNvZGUvdWNoYXIuaD4KLQotLy8jZGVmaW5lIFVTRV9BU1NFVF9NQU5BR0VSCi0KLSNpZmRlZiBVU0VfQVNTRVRfTUFOQUdFUgotI2luY2x1ZGUgPHV0aWxzL0Fzc2V0TWFuYWdlci5oPgotI2luY2x1ZGUgPHV0aWxzL0Fzc2V0Lmg+Ci0jZW5kaWYKKy8vI2luY2x1ZGUgPGN1dGlscy9sb2cuaD4KKyNkZWZpbmUgTE9HSQogCiAjaW5jbHVkZSAiZGljdGlvbmFyeS5oIgogI2luY2x1ZGUgImJhc2VjaGFycy5oIgorI2luY2x1ZGUgImNoYXJfdXRpbHMuaCIKIAogI2RlZmluZSBERUJVR19ESUNUIDAKIApAQCAtMTc2LDcgKzE2OSw3IEBACiAgICAgaWYgKGMgPj0nQScgJiYgYyA8PSAnWicpIHsKICAgICAgICAgYyB8PSAzMjsKICAgICB9IGVsc2UgaWYgKGMgPiAxMjcpIHsKLSAgICAgICAgYyA9IHVfdG9sb3dlcihjKTsKKyAgICAgICAgYyA9IGxhdGluX3RvbG93ZXIoYyk7CiAgICAgfQogICAgIHJldHVybiBjOwogfQpkaWZmIC0tZ2l0IGEvcmVzL3ZhbHVlcy1zci9zdHJpbmdzLnhtbCBiL3Jlcy92YWx1ZXMtc3Ivc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRmNWFmMQotLS0gL2Rldi9udWxsCisrKyBiL3Jlcy92YWx1ZXMtc3Ivc3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisvKgorKioKKyoqIENvcHlyaWdodCAyMDA4LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisqKgorKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworLS0+Cis8cmVzb3VyY2VzIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8IS0tIFRpdGxlIGZvciBMYXRpbiBrZXlib2FyZCAgLS0+CisgICAgPHN0cmluZyBuYW1lPSJlbmdsaXNoX2ltZV9uYW1lIj7QkNC90LTRgNC+0LjQtNC+0LLQsCDRgtCw0YHRgtCw0YLRg9GA0LA8L3N0cmluZz4KKyAgICA8IS0tIFRpdGxlIGZvciBMYXRpbiBrZXlib2FyZCBzZXR0aW5ncyBhY3Rpdml0eSAvIGRpYWxvZyAtLT4KKyAgICA8c3RyaW5nIG5hbWU9ImVuZ2xpc2hfaW1lX3NldHRpbmdzIj7Qn9C+0LTQtdGI0LDQstCw0ZrQsCDQsNC90LTRgNC+0LjQtNC+0LLQtSDRgtCw0YHRgtCw0YLRg9GA0LU8L3N0cmluZz4KKworICAgIDwhLS0gT3B0aW9uIHRvIHByb3ZpZGUgdmlicmF0ZS9oYXB0aWMgZmVlZGJhY2sgb24ga2V5cHJlc3MgLS0+CisgICAgPHN0cmluZyBuYW1lPSJ2aWJyYXRlX29uX2tleXByZXNzIj7QktC40LHRgNCw0YbQuNGY0LUg0L/RgNC4INC/0YDQuNGC0LjRgdC60YM8L3N0cmluZz4KKyAgICA8IS0tIE9wdGlvbiB0byBwbGF5IGJhY2sgc291bmQgb24ga2V5cHJlc3MgaW4gc29mdCBrZXlib2FyZCAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InNvdW5kX29uX2tleXByZXNzIj7Ql9Cy0YPQuiDQv9GA0Lgg0L/RgNC40YLQuNGB0LrRgzwvc3RyaW5nPgorCisgICAgPCEtLSBPcHRpb24gdG8gZW5hYmxlIHVzaW5nIG5lYXJieSBrZXlzIHdoZW4gY29ycmVjdGluZy9wcmVkaWN0aW5nIC0tPgorICAgIDxzdHJpbmcgbmFtZT0iaGl0X2NvcnJlY3Rpb24iPtCY0YHQv9GA0LDQstGZ0LDRmtC1INCz0YDQtdGI0LDQutCwPC9zdHJpbmc+CisKKyAgICA8IS0tIERlc2NyaXB0aW9uIGZvciBoaXRfY29ycmVjdGlvbiAgLS0+CisgICAgPHN0cmluZyBuYW1lPSJoaXRfY29ycmVjdGlvbl9zdW1tYXJ5Ij7QmNGB0L/RgNCw0LLRmdCw0ZrQtSDQs9GA0LXRiNCw0LrQsCDQv9GA0Lgg0YPQvdC+0YHRgzwvc3RyaW5nPgorCisgICAgPCEtLSBPcHRpb24gdG8gZW5hYmxlIHVzaW5nIG5lYXJieSBrZXlzIHdoZW4gY29ycmVjdGluZy9wcmVkaWN0aW5nIGluIGxhbmRzY2FwZS0tPgorICAgIDxzdHJpbmcgbmFtZT0iaGl0X2NvcnJlY3Rpb25fbGFuZCI+0JPRgNC10YjQutC1INC/0YDQuCDQstC+0LTQvtGA0LDQstC90L7RmCDQvtGA0LjRmNC10L3RgtCw0YbQuNGY0Lg8L3N0cmluZz4KKworICAgIDwhLS0gRGVzY3JpcHRpb24gZm9yIGhpdF9jb3JyZWN0aW9uIGluIGxhbmRzY2FwZSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9ImhpdF9jb3JyZWN0aW9uX2xhbmRfc3VtbWFyeSI+0JjRgdC/0YDQsNCy0ZnQsNGa0LUg0LPRgNC10YjQsNC60LAg0L/RgNC4INGD0L3QvtGB0YMg0L/RgNC4CisgICAgICAgINCy0L7QtNC+0YDQsNCy0L3QvtC8INC/0L7Qu9C+0LbQsNGY0YM8L3N0cmluZz4KKworICAgIDwhLS0gT3B0aW9uIHRvIGF1dG9tYXRpY2FsbHkgY29ycmVjdCB3b3JkIG9uIGhpdHRpbmcgc3BhY2UgLS0+CisgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NvcnJlY3Rpb24iPtCf0YDQtdC00LvQvtC30Lgg0YDQtdGH0Lg8L3N0cmluZz4KKworICAgIDwhLS0gRGVzY3JpcHRpb24gZm9yIGF1dG9fY29ycmVjdGlvbiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9ImF1dG9fY29ycmVjdGlvbl9zdW1tYXJ5Ij7QkNGD0YLQvtC80LDRgtGB0LrQsCDQuNGB0L/RgNCw0LLQutCwINC/0YDQtdGC0YXQvtC00L3QviDRg9C90LXRgdC10L3QtSDRgNC10YfQuDwvc3RyaW5nPgorCisgICAgPCEtLSBPcHRpb24gdG8gZW5hYmxlIHRleHQgcHJlZGljdGlvbiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InByZWRpY3Rpb24iPtCf0YDQtdC00LvQvtC30Lgg0YDQtdGH0Lg8L3N0cmluZz4KKyAgICA8IS0tIENhdGVnb3J5IHRpdGxlIGZvciB0ZXh0IHByZWRpY3Rpb24gLS0+CisgICAgPHN0cmluZyBuYW1lPSJwcmVkaWN0aW9uX2NhdGVnb3J5Ij7Qn9C+0LTQtdGI0LDQstCw0ZrQsCDQt9CwINC/0YDQtdC00LvQvtCz0LUg0YDQtdGH0Lg8L3N0cmluZz4KKyAgICA8IS0tIERlc2NyaXB0aW9uIGZvciB0ZXh0IHByZWRpY3Rpb24gLS0+CisgICAgPHN0cmluZyBuYW1lPSJwcmVkaWN0aW9uX3N1bW1hcnkiPtCj0LrRmdGD0YfQuCDQsNGD0YLQvtC80LDRgtGB0LrQtSDQvdCw0YHRgtCw0LLQutC1INC/0YDQuCDRg9C90L7RgdGDPC9zdHJpbmc+CisKKyAgICA8IS0tIERpYWxvZyB0aXRsZSBmb3IgYXV0byBjb21wbGV0ZSBjaG9pY2VzIC0tPgorICAgIDxzdHJpbmcgbmFtZT0iYXV0b19jb21wbGV0ZV9kaWFsb2dfdGl0bGUiPtCQ0YPRgtC+0LzQsNGC0YHQutC4INC90LDRgdGC0LDQstGG0Lg8L3N0cmluZz4KKworICAgIDwhLS0gT3B0aW9uIHRvIGVuYWJsZSB0ZXh0IHByZWRpY3Rpb24gaW4gbGFuZHNjYXBlIC0tPgorICAgIDxzdHJpbmcgbmFtZT0icHJlZGljdGlvbl9sYW5kc2NhcGUiPtCj0LLQtdGb0LDQvSDQv9C+0ZnQtSDQt9CwINGD0L3QvtGBINGC0LXQutGB0YLQsDwvc3RyaW5nPgorICAgIDwhLS0gRGVzY3JpcHRpb24gZm9yIHRleHQgcHJlZGljdGlvbiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InByZWRpY3Rpb25fbGFuZHNjYXBlX3N1bW1hcnkiPtCh0LDQutGA0LjRmCDQv9GA0LXQtNC70L7Qs9C1INGA0LXRh9C4INC/0YDQuCDQstC+0LTQvtGA0LDQstC90L7QvCDQv9C+0LvQvtC20LDRmNGDPC9zdHJpbmc+CisKKyAgICA8IS0tIE9wdGlvbiB0byBlbmFibGUgYXV0byBjYXBpdGFsaXphdGlvbiBvZiBzZW50ZW5jZXMgLS0+CisgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcCI+0JDRg9GC0L7QvNCw0YLRgdC60LAg0LLQtdC70LjRh9C40L3QsCDRgdC70L7QstCwPC9zdHJpbmc+CisgICAgPCEtLSBEZXNjcmlwdGlvbiBmb3IgYXV0byBjYXAgLS0+CisgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NhcF9zdW1tYXJ5Ij7QktC10LvQuNC60L4g0YHQu9C+0LLQviDQvdCwINC/0L7Rh9C10YLQutGDINGA0LXRh9C10L3QuNGG0LU8L3N0cmluZz4KKyAgICA8IS0tIE9wdGlvbiB0byBlbmFibGUgYXV0byBwdW5jdHVhdGUgLS0+CisgICAgPHN0cmluZyBuYW1lPSJhdXRvX3B1bmN0dWF0ZSI+0JDRg9GC0L7QvNCw0YLRgdC60LAg0LjQvdGC0LXRgNC/0YPQvdC60YbQuNGY0LA8L3N0cmluZz4KKyAgICA8IS0tIERlc2NyaXB0aW9uIGZvciBhdXRvIHB1bmN0dWF0ZSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9ImF1dG9fcHVuY3R1YXRlX3N1bW1hcnkiPtCQ0YPRgtC+0LzQsNGC0YHQutC+INC/0L7RgdGC0LDQstGZ0LDRmtC1INC40L3RgtC10YDQv9GD0L3QutGG0LjRmNGB0LrQuNGFINC30L3QsNC60LAg0L/RgNC4INGD0L3QvtGB0YMuPC9zdHJpbmc+CisKKyAgICA8IS0tIE9wdGlvbiB0byBlbmFibGUgcXVpY2sgZml4ZXMgLS0+CisgICAgPHN0cmluZyBuYW1lPSJxdWlja19maXhlcyI+0JHRgNC30LUg0LjRgdC/0YDQsNCy0LrQtTwvc3RyaW5nPgorICAgIDwhLS0gRGVzY3JpcHRpb24gZm9yIHF1aWNrIGZpeGVzIC0tPgorICAgIDxzdHJpbmcgbmFtZT0icXVpY2tfZml4ZXNfc3VtbWFyeSI+0JDRg9GC0L7QvNCw0YLRgdC60LAg0LjRgdC/0YDQsNCy0LrQsCDRh9C10YHRgtC40YUg0LPRgNC10YjQsNC60LA8L3N0cmluZz4KKworICAgIDwhLS0gT3B0aW9uIHRvIGVuYWJsZSBzaG93aW5nIHN1Z2dlc3Rpb25zIC0tPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19zdWdnZXN0aW9ucyI+0J/RgNC40LrQsNC3INC/0YDQtdC00LvQvtCz0LA8L3N0cmluZz4KKyAgICA8IS0tIERlc2NyaXB0aW9uIGZvciBzaG93IHN1Z2dlc3Rpb25zIC0tPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19zdWdnZXN0aW9uc19zdW1tYXJ5Ij7Qn9GA0LjQutCw0LfRg9GY0LUg0L/RgNC10LTQu9C+0LPQtSDRgNC10YfQuCDRgtC+0LrQvtC8INGD0L3QvtGB0LA8L3N0cmluZz4KKworICAgIDwhLS0gT3B0aW9uIHRvIGVuYWJsZSBhdXRvIGNvbXBsZXRpb24gLS0+CisgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NvbXBsZXRlIj7QkNGD0YLQvtC80LDRgtGB0LrQsCDQtNC+0L/Rg9C90LA8L3N0cmluZz4KKyAgICA8IS0tIERlc2NyaXB0aW9uIGZvciBhdXRvIGNvbXBsZXRpb24gLS0+CisgICAgPHN0cmluZyBuYW1lPSJhdXRvX2NvbXBsZXRlX3N1bW1hcnkiPtCg0LDQt9C80LDQutC90LjRhtCwINC4INC40L3RgtC10YDQv9GD0L3QutGG0LjRmNCwINCw0YPRgtC+0LzQsNGC0YHQutC4INGD0LHQsNGG0YPRmNGDINC+0LfQvdCw0YfQtdC90YMg0YDQtdGHLjwvc3RyaW5nPgorCisgICAgPCEtLSBBcnJheSBvZiBwcmVkaWN0aW9uIG1vZGVzIC0tPgorICAgIDxzdHJpbmctYXJyYXkgbmFtZT0icHJlZGljdGlvbl9tb2RlcyI+CisgICAgICAgIDxpdGVtPtCY0YHQutGZ0YPRh9C10L3QvjwvaXRlbT4KKyAgICAgICAgPGl0ZW0+0J7RgdC90L7QstC90L48L2l0ZW0+CisgICAgICAgIDxpdGVtPtCd0LDQv9GA0LXQtNC90L48L2l0ZW0+CisgICAgPC9zdHJpbmctYXJyYXk+CisKKyAgICA8IS0tIERvbid0IHRyYW5zbGF0ZSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InByZWRpY3Rpb25fbm9uZSIgdHJhbnNsYXRhYmxlPSJmYWxzZSI+MDwvc3RyaW5nPgorICAgIDwhLS0gRG9uJ3QgdHJhbnNsYXRlIC0tPgorICAgIDxzdHJpbmcgbmFtZT0icHJlZGljdGlvbl9iYXNpYyIgdHJhbnNsYXRhYmxlPSJmYWxzZSI+MTwvc3RyaW5nPgorICAgIDwhLS0gRG9uJ3QgdHJhbnNsYXRlIC0tPgorICAgIDxzdHJpbmcgbmFtZT0icHJlZGljdGlvbl9mdWxsIiAgdHJhbnNsYXRhYmxlPSJmYWxzZSI+Mjwvc3RyaW5nPgorCisgICAgPHN0cmluZy1hcnJheSBuYW1lPSJwcmVkaWN0aW9uX21vZGVzX3ZhbHVlcyIgdHJhbnNsYXRhYmxlPSJmYWxzZSI+CisgICAgICAgIDxpdGVtPkBzdHJpbmcvcHJlZGljdGlvbl9ub25lPC9pdGVtPgorICAgICAgICA8aXRlbT5Ac3RyaW5nL3ByZWRpY3Rpb25fYmFzaWM8L2l0ZW0+CisgICAgICAgIDxpdGVtPkBzdHJpbmcvcHJlZGljdGlvbl9mdWxsPC9pdGVtPgorICAgIDwvc3RyaW5nLWFycmF5PgorCisgICAgPCEtLSBJbmRpY2F0ZXMgdGhhdCBhIHdvcmQgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIGRpY3Rpb25hcnkgLS0+CisgICAgPHN0cmluZyBuYW1lPSJhZGRlZF93b3JkIj48eGxpZmY6ZyBpZD0id29yZCI+JXM8L3hsaWZmOmc+IDogU2F2ZWQ8L3N0cmluZz4KKyAgICA8IS0tIFRpcCB0byBsb25nIHByZXNzIG9uIGtleXMgLS0+CisgICAgPHN0cmluZyBuYW1lPSJ0aXBfbG9uZ19wcmVzcyI+0JTRg9Cz0Lgg0L/RgNC40YLQuNGB0LDQuiDQvdCwINGC0LDRgdGC0LXRgNC1INC+0YLQutGA0LjQstCwINC/0YDQvtGI0LjRgNC10L3QtSDQt9C90LDQutC1ICjDuCwgw7YsINC40YLQtC4pPC9zdHJpbmc+CisgICAgPCEtLSBUaXAgdG8gZGlzbWlzcyBrZXlib2FyZCAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InRpcF9kaXNtaXNzIj7Qn9GA0LjRgtC40YHQvdC40YLQtSDRgtCw0YHRgtC10YAg0LfQsCDQvdCw0LfQsNC0IFx1MjFCNiDQutCw0LrQviDQsdC40YHRgtC1INC30LDRgtCy0L7RgNC40LvQuCDRgtCw0YHRgtCw0YLRg9GA0YM8L3N0cmluZz4KKyAgICA8IS0tIFRpcCB0byBwcmVzcyA/MTIzIHRvIGFjY2VzcyBudW1iZXJzIGFuZCBzeW1ib2xzIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idGlwX2FjY2Vzc19zeW1ib2xzIj7Qn9GA0LjRgdGC0YPQvyDQsdGA0L7RmNC10LLQuNC80LAg0Lgg0YHQuNC80LHQvtC70LjQvNCwPC9zdHJpbmc+CisgICAgPCEtLSBUaXAgdG8gbG9uZyBwcmVzcyBvbiB0eXBlZCB3b3JkIHRvIGFkZCB0byBkaWN0aW9uYXJ5IC0tPgorICAgIDxzdHJpbmcgbmFtZT0idGlwX2FkZF90b19kaWN0aW9uYXJ5Ij7Qn9GA0LjRgtC40YHQvdC40YLQtSDQuCDQtNGA0LbQuNGC0LUg0L/RgNC40YLQuNGB0L3Rg9GC0YMg0YDQtdGHINGB0LAg0LrRgNCw0ZjRmtC1INC70LXQstC1INGB0YLRgNCw0L3QtQorICAgICAgICDQutCw0LrQviDQsdC40YHRgtC1INGY0LUg0LTQvtC00LDQu9C4INGDINGA0LXRh9C90LjQujwvc3RyaW5nPgorCisgICAgPCEtLSBJbnN0cnVjdGlvbiB0byB0b3VjaCB0aGUgYnViYmxlIHRvIGNvbnRpbnVlIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idG91Y2hfdG9fY29udGludWUiPtCf0YDQuNGC0LjRgdC90LjRgtC1INC+0LLQsNGYINC/0L7QtNGB0LXRgtC90LjQuiDQtNCwINC90LDRgdGC0LDQstC40YLQtSDCuzwvc3RyaW5nPgorCisgICAgPCEtLSBJbnN0cnVjdGlvbiB0byB0b3VjaCB0aGUgYnViYmxlIHRvIHN0YXJ0IHR5cGluZyAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InRvdWNoX3RvX2ZpbmlzaCI+0J/RgNC40YLQuNGB0L3QuNGC0LUg0L7QstC00LUg0LTQsCDQsdC40YHRgtC1INC30LDRgtCy0L7RgNC40LvQuCDQv9C+0LTRgdC10YLQvdC40Log0Lgg0L3QsNGB0YLQsNCy0LjQu9C4INGD0L3QvtGBITwvc3RyaW5nPgorCisgICAgPCEtLSBUdXRvcmlhbCB0aXAgMSAtIFRoZSBrZXlib2FyZCBvcGVucyBhbnkgdGltZSB5b3UgdG91Y2ggYSB0ZXh0IGZpZWxkIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idGlwX3RvX29wZW5fa2V5Ym9hcmQiPjxiPtCi0LDRgdGC0LDRgtGD0YDQsCDRgdC1INC+0YLQstCw0YDQsCDQutCw0LQg0LPQvtC0INGY0LUg0L/QvtGC0YDQtdCx0L3QviDQtNCwINGD0L3QtdGB0LXRgtC1INGC0LXQutGB0YI8L2I+PC9zdHJpbmc+CisKKyAgICA8IS0tIFR1dG9yaWFsIHRpcCAyIC0gVG91Y2ggYW5kIGhvbGQgYSBrZXkgdG8gdmlldyBhY2NlbnRzIChleGFtcGxlcykgLS0+CisgICAgPHN0cmluZyBuYW1lPSJ0aXBfdG9fdmlld19hY2NlbnRzIj48Yj7Qn9GA0LjRgtC40YHQvdC40YLQtSDQuCDQtNGA0LbQuNGC0LUg0YLQsNGB0YLQtdGAINC60LDQutC+INCx0LjRgdGC0LUg0LLQuNC00LXQu9C4INC/0YDQvtGI0LjRgNC10L3QtQorICAgICAgICDQt9C90LDQutC1XG4o4oCeLCDigJ8sINC40YLQtC4pPC9iPgorICAgIDwvc3RyaW5nPgorCisgICAgPCEtLSBUdXRvcmlhbCB0aXAgMyAtIEhvdyB0byBzd2l0Y2ggdG8gbnVtYmVyL3N5bWJvbCBrZXlib2FyZCAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InRpcF90b19vcGVuX3N5bWJvbHMiPjxiPtCf0YDQtdCx0LDRhtC40YLQtSDRgdC1INC90LAg0LHRgNC+0ZjQtdCy0LUg0Lgg0YHQuNC80LHQvtC70LUg0L/RgNC40YLQuNGB0LrQvtC8INC90LAg0L7QstCw0Zgg0YLQsNGB0YLQtdGACisgICAgICAgIDwvYj48L3N0cmluZz4KKworICAgIDwhLS0gVHV0b3JpYWwgdGlwIDQgLSBIb3cgdG8gc3dpdGNoIGJhY2sgdG8gYWxwaGFiZXQga2V5Ym9hcmQgLS0+CisgICAgPHN0cmluZyBuYW1lPSJ0aXBfdG9fY2xvc2Vfc3ltYm9scyI+PGI+0JLRgNCw0YLQuNGC0LUg0YHQtSDQvdCw0LfQsNC0INC90LAg0YHQu9C+0LLQsCDQv9GA0LjRgtC40YHQutC+0Lwg0L3QsCDQvtCy0LDRmCDRgtCw0YHRgtC10YA8L2I+PC9zdHJpbmc+CisKKyAgICA8IS0tIFR1dG9yaWFsIHRpcCA1IC0gSG93IHRvIGxhdW5jaCBrZXlib2FyZCBzZXR0aW5ncyAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InRpcF90b19sYXVuY2hfc2V0dGluZ3MiPjxiPtCf0YDQuNGC0LjRgdC90LjRgtC1INC4INC00YDQttC40YLQtSDQv9GA0LjRgtC40YHQvdGD0YIg0L7QstCw0Zgg0YLQsNGB0YLQtdGAINC00LAg0LHQuNGB0YLQtSDQv9GA0L7QvNC10L3QuNC70LgKKyAgICAgICAg0L/QvtC00LXRiNCw0LLQsNGa0LAg0YLQsNGB0YLQsNGC0YPRgNC1LCDQv9C+0L/Rg9GCINCw0YPRgtC+0LzQsNGC0YHQutC+0LMg0L3QsNGB0YLQsNCy0ZnQsNGa0LA8L2I+PC9zdHJpbmc+CisKKyAgICA8IS0tIFR1dG9yaWFsIHRpcCA2IC0gRG9uZSB3aXRoIHRoZSB0dXRvcmlhbCAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InRpcF90b19zdGFydF90eXBpbmciPjxiPtCf0YDQvtCx0LDRmNGC0LUg0YHQsNC80LghPC9iPjwvc3RyaW5nPgorCisKKyAgICA8IS0tIExhYmVsIGZvciBzb2Z0IGVudGVyIGtleSB3aGVuIGl0IHBlcmZvcm1zIEdPIGFjdGlvbi4gIE11c3QgYmUgc2hvcnQgdG8gZml0IG9uIGtleSEgLS0+CisgICAgPHN0cmluZyBuYW1lPSJsYWJlbF9nb19rZXkiPtCY0LTQuDwvc3RyaW5nPgorICAgIDwhLS0gTGFiZWwgZm9yIHNvZnQgZW50ZXIga2V5IHdoZW4gaXQgcGVyZm9ybXMgTkVYVCBhY3Rpb24uICBNdXN0IGJlIHNob3J0IHRvIGZpdCBvbiBrZXkhIC0tPgorICAgIDxzdHJpbmcgbmFtZT0ibGFiZWxfbmV4dF9rZXkiPtCU0LDRmdC1PC9zdHJpbmc+CisgICAgPCEtLSBMYWJlbCBmb3Igc29mdCBlbnRlciBrZXkgd2hlbiBpdCBwZXJmb3JtcyBET05FIGFjdGlvbi4gIE11c3QgYmUgc2hvcnQgdG8gZml0IG9uIGtleSEgLS0+CisgICAgPHN0cmluZyBuYW1lPSJsYWJlbF9kb25lX2tleSI+0JrRgNCw0Zg8L3N0cmluZz4KKyAgICA8IS0tIExhYmVsIGZvciBzb2Z0IGVudGVyIGtleSB3aGVuIGl0IHBlcmZvcm1zIFNFTkQgYWN0aW9uLiAgTXVzdCBiZSBzaG9ydCB0byBmaXQgb24ga2V5ISAtLT4KKyAgICA8c3RyaW5nIG5hbWU9ImxhYmVsX3NlbmRfa2V5Ij7QqNCw0ZnQuDwvc3RyaW5nPgorICAgIDwhLS0gTGFiZWwgZm9yICJzd2l0Y2ggdG8gc3ltYm9scyIga2V5LiAgTXVzdCBiZSBzaG9ydCB0byBmaXQgb24ga2V5ISAtLT4KKyAgICA8c3RyaW5nIG5hbWU9ImxhYmVsX3N5bWJvbF9rZXkiPlw/MTIzPC9zdHJpbmc+CisgICAgPCEtLSBMYWJlbCBmb3IgInN3aXRjaCB0byBudW1lcmljIiBrZXkuICBNdXN0IGJlIHNob3J0IHRvIGZpdCBvbiBrZXkhIC0tPgorICAgIDxzdHJpbmcgbmFtZT0ibGFiZWxfcGhvbmVfa2V5Ij4xMjM8L3N0cmluZz4KKyAgICA8IS0tIExhYmVsIGZvciAic3dpdGNoIHRvIGFscGhhYmV0aWMiIGtleS4gIE11c3QgYmUgc2hvcnQgdG8gZml0IG9uIGtleSEgLS0+CisgICAgPHN0cmluZyBuYW1lPSJsYWJlbF9hbHBoYV9rZXkiPtCQ0JHQkjwvc3RyaW5nPgorICAgIDwhLS0gTGFiZWwgZm9yIEFMVCBtb2RpZmllciBrZXkuICBNdXN0IGJlIHNob3J0IHRvIGZpdCBvbiBrZXkhIC0tPgorICAgIDxzdHJpbmcgbmFtZT0ibGFiZWxfYWx0X2tleSI+QUxUPC9zdHJpbmc+CisKKyAgICA8IS0tIFZvaWNlIHJlbGF0ZWQgbGFiZWxzIC0tPgorCisgICAgPCEtLSBUaXRsZSBvZiB0aGUgd2FybmluZyBkaWFsb2cgdGhhdCBzaG93cyB3aGVuIGEgdXNlciBpbml0aWF0ZXMgdm9pY2UgaW5wdXQgZm9yCisgICAgICAgICB0aGUgZmlyc3QgdGltZS4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJ2b2ljZV93YXJuaW5nX3RpdGxlIj7Qk9C+0LLQvtGA0L3QuCDRg9C90L7RgTwvc3RyaW5nPgorCisgICAgPCEtLSBNZXNzYWdlIHRoYXQgZ2V0cyBwdXQgYXQgdGhlIHRvcCBvZiB0aGUgd2FybmluZyBkaWFsb2cgaWYgdGhlIHVzZXIgaXMgYXR0ZW1wdGluZyB0byB1c2UKKyAgICAgICAgIHZvaWNlIGlucHV0IGluIGEgY3VycmVudGx5IHVuc3VwcG9ydGVkIGxvY2FsZS4gVm9pY2UgaW5wdXQgd2lsbCB3b3JrIGZvciBzdWNoIGEgdXNlciwKKyAgICAgICAgIGJ1dCBpdCB3aWxsIG9ubHkgcmVjb2duaXplIHRoZW0gaW4gRW5nbGlzaC4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJ2b2ljZV93YXJuaW5nX2xvY2FsZV9ub3Rfc3VwcG9ydGVkIj7Qk9C+0LLQvtGA0L3QuCDRg9C90L7RgSDQvdC40ZjQtSDRgtGA0LXQvdGD0YLQvdC+INC/0L7QtNGA0LbQsNC9INC90LAg0JLQsNGI0LXQvCDRmNC10LfQuNC60YMsCisgICAgICAg0LDQu9C4INGA0LDQtNC4INC90LAg0LXQvdCz0LvQtdGB0LrQvtC8Ljwvc3RyaW5nPgorCisgICAgPCEtLSBNZXNzYWdlIG9mIHRoZSB3YXJuaW5nIGRpYWxvZyB0aGF0IHNob3dzIHdoZW4gYSB1c2VyIGluaXRpYXRlcyB2b2ljZSBpbnB1dCBmb3IKKyAgICAgICAgIHRoZSBmaXJzdCB0aW1lLCBvciB0dXJucyBpdCBvbiBpbiBzZXR0aW5ncy4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJ2b2ljZV93YXJuaW5nX21heV9ub3RfdW5kZXJzdGFuZCI+0JPQvtCy0L7RgNC90Lgg0YPQvdC+0YEg0ZjQtSDQtdC60YHQv9C10YDQuNC80LXQvdGC0LDQu9C90LAg0LzQvtCz0YPRm9C90L7RgdGCINC60L7RmNCwINC60L7RgNC40YHRgtC4CisgICAgICAgIEdvb2dsZS3QvtCy0L4g0LzRgNC10LbQvdC+INC/0YDQtdC/0L7Qt9C90LDQstCw0ZrQtSDQs9C+0LLQvtGA0LAuPC9zdHJpbmc+CisKKyAgICA8IS0tIEFuIGFkZGl0aW9uYWwgcGFydCBvZiB0aGUgd2FybmluZyBkaWFsb2cgZm9yIHZvaWNlIGlucHV0IHRoYXQgb25seSBzaG93cyB3aGVuIHRoZSB1c2VyCisgICAgICAgICBhY3R1YWxseSBpbml0aWF0ZXMgdm9pY2UgaW5wdXQsIHJhdGhlciB0aGFuIGp1c3QgdHVybmluZyBpdCBvbiBpbiBzZXR0aW5ncy4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJ2b2ljZV93YXJuaW5nX2hvd190b190dXJuX29mZiI+0JrQsNC60L4g0LHQuNGB0YLQtSDQuNGB0LrRmdGD0YfQuNC70Lgg0LPQvtCy0L7RgNC90Lgg0YPQvdC+0YEsINC40LfQsNCx0LXRgNC40YLQtSDQv9C+0LTQtdGI0LDQstCw0ZrQsAorICAgICAgICDRgtCw0YHRgtCw0YLRg9GA0LUuPC9zdHJpbmc+CisKKyAgICA8IS0tIE1lc3NhZ2UgdG8gc2hvdyB3aGVuIHVzZXIgY2xpY2tzIHRoZSBzd2lwaW5nIGhpbnQgKHdoaWNoIHNheXMKKyAgICAgICAgIlN3aXBlIGFjcm9zcyBrZXlib2FyZCB0byBzcGVhayIpLiBBbHNvIHNob3duIHdoZW4gZW5hYmxpbmcgc2V0dGluZ3MuIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idm9pY2VfaGludF9kaWFsb2dfbWVzc2FnZSI+0JrQsNC60L4g0LHQuNGB0YLQtSDRg9C60ZnRg9GH0LjQu9C4INCz0L7QstC+0YDQvdC4INGD0L3QvtGBLCDQv9GA0LjRgtC40YHQvdC40YLQtSDQtNGD0LPQvNC1INGB0LAg0YHQu9C40YfQuNGG0L7QvAorICAgICAgICDQvNC40LrRgNC+0YTQvtC90LAg0LjQu9C4INC/0YDQtdCy0YPRhtC40YLQtSDQv9GA0YHRgtC+0Lwg0L/RgNC10LrQviDRhtC10LvQtSDQtNGD0LbQuNC90LUg0YLQsNGB0YLQsNGC0YPRgNC1Ljwvc3RyaW5nPgorCisgICAgPCEtLSBTaG9ydCBtZXNzYWdlIHRvIHRlbGwgdGhlIHVzZXIgdGhlIHN5c3RlbSBpcyByZWFkeSBmb3IgdGhlbSB0byBzcGVhay4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJ2b2ljZV9saXN0ZW5pbmciPtCT0L7QstC+0YDQuNGC0LUg0YHQsNC00LA8L3N0cmluZz4KKworICAgIDwhLS0gU2hvcnQgbWVzc2FnZSBzaG93biBhZnRlciB0aGUgdXNlciBmaW5pc2hlcyBzcGVha2luZy4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJ2b2ljZV93b3JraW5nIj7QntCx0YDQsNC00LAg0ZjQtSDRgyDRgtC+0LrRgzwvc3RyaW5nPgorCisgICAgPCEtLSBTaG9ydCBtZXNzYWdlIHNob3duIGJlZm9yZSB0aGUgdXNlciBzaG91bGQgc3BlYWsuIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idm9pY2VfaW5pdGlhbGl6aW5nIj48L3N0cmluZz4KKworICAgIDwhLS0gU2hvcnQgbWVzc2FnZSBzaG93biB3aGVuIGEgZ2VuZXJpYyBlcnJvciBvY2N1cnMuIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idm9pY2VfZXJyb3IiPtCT0YDQtdGI0LrQsC4gINCc0L7Qu9C40LzQviDQv9GA0L7QsdCw0ZjRgtC1INC/0L7QvdC+0LLQvi48L3N0cmluZz4KKworICAgIDwhLS0gU2hvcnQgbWVzc2FnZSBzaG93biBmb3IgYSBuZXR3b3JrIGVycm9yLiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InZvaWNlX25ldHdvcmtfZXJyb3IiPtCf0L7QstC10LfQuNCy0LDRmtC1INC90LjRmNC1INGD0YHQv9C10LvQvjwvc3RyaW5nPgorCisgICAgPCEtLSBTaG9ydCBtZXNzYWdlIHNob3duIGZvciBhIG5ldHdvcmsgZXJyb3Igd2hlcmUgdGhlIHV0dGVyYW5jZSB3YXMgcmVhbGx5IGxvbmcsCisgICAgICAgICBpbiB3aGljaCBjYXNlIHdlIHNob3VsZCBzdWdnZXN0IHRoYXQgdGhlIHVzZXIgc3BlYWsgbGVzcy4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJ2b2ljZV90b29fbXVjaF9zcGVlY2giPtCT0YDQtdGI0LrQsCwg0LPQvtCy0L7RgCDRmNC1INC/0YDQtdC00YPQs9Cw0YfQsNC6Ljwvc3RyaW5nPgorCisgICAgPCEtLSBTaG9ydCBtZXNzYWdlIHNob3duIGZvciBhbiBhdWRpbyBlcnJvci4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJ2b2ljZV9hdWRpb19lcnJvciI+0J/RgNC+0LHQu9C10Lwg0YHQsCDQt9Cy0YPQutC+0Lw8L3N0cmluZz4KKworICAgIDwhLS0gU2hvcnQgbWVzc2FnZSBzaG93biBmb3IgYW4gZXJyb3Igd2l0aCB0aGUgdm9pY2Ugc2VydmVyLiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InZvaWNlX3NlcnZlcl9lcnJvciI+0JPRgNC10YjQutCwINC90LAg0YHQtdGA0LLQtdGA0YM8L3N0cmluZz4KKworICAgIDwhLS0gU2hvcnQgbWVzc2FnZSBzaG93biB3aGVuIG5vIHNwZWVjaCBpcyBoZWFyZC4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJ2b2ljZV9zcGVlY2hfdGltZW91dCI+0JPQvtCy0L7RgCDQvdC40ZjQtSDRgdC90LjQvNGZ0LXQvTwvc3RyaW5nPgorCisgICAgPCEtLSBTaG9ydCBtZXNzYWdlIHNob3duIHdoZW4gdGhlIHNlcnZlciBjb3VsZG4ndCBwYXJzZSBhbnkgc3BlZWNoLiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InZvaWNlX25vX21hdGNoIj7QndC10LzQsCDQv9C+0LPQvtC00LDQutCwPC9zdHJpbmc+CisKKyAgICA8IS0tIFNob3J0IG1lc3NhZ2Ugc2hvd24gd2hlbiB0aGUgdXNlciBpbml0aWF0ZXMgdm9pY2UgYW5kIHZvaWNlCisgICAgICAgIHNlYXJjaCBpcyBub3QgaW5zdGFsbGVkLiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InZvaWNlX25vdF9pbnN0YWxsZWQiPtCT0L7QstC+0YDQvdCwINC/0YDQtdGC0YDQsNCz0LAg0L3QuNGY0LUg0LjQvdGB0YLQsNC70LjRgNCw0L3QsDwvc3RyaW5nPgorCisgICAgPCEtLSBTaG9ydCBoaW50IHNob3duIGluIGNhbmRpZGF0ZSB2aWV3IHRvIGV4cGxhaW4gdm9pY2UgaW5wdXQuIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idm9pY2Vfc3dpcGVfaGludCI+PGI+0KHQsNCy0LXRgjo8L2I+INCf0YDQtdCy0YPRhtC40YLQtSDQv9GA0YHRgtC+0Lwg0L/RgNC10LrQviDRgtCw0YHRgtCw0YLRg9GA0LUg0LAg0L7QvdC00LAg0LPQvtCy0L7RgNC40YLQtS48L3N0cmluZz4KKworICAgIDwhLS0gU2hvcnQgaGludCBzaG93biBpbiBjYW5kaWRhdGUgdmlldyB0byBleHBsYWluIHRoYXQgdXNlciBjYW4gc3BlYWsgcHVuY3R1YXRpb24uIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idm9pY2VfcHVuY3R1YXRpb25faGludCI+PGI+0KHQsNCy0LXRgjo8L2I+INCh0LvQtdC00LXRm9C4INC/0YPRgiwg0LjQt9Cz0L7QstC+0YDQuNGC0LUg0L3QsNC30LjQsiDQuNC90YLQtdGA0L/Rg9C90LrRhtC40ZjQtSwKKyAgICAgICAg0L/QvtC/0YPRgiDigJ7RgtCw0YfQutCw4oCcLCDigJ7Qt9Cw0L/QtdGC0LDigJwg0LjQu9C4IOKAntC30L3QsNC6INC/0LjRgtCw0ZrQsOKAnC48L3N0cmluZz4KKworICAgIDwhLS0gTGFiZWwgb24gYnV0dG9uIHRvIHN0b3AgcmVjb2duaXRpb24uIE11c3QgYmUgc2hvcnQgdG8gZml0IG9uIGJ1dHRvbi4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJjYW5jZWwiPtCe0YLQutCw0LbQuDwvc3RyaW5nPgorCisgICAgPCEtLSBMYWJlbCBvbiBidXR0b24gd2hlbiBhbiBlcnJvciBvY2N1cnMgLS0+CisgICAgPHN0cmluZyBuYW1lPSJvayI+0KMg0YDQtdC00YM8L3N0cmluZz4KKworICAgIDwhLS0gUHJlZmVyZW5jZXMgaXRlbSBmb3IgZW5hYmxpbmcgc3BlZWNoIGlucHV0IC0tPgorICAgIDxzdHJpbmcgbmFtZT0idm9pY2VfaW5wdXQiPtCT0L7QstC+0YDQvdC4INGD0L3QvtGBPC9zdHJpbmc+CisKKyAgICA8IS0tIEFycmF5IG9mIFZvaWNlIElucHV0IG1vZGVzIC0tPgorICAgIDxzdHJpbmctYXJyYXkgbmFtZT0idm9pY2VfaW5wdXRfbW9kZXMiPgorICAgICAgICA8aXRlbT7QndCwINCz0LvQsNCy0L3QvtGYINGC0LDRgdGC0LDRgtGD0YDQuDwvaXRlbT4KKyAgICAgICAgPGl0ZW0+0J3QsCDRgdC40LzQsdC+0LvQuNGH0LrQvtGYINGC0LDRgdGC0LDRgtGD0YDQuDwvaXRlbT4KKyAgICAgICAgPGl0ZW0+0JjRgdC60ZnRg9GH0LXQvTwvaXRlbT4KKyAgICA8L3N0cmluZy1hcnJheT4KKworICAgIDwhLS0gRG9uJ3QgdHJhbnNsYXRlIC0tPgorICAgIDxzdHJpbmcgbmFtZT0idm9pY2VfbW9kZV9tYWluIiB0cmFuc2xhdGFibGU9ImZhbHNlIj4wPC9zdHJpbmc+CisgICAgPCEtLSBEb24ndCB0cmFuc2xhdGUgLS0+CisgICAgPHN0cmluZyBuYW1lPSJ2b2ljZV9tb2RlX3N5bWJvbHMiIHRyYW5zbGF0YWJsZT0iZmFsc2UiPjE8L3N0cmluZz4KKyAgICA8IS0tIERvbid0IHRyYW5zbGF0ZSAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InZvaWNlX21vZGVfb2ZmIiAgdHJhbnNsYXRhYmxlPSJmYWxzZSI+Mjwvc3RyaW5nPgorCisgICAgPHN0cmluZy1hcnJheSBuYW1lPSJ2b2ljZV9pbnB1dF9tb2Rlc192YWx1ZXMiIHRyYW5zbGF0YWJsZT0iZmFsc2UiPgorICAgICAgICA8aXRlbT5Ac3RyaW5nL3ZvaWNlX21vZGVfbWFpbjwvaXRlbT4KKyAgICAgICAgPGl0ZW0+QHN0cmluZy92b2ljZV9tb2RlX3N5bWJvbHM8L2l0ZW0+CisgICAgICAgIDxpdGVtPkBzdHJpbmcvdm9pY2VfbW9kZV9vZmY8L2l0ZW0+CisgICAgPC9zdHJpbmctYXJyYXk+CisKKyAgICA8IS0tIEFycmF5IG9mIFZvaWNlIElucHV0IG1vZGVzIHN1bW1hcnkgLS0+CisgICAgPHN0cmluZy1hcnJheSBuYW1lPSJ2b2ljZV9pbnB1dF9tb2Rlc19zdW1tYXJ5Ij4KKyAgICAgICAgPGl0ZW0+0JzQuNC60YDQvtGE0L7QvSDQvdCwINCz0LvQsNCy0L3QvtGYINGC0LDRgdGC0LDRgtGD0YDQuDwvaXRlbT4KKyAgICAgICAgPGl0ZW0+0JzQuNC60YDQvtGE0L7QvSDQvdCwINGB0LjQvNCx0L7Qu9C40YfQutC+0Zgg0YLQsNGB0YLQsNGC0YPRgNC4PC9pdGVtPgorICAgICAgICA8aXRlbT7Qk9C+0LLQvtGA0L3QuCDRg9C90L7RgSDRmNC1INC40YHQutGZ0YPRh9C10L08L2l0ZW0+CisgICAgPC9zdHJpbmctYXJyYXk+CisKKyAgICA8IS0tIFByZXNzIHRoZSAiZW50ZXIiIGtleSBhZnRlciB0aGUgdXNlciBzcGVha3MuIE9wdGlvbiBvbiBzZXR0aW5ncy4tLT4KKyAgICA8c3RyaW5nIG5hbWU9ImF1dG9fc3VibWl0Ij7QkNGD0YLQvtC80LDRgtGB0LrQviDRgdC70LDRmtC1INC/0L4g0LPQvtCy0L7RgNC90L7QvCDRg9C90L7RgdGDPC9zdHJpbmc+CisKKyAgICA8IS0tIFByZXNzIHRoZSAiZW50ZXIiIGtleSBhZnRlciB0aGUgdXNlciBzcGVha3MuIFN1bW1hcnkgb2Ygb3B0aW9uIGluIHNldHRpbmdzLi0tPgorICAgIDxzdHJpbmcgbmFtZT0iYXV0b19zdWJtaXRfc3VtbWFyeSI+0JTRg9Cz0LzQtSDQt9CwINC/0YDQtdGC0YDQsNCz0YMg0YHQtSDQsNGD0YLQvtC80LDRgtGB0LrQuCDQv9GA0LjRgtC40YHQutCwINC/0YDQuCDQv9GA0LXRgtGA0LDQt9C4INC40LvQuCDQv9GA0LXQu9Cw0YHQutGDCisgICAgICAgINC90LAg0YHQu9C10LTQtdGb0LUg0L/QvtGZ0LUg0LfQsCDRg9C90L7RgS48L3N0cmluZz4KKworICAgIDwhLS0gSU1FIFR1dG9yaWFsIHNjcmVlbiAoUk9NQU4pIC0tPjxza2lwIC8+CisgICAgPCEtLSBhcHBlYXJzIGFib3ZlIGltYWdlIHNob3dpbmcgdGhlIHVzZXIgdG8gY2xpY2sgb24gYSBUZXh0VmlldyB0byBzaG93IHRoZSBJTUUgLS0+CisgICAgPHN0cmluZyBuYW1lPSJvcGVuX3RoZV9rZXlib2FyZCI+PGZvbnQgc2l6ZT0iMTciPjxiPtCe0YLQstCw0YDQsNGa0LUg0YLQsNGB0YLQsNGC0YPRgNC1XG48L2I+PC9mb250Pjxmb250IHNpemU9IjMiPlxuPC9mb250PlRvdWNoIGFueSB0ZXh0IGZpZWxkLjwvc3RyaW5nPgorCisgICAgPCEtLSBhcHBlYXJzIGFib3ZlIHRoZSBpbWFnZSBzaG93aW5nIHRoZSBiYWNrIGJ1dHRvbiB1c2VkIHRvIGNsb3NlIHRoZSBrZXlib2FyZCAtLT4KKyAgICA8c3RyaW5nIG5hbWU9ImNsb3NlX3RoZV9rZXlib2FyZCI+PGZvbnQgc2l6ZT0iMTciPjxiPtCX0LDRgtCy0LDRgNCw0ZrQtSDRgtCw0YHRgtCw0YLRg9GA0LVcbjwvYj48L2ZvbnQ+PGZvbnQgc2l6ZT0iMyI+XG48L2ZvbnQ+UHJlc3MgdGhlIEJhY2sga2V5Ljwvc3RyaW5nPgorCisgICAgPCEtLSBhcHBlYXJzIGFib3ZlIGltYWdlIHNob3dpbmcgaG93IHRvIHVzZSB0b3VjaCBhbmQgaG9sZCAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InRvdWNoX2FuZF9ob2xkIj48Zm9udCBzaXplPSIxNyI+PGI+0J/RgNC40YLQuNGB0L3QuNGC0LUgXHUwMDI2INC4INC00YDQttC40YLQtSDQv9GA0LjRgdGC0LjRgdC90YPRgiDRgtCw0YHRgtC10YAg0LfQsCDQvtC/0YbQuNGY0LVcbjwvYj48L2ZvbnQ+PGZvbnQgc2l6ZT0iMyI+XG48L2ZvbnQ+0J/RgNC40YHRgtGD0L8g0LDQutGG0LXQvdGC0LjQvNCwINC4INC40L3RgtC10YDQv9GD0L3QutGG0LjRmNC4Ljwvc3RyaW5nPgorCisgICAgPCEtLSBhcHBlYXJzIGFib3ZlIGltYWdlIHNob3dpbmcgaG93IHRvIGFjY2VzcyBrZXlib2FyZCBzZXR0aW5ncyAtLT4KKyAgICA8c3RyaW5nIG5hbWU9ImtleWJvYXJkX3NldHRpbmdzIj48Zm9udCBzaXplPSIxNyI+PGI+0J/QvtC00LXRiNCw0LLQsNGa0LUg0YLQsNGB0YLQsNGC0YPRgNC1XG48L2I+PC9mb250Pjxmb250IHNpemU9IjMiPlxuPC9mb250PtCf0YDQuNGC0LjRgdC90LjRgtC1IFx1MDAyNiDQuCDQtNGA0LbQuNGC0LUg0YLQsNGB0YLQtdGAIDxiPlw/MTIzXDwvYj4uPC9zdHJpbmc+CisKKyAgICA8IS0tIHBvcHVsYXIgd2ViIGRvbWFpbnMgZm9yIHRoZSBsb2NhbGUgLSBtb3N0IHBvcHVsYXIsIGRpc3BsYXllZCBvbiB0aGUga2V5Ym9hcmQgLS0+CisgICAgPHN0cmluZyBuYW1lPSJwb3B1bGFyX2RvbWFpbl8wIj4iLnJzIjwvc3RyaW5nPgorICAgIDwhLS0gcG9wdWxhciB3ZWIgZG9tYWlucyBmb3IgdGhlIGxvY2FsZSAtIGl0ZW0gMSwgZGlzcGxheWVkIGluIHRoZSBwb3B1cCAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InBvcHVsYXJfZG9tYWluXzEiPiIuY29tIjwvc3RyaW5nPgorICAgIDwhLS0gcG9wdWxhciB3ZWIgZG9tYWlucyBmb3IgdGhlIGxvY2FsZSAtIGl0ZW0gMiwgZGlzcGxheWVkIGluIHRoZSBwb3B1cCAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InBvcHVsYXJfZG9tYWluXzIiPiIubmV0Ijwvc3RyaW5nPgorICAgIDwhLS0gcG9wdWxhciB3ZWIgZG9tYWlucyBmb3IgdGhlIGxvY2FsZSAtIGl0ZW0gMywgZGlzcGxheWVkIGluIHRoZSBwb3B1cCAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InBvcHVsYXJfZG9tYWluXzMiPiIub3JnIjwvc3RyaW5nPgorICAgIDwhLS0gcG9wdWxhciB3ZWIgZG9tYWlucyBmb3IgdGhlIGxvY2FsZSAtIGl0ZW0gNCwgZGlzcGxheWVkIGluIHRoZSBwb3B1cCAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InBvcHVsYXJfZG9tYWluXzQiPiIuZWR1Ijwvc3RyaW5nPgorCisgICAgPCEtLSBNZW51IGl0ZW0gZm9yIGxhdW5jaGluZyBJbnB1dCBtZXRob2Qgc3dpdGNoZXIgLS0+CisgICAgPHN0cmluZyBuYW1lPSJpbnB1dE1ldGhvZCI+0JzQtdGC0L7QtCDQt9CwINGD0L3QvtGBPC9zdHJpbmc+CisKKyAgICA8IS0tIFRpdGxlIGZvciBpbnB1dCBsYW5ndWFnZSBzZWxlY3Rpb24gc2NyZWVuIC0tPgorICAgIDxzdHJpbmcgbmFtZT0ibGFuZ3VhZ2Vfc2VsZWN0aW9uX3RpdGxlIj7QiNC10LfQuNGG0Lgg0LfQsCDRg9C90L7RgTwvc3RyaW5nPgorICAgIDwhLS0gVGl0bGUgc3VtbWFyeSBmb3IgaW5wdXQgbGFuZ3VhZ2Ugc2VsZWN0aW9uIHNjcmVlbiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9Imxhbmd1YWdlX3NlbGVjdGlvbl9zdW1tYXJ5Ij7Qn9GA0LXQstGD0YbQuNGC0LUg0L/RgNGB0YLQvtC8INC/0L4g0YDQsNC30LzQsNC60L3QuNGG0Lgg0LfQsCDQv9GA0L7QvNC10L3RgyDRmNC10LfQuNC60LA8L3N0cmluZz4KKworICAgIDwhLS0gQWRkIHRvIGRpY3Rpb25hcnkgaGludCAtLT4KKyAgICA8c3RyaW5nIG5hbWU9ImhpbnRfYWRkX3RvX2RpY3Rpb25hcnkiPlx1MjE5MCDQn9GA0LjRgtC40YHQvdC40YLQtSDQvtC/0LXRgiDQtNCwINCx0LjRgdGC0LUg0YHQsNGH0YPQstCw0LvQuDwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9yZXMveG1sLXNyL2tiZF9xd2VydHkueG1sIGIvcmVzL3htbC1zci9rYmRfcXdlcnR5LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDg4NGE4Ci0tLSAvZGV2L251bGwKKysrIGIvcmVzL3htbC1zci9rYmRfcXdlcnR5LnhtbApAQCAtMCwwICsxLDE3MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKy8qCisqKgorKiogQ29weXJpZ2h0IDIwMDgsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyoqCisqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKioKKyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCistLT4KKworPCEtLSBTZXJiaWFuIGtleWJvYXJkIGxheW91dCwgYmFzZWQgb24gdGhlIFgxMSBsYXlvdXQgZm9yIFNlcmJpYW4gLS0+Cis8S2V5Ym9hcmQgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIGFuZHJvaWQ6a2V5V2lkdGg9IjkuMDklcCIKKyAgICBhbmRyb2lkOmhvcml6b250YWxHYXA9IjBweCIKKyAgICBhbmRyb2lkOnZlcnRpY2FsR2FwPSIwcHgiCisgICAgYW5kcm9pZDprZXlIZWlnaHQ9IkBkaW1lbi9rZXlfaGVpZ2h0IgorICAgID4KKworICAgIDxSb3c+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i0ZkiCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlFZGdlRmxhZ3M9ImxlZnQiIC8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i0ZoiIC8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i0LUiIC8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i0YAiIC8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i0YIiIC8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i0LciIC8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i0YMiIC8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i0LgiIC8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i0L4iIC8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i0L8iIC8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i0YgiCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlFZGdlRmxhZ3M9InJpZ2h0IiAvPgorICAgIDwvUm93PgorCisgICAgPFJvdz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLQsCIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmtleUVkZ2VGbGFncz0ibGVmdCIgLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLRgSIgLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLQtCIgLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLRhCIgLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLQsyIgLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLRhSIgLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLRmCIgLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLQuiIgLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLQuyIgLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLRhyIgLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLRmyIgLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSLRkiIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmtleUVkZ2VGbGFncz0icmlnaHQiIC8+CisgICAgPC9Sb3c+CisKKyAgICA8Um93IGFuZHJvaWQ6a2V5V2lkdGg9IjguNSVwIj4KKyAgICAgICAgPEtleSBhbmRyb2lkOmNvZGVzPSItMSIgYW5kcm9pZDprZXlJY29uPSJAZHJhd2FibGUvc3ltX2tleWJvYXJkX3NoaWZ0IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6a2V5V2lkdGg9IjExLjc1JXAiIGFuZHJvaWQ6aXNNb2RpZmllcj0idHJ1ZSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmljb25QcmV2aWV3PSJAZHJhd2FibGUvc3ltX2tleWJvYXJkX2ZlZWRiYWNrX3NoaWZ0IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6aXNTdGlja3k9InRydWUiIGFuZHJvaWQ6a2V5RWRnZUZsYWdzPSJsZWZ0Ii8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i0LYiIC8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i0Z8iIC8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i0YYiIC8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i0LIiIC8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i0LEiIC8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i0L0iIC8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0i0LwiIC8+CisgICAgICAgIDxLZXkgYW5kcm9pZDpjb2Rlcz0iLTUiIGFuZHJvaWQ6a2V5SWNvbj0iQGRyYXdhYmxlL3N5bV9rZXlib2FyZF9kZWxldGUiCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlXaWR0aD0iMTEuNzUlcCIgYW5kcm9pZDprZXlFZGdlRmxhZ3M9InJpZ2h0IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6aWNvblByZXZpZXc9IkBkcmF3YWJsZS9zeW1fa2V5Ym9hcmRfZmVlZGJhY2tfZGVsZXRlIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6aXNSZXBlYXRhYmxlPSJ0cnVlIi8+CisgICAgPC9Sb3c+CisKKyAgICA8Um93IGFuZHJvaWQ6a2V5Ym9hcmRNb2RlPSJAK2lkL21vZGVfbm9ybWFsIiBhbmRyb2lkOnJvd0VkZ2VGbGFncz0iYm90dG9tIj4KKyAgICAgICAgPEtleSBhbmRyb2lkOmNvZGVzPSItMiIgYW5kcm9pZDprZXlMYWJlbD0iQHN0cmluZy9sYWJlbF9zeW1ib2xfa2V5IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6cG9wdXBLZXlib2FyZD0iQHhtbC9rYmRfcG9wdXBfdGVtcGxhdGUiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpwb3B1cENoYXJhY3RlcnM9Il8iCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlXaWR0aD0iMjAlcCIgYW5kcm9pZDprZXlFZGdlRmxhZ3M9ImxlZnQiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmNvZGVzPSJAaW50ZWdlci9rZXlfZjEiIGFuZHJvaWQ6a2V5SWNvbj0iQGRyYXdhYmxlL3N5bV9rZXlib2FyZF9nbG9iZSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmtleVdpZHRoPSIxMCVwIi8+CisgICAgICAgIDxLZXkgYW5kcm9pZDpjb2Rlcz0iMzIiIGFuZHJvaWQ6a2V5SWNvbj0iQGRyYXdhYmxlL3N5bV9rZXlib2FyZF9zcGFjZSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmljb25QcmV2aWV3PSJAZHJhd2FibGUvc3ltX2tleWJvYXJkX2ZlZWRiYWNrX3NwYWNlIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6a2V5V2lkdGg9IjQwJXAiIGFuZHJvaWQ6aXNSZXBlYXRhYmxlPSJ0cnVlIi8+CisgICAgICAgIDxLZXkgYW5kcm9pZDpjb2Rlcz0iNDYiIGFuZHJvaWQ6a2V5TGFiZWw9Ii4iIGFuZHJvaWQ6cG9wdXBLZXlib2FyZD0iQHhtbC9wb3B1cF9wdW5jdHVhdGlvbiIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmtleVdpZHRoPSIxMCVwIi8+CisgICAgICAgIDxLZXkgYW5kcm9pZDpjb2Rlcz0iMTAiIGFuZHJvaWQ6a2V5SWNvbj0iQGRyYXdhYmxlL3N5bV9rZXlib2FyZF9yZXR1cm4iCisgICAgICAgICAgICAgICAgYW5kcm9pZDppY29uUHJldmlldz0iQGRyYXdhYmxlL3N5bV9rZXlib2FyZF9mZWVkYmFja19yZXR1cm4iCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlXaWR0aD0iMjAlcCIgYW5kcm9pZDprZXlFZGdlRmxhZ3M9InJpZ2h0Ii8+CisgICAgPC9Sb3c+CisKKyAgICA8Um93IGFuZHJvaWQ6a2V5Ym9hcmRNb2RlPSJAK2lkL21vZGVfdXJsIiBhbmRyb2lkOnJvd0VkZ2VGbGFncz0iYm90dG9tIj4KKyAgICAgICAgPEtleSBhbmRyb2lkOmNvZGVzPSItMiIgYW5kcm9pZDprZXlMYWJlbD0iQHN0cmluZy9sYWJlbF9zeW1ib2xfa2V5IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6cG9wdXBLZXlib2FyZD0iQHhtbC9rYmRfcG9wdXBfdGVtcGxhdGUiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpwb3B1cENoYXJhY3RlcnM9Il8iCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlXaWR0aD0iMjAlcCIgYW5kcm9pZDprZXlFZGdlRmxhZ3M9ImxlZnQiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSIvIiBhbmRyb2lkOmtleVdpZHRoPSIxMCVwIi8+CisgICAgICAgIDxLZXkgYW5kcm9pZDpjb2Rlcz0iMzIiIGFuZHJvaWQ6a2V5SWNvbj0iQGRyYXdhYmxlL3N5bV9rZXlib2FyZF9zcGFjZSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmljb25QcmV2aWV3PSJAZHJhd2FibGUvc3ltX2tleWJvYXJkX2ZlZWRiYWNrX3NwYWNlIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6a2V5V2lkdGg9IjIwJXAiIGFuZHJvaWQ6aXNSZXBlYXRhYmxlPSJ0cnVlIi8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0iQHN0cmluZy9wb3B1bGFyX2RvbWFpbl8wIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6a2V5T3V0cHV0VGV4dD0iQHN0cmluZy9wb3B1bGFyX2RvbWFpbl8wIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6cG9wdXBLZXlib2FyZD0iQHhtbC9wb3B1cF9kb21haW5zIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6a2V5V2lkdGg9IjIwJXAiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSIuIiBhbmRyb2lkOnBvcHVwS2V5Ym9hcmQ9IkB4bWwvcG9wdXBfcHVuY3R1YXRpb24iCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlXaWR0aD0iMTAlcCIvPgorICAgICAgICA8S2V5IGFuZHJvaWQ6Y29kZXM9IjEwIiBhbmRyb2lkOmtleUljb249IkBkcmF3YWJsZS9zeW1fa2V5Ym9hcmRfcmV0dXJuIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6aWNvblByZXZpZXc9IkBkcmF3YWJsZS9zeW1fa2V5Ym9hcmRfZmVlZGJhY2tfcmV0dXJuIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6a2V5V2lkdGg9IjIwJXAiIGFuZHJvaWQ6a2V5RWRnZUZsYWdzPSJyaWdodCIvPgorICAgIDwvUm93PgorCisgICAgPFJvdyBhbmRyb2lkOmtleWJvYXJkTW9kZT0iQCtpZC9tb2RlX2VtYWlsIiBhbmRyb2lkOnJvd0VkZ2VGbGFncz0iYm90dG9tIj4KKyAgICAgICAgPEtleSBhbmRyb2lkOmNvZGVzPSItMiIgYW5kcm9pZDprZXlMYWJlbD0iQHN0cmluZy9sYWJlbF9zeW1ib2xfa2V5IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6cG9wdXBLZXlib2FyZD0iQHhtbC9rYmRfcG9wdXBfdGVtcGxhdGUiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpwb3B1cENoYXJhY3RlcnM9Il8iCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlXaWR0aD0iMjAlcCIgYW5kcm9pZDprZXlFZGdlRmxhZ3M9ImxlZnQiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSJcQCIgYW5kcm9pZDprZXlXaWR0aD0iMTAlcCIvPgorICAgICAgICA8S2V5IGFuZHJvaWQ6Y29kZXM9IjMyIiBhbmRyb2lkOmtleUljb249IkBkcmF3YWJsZS9zeW1fa2V5Ym9hcmRfc3BhY2UiCisgICAgICAgICAgICAgICAgYW5kcm9pZDppY29uUHJldmlldz0iQGRyYXdhYmxlL3N5bV9rZXlib2FyZF9mZWVkYmFja19zcGFjZSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmtleVdpZHRoPSIyMCVwIiBhbmRyb2lkOmlzUmVwZWF0YWJsZT0idHJ1ZSIvPgorICAgICAgICA8S2V5IGFuZHJvaWQ6a2V5TGFiZWw9IkBzdHJpbmcvcG9wdWxhcl9kb21haW5fMCIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmtleU91dHB1dFRleHQ9IkBzdHJpbmcvcG9wdWxhcl9kb21haW5fMCIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOnBvcHVwS2V5Ym9hcmQ9IkB4bWwvcG9wdXBfZG9tYWlucyIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmtleVdpZHRoPSIyMCVwIi8+CisgICAgICAgIDxLZXkgYW5kcm9pZDprZXlMYWJlbD0iLiIgYW5kcm9pZDpwb3B1cEtleWJvYXJkPSJAeG1sL3BvcHVwX3B1bmN0dWF0aW9uIi8+CisgICAgICAgIDxLZXkgYW5kcm9pZDpjb2Rlcz0iMTAiIGFuZHJvaWQ6a2V5SWNvbj0iQGRyYXdhYmxlL3N5bV9rZXlib2FyZF9yZXR1cm4iCisgICAgICAgICAgICAgICAgYW5kcm9pZDppY29uUHJldmlldz0iQGRyYXdhYmxlL3N5bV9rZXlib2FyZF9mZWVkYmFja19yZXR1cm4iCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlXaWR0aD0iMjAlcCIgYW5kcm9pZDprZXlFZGdlRmxhZ3M9InJpZ2h0Ii8+CisgICAgPC9Sb3c+CisKKyAgICA8Um93IGFuZHJvaWQ6a2V5Ym9hcmRNb2RlPSJAK2lkL21vZGVfaW0iIGFuZHJvaWQ6cm93RWRnZUZsYWdzPSJib3R0b20iPgorICAgICAgICA8S2V5IGFuZHJvaWQ6Y29kZXM9Ii0yIiBhbmRyb2lkOmtleUxhYmVsPSJAc3RyaW5nL2xhYmVsX3N5bWJvbF9rZXkiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpwb3B1cEtleWJvYXJkPSJAeG1sL2tiZF9wb3B1cF90ZW1wbGF0ZSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOnBvcHVwQ2hhcmFjdGVycz0iXyIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmtleVdpZHRoPSIyMCVwIiBhbmRyb2lkOmtleUVkZ2VGbGFncz0ibGVmdCIvPgorICAgICAgICA8S2V5IGFuZHJvaWQ6Y29kZXM9IkBpbnRlZ2VyL2tleV9mMSIgYW5kcm9pZDprZXlJY29uPSJAZHJhd2FibGUvc3ltX2tleWJvYXJkX2dsb2JlIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6a2V5V2lkdGg9IjEwJXAiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmNvZGVzPSIzMiIgYW5kcm9pZDprZXlJY29uPSJAZHJhd2FibGUvc3ltX2tleWJvYXJkX3NwYWNlIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6aWNvblByZXZpZXc9IkBkcmF3YWJsZS9zeW1fa2V5Ym9hcmRfZmVlZGJhY2tfc3BhY2UiCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlXaWR0aD0iNDAlcCIgYW5kcm9pZDppc1JlcGVhdGFibGU9InRydWUiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmNvZGVzPSI0NiIgYW5kcm9pZDprZXlMYWJlbD0iLiIgYW5kcm9pZDpwb3B1cEtleWJvYXJkPSJAeG1sL3BvcHVwX3B1bmN0dWF0aW9uIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6a2V5V2lkdGg9IjEwJXAiLz4KKyAgICAgICAgPEtleSBhbmRyb2lkOmtleUxhYmVsPSI6LSkiIGFuZHJvaWQ6a2V5T3V0cHV0VGV4dD0iOi0pICIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOnBvcHVwS2V5Ym9hcmQ9IkB4bWwvcG9wdXBfc21pbGV5cyIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmtleVdpZHRoPSIyMCVwIiBhbmRyb2lkOmtleUVkZ2VGbGFncz0icmlnaHQiLz4KKyAgICA8L1Jvdz4KKworICAgIDxSb3cgYW5kcm9pZDprZXlib2FyZE1vZGU9IkAraWQvbW9kZV93ZWJlbnRyeSIgYW5kcm9pZDpyb3dFZGdlRmxhZ3M9ImJvdHRvbSI+CisgICAgICAgIDxLZXkgYW5kcm9pZDpjb2Rlcz0iLTIiIGFuZHJvaWQ6a2V5TGFiZWw9IkBzdHJpbmcvbGFiZWxfc3ltYm9sX2tleSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOnBvcHVwS2V5Ym9hcmQ9IkB4bWwva2JkX3BvcHVwX3RlbXBsYXRlIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6cG9wdXBDaGFyYWN0ZXJzPSJfIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6a2V5V2lkdGg9IjIwJXAiIGFuZHJvaWQ6a2V5RWRnZUZsYWdzPSJsZWZ0Ii8+CisgICAgICAgIDxLZXkgYW5kcm9pZDpjb2Rlcz0iQGludGVnZXIva2V5X2YxIiBhbmRyb2lkOmtleUljb249IkBkcmF3YWJsZS9zeW1fa2V5Ym9hcmRfZ2xvYmUiCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlXaWR0aD0iMTAlcCIvPgorICAgICAgICA8S2V5IGFuZHJvaWQ6Y29kZXM9IjMyIiBhbmRyb2lkOmtleUljb249IkBkcmF3YWJsZS9zeW1fa2V5Ym9hcmRfc3BhY2UiCisgICAgICAgICAgICAgICAgYW5kcm9pZDppY29uUHJldmlldz0iQGRyYXdhYmxlL3N5bV9rZXlib2FyZF9mZWVkYmFja19zcGFjZSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmtleVdpZHRoPSIyMCVwIiBhbmRyb2lkOmlzUmVwZWF0YWJsZT0idHJ1ZSIvPgorICAgICAgICA8S2V5IGFuZHJvaWQ6Y29kZXM9IjkiIGFuZHJvaWQ6a2V5SWNvbj0iQGRyYXdhYmxlL3N5bV9rZXlib2FyZF90YWIiCisgICAgICAgICAgICAgICAgYW5kcm9pZDppY29uUHJldmlldz0iQGRyYXdhYmxlL3N5bV9rZXlib2FyZF9mZWVkYmFja190YWIiCisgICAgICAgICAgICAgICAgYW5kcm9pZDprZXlXaWR0aD0iMjAlcCIvPgorICAgICAgICA8S2V5IGFuZHJvaWQ6a2V5TGFiZWw9Ii4iIGFuZHJvaWQ6cG9wdXBLZXlib2FyZD0iQHhtbC9wb3B1cF9wdW5jdHVhdGlvbiIvPgorICAgICAgICA8S2V5IGFuZHJvaWQ6Y29kZXM9IjEwIiBhbmRyb2lkOmtleUljb249IkBkcmF3YWJsZS9zeW1fa2V5Ym9hcmRfcmV0dXJuIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6aWNvblByZXZpZXc9IkBkcmF3YWJsZS9zeW1fa2V5Ym9hcmRfZmVlZGJhY2tfcmV0dXJuIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6a2V5V2lkdGg9IjIwJXAiIGFuZHJvaWQ6a2V5RWRnZUZsYWdzPSJyaWdodCIvPgorICAgIDwvUm93PgorPC9LZXlib2FyZD4KZGlmZiAtLWdpdCBhL3Rlc3RzL0FuZHJvaWQubWsgYi90ZXN0cy9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiYTdhOGQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9BbmRyb2lkLm1rCkBAIC0wLDAgKzEsMTcgQEAKK0xPQ0FMX1BBVEg6PSAkKGNhbGwgbXktZGlyKQoraW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKKyMgV2Ugb25seSB3YW50IHRoaXMgYXBrIGJ1aWxkIGZvciB0ZXN0cy4KK0xPQ0FMX01PRFVMRV9UQUdTIDo9IHRlc3RzCitMT0NBTF9DRVJUSUZJQ0FURSA6PSBzaGFyZWQKKworTE9DQUxfSkFWQV9MSUJSQVJJRVMgOj0gYW5kcm9pZC50ZXN0LnJ1bm5lcgorCisjIEluY2x1ZGUgYWxsIHRlc3QgamF2YSBmaWxlcy4KK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKGNhbGwgYWxsLWphdmEtZmlsZXMtdW5kZXIsIHNyYykKKworTE9DQUxfUEFDS0FHRV9OQU1FIDo9IExhdGluSU1FVGVzdHMKKworTE9DQUxfSU5TVFJVTUVOVEFUSU9OX0ZPUiA6PSBMYXRpbklNRQorCitpbmNsdWRlICQoQlVJTERfUEFDS0FHRSkKZGlmZiAtLWdpdCBhL3Rlc3RzL0FuZHJvaWRNYW5pZmVzdC54bWwgYi90ZXN0cy9BbmRyb2lkTWFuaWZlc3QueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxMGU4MTQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9BbmRyb2lkTWFuaWZlc3QueG1sCkBAIC0wLDAgKzEsMzMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxtYW5pZmVzdCB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgcGFja2FnZT0iY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4udGVzdHMiPgorCisgICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5SRUFEX0NPTlRBQ1RTIiAvPgorCisgICAgPGFwcGxpY2F0aW9uPgorICAgICAgICA8dXNlcy1saWJyYXJ5IGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC50ZXN0LnJ1bm5lciIgLz4KKyAgICAgICAgPCEtLSBtZXRhLWRhdGEgYW5kcm9pZDpuYW1lPSJjb20uYW5kcm9pZC5jb250YWN0cy5pY29uc2V0IiBhbmRyb2lkOnJlc291cmNlPSJAeG1sL2ljb25zZXQiIC8tLT4KKyAgICAgICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5SRUFEX0NPTlRBQ1RTIiAvPgorCisgICAgPC9hcHBsaWNhdGlvbj4KKworICAgIDxpbnN0cnVtZW50YXRpb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdFJ1bm5lciIKKyAgICAgICAgYW5kcm9pZDp0YXJnZXRQYWNrYWdlPSJjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbiIKKyAgICAgICAgYW5kcm9pZDpsYWJlbD0iTGF0aW5JTUUgdGVzdHMiPgorICAgIDwvaW5zdHJ1bWVudGF0aW9uPgorPC9tYW5pZmVzdD4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvd29yZGxpc3QueG1sIGIvdGVzdHMvZGF0YS93b3JkbGlzdC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJkMGNhYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvd29yZGxpc3QueG1sCkBAIC0wLDAgKzEsMjQzIEBACis8d29yZGxpc3Q+CisgPHcgZj0iMjU1Ij50aGU8L3c+CisgPHcgZj0iMjQ2Ij5hbmQ8L3c+CisgPHcgZj0iMjQ1Ij5vZjwvdz4KKyA8dyBmPSIyNDIiPnRvPC93PgorIDx3IGY9IjIzMSI+aW48L3c+CisgPHcgZj0iMjMwIj50aGF0PC93PgorIDx3IGY9IjIyOSI+Zm9yPC93PgorIDx3IGY9IjIyNCI+d2l0aDwvdz4KKyA8dyBmPSIyMjQiPm9uPC93PgorIDx3IGY9IjIyNCI+aXQ8L3c+CisgPHcgZj0iMjIzIj50aGlzPC93PgorIDx3IGY9IjIyMiI+eW91PC93PgorIDx3IGY9IjIxOSI+aXM8L3c+CisgPHcgZj0iMjE5Ij53YXM8L3c+CisgPHcgZj0iMjE5Ij5ieTwvdz4KKyA8dyBmPSIyMTkiPm9yPC93PgorIDx3IGY9IjIxOCI+ZnJvbTwvdz4KKyA8dyBmPSIyMTciPmJ1dDwvdz4KKyA8dyBmPSIyMTYiPmJlPC93PgorIDx3IGY9IjIxNiI+U3VuZGF5PC93PgorIDx3IGY9IjIxNSI+YXJlPC93PgorIDx3IGY9IjIxNSI+aGU8L3c+CisgPHcgZj0iMjE0Ij5zbzwvdz4KKyA8dyBmPSIyMTQiPm5vdDwvdz4KKyA8dyBmPSIyMTMiPmhhdmU8L3c+CisgPHcgZj0iMjEzIj5hczwvdz4KKyA8dyBmPSIyMTEiPmFsbDwvdz4KKyA8dyBmPSIyMTEiPmhpczwvdz4KKyA8dyBmPSIyMTAiPm15PC93PgorIDx3IGY9IjIxMCI+aWY8L3c+CisgPHcgZj0iMjEwIj53aGljaDwvdz4KKyA8dyBmPSIyMTAiPnRoZXk8L3c+CisgPHcgZj0iMjA5Ij5hdDwvdz4KKyA8dyBmPSIyMDciPml0J3M8L3c+CisgPHcgZj0iMjA3Ij5hbjwvdz4KKyA8dyBmPSIyMDciPnlvdXI8L3c+CisgPHcgZj0iMjA2Ij53aWxsPC93PgorIDx3IGY9IjIwNiI+YWJvdXQ8L3c+CisgPHcgZj0iMjA2Ij5JJ208L3c+CisgPHcgZj0iMjA1Ij50aGVyZTwvdz4KKyA8dyBmPSIyMDUiPmhhZDwvdz4KKyA8dyBmPSIyMDUiPmhhczwvdz4KKyA8dyBmPSIyMDQiPndoZW48L3c+CisgPHcgZj0iMjAzIj5ubzwvdz4KKyA8dyBmPSIyMDMiPndlcmU8L3c+CisgPHcgZj0iMjAzIj53aGF0PC93PgorIDx3IGY9IjIwMyI+bW9yZTwvdz4KKyA8dyBmPSIyMDMiPm91dDwvdz4KKyA8dyBmPSIyMDMiPmp1c3Q8L3c+CisgPHcgZj0iMjAyIj50aGVpcjwvdz4KKyA8dyBmPSIyMDIiPnVwPC93PgorIDx3IGY9IjIwMiI+d291bGQ8L3c+CisgPHcgZj0iMjAyIj5oZXJlPC93PgorIDx3IGY9IjIwMiI+Y2FuPC93PgorIDx3IGY9IjIwMSI+d2hvPC93PgorIDx3IGY9IjIwMCI+aGVyPC93PgorIDx3IGY9IjIwMCI+bWU8L3c+CisgPHcgZj0iMjAwIj5ub3c8L3c+CisgPHcgZj0iMjAwIj5vdXI8L3c+CisgPHcgZj0iMjAwIj5kbzwvdz4KKyA8dyBmPSIyMDAiPnNvbWU8L3c+CisgPHcgZj0iMTk5Ij5iZWVuPC93PgorIDx3IGY9IjE5OSI+dHdvPC93PgorIDx3IGY9IjE5OSI+bGlrZTwvdz4KKyA8dyBmPSIxOTkiPnRoZW08L3c+CisgPHcgZj0iMTk5Ij5uZXc8L3c+CisgPHcgZj0iMTk4Ij50aW1lPC93PgorIDx3IGY9IjE5OCI+d2U8L3c+CisgPHcgZj0iMTk4Ij5zaGU8L3c+CisgPHcgZj0iMTk3Ij5vbmU8L3c+CisgPHcgZj0iMTk3Ij5vdmVyPC93PgorIDx3IGY9IjE5NyI+bWF5PC93PgorIDx3IGY9IjE5NyI+YW55PC93PgorIDx3IGY9IjE5NyI+aGltPC93PgorIDx3IGY9IjE5NyI+Y2FsbGluZzwvdz4KKyA8dyBmPSIxOTYiPm90aGVyPC93PgorIDx3IGY9IjE5NiI+aG93PC93PgorIDx3IGY9IjE5NiI+c2VlPC93PgorIDx3IGY9IjE5NSI+YmVjYXVzZTwvdz4KKyA8dyBmPSIxOTUiPnRoZW48L3c+CisgPHcgZj0iMTk1Ij5yaWdodDwvdz4KKyA8dyBmPSIxOTUiPmludG88L3c+CisgPHcgZj0iMTk1Ij53ZWxsPC93PgorIDx3IGY9IjE5NSI+dmVyeTwvdz4KKyA8dyBmPSIxOTUiPnNhaWQ8L3c+CisgPHcgZj0iMTk1Ij5wZW9wbGU8L3c+CisgPHcgZj0iMTk0Ij50aGVzZTwvdz4KKyA8dyBmPSIxOTQiPnRoYW48L3c+CisgPHcgZj0iMTkzIj5vbmx5PC93PgorIDx3IGY9IjE5MyI+YmFjazwvdz4KKyA8dyBmPSIxOTMiPmZpcnN0PC93PgorIDx3IGY9IjE5MyI+ZG90PC93PgorIDx3IGY9IjE5MyI+YWZ0ZXI8L3c+CisgPHcgZj0iMTkzIj53aGVyZTwvdz4KKyA8dyBmPSIxOTIiPnBsZWFzZTwvdz4KKyA8dyBmPSIxOTIiPmNvdWxkPC93PgorIDx3IGY9IjE5MiI+aXRzPC93PgorIDx3IGY9IjE5MiI+YmVmb3JlPC93PgorIDx3IGY9IjE5MiI+dXM8L3c+CisgPHcgZj0iMTkyIj5hZ2Fpbjwvdz4KKyA8dyBmPSIxOTIiPmhvbWU8L3c+CisgPHcgZj0iMTkxIj5hbHNvPC93PgorIDx3IGY9IjE5MSI+dGhhdCdzPC93PgorIDx3IGY9IjE5MSI+dGhpbms8L3c+CisgPHcgZj0iMTkxIj50aHJlZTwvdz4KKyA8dyBmPSIxOTEiPmdvb2Q8L3c+CisgPHcgZj0iMTkxIj5nZXQ8L3c+CisgPHcgZj0iMTkwIj5rbm93PC93PgorIDx3IGY9IjE5MCI+dGhhbms8L3c+CisgPHcgZj0iMTkwIj5zaG91bGQ8L3c+CisgPHcgZj0iMTkwIj5nb2luZzwvdz4KKyA8dyBmPSIxOTAiPmRvd248L3c+CisgPHcgZj0iMTg5Ij5sYXN0PC93PgorIDx3IGY9IjE4OSI+dG9kYXk8L3c+CisgPHcgZj0iMTg5Ij50aG9zZTwvdz4KKyA8dyBmPSIxODkiPmdvPC93PgorIDx3IGY9IjE4OSI+dGhyb3VnaDwvdz4KKyA8dyBmPSIxODkiPnN1Y2g8L3c+CisgPHcgZj0iMTg5Ij5kb24ndDwvdz4KKyA8dyBmPSIxODkiPmRpZDwvdz4KKyA8dyBmPSIxODgiPm1vc3Q8L3c+CisgPHcgZj0iMTg4Ij5kYXk8L3c+CisgPHcgZj0iMTg4Ij5tYW48L3c+CisgPHcgZj0iMTg4Ij5udW1iZXI8L3c+CisgPHcgZj0iMTg4Ij53b3JrPC93PgorIDx3IGY9IjE4NyI+dG9vPC93PgorIDx3IGY9IjE4NyI+c2hvdzwvdz4KKyA8dyBmPSIxODciPm1hZGU8L3c+CisgPHcgZj0iMTg3Ij5ldmVuPC93PgorIDx3IGY9IjE4NyI+YmVpbmc8L3c+CisgPHcgZj0iMTg3Ij5tYWtlPC93PgorIDx3IGY9IjE4NyI+Z2l2ZTwvdz4KKyA8dyBmPSIxODYiPm9mZjwvdz4KKyA8dyBmPSIxODYiPmNvbTwvdz4KKyA8dyBmPSIxODYiPm11Y2g8L3c+CisgPHcgZj0iMTg2Ij5ncmVhdDwvdz4KKyA8dyBmPSIxODYiPnRha2U8L3c+CisgPHcgZj0iMTg2Ij5jYWxsPC93PgorIDx3IGY9IjE4NiI+d2F5PC93PgorIDx3IGY9IjE4NiI+Zm91cjwvdz4KKyA8dyBmPSIxODYiPnNheTwvdz4KKyA8dyBmPSIxODUiPmluZm9ybWF0aW9uPC93PgorIDx3IGY9IjE4NSI+dW5kZXI8L3c+CisgPHcgZj0iMTg1Ij5wYWdlPC93PgorIDx3IGY9IjE4NSI+bWFueTwvdz4KKyA8dyBmPSIxODUiPmxpdHRsZTwvdz4KKyA8dyBmPSIxODUiPnRoYW5rczwvdz4KKyA8dyBmPSIxODUiPm9rYXk8L3c+CisgPHcgZj0iMTg1Ij5maXZlPC93PgorIDx3IGY9IjE4NSI+d2UncmU8L3c+CisgPHcgZj0iMTg1Ij5iZXR3ZWVuPC93PgorIDx3IGY9IjE4NCI+dXNlPC93PgorIDx3IGY9IjE4NCI+Y29tZTwvdz4KKyA8dyBmPSIxODQiPnllYXJzPC93PgorIDx3IGY9IjE4NCI+b2ZmaWNlPC93PgorIDx3IGY9IjE4NCI+aG91c2U8L3c+CisgPHcgZj0iMTg0Ij5zZWFyY2g8L3c+CisgPHcgZj0iMTg0Ij5mcmVlPC93PgorIDx3IGY9IjE4MyI+bmV4dDwvdz4KKyA8dyBmPSIxODMiPndpdGhvdXQ8L3c+CisgPHcgZj0iMTgzIj5zdGlsbDwvdz4KKyA8dyBmPSIxODMiPmFyb3VuZDwvdz4KKyA8dyBmPSIxODMiPkkndmU8L3c+CisgPHcgZj0iMTgzIj5idXNpbmVzczwvdz4KKyA8dyBmPSIxODMiPnBhcnQ8L3c+CisgPHcgZj0iMTgzIj5ldmVyeTwvdz4KKyA8dyBmPSIxODMiPmJ5ZTwvdz4KKyA8dyBmPSIxODMiPnVwb248L3c+CisgPHcgZj0iMTgzIj55b3UncmU8L3c+CisgPHcgZj0iMTgzIj5zdGF0ZTwvdz4KKyA8dyBmPSIxODMiPmxpZmU8L3c+CisgPHcgZj0iMTgzIj55ZWFyPC93PgorIDx3IGY9IjE4MiI+dGhpbmc8L3c+CisgPHcgZj0iMTgyIj5zaW5jZTwvdz4KKyA8dyBmPSIxODIiPnRoaW5nczwvdz4KKyA8dyBmPSIxODIiPnNvbWV0aGluZzwvdz4KKyA8dyBmPSIxODIiPmxvbmc8L3c+CisgPHcgZj0iMTgyIj5nb3Q8L3c+CisgPHcgZj0iMTgyIj53aGlsZTwvdz4KKyA8dyBmPSIxODIiPkknbGw8L3c+CisgPHcgZj0iMTgyIj5oZWxwPC93PgorIDx3IGY9IjE4MiI+c2VydmljZTwvdz4KKyA8dyBmPSIxODIiPnJlYWxseTwvdz4KKyA8dyBmPSIxODIiPm11c3Q8L3c+CisgPHcgZj0iMTgyIj5kb2VzPC93PgorIDx3IGY9IjE4MiI+bmFtZTwvdz4KKyA8dyBmPSIxODEiPmJvdGg8L3c+CisgPHcgZj0iMTgxIj5zaXg8L3c+CisgPHcgZj0iMTgxIj53YW50PC93PgorIDx3IGY9IjE4MSI+c2FtZTwvdz4KKyA8dyBmPSIxODEiPmVhY2g8L3c+CisgPHcgZj0iMTgxIj55ZXQ8L3c+CisgPHcgZj0iMTgxIj5sZXQ8L3c+CisgPHcgZj0iMTgxIj52aWV3PC93PgorIDx3IGY9IjE4MSI+cGxhY2U8L3c+CisgPHcgZj0iMTgxIj5hbm90aGVyPC93PgorIDx3IGY9IjE4MSI+Y29tcGFueTwvdz4KKyA8dyBmPSIxODEiPnRhbGs8L3c+CisgPHcgZj0iMTgxIj5taWdodDwvdz4KKyA8dyBmPSIxODEiPmFtPC93PgorIDx3IGY9IjE4MSI+dGhvdWdoPC93PgorIDx3IGY9IjE4MSI+ZmluZDwvdz4KKyA8dyBmPSIxODAiPmRldGFpbHM8L3c+CisgPHcgZj0iMTgwIj5sb29rPC93PgorIDx3IGY9IjE4MCI+d29ybGQ8L3c+CisgPHcgZj0iMTgwIj5vbGQ8L3c+CisgPHcgZj0iMTgwIj5jYWxsZWQ8L3c+CisgPHcgZj0iMTgwIj5jYXNlPC93PgorIDx3IGY9IjE4MCI+c3lzdGVtPC93PgorIDx3IGY9IjE4MCI+bmV3czwvdz4KKyA8dyBmPSIxNzkiPnVzZWQ8L3c+CisgPHcgZj0iMTc5Ij5jb250YWN0PC93PgorIDx3IGY9IjE3OSI+bmV2ZXI8L3c+CisgPHcgZj0iMTc5Ij5zZXZlbjwvdz4KKyA8dyBmPSIxNzkiPmNpdHk8L3c+CisgPHcgZj0iMTc5Ij51bnRpbDwvdz4KKyA8dyBmPSIxNzkiPmR1cmluZzwvdz4KKyA8dyBmPSIxNzkiPnNldDwvdz4KKyA8dyBmPSIxNzkiPndoeTwvdz4KKyA8dyBmPSIxNzkiPnBvaW50PC93PgorIDx3IGY9IjE3OSI+dHdlbnR5PC93PgorIDx3IGY9IjE3OSI+aGlnaDwvdz4KKyA8dyBmPSIxNzkiPmxvdmU8L3c+CisgPHcgZj0iMTc5Ij5zZXJ2aWNlczwvdz4KKyA8dyBmPSIxNzAiPm5pw7FvPC93PgorIDx3IGY9IjE3MCI+TWFyw61hPC93PgorIDx3IGY9IjAiPmhtbW08L3c+CisgPHcgZj0iMCI+aG9uPC93PgorIDx3IGY9IjAiPnR0eTwvdz4KKyA8dyBmPSIwIj50dHlsPC93PgorIDx3IGY9IjAiPnR4dDwvdz4KKyA8dyBmPSIwIj51cjwvdz4KKyA8dyBmPSIwIj53YWg8L3c+CisgPHcgZj0iMCI+d2hhdGNoYTwvdz4KKyA8dyBmPSIwIj53b2FoPC93PgorIDx3IGY9IjAiPnlhPC93PgorIDx3IGY9IjAiPnllYTwvdz4KKyA8dyBmPSIwIj55ZWg8L3c+CisgPHcgZj0iMCI+eWVzc2lyPC93PgorIDx3IGY9IjAiPnlpa2VzPC93PgorIDx3IGY9IjAiPnlyczwvdz4KKzwvd29yZGxpc3Q+CmRpZmYgLS1naXQgYS90ZXN0cy9yZXMvcmF3L3Rlc3QuZGljdCBiL3Rlc3RzL3Jlcy9yYXcvdGVzdC5kaWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3ODlhYWEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZXMvcmF3L3Rlc3QuZGljdApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vdGVzdHMvU3VnZ2VzdFRlc3RzLmphdmEgYi90ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW5wdXRtZXRob2QvbGF0aW4vdGVzdHMvU3VnZ2VzdFRlc3RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQwMWQ5MgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3NyYy9jb20vYW5kcm9pZC9pbnB1dG1ldGhvZC9sYXRpbi90ZXN0cy9TdWdnZXN0VGVzdHMuamF2YQpAQCAtMCwwICsxLDI0OCBAQAorcGFja2FnZSBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi50ZXN0czsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLm5pby5CeXRlQnVmZmVyOworaW1wb3J0IGphdmEubmlvLkJ5dGVPcmRlcjsKK2ltcG9ydCBqYXZhLm5pby5jaGFubmVscy5DaGFubmVsczsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQudGVzdC5BbmRyb2lkVGVzdENhc2U7CitpbXBvcnQgYW5kcm9pZC50ZXh0LlRleHRVdGlsczsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW5wdXRtZXRob2QubGF0aW4uU3VnZ2VzdDsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnB1dG1ldGhvZC5sYXRpbi5Xb3JkQ29tcG9zZXI7CisKK3B1YmxpYyBjbGFzcyBTdWdnZXN0VGVzdHMgZXh0ZW5kcyBBbmRyb2lkVGVzdENhc2UgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiU3VnZ2VzdFRlc3RzIjsKKworICAgIHByaXZhdGUgU3VnZ2VzdCBtU3VnZ2VzdDsKKworICAgIGludFtdW10gYWRqYWNlbnRzID0geworICAgICAgICB7J2EnLCdzJywndycsJ3EnLC0xfSwKKyAgICAgICAgeydiJywnaCcsJ3YnLCduJywnZycsJ2onLC0xfSwKKyAgICAgICAgeydjJywndicsJ2YnLCd4JywnZycsfSwKKyAgICAgICAgeydkJywnZicsJ3InLCdlJywncycsJ3gnLC0xfSwKKyAgICAgICAgeydlJywndycsJ3InLCdzJywnZCcsLTF9LAorICAgICAgICB7J2YnLCdnJywnZCcsJ2MnLCd0JywncicsLTF9LAorICAgICAgICB7J2cnLCdoJywnZicsJ3knLCd0JywndicsLTF9LAorICAgICAgICB7J2gnLCdqJywndScsJ2cnLCdiJywneScsLTF9LAorICAgICAgICB7J2knLCdvJywndScsJ2snLC0xfSwKKyAgICAgICAgeydqJywnaycsJ2knLCdoJywndScsJ24nLC0xfSwKKyAgICAgICAgeydrJywnbCcsJ28nLCdqJywnaScsJ20nLC0xfSwKKyAgICAgICAgeydsJywnaycsJ28nLCdwJywtMX0sCisgICAgICAgIHsnbScsJ2snLCduJywnbCcsLTF9LAorICAgICAgICB7J24nLCdtJywnaicsJ2snLCdiJywtMX0sCisgICAgICAgIHsnbycsJ3AnLCdpJywnbCcsLTF9LAorICAgICAgICB7J3AnLCdvJywtMX0sCisgICAgICAgIHsncScsJ3cnLC0xfSwKKyAgICAgICAgeydyJywndCcsJ2UnLCdmJywtMX0sCisgICAgICAgIHsncycsJ2QnLCdlJywndycsJ2EnLCd6JywtMX0sCisgICAgICAgIHsndCcsJ3knLCdyJywtMX0sCisgICAgICAgIHsndScsJ3knLCdpJywnaCcsJ2onLC0xfSwKKyAgICAgICAgeyd2JywnYicsJ2cnLCdjJywnaCcsLTF9LAorICAgICAgICB7J3cnLCdlJywncScsLTF9LAorICAgICAgICB7J3gnLCdjJywnZCcsJ3onLCdmJywtMX0sCisgICAgICAgIHsneScsJ3UnLCd0JywnaCcsJ2cnLC0xfSwKKyAgICAgICAgeyd6JywncycsJ3gnLCdhJywnZCcsLTF9LAorICAgIH07CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBzZXRVcCgpIHsKKyAgICAgICAgZmluYWwgQ29udGV4dCBjb250ZXh0ID0gZ2V0VGVzdENvbnRleHQoKTsKKyAgICAgICAgSW5wdXRTdHJlYW0gaXMgPSBjb250ZXh0LmdldFJlc291cmNlcygpLm9wZW5SYXdSZXNvdXJjZShSLnJhdy50ZXN0KTsKKyAgICAgICAgTG9nLmkoVEFHLCAiU3RyZWFtIHR5cGUgaXMgIiArIGlzKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGludCBhdmFpbCA9IGlzLmF2YWlsYWJsZSgpOworICAgICAgICAgICAgaWYgKGF2YWlsID4gMCkgeworICAgICAgICAgICAgICAgIEJ5dGVCdWZmZXIgYnl0ZUJ1ZmZlciA9CisgICAgICAgICAgICAgICAgICAgIEJ5dGVCdWZmZXIuYWxsb2NhdGVEaXJlY3QoYXZhaWwpLm9yZGVyKEJ5dGVPcmRlci5uYXRpdmVPcmRlcigpKTsKKyAgICAgICAgICAgICAgICBpbnQgZ290ID0gQ2hhbm5lbHMubmV3Q2hhbm5lbChpcykucmVhZChieXRlQnVmZmVyKTsKKyAgICAgICAgICAgICAgICBpZiAoZ290ICE9IGF2YWlsKSB7CisgICAgICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIlJlYWQgIiArIGdvdCArICIgYnl0ZXMsIGV4cGVjdGVkICIgKyBhdmFpbCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbVN1Z2dlc3QgPSBuZXcgU3VnZ2VzdChjb250ZXh0LCBieXRlQnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgTG9nLmkoVEFHLCAiQ3JlYXRlZCBtU3VnZ2VzdCAiICsgYXZhaWwgKyAiIGJ5dGVzIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBpb2UpIHsKKyAgICAgICAgICAgIExvZy53KFRBRywgIk5vIGF2YWlsYWJsZSBzaXplIGZvciBiaW5hcnkgZGljdGlvbmFyeSIpOworICAgICAgICB9CisgICAgICAgIG1TdWdnZXN0LnNldEF1dG9UZXh0RW5hYmxlZChmYWxzZSk7CisgICAgICAgIG1TdWdnZXN0LnNldENvcnJlY3Rpb25Nb2RlKFN1Z2dlc3QuQ09SUkVDVElPTl9GVUxMKTsKKyAgICB9CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKiogSGVscGVyIGZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyAgICBwcml2YXRlIFdvcmRDb21wb3NlciBjcmVhdGVXb3JkQ29tcG9zZXIoQ2hhclNlcXVlbmNlIHMpIHsKKyAgICAgICAgV29yZENvbXBvc2VyIHdvcmQgPSBuZXcgV29yZENvbXBvc2VyKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICBmaW5hbCBjaGFyIGMgPSBzLmNoYXJBdChpKTsKKyAgICAgICAgICAgIGludFtdIGNvZGVzOworICAgICAgICAgICAgLy8gSWYgaXQncyBub3QgYSBsb3dlcmNhc2UgbGV0dGVyLCBkb24ndCBmaW5kIGFkamFjZW50IGxldHRlcnMKKyAgICAgICAgICAgIGlmIChjIDwgJ2EnIHx8IGMgPiAneicpIHsKKyAgICAgICAgICAgICAgICBjb2RlcyA9IG5ldyBpbnRbXSB7IGMgfTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29kZXMgPSBhZGphY2VudHNbYyAtICdhJ107CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3b3JkLmFkZChjLCBjb2Rlcyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHdvcmQ7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNob3dMaXN0KFN0cmluZyB0aXRsZSwgTGlzdDxDaGFyU2VxdWVuY2U+IHN1Z2dlc3Rpb25zKSB7CisgICAgICAgIExvZy5pKFRBRywgdGl0bGUpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHN1Z2dlc3Rpb25zLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBMb2cuaSh0aXRsZSwgc3VnZ2VzdGlvbnMuZ2V0KGkpICsgIiwgIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gaXNEZWZhdWx0U3VnZ2VzdGlvbihMaXN0PENoYXJTZXF1ZW5jZT4gc3VnZ2VzdGlvbnMsIENoYXJTZXF1ZW5jZSB3b3JkKSB7CisgICAgICAgIC8vIENoZWNrIGlmIGVpdGhlciB0aGUgd29yZCBpcyB3aGF0IHlvdSB0eXBlZCBvciB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUKKyAgICAgICAgcmV0dXJuIHN1Z2dlc3Rpb25zLnNpemUoKSA+IDAgJiYKKyAgICAgICAgICAgICAgICAoLypUZXh0VXRpbHMuZXF1YWxzKHN1Z2dlc3Rpb25zLmdldCgwKSwgd29yZCkgfHwgKi8KKyAgICAgICAgICAgICAgICAgIChzdWdnZXN0aW9ucy5zaXplKCkgPiAxICYmIFRleHRVdGlscy5lcXVhbHMoc3VnZ2VzdGlvbnMuZ2V0KDEpLCB3b3JkKSkpOworICAgIH0KKworICAgIHByaXZhdGUgYm9vbGVhbiBpc0RlZmF1bHRTdWdnZXN0aW9uKENoYXJTZXF1ZW5jZSB0eXBlZCwgQ2hhclNlcXVlbmNlIGV4cGVjdGVkKSB7CisgICAgICAgIFdvcmRDb21wb3NlciB3b3JkID0gY3JlYXRlV29yZENvbXBvc2VyKHR5cGVkKTsKKyAgICAgICAgTGlzdDxDaGFyU2VxdWVuY2U+IHN1Z2dlc3Rpb25zID0gbVN1Z2dlc3QuZ2V0U3VnZ2VzdGlvbnMobnVsbCwgd29yZCwgZmFsc2UpOworICAgICAgICByZXR1cm4gaXNEZWZhdWx0U3VnZ2VzdGlvbihzdWdnZXN0aW9ucywgZXhwZWN0ZWQpOworICAgIH0KKworICAgIHByaXZhdGUgYm9vbGVhbiBpc0RlZmF1bHRDb3JyZWN0aW9uKENoYXJTZXF1ZW5jZSB0eXBlZCwgQ2hhclNlcXVlbmNlIGV4cGVjdGVkKSB7CisgICAgICAgIFdvcmRDb21wb3NlciB3b3JkID0gY3JlYXRlV29yZENvbXBvc2VyKHR5cGVkKTsKKyAgICAgICAgTGlzdDxDaGFyU2VxdWVuY2U+IHN1Z2dlc3Rpb25zID0gbVN1Z2dlc3QuZ2V0U3VnZ2VzdGlvbnMobnVsbCwgd29yZCwgZmFsc2UpOworICAgICAgICByZXR1cm4gaXNEZWZhdWx0U3VnZ2VzdGlvbihzdWdnZXN0aW9ucywgZXhwZWN0ZWQpICYmIG1TdWdnZXN0Lmhhc01pbmltYWxDb3JyZWN0aW9uKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIGlzQVN1Z2dlc3Rpb24oQ2hhclNlcXVlbmNlIHR5cGVkLCBDaGFyU2VxdWVuY2UgZXhwZWN0ZWQpIHsKKyAgICAgICAgV29yZENvbXBvc2VyIHdvcmQgPSBjcmVhdGVXb3JkQ29tcG9zZXIodHlwZWQpOworICAgICAgICBMaXN0PENoYXJTZXF1ZW5jZT4gc3VnZ2VzdGlvbnMgPSBtU3VnZ2VzdC5nZXRTdWdnZXN0aW9ucyhudWxsLCB3b3JkLCBmYWxzZSk7CisgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgc3VnZ2VzdGlvbnMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChUZXh0VXRpbHMuZXF1YWxzKHN1Z2dlc3Rpb25zLmdldChpKSwgZXhwZWN0ZWQpKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIGlzVmFsaWQoQ2hhclNlcXVlbmNlIHR5cGVkKSB7CisgICAgICAgIHJldHVybiBtU3VnZ2VzdC5pc1ZhbGlkV29yZCh0eXBlZCk7CisgICAgfQorCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqIFRlc3RzICoqKioqKioqKioqKioqKioqKioqKioqKi8KKworICAgIC8qKgorICAgICAqIFRlc3RzIGZvciBzaW1wbGUgY29tcGxldGlvbnMgb2Ygb25lIGNoYXJhY3Rlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB0ZXN0Q29tcGxldGlvbjFjaGFyKCkgeworICAgICAgICBhc3NlcnRUcnVlKGlzRGVmYXVsdFN1Z2dlc3Rpb24oInBlb3BsIiwgInBlb3BsZSIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShpc0RlZmF1bHRTdWdnZXN0aW9uKCJhYm91IiwgImFib3V0IikpOworICAgICAgICBhc3NlcnRUcnVlKGlzRGVmYXVsdFN1Z2dlc3Rpb24oInRoZWkiLCAidGhlaXIiKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdHMgZm9yIHNpbXBsZSBjb21wbGV0aW9ucyBvZiB0d28gY2hhcmFjdGVycy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB0ZXN0Q29tcGxldGlvbjJjaGFyKCkgeworICAgICAgICBhc3NlcnRUcnVlKGlzRGVmYXVsdFN1Z2dlc3Rpb24oInBlb3AiLCAicGVvcGxlIikpOworICAgICAgICBhc3NlcnRUcnVlKGlzRGVmYXVsdFN1Z2dlc3Rpb24oImNhbGxpIiwgImNhbGxpbmciKSk7CisgICAgICAgIGFzc2VydFRydWUoaXNEZWZhdWx0U3VnZ2VzdGlvbigiYnVzaW5lIiwgImJ1c2luZXNzIikpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3RzIGZvciBwcm94aW1pdHkgZXJyb3JzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHRlc3RQcm94aW1pdHlQb3NpdGl2ZSgpIHsKKyAgICAgICAgYXNzZXJ0VHJ1ZShpc0RlZmF1bHRTdWdnZXN0aW9uKCJwZWlwbGUiLCAicGVvcGxlIikpOworICAgICAgICBhc3NlcnRUcnVlKGlzRGVmYXVsdFN1Z2dlc3Rpb24oInBlb29sZSIsICJwZW9wbGUiKSk7CisgICAgICAgIGFzc2VydFRydWUoaXNEZWZhdWx0U3VnZ2VzdGlvbigicHdwcGxlIiwgInBlb3BsZSIpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0cyBmb3IgcHJveGltaXR5IGVycm9ycyAtIG5lZ2F0aXZlLCB3aGVuIHRoZSBlcnJvciBrZXkgaXMgbm90IG5lYXIuCisgICAgICovCisgICAgcHVibGljIHZvaWQgdGVzdFByb3hpbWl0eU5lZ2F0aXZlKCkgeworICAgICAgICBhc3NlcnRGYWxzZShpc0RlZmF1bHRTdWdnZXN0aW9uKCJhcm91dCIsICJhYm91dCIpKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UoaXNEZWZhdWx0U3VnZ2VzdGlvbigiaXJlIiwgImFyZSIpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0cyBmb3IgY2hlY2tpbmcgaWYgYXBvc3Ryb3BoZXMgYXJlIGFkZGVkIGF1dG9tYXRpY2FsbHkuCisgICAgICovCisgICAgcHVibGljIHZvaWQgdGVzdEFwb3N0cm9waGVJbnNlcnRpb24oKSB7CisgICAgICAgIGFzc2VydFRydWUoaXNEZWZhdWx0U3VnZ2VzdGlvbigiaW0iLCAiSSdtIikpOworICAgICAgICBhc3NlcnRUcnVlKGlzRGVmYXVsdFN1Z2dlc3Rpb24oImRvbnQiLCAiZG9uJ3QiKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCB0byBtYWtlIHN1cmUgYXBvc3Ryb3BoZWQgd29yZCBpcyBub3Qgc3VnZ2VzdGVkIGZvciBhbiBhcG9zdHJvcGhlZCB3b3JkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHRlc3RBcG9zdHJvcGhlKCkgeworICAgICAgICBhc3NlcnRGYWxzZShpc0RlZmF1bHRTdWdnZXN0aW9uKCJkb24ndCIsICJkb24ndCIpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0cyBmb3Igc3VnZ2VzdGlvbiBvZiBjYXBpdGFsaXplZCB2ZXJzaW9uIG9mIGEgd29yZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB0ZXN0Q2FwaXRhbGl6YXRpb24oKSB7CisgICAgICAgIGFzc2VydFRydWUoaXNEZWZhdWx0U3VnZ2VzdGlvbigiaSdtIiwgIkknbSIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShpc0RlZmF1bHRTdWdnZXN0aW9uKCJzdW5kYXkiLCAiU3VuZGF5IikpOworICAgICAgICBhc3NlcnRUcnVlKGlzRGVmYXVsdFN1Z2dlc3Rpb24oInN1bmRhdCIsICJTdW5kYXkiKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdHMgdG8gc2VlIGlmIG1vcmUgdGhhbiBvbmUgY29tcGxldGlvbiBpcyBwcm92aWRlZCBmb3IgY2VydGFpbiBwcmVmaXhlcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB0ZXN0TXVsdGlwbGVDb21wbGV0aW9ucygpIHsKKyAgICAgICAgYXNzZXJ0VHJ1ZShpc0FTdWdnZXN0aW9uKCJjb20iLCAiY29tZSIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShpc0FTdWdnZXN0aW9uKCJjb20iLCAiY29tcGFueSIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShpc0FTdWdnZXN0aW9uKCJ0aCIsICJ0aGUiKSk7CisgICAgICAgIGFzc2VydFRydWUoaXNBU3VnZ2VzdGlvbigidGgiLCAidGhhdCIpKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShpc0FTdWdnZXN0aW9uKCJ0aCIsICJ0aGlzIikpOworICAgICAgICBhc3NlcnRUcnVlKGlzQVN1Z2dlc3Rpb24oInRoIiwgInRoZXkiKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRG9lcyB0aGUgc3VnZ2VzdGlvbiBlbmdpbmUgcmVjb2duaXplIHplcm8gZnJlcXVlbmN5IHdvcmRzIGFzIHZhbGlkIHdvcmRzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHRlc3RaZXJvRnJlcXVlbmN5QWNjZXB0ZWQoKSB7CisgICAgICAgIGFzc2VydFRydWUoaXNWYWxpZCgieWlrZXMiKSk7CisgICAgICAgIGFzc2VydEZhbHNlKGlzVmFsaWQoInlpa2UiKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgemVybyBmcmVxdWVuY3kgd29yZHMgYXJlIG5vdCBzdWdnZXN0ZWQgYXMgY29tcGxldGlvbnMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgdGVzdFplcm9GcmVxdWVuY3lTdWdnZXN0aW9uc05lZ2F0aXZlKCkgeworICAgICAgICBhc3NlcnRGYWxzZShpc0FTdWdnZXN0aW9uKCJ5aWtlIiwgInlpa2VzIikpOworICAgICAgICBhc3NlcnRGYWxzZShpc0FTdWdnZXN0aW9uKCJ3aGF0IiwgIndoYXRjaGEiKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdHMgdG8gZW5zdXJlIHRoYXQgd29yZHMgd2l0aCBsYXJnZSBlZGl0IGRpc3RhbmNlcyBhcmUgbm90IHN1Z2dlc3RlZCwgaW4gc29tZSBjYXNlcworICAgICAqIGFuZCBub3QgY29uc2lkZXJlZCBjb3JyZWN0aW9ucywgaW4gc29tZSBjYXNlcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB0ZXN0VG9vTGFyZ2VFZGl0RGlzdGFuY2UoKSB7CisgICAgICAgIGFzc2VydEZhbHNlKGlzQVN1Z2dlc3Rpb24oInNuaXlyIiwgImFib3V0IikpOworICAgICAgICBhc3NlcnRGYWxzZShpc0RlZmF1bHRDb3JyZWN0aW9uKCJyanciLCAidGhlIikpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1ha2Ugc3VyZSBpc1ZhbGlkIGlzIGNhc2Utc2Vuc2l0aXZlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHRlc3RWYWxpZGl0eUNhc2VTZW5zaXRpdml0eSgpIHsKKyAgICAgICAgYXNzZXJ0VHJ1ZShpc1ZhbGlkKCJTdW5kYXkiKSk7CisgICAgICAgIGFzc2VydEZhbHNlKGlzVmFsaWQoInN1bmRheSIpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBcmUgYWNjZW50ZWQgZm9ybXMgb2Ygd29yZHMgc3VnZ2VzdGVkIGFzIGNvcnJlY3Rpb25zPworICAgICAqLworICAgIHB1YmxpYyB2b2lkIHRlc3RBY2NlbnRzKCkgeworICAgICAgICBhc3NlcnRUcnVlKGlzRGVmYXVsdENvcnJlY3Rpb24oIm5pbm8iLCAibmlcdTAwRjFvIikpOyAvLyBuaZZvCisgICAgICAgIGFzc2VydFRydWUoaXNEZWZhdWx0Q29ycmVjdGlvbigibmltbyIsICJuaVx1MDBGMW8iKSk7IC8vIG5plm8KKyAgICAgICAgYXNzZXJ0VHJ1ZShpc0RlZmF1bHRDb3JyZWN0aW9uKCJtYXJpYSIsICJNYXJcdTAwRURhIikpOyAvLyBNYXKSYQorICAgIH0KK30K