ZGlmZiAtLWdpdCBhL0NvbnRlbnRzIGIvQ29udGVudHMKaW5kZXggZGQ5NWE2NC4uMjlkNDA3OCAxMDA2NDQKLS0tIGEvQ29udGVudHMKKysrIGIvQ29udGVudHMKQEAgLTksMTAgKzksMTAgQEAKIAkJbWVzc2FnZXMsIHNob3dzIGN1cnJlbnQgZmlsZSBuYW1lIGluIHdpbmRvdyB0aXRsZSwgb24tbGluZQogCQloZWxwLCByZWN0YW5ndWxhciBjdXQvcGFzdGUsIGV0Yy4sIGV0Yy4sIGV0Yy4uLgogCi0JCVZlcnNpb24gNy4wZi4gIEFsc28gcnVucyB1bmRlciBVTklYLCBNU0RPUyBhbmQgb3RoZXIgc3lzdGVtcy4KLQkJdmltNzBmcnQudGd6ICBjb250YWlucyB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgc3ludGF4IGZpbGVzLgotCQl2aW03MGZiaW4udGd6IGNvbnRhaW5zIHRoZSBiaW5hcmllcy4KLQkJdmltNzBmc3JjLnRneiBjb250YWlucyB0aGUgc291cmNlcy4KKwkJVmVyc2lvbiA3LjBnLiAgQWxzbyBydW5zIHVuZGVyIFVOSVgsIE1TRE9TIGFuZCBvdGhlciBzeXN0ZW1zLgorCQl2aW03MGdydC50Z3ogIGNvbnRhaW5zIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBzeW50YXggZmlsZXMuCisJCXZpbTcwZ2Jpbi50Z3ogY29udGFpbnMgdGhlIGJpbmFyaWVzLgorCQl2aW03MGdzcmMudGd6IGNvbnRhaW5zIHRoZSBzb3VyY2VzLgogCQlBdXRob3I6IEJyYW0gTW9vbGVuYWFyIGV0IGFsLgogCiAKZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggOTBkODU1My4uMjQ3NDVmYiAxMDA2NDQKLS0tIGEvTWFrZWZpbGUKKysrIGIvTWFrZWZpbGUKQEAgLTY5LDcgKzY5LDcgQEAKICMgICAgQmVmb3JlIGNyZWF0aW5nIGFuIGFyY2hpdmUgZmlyc3QgZGVsZXRlIGFsbCBiYWNrdXAgZmlsZXMsICoub3JpZywgZXRjLgogCiBNQUpPUiA9IDcKLU1JTk9SID0gMGYKK01JTk9SID0gMGcKIAogIyBVbmNvbW1lbnQgdGhpcyBsaW5lIGlmIHRoZSBXaW4zMnMgdmVyc2lvbiBpcyB0byBiZSBpbmNsdWRlZC4KIERPU0JJTl9TID0gIGRvc2Jpbl9zCmRpZmYgLS1naXQgYS9SRUFETUUudHh0IGIvUkVBRE1FLnR4dAppbmRleCAyNzRhYzk5Li4yZGI3MTgzIDEwMDY0NAotLS0gYS9SRUFETUUudHh0CisrKyBiL1JFQURNRS50eHQKQEAgLTEsNCArMSw0IEBACi1SRUFETUUudHh0IGZvciB2ZXJzaW9uIDcuMGYgb2YgVmltOiBWaSBJTXByb3ZlZC4KK1JFQURNRS50eHQgZm9yIHZlcnNpb24gNy4wZyBvZiBWaW06IFZpIElNcHJvdmVkLgogCiAKIFdIQVQgSVMgVklNCmRpZmYgLS1naXQgYS9SRUFETUVfYW1pLnR4dCBiL1JFQURNRV9hbWkudHh0CmluZGV4IGQ1NDMzN2YuLmU0ZTk3MjQgMTAwNjQ0Ci0tLSBhL1JFQURNRV9hbWkudHh0CisrKyBiL1JFQURNRV9hbWkudHh0CkBAIC0xLDQgKzEsNCBAQAotUkVBRE1FX2FtaS50eHQgZm9yIHZlcnNpb24gNy4wZiBvZiBWaW06IFZpIElNcHJvdmVkLgorUkVBRE1FX2FtaS50eHQgZm9yIHZlcnNpb24gNy4wZyBvZiBWaW06IFZpIElNcHJvdmVkLgogCiBUaGlzIGZpbGUgZXhwbGFpbnMgdGhlIGluc3RhbGxhdGlvbiBvZiBWaW0gb24gQW1pZ2Egc3lzdGVtcy4KIFNlZSBSRUFETUUudHh0IGZvciBnZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0IFZpbS4KZGlmZiAtLWdpdCBhL1JFQURNRV9hbWliaW4udHh0IGIvUkVBRE1FX2FtaWJpbi50eHQKaW5kZXggODNlODZlYS4uYjNhODMyZiAxMDA2NDQKLS0tIGEvUkVBRE1FX2FtaWJpbi50eHQKKysrIGIvUkVBRE1FX2FtaWJpbi50eHQKQEAgLTEsNCArMSw0IEBACi1SRUFETUVfYW1pYmluLnR4dCBmb3IgdmVyc2lvbiA3LjBmIG9mIFZpbTogVmkgSU1wcm92ZWQuCitSRUFETUVfYW1pYmluLnR4dCBmb3IgdmVyc2lvbiA3LjBnIG9mIFZpbTogVmkgSU1wcm92ZWQuCiAKIFNlZSAiUkVBRE1FLnR4dCIgZm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgVmltLgogU2VlICJSRUFETUVfYW1pLnR4dCIgZm9yIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMgZm9yIHRoZSBBbWlnYS4KZGlmZiAtLWdpdCBhL1JFQURNRV9hbWlzcmMudHh0IGIvUkVBRE1FX2FtaXNyYy50eHQKaW5kZXggYWI4YzdhOC4uY2IzMWZjMyAxMDA2NDQKLS0tIGEvUkVBRE1FX2FtaXNyYy50eHQKKysrIGIvUkVBRE1FX2FtaXNyYy50eHQKQEAgLTEsNCArMSw0IEBACi1SRUFETUVfYW1pc3JjLnR4dCBmb3IgdmVyc2lvbiA3LjBmIG9mIFZpbTogVmkgSU1wcm92ZWQuCitSRUFETUVfYW1pc3JjLnR4dCBmb3IgdmVyc2lvbiA3LjBnIG9mIFZpbTogVmkgSU1wcm92ZWQuCiAKIFNlZSAiUkVBRE1FLnR4dCIgZm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgVmltLgogU2VlICJSRUFETUVfYW1pLnR4dCIgZm9yIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMgZm9yIHRoZSBBbWlnYS4KZGlmZiAtLWdpdCBhL1JFQURNRV9iaW5kb3MudHh0IGIvUkVBRE1FX2JpbmRvcy50eHQKaW5kZXggODg5ZTYzZC4uZTdkMWM4ZCAxMDA2NDQKLS0tIGEvUkVBRE1FX2JpbmRvcy50eHQKKysrIGIvUkVBRE1FX2JpbmRvcy50eHQKQEAgLTEsNCArMSw0IEBACi1SRUFETUVfYmluZG9zLnR4dCBmb3IgdmVyc2lvbiA3LjBmIG9mIFZpbTogVmkgSU1wcm92ZWQuCitSRUFETUVfYmluZG9zLnR4dCBmb3IgdmVyc2lvbiA3LjBnIG9mIFZpbTogVmkgSU1wcm92ZWQuCiAKIFNlZSAiUkVBRE1FLnR4dCIgZm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgVmltLgogU2VlICJSRUFETUVfZG9zLnR4dCIgZm9yIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMgZm9yIE1TLURPUyBhbmQgTVMtV2luZG93cy4KZGlmZiAtLWdpdCBhL1JFQURNRV9kb3MudHh0IGIvUkVBRE1FX2Rvcy50eHQKaW5kZXggYTFhMzE0Zi4uZDQyN2IwYSAxMDA2NDQKLS0tIGEvUkVBRE1FX2Rvcy50eHQKKysrIGIvUkVBRE1FX2Rvcy50eHQKQEAgLTEsNCArMSw0IEBACi1SRUFETUVfZG9zLnR4dCBmb3IgdmVyc2lvbiA3LjBmIG9mIFZpbTogVmkgSU1wcm92ZWQuCitSRUFETUVfZG9zLnR4dCBmb3IgdmVyc2lvbiA3LjBnIG9mIFZpbTogVmkgSU1wcm92ZWQuCiAKIFRoaXMgZmlsZSBleHBsYWlucyB0aGUgaW5zdGFsbGF0aW9uIG9mIFZpbSBvbiBNUy1ET1MgYW5kIE1TLVdpbmRvd3Mgc3lzdGVtcy4KIFNlZSAiUkVBRE1FLnR4dCIgZm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgVmltLgpkaWZmIC0tZ2l0IGEvUkVBRE1FX2V4dHJhLnR4dCBiL1JFQURNRV9leHRyYS50eHQKaW5kZXggMDJkYTlmZi4uMzNjYjJjNSAxMDA2NDQKLS0tIGEvUkVBRE1FX2V4dHJhLnR4dAorKysgYi9SRUFETUVfZXh0cmEudHh0CkBAIC0xLDQgKzEsNCBAQAotUkVBRE1FX2V4dHJhLnR4dCBmb3IgdmVyc2lvbiA3LjBmIG9mIFZpbTogVmkgSU1wcm92ZWQuCitSRUFETUVfZXh0cmEudHh0IGZvciB2ZXJzaW9uIDcuMGcgb2YgVmltOiBWaSBJTXByb3ZlZC4KIAogVGhlIGV4dHJhIGFyY2hpdmUgb2YgVmltIGlzIHRvIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgc291cmNlIGFyY2hpdmUKICh2aW0tNi4wLXNyYy50YXIuZ3opLiAgVGhlIGV4dHJhIGFyY2hpdmUgaXMgdXNlbGVzcyB3aXRob3V0IGl0LgpkaWZmIC0tZ2l0IGEvUkVBRE1FX2xhbmcudHh0IGIvUkVBRE1FX2xhbmcudHh0CmluZGV4IDBjZTgwZTkuLjgwODBlNzggMTAwNjQ0Ci0tLSBhL1JFQURNRV9sYW5nLnR4dAorKysgYi9SRUFETUVfbGFuZy50eHQKQEAgLTEsNCArMSw0IEBACi1SRUFETUVfbGFuZy50eHQgZm9yIHZlcnNpb24gNy4wZiBvZiBWaW06IFZpIElNcHJvdmVkLgorUkVBRE1FX2xhbmcudHh0IGZvciB2ZXJzaW9uIDcuMGcgb2YgVmltOiBWaSBJTXByb3ZlZC4KIAogVGhpcyBmaWxlIGNvbnRhaW5zIGZpbGVzIGZvciBub24tRW5nbGlzaCBsYW5ndWFnZXM6CiAtIFRyYW5zbGF0ZWQgbWVzc2FnZXMuCmRpZmYgLS1naXQgYS9SRUFETUVfbWFjLnR4dCBiL1JFQURNRV9tYWMudHh0CmluZGV4IDY1YzRiYmYuLjMzNzZhMWQgMTAwNjQ0Ci0tLSBhL1JFQURNRV9tYWMudHh0CisrKyBiL1JFQURNRV9tYWMudHh0CkBAIC0xLDQgKzEsNCBAQAotUkVBRE1FX21hYy50eHQgZm9yIHZlcnNpb24gNy4wZiBvZiBWaW06IFZpIElNcHJvdmVkLgorUkVBRE1FX21hYy50eHQgZm9yIHZlcnNpb24gNy4wZyBvZiBWaW06IFZpIElNcHJvdmVkLgogCiBUaGlzIGZpbGUgZXhwbGFpbnMgdGhlIGluc3RhbGxhdGlvbiBvZiBWaW0gb24gTWFjaW50b3NoIHN5c3RlbXMuCiBTZWUgIlJFQURNRS50eHQiIGZvciBnZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0IFZpbS4KZGlmZiAtLWdpdCBhL1JFQURNRV9vbGUudHh0IGIvUkVBRE1FX29sZS50eHQKaW5kZXggNWMzZjAzNC4uZGRkMDk2MiAxMDA2NDQKLS0tIGEvUkVBRE1FX29sZS50eHQKKysrIGIvUkVBRE1FX29sZS50eHQKQEAgLTEsNCArMSw0IEBACi1SRUFETUVfb2xlLnR4dCBmb3IgdmVyc2lvbiA3LjBmIG9mIFZpbTogVmkgSU1wcm92ZWQuCitSRUFETUVfb2xlLnR4dCBmb3IgdmVyc2lvbiA3LjBnIG9mIFZpbTogVmkgSU1wcm92ZWQuCiAKIFRoaXMgYXJjaGl2ZSBjb250YWlucyBndmltLmV4ZSB3aXRoIE9MRSBpbnRlcmZhY2UgYW5kIFZpc1ZpbS4KIFRoaXMgdmVyc2lvbiBvZiBndmltLmV4ZSBjYW4gYWxzbyBsb2FkIGEgbnVtYmVyIG9mIGludGVyZmFjZSBkeW5hbWljYWxseSAoeW91CmRpZmYgLS1naXQgYS9SRUFETUVfb3MyLnR4dCBiL1JFQURNRV9vczIudHh0CmluZGV4IDVmMmZiODQuLjhjNjY4ZmQgMTAwNjQ0Ci0tLSBhL1JFQURNRV9vczIudHh0CisrKyBiL1JFQURNRV9vczIudHh0CkBAIC0xLDQgKzEsNCBAQAotUkVBRE1FX29zMi50eHQgZm9yIHZlcnNpb24gNy4wZiBvZiBWaW06IFZpIElNcHJvdmVkLgorUkVBRE1FX29zMi50eHQgZm9yIHZlcnNpb24gNy4wZyBvZiBWaW06IFZpIElNcHJvdmVkLgogCiBUaGlzIGZpbGUgZXhwbGFpbnMgdGhlIGluc3RhbGxhdGlvbiBvZiBWaW0gb24gT1MvMiBzeXN0ZW1zLgogU2VlICJSRUFETUUudHh0IiBmb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiBhYm91dCBWaW0uCmRpZmYgLS1naXQgYS9SRUFETUVfb3MzOTAudHh0IGIvUkVBRE1FX29zMzkwLnR4dAppbmRleCAyYjIyM2MxLi4xZjMxNTNlIDEwMDY0NAotLS0gYS9SRUFETUVfb3MzOTAudHh0CisrKyBiL1JFQURNRV9vczM5MC50eHQKQEAgLTEsNCArMSw0IEBACi1SRUFETUVfb3NfMzkwLnR4dCBmb3IgdmVyc2lvbiA3LjBmIG9mIFZpbTogVmkgSU1wcm92ZWQuCitSRUFETUVfb3NfMzkwLnR4dCBmb3IgdmVyc2lvbiA3LjBnIG9mIFZpbTogVmkgSU1wcm92ZWQuCiAKIFdlbGNvbWUgdG8gdGhlIE9TLzM5MCBVbml4IHBvcnQgb2YgVklNLgogCmRpZmYgLS1naXQgYS9SRUFETUVfc3JjLnR4dCBiL1JFQURNRV9zcmMudHh0CmluZGV4IDI1NDM1MjAuLmVjNDljN2QgMTAwNjQ0Ci0tLSBhL1JFQURNRV9zcmMudHh0CisrKyBiL1JFQURNRV9zcmMudHh0CkBAIC0xLDQgKzEsNCBAQAotUkVBRE1FX3NyYy50eHQgZm9yIHZlcnNpb24gNy4wZiBvZiBWaW06IFZpIElNcHJvdmVkLgorUkVBRE1FX3NyYy50eHQgZm9yIHZlcnNpb24gNy4wZyBvZiBWaW06IFZpIElNcHJvdmVkLgogCiBUaGUgc291cmNlIGFyY2hpdmUgY29udGFpbnMgdGhlIGZpbGVzIG5lZWRlZCB0byBjb21waWxlIFZpbSBvbiBVbml4IHN5c3RlbXMuCiBJdCBpcyBwYWNrZWQgZm9yIFVuaXggc3lzdGVtcyAoTkwgbGluZSBzZXBhcmF0b3IpLiAgSXQgaXMgYWxzbyB1c2VkIGZvciBvdGhlcgpkaWZmIC0tZ2l0IGEvUkVBRE1FX3NyY2Rvcy50eHQgYi9SRUFETUVfc3JjZG9zLnR4dAppbmRleCBkOWE5YmNhLi4yN2E0ZTQyIDEwMDY0NAotLS0gYS9SRUFETUVfc3JjZG9zLnR4dAorKysgYi9SRUFETUVfc3JjZG9zLnR4dApAQCAtMSw0ICsxLDQgQEAKLVJFQURNRV9zcmNkb3MudHh0IGZvciB2ZXJzaW9uIDcuMGYgb2YgVmltOiBWaSBJTXByb3ZlZC4KK1JFQURNRV9zcmNkb3MudHh0IGZvciB2ZXJzaW9uIDcuMGcgb2YgVmltOiBWaSBJTXByb3ZlZC4KIAogU2VlICJSRUFETUUudHh0IiBmb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiBhYm91dCBWaW0uCiBTZWUgIlJFQURNRV9kb3MudHh0IiBmb3IgaW5zdGFsbGF0aW9uIGluc3RydWN0aW9ucyBmb3IgTVMtRE9TIGFuZCBNUy1XaW5kb3dzLgpkaWZmIC0tZ2l0IGEvUkVBRE1FX3VuaXgudHh0IGIvUkVBRE1FX3VuaXgudHh0CmluZGV4IDEwMjk0MjEuLjM4YmM5YjggMTAwNjQ0Ci0tLSBhL1JFQURNRV91bml4LnR4dAorKysgYi9SRUFETUVfdW5peC50eHQKQEAgLTEsNCArMSw0IEBACi1SRUFETUVfdW5peC50eHQgZm9yIHZlcnNpb24gNy4wZiBvZiBWaW06IFZpIElNcHJvdmVkLgorUkVBRE1FX3VuaXgudHh0IGZvciB2ZXJzaW9uIDcuMGcgb2YgVmltOiBWaSBJTXByb3ZlZC4KIAogVGhpcyBmaWxlIGV4cGxhaW5zIHRoZSBpbnN0YWxsYXRpb24gb2YgVmltIG9uIFVuaXggc3lzdGVtcy4KIFNlZSAiUkVBRE1FLnR4dCIgZm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgVmltLgpkaWZmIC0tZ2l0IGEvUkVBRE1FX3Ztcy50eHQgYi9SRUFETUVfdm1zLnR4dAppbmRleCA4MmIwZDM4Li5iYTQ1ZDczIDEwMDY0NAotLS0gYS9SRUFETUVfdm1zLnR4dAorKysgYi9SRUFETUVfdm1zLnR4dApAQCAtMSw0ICsxLDQgQEAKLVJFQURNRV92bXMudHh0IGZvciB2ZXJzaW9uIDcuMGYgb2YgVmltOiBWaSBJTXByb3ZlZC4KK1JFQURNRV92bXMudHh0IGZvciB2ZXJzaW9uIDcuMGcgb2YgVmltOiBWaSBJTXByb3ZlZC4KIAogVGhpcyBmaWxlIGV4cGxhaW5zIHRoZSBpbnN0YWxsYXRpb24gb2YgVmltIG9uIFZNUyBzeXN0ZW1zLgogU2VlICJSRUFETUUudHh0IiBpbiB0aGUgcnVudGltZSBhcmNoaXZlIGZvciBpbmZvcm1hdGlvbiBhYm91dCBWaW0uCkBAIC0yMiw4ICsyMiw4IEBACiAgIHZpbS1YWC1leGUtaWE2NC1ndWkuemlwICAgICAgIElBNjQgR1VJL01vdGlmIGV4ZWN1dGFibGVzCiAgIHZpbS1YWC1leGUtaWE2NC1ndGsuemlwICAgICAgIElBNjQgR1VJL0dUSyBleGVjdXRhYmxlcwogICB2aW0tWFgtZXhlLWlhNjQtdGVybS56aXAgICAgICBJQTY0IGNvbnNvbGUgZXhlY3V0YWJsZXMKLSAgdmltLVhYLWV4ZS1heHAtZ3VpLnppcCAgICAgICAgQWxwaGEgR1VJL01vdGlmIGV4ZWN1dGFibGVzCi0gIHZpbS1YWC1leGUtYXhwLWd0ay56aXAgICAgICAgIEFscGhhIEdVSS9HVEsgZXhlY3V0YWJsZXMKKyAgdmltLVhYLWV4ZS1heHAtZ3VpLnppcAlBbHBoYSBHVUkvTW90aWYgZXhlY3V0YWJsZXMKKyAgdmltLVhYLWV4ZS1heHAtZ3RrLnppcAlBbHBoYSBHVUkvR1RLIGV4ZWN1dGFibGVzCiAgIHZpbS1YWC1leGUtYXhwLXRlcm0uemlwICAgICAgIEFscGhhIGNvbnNvbGUgZXhlY3V0YWJsZXMKICAgdmltLVhYLWV4ZS12YXgtZ3VpLnppcAlWQVggR1VJIGV4ZWN1dGFibGVzCiAgIHZpbS1YWC1leGUtdmF4LXRlcm0uemlwICAgICAgIFZBWCBjb25zb2xlIGV4ZWN1dGFibGVzCkBAIC0zNCwxMiArMzQsMTIgQEAKIFRoZSBiaW5hcnkgYXJjaGl2ZXMgY29udGFpbjogdmltLmV4ZSwgY3RhZ3MuZXhlLCB4eGQuZXhlIGZpbGVzLAogYnV0IHRoZXJlIGFyZSBhbHNvIHByZXBhcmVkICJkZXBsb3kgcmVhZHkiIGFyY2hpdmVzOgogCi12aW0tWFgtaWE2NC56aXAgICAgICAgICAgICAgICAgIEdVSSBhbmQgY29uc29sZSBleGVjdXRhYmxlcyB3aXRoIHJ1bnRpbWUgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHAgZmlsZXMgZm9yIElBNjQgc3lzdGVtcwotdmltLVhYLWF4cC56aXAgICAgICAgICAgICAgICAgICBHVUkgYW5kIGNvbnNvbGUgZXhlY3V0YWJsZXMgd2l0aCBydW50aW1lIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwIGZpbGVzIGZvciBBbHBoYSBzeXN0ZW1zCi12aW0tWFgtdmF4LnppcCAgICAgICAgICAgICAgICAgIEdVSSBhbmQgY29uc29sZSBleGVjdXRhYmxlcyB3aXRoIHJ1bnRpbWUgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHAgZmlsZXMgZm9yIFZBWCBzeXN0ZW1zCit2aW0tWFgtaWE2NC56aXAJCQlHVUkgYW5kIGNvbnNvbGUgZXhlY3V0YWJsZXMgd2l0aCBydW50aW1lIGFuZAorCQkJCWhlbHAgZmlsZXMgZm9yIElBNjQgc3lzdGVtcwordmltLVhYLWF4cC56aXAJCQlHVUkgYW5kIGNvbnNvbGUgZXhlY3V0YWJsZXMgd2l0aCBydW50aW1lIGFuZAorCQkJCWhlbHAgZmlsZXMgZm9yIEFscGhhIHN5c3RlbXMKK3ZpbS1YWC12YXguemlwCQkJR1VJIGFuZCBjb25zb2xlIGV4ZWN1dGFibGVzIHdpdGggcnVudGltZSBhbmQKKwkJCQloZWxwIGZpbGVzIGZvciBWQVggc3lzdGVtcwogCiBHVEsgYnVpbGRzIG5lZWQgTElCR1RLIGxpYnJhcnkgaW5zdGFsbGVkLgogCmRpZmYgLS1naXQgYS9SRUFETUVfdzMycy50eHQgYi9SRUFETUVfdzMycy50eHQKaW5kZXggNThhOWJkOC4uNzI0NWUyYSAxMDA2NDQKLS0tIGEvUkVBRE1FX3czMnMudHh0CisrKyBiL1JFQURNRV93MzJzLnR4dApAQCAtMSw0ICsxLDQgQEAKLVJFQURNRV93MzJzLnR4dCBmb3IgdmVyc2lvbiA3LjBmIG9mIFZpbTogVmkgSU1wcm92ZWQuCitSRUFETUVfdzMycy50eHQgZm9yIHZlcnNpb24gNy4wZyBvZiBWaW06IFZpIElNcHJvdmVkLgogCiBUaGlzIGFyY2hpdmUgY29udGFpbnMgdGhlIGd2aW0uZXhlIHRoYXQgd2FzIHNwZWNpZmljYWxseSBjb21waWxlZCBmb3IgdXNlIGluCiB0aGUgV2luMzJzIHN1YnN5c3RlbSBpbiBNUy1XaW5kb3dzIDMuMSBhbmQgMy4xMS4KZGlmZiAtLWdpdCBhL25zaXMvZ3ZpbS5uc2kgYi9uc2lzL2d2aW0ubnNpCmluZGV4IDBmNDU2M2MuLjA1ZDYzZTYgMTAwNjQ0Ci0tLSBhL25zaXMvZ3ZpbS5uc2kKKysrIGIvbnNpcy9ndmltLm5zaQpAQCAtMjIsNyArMjIsNyBAQAogIWRlZmluZSBIQVZFX05MUwogCiAhZGVmaW5lIFZFUl9NQUpPUiA3Ci0hZGVmaW5lIFZFUl9NSU5PUiAwZgorIWRlZmluZSBWRVJfTUlOT1IgMGcKIAogIyAtLS0tLS0tLS0tLSBObyBjb25maWd1cmFibGUgc2V0dGluZ3MgYmVsb3cgdGhpcyBsaW5lIC0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvYXV0b2xvYWQvY3NzY29tcGxldGUudmltIGIvcnVudGltZS9hdXRvbG9hZC9jc3Njb21wbGV0ZS52aW0KaW5kZXggZjgyZGI2Mi4uYTZmNzA0MSAxMDA2NDQKLS0tIGEvcnVudGltZS9hdXRvbG9hZC9jc3Njb21wbGV0ZS52aW0KKysrIGIvcnVudGltZS9hdXRvbG9hZC9jc3Njb21wbGV0ZS52aW0KQEAgLTEsNyArMSw3IEBACiAiIFZpbSBjb21wbGV0aW9uIHNjcmlwdAogIiBMYW5ndWFnZToJQ1NTIDIuMQogIiBNYWludGFpbmVyOglNaWtvbGFqIE1hY2hvd3NraSAoIG1pa21hY2ggQVQgd3AgRE9UIHBsICkKLSIgTGFzdCBDaGFuZ2U6CTIwMDUgT2N0IDEyCisiIExhc3QgQ2hhbmdlOgkyMDA2IEFwciAzMAogCiBmdW5jdGlvbiEgY3NzY29tcGxldGUjQ29tcGxldGVDU1MoZmluZHN0YXJ0LCBiYXNlKQogaWYgYTpmaW5kc3RhcnQKQEAgLTE5LDEyICsxOSwxMiBAQAogCSIgXiA7IDogeyB9IC8qICovCiAJIiBXaGVyZSBeIGlzIHN0YXJ0IG9mIGxpbmUgYW5kIC8qICovIGFyZSBjb21tZW50IGJvcmRlcnMKIAkiIERlcGVuZGluZyBvbiB0aGVpciByZWxhdGl2ZSBwb3NpdGlvbiB0byBjdXJzb3Igd2Ugd2lsbCBub3cgd2hhdCBzaG91bGQKLQkiIGJlIGNvbXBsZXRlZC4gCisJIiBiZSBjb21wbGV0ZWQuCiAJIiAxLiBpZiBuZWFyZXN0IGFyZSBeIG9yIHsgb3IgOyBjdXJyZW50IHdvcmQgaXMgcHJvcGVydHkKIAkiIDIuIGlmIDogaXQgaXMgdmFsdWUgKHdpdGggZXhjZXB0aW9uIG9mIHBzZXVkbyB0aGluZ3MpCiAJIiAzLiBpZiB9IHdlIGFyZSBvdXRzaWRlIG9mIGNzcyBkZWZpbml0aW9ucwogCSIgNC4gZm9yIGNvbW1lbnRzIGlnbm9yaW5nIGlzIGJlIHRoZSBlYXNpZXN0IGJ1dCBhc3N1bWUgdGhleSBhcmUgdGhlIHNhbWUKLQkiICAgIGFzIDEuIAorCSIgICAgYXMgMS4KIAkiIDUuIGlmIEAgY29tcGxldGUgYXQtcnVsZQogCSIgNi4gaWYgISBjb21wbGV0ZSBpbXBvcnRhbnQKIAlpZiBleGlzdHMoImI6Y29tcGxfY29udGV4dCIpCkBAIC0zODUsNyArMzg1LDcgQEAKIAkJCQkJbGV0IGZpbGVzdGFydCA9IG1hdGNoc3RyKGVudGVyZWRfYXRydWxlYWZ0ZXIsICJedXJsKFtcIiddXFw/XFx6cy4qIikKIAkJCQkJbGV0IGZpbGVzID0gc3BsaXQoZ2xvYihmaWxlc3RhcnQuJyonKSwgJ1xuJykKIAkJCQkJbGV0IHZhbHVlcyA9IG1hcChjb3B5KGZpbGVzKSwgJyJ1cmwoIi52OnZhbCcpCi0JCQkJCQorCiAJCQkJZWxzZQogCQkJCQlsZXQgdmFsdWVzID0gWyciJywgJ3VybCgnXQogCmRpZmYgLS1naXQgYS9ydW50aW1lL2F1dG9sb2FkL2h0bWxjb21wbGV0ZS52aW0gYi9ydW50aW1lL2F1dG9sb2FkL2h0bWxjb21wbGV0ZS52aW0KaW5kZXggMjE3MGUyMS4uOGFkYzJiZCAxMDA2NDQKLS0tIGEvcnVudGltZS9hdXRvbG9hZC9odG1sY29tcGxldGUudmltCisrKyBiL3J1bnRpbWUvYXV0b2xvYWQvaHRtbGNvbXBsZXRlLnZpbQpAQCAtMSw3ICsxLDcgQEAKICIgVmltIGNvbXBsZXRpb24gc2NyaXB0CiAiIExhbmd1YWdlOglIVE1MIGFuZCBYSFRNTAogIiBNYWludGFpbmVyOglNaWtvbGFqIE1hY2hvd3NraSAoIG1pa21hY2ggQVQgd3AgRE9UIHBsICkKLSIgTGFzdCBDaGFuZ2U6CTIwMDYgQXByIDI0CisiIExhc3QgQ2hhbmdlOgkyMDA2IEFwciAzMAogCiBmdW5jdGlvbiEgaHRtbGNvbXBsZXRlI0NvbXBsZXRlVGFncyhmaW5kc3RhcnQsIGJhc2UpCiAgIGlmIGE6ZmluZHN0YXJ0CkBAIC0yMyw3ICsyMyw3IEBACiAJIiBIYW5kbGluZyBvZiA8c3R5bGU+IHRhZyB7e3sKIAlsZXQgc3R5bGVzdGFydCA9IHNlYXJjaHBhaXIoJzxzdHlsZVw+JywgJycsICc8XC9zdHlsZVw+JywgImJuVyIpCiAJbGV0IHN0eWxlZW5kICAgPSBzZWFyY2hwYWlyKCc8c3R5bGVcPicsICcnLCAnPFwvc3R5bGVcPicsICJuVyIpCi0JaWYgc3R5bGVzdGFydCAhPSAwICYmIHN0eWxlZW5kICE9IDAgCisJaWYgc3R5bGVzdGFydCAhPSAwICYmIHN0eWxlZW5kICE9IDAKIAkJaWYgc3R5bGVzdGFydCA8PSBjdXJsaW5lICYmIHN0eWxlZW5kID49IGN1cmxpbmUKIAkJCWxldCBzdGFydCA9IGNvbCgnLicpIC0gMQogCQkJbGV0IGI6Y3NzY29tcGwgPSAxCkBAIC0zNiw3ICszNiw3IEBACiAJIiBIYW5kbGluZyBvZiA8c2NyaXB0PiB0YWcge3t7CiAJbGV0IHNjcmlwdHN0YXJ0ID0gc2VhcmNocGFpcignPHNjcmlwdFw+JywgJycsICc8XC9zY3JpcHRcPicsICJiblciKQogCWxldCBzY3JpcHRlbmQgICA9IHNlYXJjaHBhaXIoJzxzY3JpcHRcPicsICcnLCAnPFwvc2NyaXB0XD4nLCAiblciKQotCWlmIHNjcmlwdHN0YXJ0ICE9IDAgJiYgc2NyaXB0ZW5kICE9IDAgCisJaWYgc2NyaXB0c3RhcnQgIT0gMCAmJiBzY3JpcHRlbmQgIT0gMAogCQlpZiBzY3JpcHRzdGFydCA8PSBjdXJsaW5lICYmIHNjcmlwdGVuZCA+PSBjdXJsaW5lCiAJCQlsZXQgc3RhcnQgPSBjb2woJy4nKSAtIDEKIAkJCWxldCBiOmpzY29tcGwgPSAxCkBAIC0xMDksNyArMTA5LDcgQEAKIAkJCWVuZHdoaWxlCiAJCWVuZGlmCiAJCSIgSWYgYjpjb21wbF9jb250ZXh0IGJlZ2lucyB3aXRoIDw/IHdlIGFyZSBpbnNpZGUgb2YgUEhQIGNvZGUuIEl0Ci0JCSIgd2Fzbid0IGNsb3NlZCBzbyBQSFAgY29tcGxldGlvbiBwYXNzZWQgaXQgdG8gSFRNTCAKKwkJIiB3YXNuJ3QgY2xvc2VkIHNvIFBIUCBjb21wbGV0aW9uIHBhc3NlZCBpdCB0byBIVE1MCiAJCWlmICZmaWxldHlwZSA9fj8gJ3BocCcgJiYgYjpjb21wbF9jb250ZXh0ID1+ICdePD8nCiAJCQlsZXQgYjpwaHBjb21wbCA9IDEKIAkJCWxldCBzdGFydCA9IGNvbCgnLicpIC0gMQpAQCAtMjAwLDcgKzIwMCw3IEBACiAKIAkiIElmIGNvbnRleHQgY29udGFpbnMgPiBpdCBtZWFucyB3ZSBhcmUgYWxyZWFkeSBvdXRzaWRlIG9mIHRhZyBhbmQgd2UKIAkiIHNob3VsZCBhYmFuZG9uIGFjdGlvbgotCSIgSWYgY29udGV4dCBjb250YWlucyB3aGl0ZSBzcGFjZSBpdCBpcyBhdHRyaWJ1dGUuIAorCSIgSWYgY29udGV4dCBjb250YWlucyB3aGl0ZSBzcGFjZSBpdCBpcyBhdHRyaWJ1dGUuCiAJIiBJdCBjYW4gYmUgYWxzbyB2YWx1ZSBvZiBhdHRyaWJ1dGUuCiAJIiBXZSBoYXZlIHRvIGdldCBmaXJzdCB3b3JkIHRvIG9mZmVyIHByb3BlciBjb21wbGV0aW9ucwogCWlmIGNvbnRleHQgPT0gJycKQEAgLTM1Myw3ICszNTMsNyBAQAogCQkJCQlsZXQgZmlsZWxpbmVzID0gZ2V0bGluZSgxLCBsaW5lKCckJykpCiAJCQkJCSIgMi4gRmluZCBsaW5lcyB3aXRoIHBvc3NpYmxlIGlkCiAJCQkJCWxldCB1c2VkX2lkX2xpbmVzID0gZmlsdGVyKGZpbGVsaW5lcywgJ3Y6dmFsID1+ICJpZFxccyo9XFxzKltcIicnXVthLXpBLVowLTlfLV1cXCsiJykKLQkJCQkJIiAzYS4gSm9pbiBhbGwgZmlsdGVyZWQgbGluZXMgCisJCQkJCSIgM2EuIEpvaW4gYWxsIGZpbHRlcmVkIGxpbmVzCiAJCQkJCWxldCBpZF9zdHJpbmcgPSBqb2luKHVzZWRfaWRfbGluZXMsICcgJykKIAkJCQkJIiAzYi4gQW5kIHNwbGl0IHRoZW0gdG8gYmUgc3VyZSBlYWNoIGlkIGlzIGluIHNlcGFyYXRlIGl0ZW0KIAkJCQkJbGV0IGlkX2xpc3QgPSBzcGxpdChpZF9zdHJpbmcsICdpZFxzKj1ccyonKQpAQCAtNDMyLDcgKzQzMiw3IEBACiAJCQkJcmV0dXJuIGphdmFzY3JpcHRjb21wbGV0ZSNDb21wbGV0ZUpTKDAsIGpzX2NvbnRleHQpCiAKIAkJCWVuZGlmCi0JCQkJCisKIAkJCSIgfX19CiAJCQlsZXQgc3RyaXBiYXNlID0gbWF0Y2hzdHIoY29udGV4dCwgIi4qXFwob25bYS16QS1aXSpcXHxzdHlsZVxcfGNsYXNzXFwpXFxzKj1cXHMqW1wiJ11cXHpzLioiKQogCQkJIiBOb3cgd2UgaGF2ZSBjb250ZXh0IHN0cmlwcGVkIGZyb20gYWxsIGNoYXJzIHVwIHRvIHN0eWxlL2NsYXNzLgpAQCAtNTA4LDcgKzUwOCw3IEBACiAJCQljYWxsIGh0bWxjb21wbGV0ZSNMb2FkRGF0YSgpCiAJCWVuZGlmCiAJCSIgfX19Ci0JCQorCiAJCWlmIGhhc19rZXkoYjpodG1sX29tbmksIHRhZykKIAkJCWxldCBhdHRycyA9IGtleXMoYjpodG1sX29tbmlbdGFnXVsxXSkKIAkJZWxzZQpAQCAtNjAwLDcgKzYwMCw3IEBACiAJCWVuZGlmCiAJZW5kaWYKIAkiIH19fQotCQorCiAJaWYgZXhpc3RzKCJ1cHBlcmNhc2VfdGFnIikgJiYgdXBwZXJjYXNlX3RhZyA9PSAxCiAJCWxldCBjb250ZXh0ID0gdG9sb3dlcihjb250ZXh0KQogCWVuZGlmCmRpZmYgLS1naXQgYS9ydW50aW1lL2F1dG9sb2FkL2phdmFzY3JpcHRjb21wbGV0ZS52aW0gYi9ydW50aW1lL2F1dG9sb2FkL2phdmFzY3JpcHRjb21wbGV0ZS52aW0KaW5kZXggODdlNDBmMy4uMmFiZTQxYiAxMDA2NDQKLS0tIGEvcnVudGltZS9hdXRvbG9hZC9qYXZhc2NyaXB0Y29tcGxldGUudmltCisrKyBiL3J1bnRpbWUvYXV0b2xvYWQvamF2YXNjcmlwdGNvbXBsZXRlLnZpbQpAQCAtMSw3ICsxLDcgQEAKICIgVmltIGNvbXBsZXRpb24gc2NyaXB0CiAiIExhbmd1YWdlOglKYXZhIFNjcmlwdAogIiBNYWludGFpbmVyOglNaWtvbGFqIE1hY2hvd3NraSAoIG1pa21hY2ggQVQgd3AgRE9UIHBsICkKLSIgTGFzdCBDaGFuZ2U6CTIwMDYgRmViIDYKKyIgTGFzdCBDaGFuZ2U6CTIwMDYgQXByIDMwCiAKIGZ1bmN0aW9uISBqYXZhc2NyaXB0Y29tcGxldGUjQ29tcGxldGVKUyhmaW5kc3RhcnQsIGJhc2UpCiAgIGlmIGE6ZmluZHN0YXJ0CkBAIC00OCw3ICs0OCw3IEBACiAJCWxldCBkb21zID0gWydzdHlsZS4nXQogCQkiIEFycmF5cwogCQlsZXQgYXJyYXlwcm9wID0gWydjb25zdHJ1Y3RvcicsICdpbmRleCcsICdpbnB1dCcsICdsZW5ndGgnLCAncHJvdG90eXBlJ10KLQkJbGV0IGFycmF5bWV0aCA9IFsnY29uY2F0JywgJ2pvaW4nLCAncG9wJywgJ3B1c2gnLCAncmV2ZXJzZScsICdzaGlmdCcsIAorCQlsZXQgYXJyYXltZXRoID0gWydjb25jYXQnLCAnam9pbicsICdwb3AnLCAncHVzaCcsICdyZXZlcnNlJywgJ3NoaWZ0JywKIAkJCQkJXCAnc3BsaWNlJywgJ3NvcnQnLCAndG9Tb3VyY2UnLCAndG9TdHJpbmcnLCAndW5zaGlmdCcsICd2YWx1ZU9mJywKIAkJCQkJXCAnd2F0Y2gnLCAndW53YXRjaCddCiAJCWNhbGwgbWFwKGFycmF5bWV0aCwgJ3Y6dmFsLiIoIicpCmRpZmYgLS1naXQgYS9ydW50aW1lL2F1dG9sb2FkL3BocGNvbXBsZXRlLnZpbSBiL3J1bnRpbWUvYXV0b2xvYWQvcGhwY29tcGxldGUudmltCmluZGV4IDE5NTNhYTIuLjFkYmFiYzMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvYXV0b2xvYWQvcGhwY29tcGxldGUudmltCisrKyBiL3J1bnRpbWUvYXV0b2xvYWQvcGhwY29tcGxldGUudmltCkBAIC0xLDcgKzEsNyBAQAogIiBWaW0gY29tcGxldGlvbiBzY3JpcHQKICIgTGFuZ3VhZ2U6CVBIUAogIiBNYWludGFpbmVyOglNaWtvbGFqIE1hY2hvd3NraSAoIG1pa21hY2ggQVQgd3AgRE9UIHBsICkKLSIgTGFzdCBDaGFuZ2U6CTIwMDYgQXByIDE1CisiIExhc3QgQ2hhbmdlOgkyMDA2IEFwciAzMAogIgogIiAgIFRPRE86CiAiICAgLSBDbGFzcyBhd2FyZSBjb21wbGV0aW9uOgpAQCAtNzIsNyArNzIsNyBAQAogCQkiIENvbXBsZXRlIGNsYXNzIG5hbWUKIAkJIiBJbnRlcm5hbCBzb2x1dGlvbiBmb3IgZmluZGluZyBjbGFzc2VzIGluIGN1cnJlbnQgZmlsZS4KIAkJbGV0IGZpbGUgPSBnZXRsaW5lKDEsICckJykKLQkJY2FsbCBmaWx0ZXIoZmlsZSwgCisJCWNhbGwgZmlsdGVyKGZpbGUsCiAJCQkJXCAndjp2YWwgPX4gImNsYXNzXFxzXFwrW2EtekEtWl9cXHg3Zi1cXHhmZl1bYS16QS1aXzAtOVxceDdmLVxceGZmXSpcXHMqKCInKQogCQlsZXQgZm5hbWVzID0gam9pbihtYXAodGFnZmlsZXMoKSwgJ2VzY2FwZSh2OnZhbCwgIiBcXCIpJykpCiAJCWxldCBqZmlsZSA9IGpvaW4oZmlsZSwgJyAnKQpAQCAtMTUzLDE1ICsxNTMsMTUgQEAKIAkJCQkiIGFuZCBpZnMuIE5vIGdvb2Qgc29sdXRpb24KIAkJCQkiIEZ1bmN0aW9ucyBkZWNsYXJlZCB3aXRoIHB1YmxpYyBrZXl3b3JkIG9yIHdpdGhvdXQgYW55CiAJCQkJIiBrZXl3b3JkIGFyZSBwdWJsaWMKLQkJCQlsZXQgZnVuY3Rpb25zID0gZmlsdGVyKGRlZXBjb3B5KHNjY29udGVudCksIAorCQkJCWxldCBmdW5jdGlvbnMgPSBmaWx0ZXIoZGVlcGNvcHkoc2Njb250ZW50KSwKIAkJCQkJCVwgJ3Y6dmFsID1+ICJeXFxzKlxcKHB1YmxpY1xcc1xcKlxcKVxcP2Z1bmN0aW9uIicpCiAJCQkJbGV0IGpmdW5jcyA9IGpvaW4oZnVuY3Rpb25zLCAnICcpCiAJCQkJbGV0IHNmdW5jcyA9IHNwbGl0KGpmdW5jcywgJ2Z1bmN0aW9uXHNcKycpCiAJCQkJbGV0IGNfZnVuY3Rpb25zID0ge30KIAkJCQlmb3IgaSBpbiBzZnVuY3MKLQkJCQkJbGV0IGZfbmFtZSA9IG1hdGNoc3RyKGksIAorCQkJCQlsZXQgZl9uYW1lID0gbWF0Y2hzdHIoaSwKIAkJCQkJCQlcICdeJlw/XHpzW2EtekEtWl9ceDdmLVx4ZmZdW2EtekEtWl8wLTlceDdmLVx4ZmZdKlx6ZScpCi0JCQkJCWxldCBmX2FyZ3MgPSBtYXRjaHN0cihpLCAKKwkJCQkJbGV0IGZfYXJncyA9IG1hdGNoc3RyKGksCiAJCQkJCQkJXCAnXiZcP1thLXpBLVpfXHg3Zi1ceGZmXVthLXpBLVpfMC05XHg3Zi1ceGZmXSpccyooXHpzLlx7LX1cemUpXF9zKnsnKQogCQkJCQlpZiBmX25hbWUgIT0gJycKIAkJCQkJCWxldCBjX2Z1bmN0aW9uc1tmX25hbWUuJygnXSA9IGZfYXJncwpAQCAtMTY5LDEzICsxNjksMTMgQEAKIAkJCQllbmRmb3IKIAkJCQkiIFZhcmlhYmxlcyBkZWNsYXJlZCB3aXRoIHZhciBvciB3aXRoIHB1YmxpYyBrZXl3b3JkIGFyZQogCQkJCSIgcHVibGljCi0JCQkJbGV0IHZhcmlhYmxlcyA9IGZpbHRlcihkZWVwY29weShzY2NvbnRlbnQpLCAKKwkJCQlsZXQgdmFyaWFibGVzID0gZmlsdGVyKGRlZXBjb3B5KHNjY29udGVudCksCiAJCQkJCQlcICd2OnZhbCA9fiAiXlxccypcXChwdWJsaWNcXHx2YXJcXClcXHNcXCtcXCQiJykKIAkJCQlsZXQganZhcnMgPSBqb2luKHZhcmlhYmxlcywgJyAnKQogCQkJCWxldCBzdmFycyA9IHNwbGl0KGp2YXJzLCAnXCQnKQogCQkJCWxldCBjX3ZhcmlhYmxlcyA9IHt9CiAJCQkJZm9yIGkgaW4gc3ZhcnMKLQkJCQkJbGV0IGNfdmFyID0gbWF0Y2hzdHIoaSwgCisJCQkJCWxldCBjX3ZhciA9IG1hdGNoc3RyKGksCiAJCQkJCQkJXCAnXlx6c1thLXpBLVpfXHg3Zi1ceGZmXVthLXpBLVpfMC05XHg3Zi1ceGZmXSpcemUnKQogCQkJCQlpZiBjX3ZhciAhPSAnJwogCQkJCQkJbGV0IGNfdmFyaWFibGVzW2NfdmFyXSA9ICcnCkBAIC0yMDQsMTMgKzIwNCwxMyBAQAogCQkJCQkJaWYgYWxsX3ZhbHVlc1tpXSAhPSAnJwogCQkJCQkJCWxldCBjbGFzcyA9IGkuJyBjbGFzcyAnCiAJCQkJCQllbmRpZgotCQkJCQkJbGV0IGZpbmFsX2xpc3QgKz0gCi0JCQkJCQkJCVwgW3snd29yZCc6aSwgCi0JCQkJCQkJCVwgICAnaW5mbyc6Y2xhc3MuYWxsX3ZhbHVlc1tpXSwgCisJCQkJCQlsZXQgZmluYWxfbGlzdCArPQorCQkJCQkJCQlcIFt7J3dvcmQnOmksCisJCQkJCQkJCVwgICAnaW5mbyc6Y2xhc3MuYWxsX3ZhbHVlc1tpXSwKIAkJCQkJCQkJXCAgICdraW5kJzondid9XQogCQkJCQllbHNlCi0JCQkJCQlsZXQgZmluYWxfbGlzdCArPSAKLQkJCQkJCQkJXCBbeyd3b3JkJzpzdWJzdGl0dXRlKGksICcuKjo6JywgJycsICcnKSwgCisJCQkJCQlsZXQgZmluYWxfbGlzdCArPQorCQkJCQkJCQlcIFt7J3dvcmQnOnN1YnN0aXR1dGUoaSwgJy4qOjonLCAnJywgJycpLAogCQkJCQkJCQlcICAgJ2luZm8nOmkuYWxsX3ZhbHVlc1tpXS4nKScsCiAJCQkJCQkJCVwgICAna2luZCc6J2YnfV0KIAkJCQkJZW5kaWYKQEAgLTI0MSw3ICsyNDEsNyBAQAogCQkJCWxldCBpbnRfdmFyc1thZGRkb2xsYXIudmFsXSA9ICcnCiAJCQllbmRpZgogCQllbmRmb3IKLQkJCisKIAkJIiBjdGFncyBoYXMgZ29vZCBzdXBwb3J0IGZvciBQSFAsIHVzZSB0YWdzIGZpbGUgZm9yIGV4dGVybmFsCiAJCSIgdmFyaWFibGVzCiAJCWxldCBmbmFtZXMgPSBqb2luKG1hcCh0YWdmaWxlcygpLCAnZXNjYXBlKHY6dmFsLCAiIFxcIiknKSkKQEAgLTI1Niw3ICsyNTYsNyBAQAogCQkJCWxldCBjbGFzc25hbWUgPSAnJwogCQkJCWlmIGZpZWxkWyd0ZXh0J10gPX4gaXRlbS4nXHMqPVxzKm5ld1xzXCsnCiAJCQkJCWxldCBpdGVtID0gaXRlbS4nLT4nCi0JCQkJCWxldCBjbGFzc25hbWUgPSBtYXRjaHN0cihmaWVsZFsndGV4dCddLCAKKwkJCQkJbGV0IGNsYXNzbmFtZSA9IG1hdGNoc3RyKGZpZWxkWyd0ZXh0J10sCiAJCQkJCQkJXCAnPVxzKm5ld1xzXCtcenNbYS16QS1aXzAtOVx4N2YtXHhmZl1cK1x6ZScpCiAJCQkJZW5kaWYKIAkJCQlsZXQgZXh0X3ZhcnNbYWRkZG9sbGFyLml0ZW1dID0gY2xhc3NuYW1lCkBAIC0yNjgsMTYgKzI2OCwxNiBAQAogCiAJCSIgSW50ZXJuYWwgc29sdXRpb24gZm9yIGZpbmRpbmcgZnVuY3Rpb25zIGluIGN1cnJlbnQgZmlsZS4KIAkJbGV0IGZpbGUgPSBnZXRsaW5lKDEsICckJykKLQkJY2FsbCBmaWx0ZXIoZmlsZSwgCisJCWNhbGwgZmlsdGVyKGZpbGUsCiAJCQkJXCAndjp2YWwgPX4gImZ1bmN0aW9uXFxzXFwrJlxcP1thLXpBLVpfXFx4N2YtXFx4ZmZdW2EtekEtWl8wLTlcXHg3Zi1cXHhmZl0qXFxzKigiJykKIAkJbGV0IGZuYW1lcyA9IGpvaW4obWFwKHRhZ2ZpbGVzKCksICdlc2NhcGUodjp2YWwsICIgXFwiKScpKQogCQlsZXQgamZpbGUgPSBqb2luKGZpbGUsICcgJykKIAkJbGV0IGludF92YWx1ZXMgPSBzcGxpdChqZmlsZSwgJ2Z1bmN0aW9uXHNcKycpCiAJCWxldCBpbnRfZnVuY3Rpb25zID0ge30KIAkJZm9yIGkgaW4gaW50X3ZhbHVlcwotCQkJbGV0IGZfbmFtZSA9IG1hdGNoc3RyKGksIAorCQkJbGV0IGZfbmFtZSA9IG1hdGNoc3RyKGksCiAJCQkJCVwgJ14mXD9cenNbYS16QS1aX1x4N2YtXHhmZl1bYS16QS1aXzAtOVx4N2YtXHhmZl0qXHplJykKLQkJCWxldCBmX2FyZ3MgPSBtYXRjaHN0cihpLCAKKwkJCWxldCBmX2FyZ3MgPSBtYXRjaHN0cihpLAogCQkJCQlcICdeJlw/W2EtekEtWl9ceDdmLVx4ZmZdW2EtekEtWl8wLTlceDdmLVx4ZmZdKlxzKihcenMuXHstfVx6ZSlcX3MqeycpCiAJCQlsZXQgaW50X2Z1bmN0aW9uc1tmX25hbWUuJygnXSA9IGZfYXJncy4nKScKIAkJZW5kZm9yCkBAIC0yOTEsNyArMjkxLDcgQEAKIAkJCQkiIEZpbGUgbmFtZQogCQkJCWxldCBpdGVtID0gbWF0Y2hzdHIoZmllbGRbJ3RleHQnXSwgJ15bXls6c3BhY2U6XV1cKycpCiAJCQkJbGV0IGZuYW1lID0gbWF0Y2hzdHIoZmllbGRbJ3RleHQnXSwgJ1x0XHpzXGZcK1x6ZScpCi0JCQkJbGV0IHByb3RvdHlwZSA9IG1hdGNoc3RyKGZpZWxkWyd0ZXh0J10sIAorCQkJCWxldCBwcm90b3R5cGUgPSBtYXRjaHN0cihmaWVsZFsndGV4dCddLAogCQkJCQkJXCAnZnVuY3Rpb25cc1wrJlw/W15bOnNwYWNlOl1dXCtccyooXHMqXHpzLlx7LX1cemVccyopXHMqe1w/JykKIAkJCQlsZXQgZXh0X2Z1bmN0aW9uc1tpdGVtLicoJ10gPSBwcm90b3R5cGUuJykgLSAnLmZuYW1lCiAJCQllbmRmb3IKQEAgLTMyMCw4ICszMjAsOCBAQAogCQkJCWVuZGlmCiAJCQkJbGV0IGZpbmFsX2xpc3QgKz0gW3snd29yZCc6aSwgJ2luZm8nOmNsYXNzLmFsbF92YWx1ZXNbaV0sICdraW5kJzondid9XQogCQkJZWxzZQotCQkJCWxldCBmaW5hbF9saXN0ICs9IAotCQkJCQkJXCBbeyd3b3JkJzpzdWJzdGl0dXRlKGksICcuKjo6JywgJycsICcnKSwgCisJCQkJbGV0IGZpbmFsX2xpc3QgKz0KKwkJCQkJCVwgW3snd29yZCc6c3Vic3RpdHV0ZShpLCAnLio6OicsICcnLCAnJyksCiAJCQkJCQlcICAgJ2luZm8nOmkuYWxsX3ZhbHVlc1tpXSwKIAkJCQkJCVwgICAna2luZCc6J2YnfV0KIAkJCWVuZGlmCkBAIC0zNjEsMTAgKzM2MSwxMCBAQAogCQlsZXQgaW50X3ZhcnMgPSB7fQogCQlmb3IgaSBpbiBpbnRfdmFscwogCQkJaWYgaSA9fiAnXlwkW2EtekEtWl9ceDdmLVx4ZmZdW2EtekEtWl8wLTlceDdmLVx4ZmZdKlxzKj1ccypuZXcnCi0JCQkJbGV0IHZhbCA9IG1hdGNoc3RyKGksIAorCQkJCWxldCB2YWwgPSBtYXRjaHN0cihpLAogCQkJCQkJXCAnXlwkW2EtekEtWl9ceDdmLVx4ZmZdW2EtekEtWl8wLTlceDdmLVx4ZmZdKicpLictPicKIAkJCWVsc2UKLQkJCQlsZXQgdmFsID0gbWF0Y2hzdHIoaSwgCisJCQkJbGV0IHZhbCA9IG1hdGNoc3RyKGksCiAJCQkJCQlcICdeXCRbYS16QS1aX1x4N2YtXHhmZl1bYS16QS1aXzAtOVx4N2YtXHhmZl0qJykKIAkJCWVuZGlmCiAJCQlpZiB2YWwgIT0gJycKQEAgLTM3Myw3ICszNzMsNyBAQAogCQllbmRmb3IKIAogCQljYWxsIGV4dGVuZChpbnRfdmFycyxnOnBocF9idWlsdGluX3ZhcnMpCi0JCQorCiAJCSIgY3RhZ3MgaGFzIHN1cHBvcnQgZm9yIFBIUCwgdXNlIHRhZ3MgZmlsZSBmb3IgZXh0ZXJuYWwgdmFyaWFibGVzCiAJCWxldCBmbmFtZXMgPSBqb2luKG1hcCh0YWdmaWxlcygpLCAnZXNjYXBlKHY6dmFsLCAiIFxcIiknKSkKIAkJbGV0IGV4dF92YXJzID0ge30KQEAgLTM4Nyw3ICszODcsNyBAQAogCQkJCSIgQWRkIC0+IGlmIGl0IGlzIHBvc3NpYmxlIG9iamVjdCBkZWNsYXJhdGlvbgogCQkJCWlmIGZpZWxkWyd0ZXh0J10gPX4gaXRlbS4nXHMqPVxzKm5ld1xzXCsnCiAJCQkJCWxldCBpdGVtID0gaXRlbS4nLT4nCi0JCQkJCWxldCBtX21lbnUgPSBtYXRjaHN0cihmaWVsZFsndGV4dCddLCAKKwkJCQkJbGV0IG1fbWVudSA9IG1hdGNoc3RyKGZpZWxkWyd0ZXh0J10sCiAJCQkJCQkJXCAnPVxzKm5ld1xzXCtcenNbYS16QS1aXzAtOVx4N2YtXHhmZl1cK1x6ZScpCiAJCQkJZW5kaWYKIAkJCQlsZXQgZXh0X3ZhcnNbaXRlbV0gPSBtX21lbnUKQEAgLTQyMSw3ICs0MjEsNyBAQAogCQlyZXR1cm4gaW50X2RpY3QKIAogCWVsc2UKLQkJIiBDb21wbGV0ZSBldmVyeXRoaW5nIGVsc2UgLSAKKwkJIiBDb21wbGV0ZSBldmVyeXRoaW5nIGVsc2UgLQogCQkiICArIGZ1bmN0aW9ucywgIERPTkUKIAkJIiAgKyBrZXl3b3JkcyBvZiBsYW5ndWFnZSBET05FCiAJCSIgICsgZGVmaW5lcyAoY29uc3RhbnQgZGVmaW5pdGlvbnMpLCBET05FCkBAIC00MzEsMTYgKzQzMSwxNiBAQAogCiAJCSIgSW50ZXJuYWwgc29sdXRpb24gZm9yIGZpbmRpbmcgZnVuY3Rpb25zIGluIGN1cnJlbnQgZmlsZS4KIAkJbGV0IGZpbGUgPSBnZXRsaW5lKDEsICckJykKLQkJY2FsbCBmaWx0ZXIoZmlsZSwgCisJCWNhbGwgZmlsdGVyKGZpbGUsCiAJCQkJXCAndjp2YWwgPX4gImZ1bmN0aW9uXFxzXFwrJlxcP1thLXpBLVpfXFx4N2YtXFx4ZmZdW2EtekEtWl8wLTlcXHg3Zi1cXHhmZl0qXFxzKigiJykKIAkJbGV0IGZuYW1lcyA9IGpvaW4obWFwKHRhZ2ZpbGVzKCksICdlc2NhcGUodjp2YWwsICIgXFwiKScpKQogCQlsZXQgamZpbGUgPSBqb2luKGZpbGUsICcgJykKIAkJbGV0IGludF92YWx1ZXMgPSBzcGxpdChqZmlsZSwgJ2Z1bmN0aW9uXHNcKycpCiAJCWxldCBpbnRfZnVuY3Rpb25zID0ge30KIAkJZm9yIGkgaW4gaW50X3ZhbHVlcwotCQkJbGV0IGZfbmFtZSA9IG1hdGNoc3RyKGksIAorCQkJbGV0IGZfbmFtZSA9IG1hdGNoc3RyKGksCiAJCQkJCVwgJ14mXD9cenNbYS16QS1aX1x4N2YtXHhmZl1bYS16QS1aXzAtOVx4N2YtXHhmZl0qXHplJykKLQkJCWxldCBmX2FyZ3MgPSBtYXRjaHN0cihpLCAKKwkJCWxldCBmX2FyZ3MgPSBtYXRjaHN0cihpLAogCQkJCQlcICdeJlw/W2EtekEtWl9ceDdmLVx4ZmZdW2EtekEtWl8wLTlceDdmLVx4ZmZdKlxzKihccypcenMuXHstfVx6ZVxzKilcX3MqeycpCiAJCQlsZXQgaW50X2Z1bmN0aW9uc1tmX25hbWUuJygnXSA9IGZfYXJncy4nKScKIAkJZW5kZm9yCkBAIC00NTQsNyArNDU0LDcgQEAKIAkJCQkiIEZpbGUgbmFtZQogCQkJCWxldCBpdGVtID0gbWF0Y2hzdHIoZmllbGRbJ3RleHQnXSwgJ15bXls6c3BhY2U6XV1cKycpCiAJCQkJbGV0IGZuYW1lID0gbWF0Y2hzdHIoZmllbGRbJ3RleHQnXSwgJ1x0XHpzXGZcK1x6ZScpCi0JCQkJbGV0IHByb3RvdHlwZSA9IG1hdGNoc3RyKGZpZWxkWyd0ZXh0J10sIAorCQkJCWxldCBwcm90b3R5cGUgPSBtYXRjaHN0cihmaWVsZFsndGV4dCddLAogCQkJCQkJXCAnZnVuY3Rpb25cc1wrJlw/W15bOnNwYWNlOl1dXCtccyooXHMqXHpzLlx7LX1cemVccyopXHMqe1w/JykKIAkJCQlsZXQgZXh0X2Z1bmN0aW9uc1tpdGVtLicoJ10gPSBwcm90b3R5cGUuJykgLSAnLmZuYW1lCiAJCQllbmRmb3IKQEAgLTQ3Miw3ICs0NzIsNyBAQAogCQlsZXQgaW50X2NvbnN0YW50cyA9IHt9CiAJCWZvciBpIGluIGludF92YWx1ZXMKIAkJCWxldCBjX25hbWUgPSBtYXRjaHN0cihpLCAnXChbIicnXVwpXHpzW2EtekEtWl9ceDdmLVx4ZmZdW2EtekEtWl8wLTlceDdmLVx4ZmZdKlx6ZVwxJykKLQkJCSIgbGV0IGNfdmFsdWUgPSBtYXRjaHN0cihpLCAKKwkJCSIgbGV0IGNfdmFsdWUgPSBtYXRjaHN0cihpLAogCQkJIiBcICdcKFsiJyddXClbYS16QS1aX1x4N2YtXHhmZl1bYS16QS1aXzAtOVx4N2YtXHhmZl0qXDFccyosXHMqXHpzLlx7LX1cemVccyopJykKIAkJCWlmIGNfbmFtZSAhPSAnJwogCQkJCWxldCBpbnRfY29uc3RhbnRzW2NfbmFtZV0gPSAnJyAiIGNfdmFsdWUKQEAgLTUxNiw4ICs1MTYsOCBAQAogCQlsZXQgZmluYWxfbGlzdCA9IFtdCiAJCWZvciBpIGluIGludF9saXN0CiAJCQlpZiBoYXNfa2V5KGludF9mdW5jdGlvbnMsIGkpCi0JCQkJbGV0IGZpbmFsX2xpc3QgKz0gCi0JCQkJCQlcIFt7J3dvcmQnOmksIAorCQkJCWxldCBmaW5hbF9saXN0ICs9CisJCQkJCQlcIFt7J3dvcmQnOmksCiAJCQkJCQlcICAgJ2luZm8nOmkuaW50X2Z1bmN0aW9uc1tpXSwKIAkJCQkJCVwgICAna2luZCc6J2YnfV0KIAkJCWVsc2VpZiBoYXNfa2V5KGludF9jb25zdGFudHMsIGkpCkBAIC01OTksMTcgKzU5OSwxNyBAQAogCiBmdW5jdGlvbiEgcGhwY29tcGxldGUjR2V0Q2xhc3NDb250ZW50cyhmaWxlLCBuYW1lKSAiIHt7ewogCWxldCBjZmlsZSA9IGpvaW4oYTpmaWxlLCAiXG4iKQotCSIgV2UgdXNlIG5ldyBidWZmZXIgYW5kIChsYXRlcikgbm9ybWFsISBiZWNhdXNlIAorCSIgV2UgdXNlIG5ldyBidWZmZXIgYW5kIChsYXRlcikgbm9ybWFsISBiZWNhdXNlCiAJIiB0aGlzIGlzIHRoZSBtb3N0IGVmZmljaWVudCB3YXkuIFRoZSBvdGhlciB3YXkKIAkiIGlzIHRvIGdvIHRocm91Z2ggdGhlIGxvb29uZyBzdHJpbmcgbG9va2luZyBmb3IKLQkiIG1hdGNoaW5nIHt9IAorCSIgbWF0Y2hpbmcge30KIAliZWxvdyAxbmV3CiAJMHB1dCA9Y2ZpbGUKIAljYWxsIHNlYXJjaCgnY2xhc3Ncc1wrJy5hOm5hbWUpCiAJbGV0IGNmbGluZSA9IGxpbmUoJy4nKQogCSIgQ2F0Y2ggZXh0ZW5kcwogCWlmIGdldGxpbmUoJy4nKSA9fiAnZXh0ZW5kcycKLQkJbGV0IGV4dGVuZHNfY2xhc3MgPSBtYXRjaHN0cihnZXRsaW5lKCcuJyksIAorCQlsZXQgZXh0ZW5kc19jbGFzcyA9IG1hdGNoc3RyKGdldGxpbmUoJy4nKSwKIAkJCQlcICdjbGFzc1xzXCsnLmE6bmFtZS4nXHNcK2V4dGVuZHNcc1wrXHpzW2EtekEtWl8wLTlceDdmLVx4ZmZdXCtcemUnKQogCWVsc2UKIAkJbGV0IGV4dGVuZHNfY2xhc3MgPSAnJwpAQCAtOTY1LDggKzk2NSw4IEBACiAiIFBIUCBidWlsdGluIGZ1bmN0aW9ucyB7e3sKICIgVG8gY3JlYXRlIGZyb20gc2NyYXRjaCBsaXN0IG9mIGZ1bmN0aW9uczoKICIgMS4gRG93bmxvYWQgbXVsdGkgaHRtbCBmaWxlIFBIUCBkb2N1bWVudGF0aW9uCi0iIDIuIHJ1biBmb3IgaSBpbiBgbHMgfCBncmVwICJeZnVuY3Rpb25cLiJgOyBkbyBncmVwIC1BNCBEZXNjcmlwdGlvbiAkaSA+PiBmdW5jczsgZG9uZSAKLSIgMy4gT3BlbiBmdW5jcyBpbiBWaW0gYW5kIAorIiAyLiBydW4gZm9yIGkgaW4gYGxzIHwgZ3JlcCAiXmZ1bmN0aW9uXC4iYDsgZG8gZ3JlcCAtQTQgRGVzY3JpcHRpb24gJGkgPj4gZnVuY3M7IGRvbmUKKyIgMy4gT3BlbiBmdW5jcyBpbiBWaW0gYW5kCiAiICAgIGEpIGcvRGVzY3JpcHRpb24vbm9ybWFsISA1SgogIiAgICBiKSByZW1vdmUgYWxsIGh0bWwgdGFncyAoaXQgd2lsbCByZXF1aXJlIGZldyBzLy8vIGFuZCBnLy8pCiAiICAgIGMpIDolcy9eXChbXls6c3BhY2U6XV1cK1wpIFwoW15bOnNwYWNlOl1dXCtcKSAoIFwoLipcKSkvXFwgJ1wyKCc6ICdcM3wgXDEnLApkaWZmIC0tZ2l0IGEvcnVudGltZS9hdXRvbG9hZC94bWxjb21wbGV0ZS52aW0gYi9ydW50aW1lL2F1dG9sb2FkL3htbGNvbXBsZXRlLnZpbQppbmRleCAwNzI5YjA5Li43OGQzMDU4IDEwMDY0NAotLS0gYS9ydW50aW1lL2F1dG9sb2FkL3htbGNvbXBsZXRlLnZpbQorKysgYi9ydW50aW1lL2F1dG9sb2FkL3htbGNvbXBsZXRlLnZpbQpAQCAtMSw3ICsxLDcgQEAKICIgVmltIGNvbXBsZXRpb24gc2NyaXB0CiAiIExhbmd1YWdlOglYTUwKICIgTWFpbnRhaW5lcjoJTWlrb2xhaiBNYWNob3dza2kgKCBtaWttYWNoIEFUIHdwIERPVCBwbCApCi0iIExhc3QgQ2hhbmdlOgkyMDA2IEFwciAxOQorIiBMYXN0IENoYW5nZToJMjAwNiBBcHIgMzAKIAogIiBUaGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRlIERpY3Rpb25hcnkgd2l0aCB1c2VycyBuYW1lc3BhY2Ugc3RyaW5ncyBhbmQgdmFsdWVzCiAiIGNhbm9uaWNhbCAoc3lzdGVtKSBuYW1lcyBvZiBkYXRhIGZpbGVzLiAgTmFtZXMgc2hvdWxkIGJlIGxvd2VyY2FzZSwKQEAgLTIyLDcgKzIyLDcgQEAKIAllbmRpZgogCiAJIiBTb3VyY2UgZGF0YSBmaWxlLiBEdWUgdG8gc3VzcGVjdGVkIGVycm9ycyBpbiBhdXRvbG9hZCBkbyBpdCB3aXRoCi0JIiA6cnVudGltZS4gCisJIiA6cnVudGltZS4KIAkiIFRPRE86IG1ha2UgaXQgcHJvcGVybHkgKHVzaW5nIGF1dG9sb2FkLCB0aGF0IGlzKSBsYXRlcgogCWV4ZSAicnVudGltZSBhdXRvbG9hZC94bWwvIi5hOmNhbm9uaWNhbC4iLnZpbSIKIApAQCAtMTY2LDcgKzE2Niw3IEBACiAJZW5kaWYKIAogICAgICIgZmluZCB0YWdzIG1hdGNoaW5nIHdpdGggImE6YmFzZSIKLQkiIElmIGE6YmFzZSBjb250YWlucyB3aGl0ZSBzcGFjZSBpdCBpcyBhdHRyaWJ1dGUuIAorCSIgSWYgYTpiYXNlIGNvbnRhaW5zIHdoaXRlIHNwYWNlIGl0IGlzIGF0dHJpYnV0ZS4KIAkiIEl0IGNvdWxkIGJlIGFsc28gdmFsdWUgb2YgYXR0cmlidXRlLi4uCiAJIiBXZSBoYXZlIHRvIGdldCBmaXJzdCB3b3JkIHRvIG9mZmVyCiAJIiBwcm9wZXIgY29tcGxldGlvbnMKZGlmZiAtLWdpdCBhL3J1bnRpbWUvY29sb3JzL2RhcmtibHVlLnZpbSBiL3J1bnRpbWUvY29sb3JzL2RhcmtibHVlLnZpbQppbmRleCA5ODEyZTk4Li5jMTgwMGVhIDEwMDY0NAotLS0gYS9ydW50aW1lL2NvbG9ycy9kYXJrYmx1ZS52aW0KKysrIGIvcnVudGltZS9jb2xvcnMvZGFya2JsdWUudmltCkBAIC0xLDYgKzEsNiBAQAogIiBWaW0gY29sb3IgZmlsZQogIiBNYWludGFpbmVyOglCb2hkYW4gVmxhc3l1ayA8Ym9oZGFuQHZzdHUuZWR1LnVhPgotIiBMYXN0IENoYW5nZToJMjAwNiBBcHIgMjEKKyIgTGFzdCBDaGFuZ2U6CTIwMDYgQXByIDMwCiAKICIgZGFya2JsdWUgLS0gZm9yIHRob3NlIHdobyBwcmVmZXIgZGFyayBiYWNrZ3JvdW5kCiAiIFtub3RlOiBsb29rcyBiaXQgdWdsaWVyIHdpdGggY29tZSB0ZXJtaW5hbCBwYWxldHRlcywKQEAgLTQ1LDggKzQ1LDggQEAKIGhpIERpZmZEZWxldGUJY3Rlcm1mZz1ibHVlIGN0ZXJtYmc9Y3lhbiBndWk9Ym9sZCBndWlmZz1CbHVlIGd1aWJnPURhcmtDeWFuCiBoaSBEaWZmVGV4dAljdGVybT1ib2xkIGN0ZXJtYmc9cmVkIGd1aT1ib2xkIGd1aWJnPVJlZAogCi1oaSBDdXJzb3IgICAJZ3VpZmc9YmxhY2sgZ3VpYmc9eWVsbG93IGN0ZXJtZmc9YmxhY2sgY3Rlcm1iZz15ZWxsb3cKLWhpIGxDdXJzb3IgICAJZ3VpZmc9YmxhY2sgZ3VpYmc9d2hpdGUgY3Rlcm1mZz1ibGFjayBjdGVybWJnPXdoaXRlCitoaSBDdXJzb3IJZ3VpZmc9YmxhY2sgZ3VpYmc9eWVsbG93IGN0ZXJtZmc9YmxhY2sgY3Rlcm1iZz15ZWxsb3cKK2hpIGxDdXJzb3IJZ3VpZmc9YmxhY2sgZ3VpYmc9d2hpdGUgY3Rlcm1mZz1ibGFjayBjdGVybWJnPXdoaXRlCiAKIAogaGkgQ29tbWVudAlndWlmZz0jODBhMGZmIGN0ZXJtZmc9ZGFya3JlZApkaWZmIC0tZ2l0IGEvcnVudGltZS9jb2xvcnMvZGVsZWsudmltIGIvcnVudGltZS9jb2xvcnMvZGVsZWsudmltCmluZGV4IDY4MTJiOTAuLjJjYjkwYTUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvY29sb3JzL2RlbGVrLnZpbQorKysgYi9ydW50aW1lL2NvbG9ycy9kZWxlay52aW0KQEAgLTEsNiArMSw2IEBACiAiIFZpbSBjb2xvciBmaWxlCiAiIE1haW50YWluZXI6CURhdmlkIFNjaHdlaWtlcnQgPGR3c0BlZS5ldGh6LmNoPgotIiBMYXN0IENoYW5nZToJMjAwNiBBcHIgMTQKKyIgTGFzdCBDaGFuZ2U6CTIwMDYgQXByIDMwCiAKIGhpIGNsZWFyCiAKQEAgLTE0LDMwICsxNCwzMCBAQAogIiBOb3RlOiB3ZSBuZXZlciBzZXQgJ3Rlcm0nIGJlY2F1c2UgdGhlIGRlZmF1bHRzIGZvciBCJlcgdGVybWluYWxzIGFyZSBPSwogaGkgRGlmZkFkZCAgICBjdGVybWJnPUxpZ2h0Qmx1ZSAgICBndWliZz1MaWdodEJsdWUKIGhpIERpZmZDaGFuZ2UgY3Rlcm1iZz1MaWdodE1hZ2VudGEgZ3VpYmc9TGlnaHRNYWdlbnRhCi1oaSBEaWZmRGVsZXRlIGN0ZXJtZmc9Qmx1ZSAgICAgICAgIGN0ZXJtYmc9TGlnaHRDeWFuIGd1aT1ib2xkIGd1aWZnPUJsdWUgZ3VpYmc9TGlnaHRDeWFuCi1oaSBEaWZmVGV4dCAgIGN0ZXJtYmc9UmVkICAgICAgICAgIGN0ZXJtPWJvbGQgZ3VpPWJvbGQgZ3VpYmc9UmVkCi1oaSBEaXJlY3RvcnkgIGN0ZXJtZmc9RGFya0JsdWUgICAgIGd1aWZnPUJsdWUKLWhpIEVycm9yTXNnICAgY3Rlcm1mZz1XaGl0ZSAgICAgICAgY3Rlcm1iZz1EYXJrUmVkICBndWliZz1SZWQgICAgICAgZ3VpZmc9V2hpdGUKLWhpIEZvbGRDb2x1bW4gY3Rlcm1mZz1EYXJrQmx1ZSAgICAgY3Rlcm1iZz1HcmV5ICAgICBndWliZz1HcmV5ICAgICAgZ3VpZmc9RGFya0JsdWUKLWhpIEZvbGRlZCAgICAgY3Rlcm1iZz1HcmV5ICAgICAgICAgY3Rlcm1mZz1EYXJrQmx1ZSBndWliZz1MaWdodEdyZXkgZ3VpZmc9RGFya0JsdWUKLWhpIEluY1NlYXJjaCAgY3Rlcm09cmV2ZXJzZSAgICAgICAgZ3VpPXJldmVyc2UKLWhpIExpbmVOciAgICAgY3Rlcm1mZz1Ccm93biAgICAgICAgZ3VpZmc9QnJvd24KLWhpIE1vZGVNc2cgICAgY3Rlcm09Ym9sZCAgICAgICAgICAgZ3VpPWJvbGQKK2hpIERpZmZEZWxldGUgY3Rlcm1mZz1CbHVlCSAgIGN0ZXJtYmc9TGlnaHRDeWFuIGd1aT1ib2xkIGd1aWZnPUJsdWUgZ3VpYmc9TGlnaHRDeWFuCitoaSBEaWZmVGV4dCAgIGN0ZXJtYmc9UmVkCSAgIGN0ZXJtPWJvbGQgZ3VpPWJvbGQgZ3VpYmc9UmVkCitoaSBEaXJlY3RvcnkgIGN0ZXJtZmc9RGFya0JsdWUJICAgZ3VpZmc9Qmx1ZQoraGkgRXJyb3JNc2cgICBjdGVybWZnPVdoaXRlCSAgIGN0ZXJtYmc9RGFya1JlZCAgZ3VpYmc9UmVkCSAgICBndWlmZz1XaGl0ZQoraGkgRm9sZENvbHVtbiBjdGVybWZnPURhcmtCbHVlCSAgIGN0ZXJtYmc9R3JleSAgICAgZ3VpYmc9R3JleQkgICAgZ3VpZmc9RGFya0JsdWUKK2hpIEZvbGRlZCAgICAgY3Rlcm1iZz1HcmV5CSAgIGN0ZXJtZmc9RGFya0JsdWUgZ3VpYmc9TGlnaHRHcmV5IGd1aWZnPURhcmtCbHVlCitoaSBJbmNTZWFyY2ggIGN0ZXJtPXJldmVyc2UJICAgZ3VpPXJldmVyc2UKK2hpIExpbmVOciAgICAgY3Rlcm1mZz1Ccm93bgkgICBndWlmZz1Ccm93bgoraGkgTW9kZU1zZyAgICBjdGVybT1ib2xkCSAgIGd1aT1ib2xkCiBoaSBNb3JlTXNnICAgIGN0ZXJtZmc9RGFya0dyZWVuICAgIGd1aT1ib2xkIGd1aWZnPVNlYUdyZWVuCi1oaSBOb25UZXh0ICAgIGN0ZXJtZmc9Qmx1ZSAgICAgICAgIGd1aT1ib2xkIGd1aWZnPWdyYXkgZ3VpYmc9d2hpdGUKK2hpIE5vblRleHQgICAgY3Rlcm1mZz1CbHVlCSAgIGd1aT1ib2xkIGd1aWZnPWdyYXkgZ3VpYmc9d2hpdGUKIGhpIFBtZW51ICAgICAgZ3VpYmc9TGlnaHRCbHVlCi1oaSBQbWVudVNlbCAgIGN0ZXJtZmc9V2hpdGUgICAgICAgIGN0ZXJtYmc9RGFya0JsdWUgIGd1aWZnPVdoaXRlICBndWliZz1EYXJrQmx1ZQoraGkgUG1lbnVTZWwgICBjdGVybWZnPVdoaXRlCSAgIGN0ZXJtYmc9RGFya0JsdWUgIGd1aWZnPVdoaXRlICBndWliZz1EYXJrQmx1ZQogaGkgUXVlc3Rpb24gICBjdGVybWZnPURhcmtHcmVlbiAgICBndWk9Ym9sZCBndWlmZz1TZWFHcmVlbgotaGkgU2VhcmNoICAgICBjdGVybWZnPU5PTkUgICAgICAgICBjdGVybWJnPVllbGxvdyBndWliZz1ZZWxsb3cgZ3VpZmc9Tk9ORQotaGkgU3BlY2lhbEtleSBjdGVybWZnPURhcmtCbHVlICAgICBndWlmZz1CbHVlCi1oaSBTdGF0dXNMaW5lIGN0ZXJtPWJvbGQgICAgICAgICAgIGN0ZXJtYmc9Ymx1ZSBjdGVybWZnPXllbGxvdyBndWliZz1nb2xkIGd1aWZnPWJsdWUKLWhpIFN0YXR1c0xpbmVOQwljdGVybT1ib2xkICAgICAgICAgY3Rlcm1iZz1ibHVlIGN0ZXJtZmc9YmxhY2sgIGd1aWJnPWdvbGQgZ3VpZmc9Ymx1ZQoraGkgU2VhcmNoICAgICBjdGVybWZnPU5PTkUJICAgY3Rlcm1iZz1ZZWxsb3cgZ3VpYmc9WWVsbG93IGd1aWZnPU5PTkUKK2hpIFNwZWNpYWxLZXkgY3Rlcm1mZz1EYXJrQmx1ZQkgICBndWlmZz1CbHVlCitoaSBTdGF0dXNMaW5lIGN0ZXJtPWJvbGQJICAgY3Rlcm1iZz1ibHVlIGN0ZXJtZmc9eWVsbG93IGd1aWJnPWdvbGQgZ3VpZmc9Ymx1ZQoraGkgU3RhdHVzTGluZU5DCWN0ZXJtPWJvbGQJICAgY3Rlcm1iZz1ibHVlIGN0ZXJtZmc9YmxhY2sgIGd1aWJnPWdvbGQgZ3VpZmc9Ymx1ZQogaGkgVGl0bGUgICAgICBjdGVybWZnPURhcmtNYWdlbnRhICBndWk9Ym9sZCBndWlmZz1NYWdlbnRhCi1oaSBWZXJ0U3BsaXQgIGN0ZXJtPXJldmVyc2UgICAgICAgIGd1aT1yZXZlcnNlCi1oaSBWaXN1YWwgICAgIGN0ZXJtYmc9Tk9ORSAgICAgICAgIGN0ZXJtPXJldmVyc2UgZ3VpPXJldmVyc2UgZ3VpZmc9R3JleSBndWliZz1mZworaGkgVmVydFNwbGl0ICBjdGVybT1yZXZlcnNlCSAgIGd1aT1yZXZlcnNlCitoaSBWaXN1YWwgICAgIGN0ZXJtYmc9Tk9ORQkgICBjdGVybT1yZXZlcnNlIGd1aT1yZXZlcnNlIGd1aWZnPUdyZXkgZ3VpYmc9ZmcKIGhpIFZpc3VhbE5PUyAgY3Rlcm09dW5kZXJsaW5lLGJvbGQgZ3VpPXVuZGVybGluZSxib2xkCi1oaSBXYXJuaW5nTXNnIGN0ZXJtZmc9RGFya1JlZCAgICAgIGd1aWZnPVJlZAotaGkgV2lsZE1lbnUgICBjdGVybWZnPUJsYWNrICAgICAgICBjdGVybWJnPVllbGxvdyAgICBndWliZz1ZZWxsb3cgZ3VpZmc9QmxhY2sKK2hpIFdhcm5pbmdNc2cgY3Rlcm1mZz1EYXJrUmVkCSAgIGd1aWZnPVJlZAoraGkgV2lsZE1lbnUgICBjdGVybWZnPUJsYWNrCSAgIGN0ZXJtYmc9WWVsbG93ICAgIGd1aWJnPVllbGxvdyBndWlmZz1CbGFjawogCiAiIHN5bnRheCBoaWdobGlnaHRpbmcKIGhpIENvbW1lbnQgICAgY3Rlcm09Tk9ORSBjdGVybWZnPURhcmtSZWQgICAgIGd1aT1OT05FIGd1aWZnPXJlZDIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2FyYWJpYy50eHQgYi9ydW50aW1lL2RvYy9hcmFiaWMudHh0CmluZGV4IDg1OTEyNTMuLmYxM2E2NjMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2FyYWJpYy50eHQKKysrIGIvcnVudGltZS9kb2MvYXJhYmljLnR4dApAQCAtMSw0ICsxLDQgQEAKLSphcmFiaWMudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA1IE1hciAyOQorKmFyYWJpYy50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDUgTWFyIDI5CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgTmFkaW0gU2hhaWtsaQpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvYXV0b2NtZC50eHQgYi9ydW50aW1lL2RvYy9hdXRvY21kLnR4dAppbmRleCBjZjhhNDU3Li5iNzlhNWVmIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9hdXRvY21kLnR4dAorKysgYi9ydW50aW1lL2RvYy9hdXRvY21kLnR4dApAQCAtMSw0ICsxLDQgQEAKLSphdXRvY21kLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNQorKmF1dG9jbWQudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xNjIsNyArMTYyLDcgQEAKIAogICAgIDp2ZXJib3NlIGF1dG9jbWQgQnVmRW50ZXIKICAgICBGaWxlRXhwbG9yZXIgIEJ1ZkVudGVyCi0JKiAgICAgICAgIGNhbGwgczpMb2NhbEJyb3dzZShleHBhbmQoIjxhbWF0Y2g+IikpCisJKgkgIGNhbGwgczpMb2NhbEJyb3dzZShleHBhbmQoIjxhbWF0Y2g+IikpCiAJICAgIExhc3Qgc2V0IGZyb20gL3Vzci9zaGFyZS92aW0vdmltLTcuMC9wbHVnaW4vTmV0cndQbHVnaW4udmltCiA8CiBTZWUgfDp2ZXJib3NlLWNtZHwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCkBAIC04ODQsOCArODg0LDggQEAKIHN0aWxsIGV4ZWN1dGVkLgogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLTcuIEJ1ZmZlci1sb2NhbCBhdXRvY29tbWFuZHMgIAkqYXV0b2NtZC1idWZsb2NhbCogKmF1dG9jbWQtYnVmZmVyLWxvY2FsKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSo8YnVmZmVyPU4+KiAqPGJ1ZmZlcj1hYnVmPiogKkU2ODAqCis3LiBCdWZmZXItbG9jYWwgYXV0b2NvbW1hbmRzCSphdXRvY21kLWJ1ZmxvY2FsKiAqYXV0b2NtZC1idWZmZXItbG9jYWwqCisJCQkJCSo8YnVmZmVyPU4+KiAqPGJ1ZmZlcj1hYnVmPiogKkU2ODAqCiAKIEJ1ZmZlci1sb2NhbCBhdXRvY29tbWFuZHMgYXJlIGF0dGFjaGVkIHRvIGEgc3BlY2lmaWMgYnVmZmVyLiAgVGhleSBhcmUgdXNlZnVsCiBpZiB0aGUgYnVmZmVyIGRvZXMgbm90IGhhdmUgYSBuYW1lIGFuZCB3aGVuIHRoZSBuYW1lIGRvZXMgbm90IG1hdGNoIGEgc3BlY2lmaWMKQEAgLTkwNCwxNCArOTA0LDE0IEBACiAKIEFsbCB0aGUgY29tbWFuZHMgZm9yIGF1dG9jb21tYW5kcyBhbHNvIHdvcmsgd2l0aCBidWZmZXItbG9jYWwgYXV0b2NvbW1hbmRzLAogc2ltcGx5IHVzZSB0aGUgc3BlY2lhbCBzdHJpbmcgaW5zdGVhZCBvZiB0aGUgcGF0dGVybi4gIEV4YW1wbGVzOiA+Ci0gICAgOmF1ISAqIDxidWZmZXI+ICAgICAJICAgICAiIHJlbW92ZSBidWZmZXItbG9jYWwgYXV0b2NvbW1hbmRzIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgY3VycmVudCBidWZmZXIKLSAgICA6YXUhICogPGJ1ZmZlcj0zMz4gIAkgICAgICIgcmVtb3ZlIGJ1ZmZlci1sb2NhbCBhdXRvY29tbWFuZHMgZm9yCi0gICAgCQkJCSAgICAgIiBidWZmZXIgIzMzCisgICAgOmF1ISAqIDxidWZmZXI+CQkgICAgICIgcmVtb3ZlIGJ1ZmZlci1sb2NhbCBhdXRvY29tbWFuZHMgZm9yCisJCQkJICAgICAiIGN1cnJlbnQgYnVmZmVyCisgICAgOmF1ISAqIDxidWZmZXI9MzM+CQkgICAgICIgcmVtb3ZlIGJ1ZmZlci1sb2NhbCBhdXRvY29tbWFuZHMgZm9yCisJCQkJICAgICAiIGJ1ZmZlciAjMzMKICAgICA6ZG9idWYgOmF1ISBDdXJzb3JIb2xkIDxidWZmZXI+ICAiIHJlbW92ZSBhdXRvY21kIGZvciBnaXZlbiBldmVudCBmb3IgYWxsCi0gICAgCQkJCSAgICAgIiBidWZmZXJzCi0gICAgOmF1ICogPGJ1ZmZlcj4gICAgICAgCSAgICAgIiBsaXN0IGJ1ZmZlci1sb2NhbCBhdXRvY29tbWFuZHMgZm9yCi0gICAgCQkJCSAgICAgIiBjdXJyZW50IGJ1ZmZlcgorCQkJCSAgICAgIiBidWZmZXJzCisgICAgOmF1ICogPGJ1ZmZlcj4JCSAgICAgIiBsaXN0IGJ1ZmZlci1sb2NhbCBhdXRvY29tbWFuZHMgZm9yCisJCQkJICAgICAiIGN1cnJlbnQgYnVmZmVyCiAKIE5vdGUgdGhhdCB3aGVuIGFuIGF1dG9jb21tYW5kIGlzIGRlZmluZWQgZm9yIHRoZSBjdXJyZW50IGJ1ZmZlciwgaXQgaXMgc3RvcmVkCiB3aXRoIHRoZSBidWZmZXIgbnVtYmVyLiAgVGh1cyBpdCB1c2VzIHRoZSBmb3JtICI8YnVmZmVyPTEyPiIsIHdoZXJlIDEyIGlzIHRoZQpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvY2hhbmdlLnR4dCBiL3J1bnRpbWUvZG9jL2NoYW5nZS50eHQKaW5kZXggMjFiOThkNi4uNGNjNjcxMSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvY2hhbmdlLnR4dAorKysgYi9ydW50aW1lL2RvYy9jaGFuZ2UudHh0CkBAIC0xLDQgKzEsNCBAQAotKmNoYW5nZS50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI1CisqY2hhbmdlLnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMzAKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTQ3MCw3ICs0NzAsNyBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiA0LiBDb21wbGV4IGNoYW5nZXMJCQkJCSpjb21wbGV4LWNoYW5nZSoKIAotNC4xIEZpbHRlciBjb21tYW5kcyAJCQkJCSpmaWx0ZXIqCis0LjEgRmlsdGVyIGNvbW1hbmRzCQkJCQkqZmlsdGVyKgogCiBBIGZpbHRlciBpcyBhIHByb2dyYW0gdGhhdCBhY2NlcHRzIHRleHQgYXQgc3RhbmRhcmQgaW5wdXQsIGNoYW5nZXMgaXQgaW4gc29tZQogd2F5LCBhbmQgc2VuZHMgaXQgdG8gc3RhbmRhcmQgb3V0cHV0LiAgWW91IGNhbiB1c2UgdGhlIGNvbW1hbmRzIGJlbG93IHRvIHNlbmQKQEAgLTkwMCw3ICs5MDAsNyBAQAogCQkJCQkJCSo8TWlkZGxlTW91c2U+KgogWyJ4XTxNaWRkbGVNb3VzZT4JUHV0IHRoZSB0ZXh0IGZyb20gYSByZWdpc3RlciBiZWZvcmUgdGhlIGN1cnNvciBbY291bnRdCiAJCQl0aW1lcy4gIFVzZXMgdGhlICIqIHJlZ2lzdGVyLCB1bmxlc3MgYW5vdGhlciBpcwotCQkJc3BlY2lmaWVkLiAgCisJCQlzcGVjaWZpZWQuCiAJCQlMZWF2ZXMgdGhlIGN1cnNvciBhdCB0aGUgZW5kIG9mIHRoZSBuZXcgdGV4dC4KIAkJCVVzaW5nIHRoZSBtb3VzZSBvbmx5IHdvcmtzIHdoZW4gJ21vdXNlJyBjb250YWlucyAnbicKIAkJCW9yICdhJy4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2NtZGxpbmUudHh0IGIvcnVudGltZS9kb2MvY21kbGluZS50eHQKaW5kZXggNGIxNWYzMy4uNDRmNjg1NyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvY21kbGluZS50eHQKKysrIGIvcnVudGltZS9kb2MvY21kbGluZS50eHQKQEAgLTEsNCArMSw0IEBACi0qY21kbGluZS50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMTYKKypjbWRsaW5lLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAzMAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtNjYzLDcgKzY2Myw3IEBACiBSZXZlcnNlIFJhbmdlCQkJCQkJKkU0OTMqCiAKIEEgcmFuZ2Ugc2hvdWxkIGhhdmUgdGhlIGxvd2VyIGxpbmUgbnVtYmVyIGZpcnN0LiAgSWYgdGhpcyBpcyBub3QgdGhlIGNhc2UsIFZpbQotd2lsbCBhc2sgeW91IGlmIGl0IHNob3VsZCBzd2FwIHRoZSBsaW5lIG51bWJlcnMuIAord2lsbCBhc2sgeW91IGlmIGl0IHNob3VsZCBzd2FwIHRoZSBsaW5lIG51bWJlcnMuCiAJQmFja3dhcmRzIHJhbmdlIGdpdmVuLCBPSyB0byBzd2FwIH4KIFRoaXMgaXMgbm90IGRvbmUgd2l0aGluIHRoZSBnbG9iYWwgY29tbWFuZCAiOmciLgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9kZWJ1Zy50eHQgYi9ydW50aW1lL2RvYy9kZWJ1Zy50eHQKaW5kZXggMTMyMjBlYy4uODE1YzZkYyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZGVidWcudHh0CisrKyBiL3J1bnRpbWUvZG9jL2RlYnVnLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpkZWJ1Zy50eHQqICAgICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKmRlYnVnLnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xMCw3ICsxMCw3IEBACiBGb3IgZGVidWdnaW5nIFZpbSBzY3JpcHRzLCBmdW5jdGlvbnMsIGV0Yy4gc2VlIHxkZWJ1Zy1zY3JpcHRzfAogCiAxLiBMb2NhdGlvbiBvZiBhIGNyYXNoLCB1c2luZyBnY2MgYW5kIGdkYgl8ZGVidWctZ2NjfAotMi4gV2luZG93cyBCdWcgUmVwb3J0aW5nICAgICAgICAgICAgICAgCQl8ZGVidWctd2luMzJ8CisyLiBXaW5kb3dzIEJ1ZyBSZXBvcnRpbmcJCQl8ZGVidWctd2luMzJ8CiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCkBAIC0zOCw3ICszOCw3IEBACiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi0yLiBXaW5kb3dzIEJ1ZyBSZXBvcnRpbmcgICAgICAgICAgICAgICAgICAgICAgIAkJKmRlYnVnLXdpbjMyKgorMi4gV2luZG93cyBCdWcgUmVwb3J0aW5nCQkJCSpkZWJ1Zy13aW4zMioKIAogSWYgdGhlIFdpbmRvd3MgdmVyc2lvbiBvZiBWaW0gY3Jhc2hlcyBpbiBhIHJlcHJvZHVjaWJsZSBtYW5uZXIsIHlvdSBjYW4gdGFrZQogc29tZSBzdGVwcyB0byBwcm92aWRlIGEgdXNlZnVsIGJ1ZyByZXBvcnQuCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9kZWJ1Z2dlci50eHQgYi9ydW50aW1lL2RvYy9kZWJ1Z2dlci50eHQKaW5kZXggZTk0MDk2Yy4uOTI0NTNiNiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZGVidWdnZXIudHh0CisrKyBiL3J1bnRpbWUvZG9jL2RlYnVnZ2VyLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpkZWJ1Z2dlci50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA1IE1hciAyOQorKmRlYnVnZ2VyLnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDUgTWFyIDI5CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEdvcmRvbiBQcmlldXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2RldmVsb3AudHh0IGIvcnVudGltZS9kb2MvZGV2ZWxvcC50eHQKaW5kZXggZDc2OWE4OC4uNTEwNDg1OSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZGV2ZWxvcC50eHQKKysrIGIvcnVudGltZS9kb2MvZGV2ZWxvcC50eHQKQEAgLTEsNCArMSw0IEBACi0qZGV2ZWxvcC50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMDkKKypkZXZlbG9wLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAwOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvZGlmZi50eHQgYi9ydW50aW1lL2RvYy9kaWZmLnR4dAppbmRleCA0Nzk2NjBjLi5iNDkwNDYwIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9kaWZmLnR4dAorKysgYi9ydW50aW1lL2RvYy9kaWZmLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpkaWZmLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAxNAorKmRpZmYudHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDE0CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9kaWdyYXBoLnR4dCBiL3J1bnRpbWUvZG9jL2RpZ3JhcGgudHh0CmluZGV4IDU5NGQxODkuLjk4MWJjMGQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2RpZ3JhcGgudHh0CisrKyBiL3J1bnRpbWUvZG9jL2RpZ3JhcGgudHh0CkBAIC0xLDQgKzEsNCBAQAotKmRpZ3JhcGgudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI1CisqZGlncmFwaC50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjUKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2VkaXRpbmcudHh0IGIvcnVudGltZS9kb2MvZWRpdGluZy50eHQKaW5kZXggMDJmNjQ2Yy4uOTMwYWU2ZCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZWRpdGluZy50eHQKKysrIGIvcnVudGltZS9kb2MvZWRpdGluZy50eHQKQEAgLTEsNCArMSw0IEBACi0qZWRpdGluZy50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjkKKyplZGl0aW5nLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAzMAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtNDMzLDkgKzQzMyw5IEBACiAgICAgZW5jICAgIG9yICBlbmNvZGluZwkgICAgb3ZlcnJpZGVzICdmaWxlZW5jb2RpbmcnCiAgICAgYmluICAgIG9yICBiaW5hcnkJICAgIHNldHMgJ2JpbmFyeScKICAgICBub2JpbiAgb3IgIG5vYmluYXJ5CSAgICByZXNldHMgJ2JpbmFyeScKLSAgICBiYWQgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgYmVoYXZpb3IgZm9yIGJhZCBjaGFyYWN0ZXJzCisgICAgYmFkCQkJICAgIHNwZWNpZmllcyBiZWhhdmlvciBmb3IgYmFkIGNoYXJhY3RlcnMKICAgICBlZGl0CQkgICAgZm9yIHw6cmVhZHwgb25seToga2VlcCBvcHRpb24gdmFsdWVzIGFzIGlmIGVkaXRpbmcKLSAgICAJCQkgICAgYSBmaWxlCisJCQkgICAgYSBmaWxlCiAKIHt2YWx1ZX0gY2Fubm90IGNvbnRhaW4gd2hpdGUgc3BhY2UuICBJdCBjYW4gYmUgYW55IHZhbGlkIHZhbHVlIGZvciB0aGVzZQogb3B0aW9ucy4gIEV4YW1wbGVzOiA+CkBAIC00NTMsNyArNDUzLDcgQEAKIGNvbnZlcnRlZCBhbmQgaWxsZWdhbCBieXRlcy4gIEl0IGNhbiBiZSBvbmUgb2YgdGhyZWUgdGhpbmdzOgogICAgICsrYmFkPVggICAgICBBIHNpbmdsZS1ieXRlIGNoYXJhY3RlciB0aGF0IHJlcGxhY2VzIGVhY2ggYmFkIGNoYXJhY3Rlci4KICAgICArK2JhZD1rZWVwICAgS2VlcCBiYWQgY2hhcmFjdGVycyB3aXRob3V0IGNvbnZlcnNpb24uICBOb3RlIHRoYXQgdGhpcyBtYXkKLSAgICAJCSByZXN1bHQgaW4gaWxsZWdhbCBieXRlcyBpbiB5b3VyIHRleHQhCisJCSByZXN1bHQgaW4gaWxsZWdhbCBieXRlcyBpbiB5b3VyIHRleHQhCiAgICAgKytiYWQ9ZHJvcCAgIFJlbW92ZSB0aGUgYmFkIGNoYXJhY3RlcnMuCiAKIFRoZSBkZWZhdWx0IGlzIGxpa2UgIisrYmFkPT8iOiBSZXBsYWNlIGVhY2ggYmFkIGNoYXJhY3RlciB3aXRoIGEgcXVlc3Rpb24KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2V2YWwudHh0IGIvcnVudGltZS9kb2MvZXZhbC50eHQKaW5kZXggNGU3ZDVmMy4uOGMzNjEyZiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZXZhbC50eHQKKysrIGIvcnVudGltZS9kb2MvZXZhbC50eHQKQEAgLTEsNCArMSw0IEBACi0qZXZhbC50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjkKKypldmFsLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAzMAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMTY4MSw3ICsxNjgxLDcgQEAKIHJlbW90ZV9zZW5kKCB7c2VydmVyfSwge3N0cmluZ30gWywge2lkdmFyfV0pCiAJCQkJU3RyaW5nCXNlbmQga2V5IHNlcXVlbmNlCiByZW1vdmUoIHtsaXN0fSwge2lkeH0gWywge2VuZH1dKSAgYW55CXJlbW92ZSBpdGVtcyB7aWR4fS17ZW5kfSBmcm9tIHtsaXN0fQotcmVtb3ZlKCB7ZGljdH0sIHtrZXl9KSAgCWFueQlyZW1vdmUgZW50cnkge2tleX0gZnJvbSB7ZGljdH0KK3JlbW92ZSgge2RpY3R9LCB7a2V5fSkJCWFueQlyZW1vdmUgZW50cnkge2tleX0gZnJvbSB7ZGljdH0KIHJlbmFtZSgge2Zyb219LCB7dG99KQkJTnVtYmVyCXJlbmFtZSAobW92ZSkgZmlsZSBmcm9tIHtmcm9tfSB0byB7dG99CiByZXBlYXQoIHtleHByfSwge2NvdW50fSkJU3RyaW5nCXJlcGVhdCB7ZXhwcn0ge2NvdW50fSB0aW1lcwogcmVzb2x2ZSgge2ZpbGVuYW1lfSkJCVN0cmluZwlnZXQgZmlsZW5hbWUgYSBzaG9ydGN1dCBwb2ludHMgdG8KQEAgLTIzMjMsNyArMjMyMyw3IEBACiAJCQkjZ3JvdXAjZXZlbnQJYXV0b2NvbW1hbmQgZGVmaW5lZCBmb3IgdGhpcyBncm91cCBhbmQKIAkJCQkJZXZlbnQuCiAJCQkjZ3JvdXAjZXZlbnQjcGF0dGVybgotCQkJCQlhdXRvY29tbWFuZCBkZWZpbmVkIGZvciB0aGlzIGdyb3VwLCAKKwkJCQkJYXV0b2NvbW1hbmQgZGVmaW5lZCBmb3IgdGhpcyBncm91cCwKIAkJCQkJZXZlbnQgYW5kIHBhdHRlcm4uCiAJCQkjI2V2ZW50CQlhdXRvY29tbWFuZCBmb3IgdGhpcyBldmVudCBpcwogCQkJCQlzdXBwb3J0ZWQuCkBAIC0yNDUwLDcgKzI0NTAsNyBAQAogCQl1c2VkIHRvIGRlY2lkZSB3aGF0IHRvIGRvOgogCQl7ZXhwcjN9ID0gImtlZXAiOiBrZWVwIHRoZSB2YWx1ZSBvZiB7ZXhwcjF9CiAJCXtleHByM30gPSAiZm9yY2UiOiB1c2UgdGhlIHZhbHVlIG9mIHtleHByMn0KLQkJe2V4cHIzfSA9ICJlcnJvciI6IGdpdmUgYW4gZXJyb3IgbWVzc2FnZSAJCSpFNzM3KgorCQl7ZXhwcjN9ID0gImVycm9yIjogZ2l2ZSBhbiBlcnJvciBtZXNzYWdlCQkqRTczNyoKIAkJV2hlbiB7ZXhwcjN9IGlzIG9taXR0ZWQgdGhlbiAiZm9yY2UiIGlzIGFzc3VtZWQuCiAKIAkJe2V4cHIxfSBpcyBjaGFuZ2VkIHdoZW4ge2V4cHIyfSBpcyBub3QgZW1wdHkuICBJZiBuZWNlc3NhcnkKQEAgLTM1MzgsNyArMzUzOCw3IEBACiAKIAogbWF0Y2hhcmcoe25yfSkJCQkJCQkJKm1hdGNoYXJnKCkqCi0JCVNlbGVjdHMgdGhlIHtucn0gbWF0Y2ggaXRlbSwgYXMgc2V0IHdpdGggYSB8Om1hdGNofCwgCisJCVNlbGVjdHMgdGhlIHtucn0gbWF0Y2ggaXRlbSwgYXMgc2V0IHdpdGggYSB8Om1hdGNofCwKIAkJfDoybWF0Y2h8IG9yIHw6M21hdGNofCBjb21tYW5kLgogCQlSZXR1cm4gYSB8TGlzdHwgd2l0aCB0d28gZWxlbWVudHM6CiAJCQlUaGUgbmFtZSBvZiB0aGUgaGlnaGxpZ2h0IGdyb3VwIHVzZWQKQEAgLTM2OTYsNyArMzY5Niw3IEBACiAJCQkiICA5OTogRTQyIGFzZGZhc2RmYXNkZmFzZGZhc2RmYXNkZmFzZGZhcyIgfgogCiAJCU9mdGVuIHVzZWQgaXRlbXMgYXJlOgotCQkgICVzICAgCXN0cmluZworCQkgICVzCXN0cmluZwogCQkgICU2cwlzdHJpbmcgcmlnaHQtYWxpZ25lZCBpbiA2IGJ5dGVzCiAJCSAgJS45cyAgc3RyaW5nIHRydW5jYXRlZCB0byA5IGJ5dGVzCiAJCSAgJWMgICAgc2luZ2xlIGJ5dGUKQEAgLTM3MTcsNyArMzcxNyw3IEBACiAKIAkJCSUgIFtmbGFnc10gIFtmaWVsZC13aWR0aF0gIFsucHJlY2lzaW9uXSAgdHlwZQogCi0JICAgICAgICBmbGFncworCQlmbGFncwogCQkJWmVybyBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcgZmxhZ3M6CiAKIAkJICAgICMJICAgICAgVGhlIHZhbHVlIHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8gYW4gImFsdGVybmF0ZQpAQCAtMzc3OSw3ICszNzc5LDcgQEAKIDwJCVRoaXMgbGltaXRzIHRoZSBsZW5ndGggb2YgdGhlIHRleHQgdXNlZCBmcm9tICJsaW5lIiB0bwogCQkid2lkdGgiIGJ5dGVzLgogCi0JICAgICAgICBUaGUgY29udmVyc2lvbiBzcGVjaWZpZXJzIGFuZCB0aGVpciBtZWFuaW5ncyBhcmU6CisJCVRoZSBjb252ZXJzaW9uIHNwZWNpZmllcnMgYW5kIHRoZWlyIG1lYW5pbmdzIGFyZToKIAogCQlkb3hYICAgIFRoZSBOdW1iZXIgYXJndW1lbnQgaXMgY29udmVydGVkIHRvIHNpZ25lZCBkZWNpbWFsCiAJCQkoZCksIHVuc2lnbmVkIG9jdGFsIChvKSwgb3IgdW5zaWduZWQgaGV4YWRlY2ltYWwgKHgKQEAgLTM4MzMsMTAgKzM4MzMsMTAgQEAKIAkJZW1wdHkgbGlzdC4gIFdoZW4gdGhlIG1heGltdW0gaXMgbW9yZSB0aGFuIG9uZSBiZWZvcmUgdGhlCiAJCXN0YXJ0IHRoaXMgaXMgYW4gZXJyb3IuCiAJCUV4YW1wbGVzOiA+Ci0JCQlyYW5nZSg0KSAJCSIgWzAsIDEsIDIsIDNdCisJCQlyYW5nZSg0KQkJIiBbMCwgMSwgMiwgM10KIAkJCXJhbmdlKDIsIDQpCQkiIFsyLCAzLCA0XQogCQkJcmFuZ2UoMiwgOSwgMykJCSIgWzIsIDUsIDhdCi0JCQlyYW5nZSgyLCAtMiwgLTEpIAkiIFsyLCAxLCAwLCAtMSwgLTJdCisJCQlyYW5nZSgyLCAtMiwgLTEpCSIgWzIsIDEsIDAsIC0xLCAtMl0KIAkJCXJhbmdlKDApCQkiIFtdCiAJCQlyYW5nZSgyLCAwKQkJIiBlcnJvciEKIDwKQEAgLTQxMDAsNyArNDEwMCw3IEBACiAKIHNlYXJjaGRlY2woe25hbWV9IFssIHtnbG9iYWx9IFssIHt0aGlzYmxvY2t9XV0pCQkJKnNlYXJjaGRlY2woKSoKIAkJU2VhcmNoIGZvciB0aGUgZGVjbGFyYXRpb24gb2Yge25hbWV9LgotCQkKKwogCQlXaXRoIGEgbm9uLXplcm8ge2dsb2JhbH0gYXJndW1lbnQgaXQgd29ya3MgbGlrZSB8Z0R8LCBmaW5kCiAJCWZpcnN0IG1hdGNoIGluIHRoZSBmaWxlLiAgT3RoZXJ3aXNlIGl0IHdvcmtzIGxpa2UgfGdkfCwgZmluZAogCQlmaXJzdCBtYXRjaCBpbiB0aGUgZnVuY3Rpb24uCkBAIC00MzA2LDcgKzQzMDYsNyBAQAogCQkgICAgW2J1Zm51bSwgbG51bSwgY29sLCBvZmZdCiAKIAkJImJ1Zm51bSIgaXMgdGhlIGJ1ZmZlciBudW1iZXIuICBaZXJvIGNhbiBiZSB1c2VkIGZvciB0aGUKLQkJY3VycmVudCBidWZmZXIuICBTZXR0aW5nIHRoZSBjdXJzb3IgaXMgb25seSBwb3NzaWJsZSBmb3IgCisJCWN1cnJlbnQgYnVmZmVyLiAgU2V0dGluZyB0aGUgY3Vyc29yIGlzIG9ubHkgcG9zc2libGUgZm9yCiAJCXRoZSBjdXJyZW50IGJ1ZmZlci4gIFRvIHNldCBhIG1hcmsgaW4gYW5vdGhlciBidWZmZXIgeW91IGNhbgogCQl1c2UgdGhlIHxidWZucigpfCBmdW5jdGlvbiB0byB0dXJuIGEgZmlsZSBuYW1lIGludG8gYSBidWZmZXIKIAkJbnVtYmVyLgpAQCAtNDMzNCw3ICs0MzM0LDcgQEAKIAkJICAgIHBhdHRlcm4Jc2VhcmNoIHBhdHRlcm4gdXNlZCB0byBsb2NhdGUgdGhlIGVycm9yCiAJCSAgICBjb2wJCWNvbHVtbiBudW1iZXIKIAkJICAgIHZjb2wJd2hlbiBub24temVybzogImNvbCIgaXMgdmlzdWFsIGNvbHVtbgotCQkgICAgCQl3aGVuIHplcm86ICJjb2wiIGlzIGJ5dGUgaW5kZXgKKwkJCQl3aGVuIHplcm86ICJjb2wiIGlzIGJ5dGUgaW5kZXgKIAkJICAgIG5yCQllcnJvciBudW1iZXIKIAkJICAgIHRleHQJZGVzY3JpcHRpb24gb2YgdGhlIGVycm9yCiAJCSAgICB0eXBlCXNpbmdsZS1jaGFyYWN0ZXIgZXJyb3IgdHlwZSwgJ0UnLCAnVycsIGV0Yy4KQEAgLTQ0NzgsNyArNDQ3OCw3IEBACiAJCVRoZSByZXR1cm4gdmFsdWUgaXMgYSBsaXN0IHdpdGggdHdvIGl0ZW1zOgogCQktIFRoZSBiYWRseSBzcGVsbGVkIHdvcmQgb3IgYW4gZW1wdHkgc3RyaW5nLgogCQktIFRoZSB0eXBlIG9mIHRoZSBzcGVsbGluZyBlcnJvcjoKLQkJICAJImJhZCIJCXNwZWxsaW5nIG1pc3Rha2UKKwkJCSJiYWQiCQlzcGVsbGluZyBtaXN0YWtlCiAJCQkicmFyZSIJCXJhcmUgd29yZAogCQkJImxvY2FsIgkJd29yZCBvbmx5IHZhbGlkIGluIGFub3RoZXIgcmVnaW9uCiAJCQkiY2FwcyIJCXdvcmQgc2hvdWxkIHN0YXJ0IHdpdGggQ2FwaXRhbApAQCAtNDU0NSw3ICs0NTQ1LDcgQEAKIAkJV2hlbiB7YmFzZX0gaXMgMTYgYSBsZWFkaW5nICIweCIgb3IgIjBYIiBpcyBpZ25vcmVkLiAgV2l0aCBhCiAJCWRpZmZlcmVudCBiYXNlIHRoZSByZXN1bHQgd2lsbCBiZSB6ZXJvLgogCQlUZXh0IGFmdGVyIHRoZSBudW1iZXIgaXMgc2lsZW50bHkgaWdub3JlZC4KLQkKKwogCiBzdHJmdGltZSh7Zm9ybWF0fSBbLCB7dGltZX1dKQkJCQkqc3RyZnRpbWUoKSoKIAkJVGhlIHJlc3VsdCBpcyBhIFN0cmluZywgd2hpY2ggaXMgYSBmb3JtYXR0ZWQgZGF0ZSBhbmQgdGltZSwgYXMKQEAgLTQ1ODEsNyArNDU4MSw3IEBACiAJCSAgOmVjaG8gc3RyaWR4KCJBbiBFeGFtcGxlIiwgIkV4YW1wbGUiKQkgICAgIDMKIAkJICA6ZWNobyBzdHJpZHgoIlN0YXJ0aW5nIHBvaW50IiwgIlN0YXJ0IikgICAgMAogCQkgIDplY2hvIHN0cmlkeCgiU3RhcnRpbmcgcG9pbnQiLCAic3RhcnQiKSAgIC0xCi08CSAgCQkJCQkqc3Ryc3RyKCkqICpzdHJjaHIoKSoKKzwJCQkJCQkqc3Ryc3RyKCkqICpzdHJjaHIoKSoKIAkJc3RyaWR4KCkgd29ya3Mgc2ltaWxhciB0byB0aGUgQyBmdW5jdGlvbiBzdHJzdHIoKS4gIFdoZW4gdXNlZAogCQl3aXRoIGEgc2luZ2xlIGNoYXJhY3RlciBpdCB3b3JrcyBzaW1pbGFyIHRvIHN0cmNocigpLgogCkBAIC00NjM4LDcgKzQ2MzgsNyBAQAogCQlJZiB0aGUge25lZWRsZX0gaXMgZW1wdHkgdGhlIGxlbmd0aCBvZiB7aGF5c3RhY2t9IGlzIHJldHVybmVkLgogCQlTZWUgYWxzbyB8c3RyaWR4KCl8LiAgRXhhbXBsZXM6ID4KIAkJICA6ZWNobyBzdHJyaWR4KCJhbiBhbmdyeSBhcm1hZGlsbG8iLCAiYW4iKQkgICAgIDMKLTwJCSAgCQkJCQkqc3RycmNocigpKgorPAkJCQkJCQkqc3RycmNocigpKgogCQlXaGVuIHVzZWQgd2l0aCBhIHNpbmdsZSBjaGFyYWN0ZXIgaXQgd29ya3Mgc2ltaWxhciB0byB0aGUgQwogCQlmdW5jdGlvbiBzdHJyY2hyKCkuCiAKQEAgLTQ5MzcsMTAgKzQ5MzcsMTEgQEAKIAogdmlzdWFsbW9kZShbZXhwcl0pCQkJCQkJKnZpc3VhbG1vZGUoKSoKIAkJVGhlIHJlc3VsdCBpcyBhIFN0cmluZywgd2hpY2ggZGVzY3JpYmVzIHRoZSBsYXN0IFZpc3VhbCBtb2RlCi0JCXVzZWQuICBJbml0aWFsbHkgaXQgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcsIGJ1dCBvbmNlIFZpc3VhbAotCQltb2RlIGhhcyBiZWVuIHVzZWQsIGl0IHJldHVybnMgInYiLCAiViIsIG9yICI8Q1RSTC1WPiIgKGEKLQkJc2luZ2xlIENUUkwtViBjaGFyYWN0ZXIpIGZvciBjaGFyYWN0ZXItd2lzZSwgbGluZS13aXNlLCBvcgotCQlibG9jay13aXNlIFZpc3VhbCBtb2RlIHJlc3BlY3RpdmVseS4KKwkJdXNlZCBpbiB0aGUgY3VycmVudCBidWZmZXIuICBJbml0aWFsbHkgaXQgcmV0dXJucyBhbiBlbXB0eQorCQlzdHJpbmcsIGJ1dCBvbmNlIFZpc3VhbCBtb2RlIGhhcyBiZWVuIHVzZWQsIGl0IHJldHVybnMgInYiLAorCQkiViIsIG9yICI8Q1RSTC1WPiIgKGEgc2luZ2xlIENUUkwtViBjaGFyYWN0ZXIpIGZvcgorCQljaGFyYWN0ZXItd2lzZSwgbGluZS13aXNlLCBvciBibG9jay13aXNlIFZpc3VhbCBtb2RlCisJCXJlc3BlY3RpdmVseS4KIAkJRXhhbXBsZTogPgogCQkJOmV4ZSAibm9ybWFsICIgLiB2aXN1YWxtb2RlKCkKIDwJCVRoaXMgZW50ZXJzIHRoZSBzYW1lIFZpc3VhbCBtb2RlIGFzIGJlZm9yZS4gIEl0IGlzIGFsc28gdXNlZnVsCkBAIC01MzAxLDcgKzUzMDIsNyBAQAogPAogU2VlIHw6dmVyYm9zZS1jbWR8IGZvciBtb3JlIGluZm9ybWF0aW9uLgogCi0gCQkJCQkJCSpFMTI0KiAqRTEyNSoKKwkJCQkJCQkqRTEyNCogKkUxMjUqCiA6ZnVbbmN0aW9uXVshXSB7bmFtZX0oW2FyZ3VtZW50c10pIFtyYW5nZV0gW2Fib3J0XSBbZGljdF0KIAkJCURlZmluZSBhIG5ldyBmdW5jdGlvbiBieSB0aGUgbmFtZSB7bmFtZX0uICBUaGUgbmFtZQogCQkJbXVzdCBiZSBtYWRlIG9mIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZCAnXycsIGFuZApAQCAtNTc1NCw3ICs1NzU1LDcgQEAKIAkJCXZhcmlhYmxlIGlzIGluZGljYXRlZCBiZWZvcmUgdGhlIHZhbHVlOgogCQkJICAgIDxub3RoaW5nPglTdHJpbmcKIAkJCQkjCU51bWJlcgotCQkJICAgIAkqCUZ1bmNyZWYKKwkJCQkqCUZ1bmNyZWYKIAogCiA6dW5sW2V0XVshXSB7bmFtZX0gLi4uCQkJCQkqOnVubGV0KiAqOnVubCogKkUxMDgqCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9mYXJzaS50eHQgYi9ydW50aW1lL2RvYy9mYXJzaS50eHQKaW5kZXggNDA0MjU5Yy4uYTVjNDRlMiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZmFyc2kudHh0CisrKyBiL3J1bnRpbWUvZG9jL2ZhcnNpLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpmYXJzaS50eHQqICAgICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA1IE1hciAyOQorKmZhcnNpLnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDUgTWFyIDI5CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IE1vcnRhemEgR2hhc3NhYiBTaGlyYW4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2ZpbGV0eXBlLnR4dCBiL3J1bnRpbWUvZG9jL2ZpbGV0eXBlLnR4dAppbmRleCAzNDgzMjgxLi5mZTI4NmJhIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9maWxldHlwZS50eHQKKysrIGIvcnVudGltZS9kb2MvZmlsZXR5cGUudHh0CkBAIC0xLDQgKzEsNCBAQAotKmZpbGV0eXBlLnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI4CisqZmlsZXR5cGUudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjgKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2ZvbGQudHh0IGIvcnVudGltZS9kb2MvZm9sZC50eHQKaW5kZXggMDY4NGQxNS4uNTEyM2QxZCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZm9sZC50eHQKKysrIGIvcnVudGltZS9kb2MvZm9sZC50eHQKQEAgLTEsNCArMSw0IEBACi0qZm9sZC50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMjkKKypmb2xkLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAyOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvZ2V0c2NyaXB0LnR4dCBiL3J1bnRpbWUvZG9jL2dldHNjcmlwdC50eHQKaW5kZXggNDY0YmE5NS4uYzY0ZTkzZSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZ2V0c2NyaXB0LnR4dAorKysgYi9ydW50aW1lL2RvYy9nZXRzY3JpcHQudHh0CkBAIC0xLDQgKzEsNCBAQAotKmdldHNjcmlwdC50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgTWFyIDI0CisqZ2V0c2NyaXB0LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMzAKIAogCQlHZXQgdGhlIExhdGVzdCBWaW1TY3JpcHRzCiAKQEAgLTYsMTAgKzYsMTAgQEAKIAkgIChyZW1vdmUgTk9TUEFNIGZyb20gdGhlIGVtYWlsIGFkZHJlc3MpCiAJCQkJCQkqR2V0TGF0ZXN0VmltU2NyaXB0cy1jb3B5cmlnaHQqCiBDb3B5cmlnaHQ6IChjKSAyMDA0LTIwMDUgYnkgQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuCi0gICAgICAgICAgIFRoZSBWSU0gTElDRU5TRSBhcHBsaWVzIHRvIEdldExhdGVzdFZpbVNjcmlwdHMudmltIGFuZAotICAgICAgICAgICBHZXRMYXRlc3RWaW1TY3JpcHRzLnR4dCAoc2VlIHxjb3B5cmlnaHR8KSBleGNlcHQgdXNlCi0gICAgICAgICAgICJHZXRMYXRlc3RWaW1TY3JpcHRzIiBpbnN0ZWFkIG9mICJWaW0iLgotICAgICAgICAgICBObyB3YXJyYW50eSwgZXhwcmVzcyBvciBpbXBsaWVkLiAgVXNlIEF0LVlvdXItT3duLVJpc2suCisJICAgVGhlIFZJTSBMSUNFTlNFIGFwcGxpZXMgdG8gR2V0TGF0ZXN0VmltU2NyaXB0cy52aW0gYW5kCisJICAgR2V0TGF0ZXN0VmltU2NyaXB0cy50eHQgKHNlZSB8Y29weXJpZ2h0fCkgZXhjZXB0IHVzZQorCSAgICJHZXRMYXRlc3RWaW1TY3JpcHRzIiBpbnN0ZWFkIG9mICJWaW0iLgorCSAgIE5vIHdhcnJhbnR5LCBleHByZXNzIG9yIGltcGxpZWQuICBVc2UgQXQtWW91ci1Pd24tUmlzay4KIAogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTk5LDEyICs5OSwxMiBAQAogCXBsdWdpbiwgR2V0TGF0ZXN0VmltU2NyaXB0cyB3aWxsIGZpbmQgaXQgYW5kIHVzZSBpdCB0byBidWlsZCB1c2VyJ3MKIAlHZXRMYXRlc3RWaW1TY3JpcHRzLmRhdCBmaWxlczoKID4KLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19pZAotCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdgorCQkJCSAgICAgc3JjX2lkCisJCQkJCSAgICB2CiAJCSIgR2V0TGF0ZXN0VmltU2NyaXB0czogIyMjICMjIyB5b3Vyc2NyaXB0bmFtZQotCQkgICAgICAgICAgICAgICAgICAgICAgICBeCi0JCSAgICAgICAgICAgICAgICAgICAgc2NyaXB0aWQKLTwgICAKKwkJCQkJXgorCQkJCSAgICBzY3JpcHRpZAorPAogCUFzIGFuIGF1dGhvciwgeW91IHNob3VsZCBpbmNsdWRlIHN1Y2ggYSBsaW5lIGluIHRvIHJlZmVyIHRvIHlvdXIgb3duCiAJc2NyaXB0IHBsdXMgYW55IGFkZGl0aW9uYWwgbGluZXMgZGVzY3JpYmluZyBhbnkgcGx1Z2luIGRlcGVuZGVuY2llcyBpdAogCW1heSBoYXZlLiAgU2FtZSBmb3JtYXQsIG9mIGNvdXJzZSEKQEAgLTE0NiwxMiArMTQ2LDEyIEBACiAJdG8gZG8gdG8gaW5zdGFsbCB0aGVtIChwbGVhc2UgcmVmZXIgdG8gdGhlIHNjcmlwdCdzICJpbnN0YWxsIgogCWRpcmVjdGlvbnMpLiAgT24gdGhlIG90aGVyIGhhbmQsIG1vc3Qgc2NyaXB0cyB3aWxsIGJlCiAJYXV0by1pbnN0YWxsYWJsZS4KLQkKKwogCVRvIGxldCBHZXRMYXRlc3RWaW1TY3JpcHRzIGRvIGFuIGF1dG9pbnN0YWxsLCB0aGUgZGF0YSBmaWxlJ3MgY29tbWVudAogCWZpZWxkIHNob3VsZCBiZWdpbiB3aXRoIChzdXJyb3VuZGluZyBibGFua3MgYXJlIGlnbm9yZWQpOgotCQorCiAJCTpBdXRvSW5zdGFsbDoKLQkKKwogCUJvdGggY29sb25zIGFyZSBuZWVkZWQsIGFuZCBpdCBzaG91bGQgYmVnaW4gdGhlIGNvbW1lbnQKIAkoeW91cnNjcmlwdG5hbWUpIGZpZWxkLgogCkBAIC0xNjAsMTYgKzE2MCwxNiBAQAogPgogCQlsZXQgZzpHZXRMYXRlc3RWaW1TY3JpcHRzX2FsbG93YXV0b2luc3RhbGw9IDAKIDwKLQkKKwogCVdpdGggOkF1dG9JbnN0YWxsOiBlbmFibGVkLCBhcyBpdCBpcyBieSBkZWZhdWx0LCBmaWxlcyB3aGljaCBlbmQgd2l0aAotCQorCiAJICAtLS0udGFyLmJ6MiAgOiBkZWNvbXByZXNzZWQgYW5kIHVudGFycmVkIGluIFsudmltfHZpbWZpbGVzXSBkaXJlY3RvcnkKIAkgIC0tLS50YXIuZ3ogICA6IGRlY29tcHJlc3NlZCBhbmQgdW50YXJyZWQgaW4gWy52aW18dmltZmlsZXNdIGRpcmVjdG9yeQogCSAgLS0tLnZpbS5iejIgIDogZGVjb21wcmVzc2VkIGFuZCBtb3ZlZCB0byB0aGUgLnZpbS9wbHVnaW4gZGlyZWN0b3J5CiAJICAtLS0udmltLmd6ICAgOiBkZWNvbXByZXNzZWQgYW5kIG1vdmVkIHRvIHRoZSAudmltL3BsdWdpbiBkaXJlY3RvcnkKIAkgIC0tLS56aXAgICAgICA6IHVuemlwcGVkIGluIFsudmltfHZpbWZpbGVzXSBkaXJlY3RvcnkKIAkgIC0tLS52aW0gICAgICA6IG1vdmVkIHRvIFsudmltfHZpbWZpbGVzXS9wbHVnaW4gZGlyZWN0b3J5Ci0JCisKIAlhbmQgd2hpY2ggbWVyZWx5IG5lZWQgdG8gaGF2ZSB0aGVpciBjb21wb25lbnRzIHBsYWNlZCBieSB0aGUKIAl1bnRhci9ndW56aXAgb3IgbW92ZS10by1wbHVnaW4tZGlyZWN0b3J5IHByb2Nlc3Mgc2hvdWxkIGJlCiAJYXV0by1pbnN0YWxsYWJsZS4KQEAgLTE4Niw3ICsxODYsNyBAQAogCUN1cnJlbnRseSwgdmltJ3MgYWZ0ZXIvc3ludGF4IG9ubHkgc3VwcG9ydHMgYnktZmlsZXR5cGUgc2NyaXB0cyAoaW4KIAlibG9ja2hsLnZpbSdzIGNhc2UsIHRoYXQncyBhZnRlci9zeW50YXgvYy52aW0pLiAgSGVuY2UsIGF1dG8taW5zdGFsbAogCXdvdWxkIHBvc3NpYmx5IG92ZXJ3cml0ZSB0aGUgY3VycmVudCB1c2VyJ3MgYWZ0ZXIvc3ludGF4L2MudmltIGZpbGUuCi0JCisKIAlJbiBteSBvd24gY2FzZSwgSSB1c2UgPGFmdGVyc3ludGF4LnZpbT4gKHJlbmFtZWQgdG8KIAlhZnRlci9zeW50YXgvYy52aW0pIHRvIGFsbG93IGEgYWZ0ZXIvc3ludGF4L2MvIGRpcmVjdG9yeToKID4KQEAgLTIyMSw3ICsyMjEsNyBAQAogCQlNb3ZlIHRoZSBmaWxlIGZyb20gR2V0TGF0ZXN0LyB0byB0aGUgZm9sbG93aW5nIGRpcmVjdG9yeQogCQkJVW5peCAgIDogJEhPTUUvLnZpbQogCQkJV2luZG93czogJEhPTUVcdmltZmlsZXMKLQkKKwogCQlpZiB0aGUgZG93bmxvYWRlZCBmaWxlIGVuZHMgd2l0aCAiLmJ6MiIKIAkJCWJ1bnppcDIgaXQKIAkJZWxzZSBpZiB0aGUgZG93bmxvYWRlZCBmaWxlIGVuZHMgd2l0aCAiLmd6IgpAQCAtMjM4LDY2ICsyMzgsNjYgQEAKIDcuIEdldExhdGVzdFZpbVNjcmlwdHMgSGlzdG9yeSAgICAgICAqZ2V0bGF0ZXN0dmltc2NyaXB0cy1oaXN0b3J5KiAqZ2x2cy1oaXN0KgogCiAJdjIwIERlYyAyMywgMjAwNSA6ICogRXJpYyBIYWFyYmF1ZXIgZm91bmQmZml4ZWQgYSBidWcgd2l0aCB1bnppcCB1c2U7Ci0JICAgICAgICAgICAgICAgICAgICAgdW56aXAgbmVlZHMgdGhlIC1vIGZsYWcgdG8gb3ZlcndyaXRlLgorCQkJICAgICB1bnppcCBuZWVkcyB0aGUgLW8gZmxhZyB0byBvdmVyd3JpdGUuCiAJdjE5IE5vdiAyOCwgMjAwNSA6ICogdjE4J3MgR2V0TGF0ZXN0VmltU2NyaXB0IGxpbmUgYWNjZXNzZWQgdGhlIHdyb25nCi0JICAgICAgICAgICAgICAgICAgICAgc2NyaXB0ISBGaXhlZC4KKwkJCSAgICAgc2NyaXB0ISBGaXhlZC4KIAl2MTggTWFyIDIxLCAyMDA1IDogKiBidWdmaXggdG8gYXV0b21hdGljIGRhdGFiYXNlIGNvbnN0cnVjdGlvbgotCSAgICAgICAgICAgICAgICAgICAqIGJ1Z2ZpeCAtIG5vd3JhcHNjYW4gY2F1c2VkIGFuIGVycm9yCi0JICAgICAgICAgICAgICAgICAgICAgKHRueCB0byBEYXZpZCBHcmVlbiBmb3IgdGhlIGZpeCkKKwkJCSAgICogYnVnZml4IC0gbm93cmFwc2NhbiBjYXVzZWQgYW4gZXJyb3IKKwkJCSAgICAgKHRueCB0byBEYXZpZCBHcmVlbiBmb3IgdGhlIGZpeCkKIAkgICAgQXByIDAxLCAyMDA1ICAgKiBpZiBzaGVsbCBpcyBiYXNoLCAibXYiIGluc3RlYWQgb2YgInJlbiIgdXNlZCBpbgotCSAgICAgICAgICAgICAgICAgICAgIDpBdXRvSW5zdGFsbDpzLCBldmVuIHRob3VnaCBpdHMgby9zIGlzIHdpbmRvd3MKKwkJCSAgICAgOkF1dG9JbnN0YWxsOnMsIGV2ZW4gdGhvdWdoIGl0cyBvL3MgaXMgd2luZG93cwogCSAgICBBcHIgMDEsIDIwMDUgICAqIHdoZW4gZG93bmxvYWRpbmcgZXJyb3JzIG9jY3VycmVkLCBHTFZTIHdhcwotCSAgICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0aW5nIGVhcmx5LiAgSXQgbm93IGp1c3QgZ29lcyBvbiB0byB0cnlpbmcKLQkgICAgICAgICAgICAgICAgICAgICB0aGUgbmV4dCBzY3JpcHQgKGFmdGVyIHRyeWluZyB0aHJlZSB0aW1lcyB0bwotCSAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkIGEgc2NyaXB0IGRlc2NyaXB0aW9uIHBhZ2UpCisJCQkgICAgIHRlcm1pbmF0aW5nIGVhcmx5LiAgSXQgbm93IGp1c3QgZ29lcyBvbiB0byB0cnlpbmcKKwkJCSAgICAgdGhlIG5leHQgc2NyaXB0IChhZnRlciB0cnlpbmcgdGhyZWUgdGltZXMgdG8KKwkJCSAgICAgZG93bmxvYWQgYSBzY3JpcHQgZGVzY3JpcHRpb24gcGFnZSkKIAkgICAgQXByIDIwLCAyMDA1ICAgKiBidWdmaXggLSB3aGVuIGEgZmFpbHVyZSB0byBkb3dubG9hZCBvY2N1cnJlZCwKLQkgICAgICAgICAgICAgICAgICAgICBHZXRMYXRlc3RWaW1TY3JpcHRzIHdvdWxkIHN0b3AgZWFybHkgYW5kIGNsYWltIHRoYXQKLQkgICAgICAgICAgICAgICAgICAgICBldmVyeXRoaW5nIHdhcyBjdXJyZW50LiAgRml4ZWQuCisJCQkgICAgIEdldExhdGVzdFZpbVNjcmlwdHMgd291bGQgc3RvcCBlYXJseSBhbmQgY2xhaW0gdGhhdAorCQkJICAgICBldmVyeXRoaW5nIHdhcyBjdXJyZW50LiAgRml4ZWQuCiAJdjE3IEF1ZyAyNSwgMjAwNCA6ICogZzpHZXRMYXRlc3RWaW1TY3JpcHRzX2FsbG93YXV0b2luc3RhbGwsIHdoaWNoCi0JICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdHMgdG8gMSwgY2FuIGJlIHVzZWQgdG8gcHJldmVudCBhbGwKLQkgICAgICAgICAgICAgICAgICAgICA6QXV0b0luc3RhbGw6CisJCQkgICAgIGRlZmF1bHRzIHRvIDEsIGNhbiBiZSB1c2VkIHRvIHByZXZlbnQgYWxsCisJCQkgICAgIDpBdXRvSW5zdGFsbDoKIAl2MTYgQXVnIDI1LCAyMDA0IDogKiBtYWRlIGV4ZWN1dGlvbiBvZiBidW56aXAyL2d1bnppcC90YXIvemlwIHNpbGVudAotCSAgICAgICAgICAgICAgICAgICAqIGZpeGVkIGJ1ZyB3aXRoIDpBdXRvSW5zdGFsbDogdXNlIG9mIGhlbHB0YWdzCisJCQkgICAqIGZpeGVkIGJ1ZyB3aXRoIDpBdXRvSW5zdGFsbDogdXNlIG9mIGhlbHB0YWdzCiAJdjE1IEF1ZyAyNCwgMjAwNCA6ICogYnVnZml4OiB0aGUgIjAgMCBjb21tZW50IiBkb3dubG9hZCBwcmV2ZW50aW9uIHdhc24ndAotCSAgICAgICAgICAgICAgICAgICAgIGFsd2F5cyBwcmV2ZW50aW5nIGRvd25sb2FkcyAoanVzdCB1c3VhbGx5KS4gIEZpeGVkLgorCQkJICAgICBhbHdheXMgcHJldmVudGluZyBkb3dubG9hZHMgKGp1c3QgdXN1YWxseSkuICBGaXhlZC4KIAl2MTQgQXVnIDI0LCAyMDA0IDogKiBidWdmaXggLS0gaGVscHRhZ3Mgd2FzIHVzaW5nIGRvdHZpbSwgcmF0aGVyIHRoYW4KLQkgICAgICAgICAgICAgICAgICAgICBzOmRvdHZpbS4gIEZpeGVkLgorCQkJICAgICBzOmRvdHZpbS4JRml4ZWQuCiAJdjEzIEF1ZyAyMywgMjAwNCA6ICogd2lsbCBza2lwIGRvd25sb2FkaW5nIGEgZmlsZSBpZiBpdHMgc2NyaXB0aWQgb3Igc3JjaWQKLQkgICAgICAgICAgICAgICAgICAgICBpcyB6ZXJvLiAgVXNlZnVsIGZvciBzY3JpcHQgYXV0aG9yczsgdGhhdCB3YXkgdGhlaXIKLQkgICAgICAgICAgICAgICAgICAgICBvd24gR2V0TGF0ZXN0VmltU2NyaXB0cyBhY3Rpdml0eSB3b24ndCBvdmVyd3JpdGUKLQkgICAgICAgICAgICAgICAgICAgICB0aGVpciBzY3JpcHRzLgorCQkJICAgICBpcyB6ZXJvLiAgVXNlZnVsIGZvciBzY3JpcHQgYXV0aG9yczsgdGhhdCB3YXkgdGhlaXIKKwkJCSAgICAgb3duIEdldExhdGVzdFZpbVNjcmlwdHMgYWN0aXZpdHkgd29uJ3Qgb3ZlcndyaXRlCisJCQkgICAgIHRoZWlyIHNjcmlwdHMuCiAJdjEyIEF1ZyAyMywgMjAwNCA6ICogYnVnZml4IC0gYSAicmV0dXJuIiBnb3QgbGVmdCBpbiB0aGUgZGlzdHJpYnV0aW9uIHRoYXQKLQkgICAgICAgICAgICAgICAgICAgICB3YXMgaW50ZW5kZWQgb25seSBmb3IgdGVzdGluZy4gIFJlbW92ZWQsIG5vdyB3b3Jrcy4KLQkgICAgICAgICAgICAgICAgICAgKiA6QXV0b0luc3RhbGw6IGltcGxlbWVudGVkCisJCQkgICAgIHdhcyBpbnRlbmRlZCBvbmx5IGZvciB0ZXN0aW5nLiAgUmVtb3ZlZCwgbm93IHdvcmtzLgorCQkJICAgKiA6QXV0b0luc3RhbGw6IGltcGxlbWVudGVkCiAJdjExIEF1ZyAyMCwgMjAwNCA6ICogR2V0TGF0ZXN0VmltU2NyaXB0cyBpcyBub3cgYSBwbHVnaW46Ci0JICAgICAgICAgICAgICAgICAgICogOkdldExhdGVzdFZpbVNjcmlwdHMgY29tbWFuZAotCSAgICAgICAgICAgICAgICAgICAqIChydW50aW1lcGF0aCkvR2V0TGF0ZXN0L0dldExhdGVzdFZpbVNjcmlwdHMuZGF0Ci0JICAgICAgICAgICAgICAgICAgICAgbm93IGhvbGRzIHNjcmlwdHMgdGhhdCBuZWVkIHVwZGF0aW5nCisJCQkgICAqIDpHZXRMYXRlc3RWaW1TY3JpcHRzIGNvbW1hbmQKKwkJCSAgICogKHJ1bnRpbWVwYXRoKS9HZXRMYXRlc3QvR2V0TGF0ZXN0VmltU2NyaXB0cy5kYXQKKwkJCSAgICAgbm93IGhvbGRzIHNjcmlwdHMgdGhhdCBuZWVkIHVwZGF0aW5nCiAJdjEwIEFwciAxOSwgMjAwNCA6ICogbW92ZWQgaGlzdG9yeSBmcm9tIHNjcmlwdCB0byBkb2MKIAl2OSAgSmFuIDIzLCAyMDA0IDogICB3aW5kb3dzICh3aW4zMi93aW4xNi93aW45NSkgd2lsbCB1c2UKLQkgICAgICAgICAgICAgICAgICAgICBkb3VibGUgcXVvdGVzICgiIikgd2hlcmVhcyBvdGhlciBzeXN0ZW1zIHdpbGwgdXNlCi0JICAgICAgICAgICAgICAgICAgICAgc2luZ2xlIHF1b3RlcyAoJycpIGFyb3VuZCB0aGUgdXJscyBpbiBjYWxscyB2aWEgd2dldAorCQkJICAgICBkb3VibGUgcXVvdGVzICgiIikgd2hlcmVhcyBvdGhlciBzeXN0ZW1zIHdpbGwgdXNlCisJCQkgICAgIHNpbmdsZSBxdW90ZXMgKCcnKSBhcm91bmQgdGhlIHVybHMgaW4gY2FsbHMgdmlhIHdnZXQKIAl2OCAgRGVjIDAxLCAyMDAzIDogICBtYWtlcyB0aHJlZSB0cmllcyBhdCBkb3dubG9hZGluZwogCXY3ICBTZXAgMDIsIDIwMDMgOiAgIGFkZGVkIGVycm9yIG1lc3NhZ2VzIGlmICJDbGljayBvbi4uLiIgb3IgInNyY19pZD0iCi0JICAgICAgICAgICAgICAgICAgICAgbm90IGZvdW5kIGluIGRvd25sb2FkZWQgd2VicGFnZQotCSAgICAgICAgICAgICAgICAgICAgIFVzZXMgdF90aSwgdF90ZSwgYW5kIHJzIHRvIG1ha2UgcHJvZ3Jlc3MgdmlzaWJsZQorCQkJICAgICBub3QgZm91bmQgaW4gZG93bmxvYWRlZCB3ZWJwYWdlCisJCQkgICAgIFVzZXMgdF90aSwgdF90ZSwgYW5kIHJzIHRvIG1ha2UgcHJvZ3Jlc3MgdmlzaWJsZQogCXY2ICBBdWcgMDYsIDIwMDMgOiAgIGZpbmFsIHN0YXR1cyBtZXNzYWdlcyBub3cgZGlzcGxheSBzdW1tYXJ5IG9mIHdvcmsKLQkgICAgICAgICAgICAgICAgICAgICAoICJEb3dubG9hZGVkIHNvbWVxdHkgc2NyaXB0cyIgb3IKLQkgICAgICAgICAgICAgICAgICAgICAgICJFdmVyeXRoaW5nIHdhcyBjdXJyZW50IikKLQkgICAgICAgICAgICAgICAgICAgICBOb3cgR2V0TGF0ZXN0VmltU2NyaXB0cyBpcyBjYXJlZnVsIGFib3V0IGRvd25sb2FkaW5nCi0JICAgICAgICAgICAgICAgICAgICAgR2V0TGF0ZXN0VmltU2NyaXB0cy52aW0gaXRzZWxmIQotCSAgICAgICAgICAgICAgICAgICAgIChnb2VzIHRvIDxORVdfR2V0TGF0ZXN0VmltU2NyaXB0cy52aW0+KQorCQkJICAgICAoICJEb3dubG9hZGVkIHNvbWVxdHkgc2NyaXB0cyIgb3IKKwkJCSAgICAgICAiRXZlcnl0aGluZyB3YXMgY3VycmVudCIpCisJCQkgICAgIE5vdyBHZXRMYXRlc3RWaW1TY3JpcHRzIGlzIGNhcmVmdWwgYWJvdXQgZG93bmxvYWRpbmcKKwkJCSAgICAgR2V0TGF0ZXN0VmltU2NyaXB0cy52aW0gaXRzZWxmIQorCQkJICAgICAoZ29lcyB0byA8TkVXX0dldExhdGVzdFZpbVNjcmlwdHMudmltPikKIAl2NSAgQXVnIDA0LCAyMDAzIDogICBtaXNzaW5nIGFuIGVuZGlmIG5lYXIgYm90dG9tCiAJdjQgIEp1biAxNywgMjAwMyA6ICAgcmVkcmF3ISBqdXN0IGJlZm9yZSBlYWNoICJjb25zaWRlcmluZyIgbWVzc2FnZQogCXYzICBNYXkgMjcsIDIwMDMgOiAgIFByb3RlY3RzIGRvd25sb2FkZWQgZmlsZXMgZnJvbSBlcnJhbnQgc2hlbGwKLQkgICAgICAgICAgICAgICAgICAgICBleHBhbnNpb25zIHdpdGggc2luZ2xlIHF1b3RlczogJy4uLicKKwkJCSAgICAgZXhwYW5zaW9ucyB3aXRoIHNpbmdsZSBxdW90ZXM6ICcuLi4nCiAJdjIgIE1heSAxNCwgMjAwMyA6ICAgZXh0cmFjdHMgbmFtZSBvZiBpdGVtIHRvIGJlIG9idGFpbmVkIGZyb20gdGhlCi0JICAgICAgICAgICAgICAgICAgICAgc2NyaXB0IGZpbGUuICBVc2VzIGl0IGluc3RlYWQgb2YgY29tbWVudCBmaWVsZAotCSAgICAgICAgICAgICAgICAgICAgIGZvciBvdXRwdXQgZmlsZW5hbWU7IGNvbW1lbnQgaXMgdXNlZCBpbiB0aGUKLQkgICAgICAgICAgICAgICAgICAgICAiY29uc2lkZXJpbmcuLi4iIGxpbmUgYW5kIGlzIG5vdyBqdXN0IGEgY29tbWVudCEKLQkgICAgICAgICAgICAgICAgICAgKiBGaXhlZCBhIGJ1ZzogYSBzdHJpbmctb2YtbnVtYmVycyBpcyBub3QgdGhlCi0JICAgICAgICAgICAgICAgICAgICAgc2FtZSBhcyBhIG51bWJlciwgc28gSSBhZGRlZCB6ZXJvIHRvIHRoZW0KLQkgICAgICAgICAgICAgICAgICAgICBhbmQgdGhleSBiZWNhbWUgbnVtYmVycy4gIEZpeGVzIGNvbXBhcmlzb24uCisJCQkgICAgIHNjcmlwdCBmaWxlLiAgVXNlcyBpdCBpbnN0ZWFkIG9mIGNvbW1lbnQgZmllbGQKKwkJCSAgICAgZm9yIG91dHB1dCBmaWxlbmFtZTsgY29tbWVudCBpcyB1c2VkIGluIHRoZQorCQkJICAgICAiY29uc2lkZXJpbmcuLi4iIGxpbmUgYW5kIGlzIG5vdyBqdXN0IGEgY29tbWVudCEKKwkJCSAgICogRml4ZWQgYSBidWc6IGEgc3RyaW5nLW9mLW51bWJlcnMgaXMgbm90IHRoZQorCQkJICAgICBzYW1lIGFzIGEgbnVtYmVyLCBzbyBJIGFkZGVkIHplcm8gdG8gdGhlbQorCQkJICAgICBhbmQgdGhleSBiZWNhbWUgbnVtYmVycy4gIEZpeGVzIGNvbXBhcmlzb24uCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogdmltOnR3PTc4OnRzPTg6ZnQ9aGVscApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvZ3VpLnR4dCBiL3J1bnRpbWUvZG9jL2d1aS50eHQKaW5kZXggMWU3YjdjZS4uZmUwOWQ4MCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZ3VpLnR4dAorKysgYi9ydW50aW1lL2RvYy9ndWkudHh0CkBAIC0xLDQgKzEsNCBAQAotKmd1aS50eHQqICAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDAyCisqZ3VpLnR4dCogICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMDIKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2d1aV93MTYudHh0IGIvcnVudGltZS9kb2MvZ3VpX3cxNi50eHQKaW5kZXggMmViOTkzMy4uZmI3ODUzNCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZ3VpX3cxNi50eHQKKysrIGIvcnVudGltZS9kb2MvZ3VpX3cxNi50eHQKQEAgLTEsNCArMSw0IEBACi0qZ3VpX3cxNi50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNSBNYXIgMjkKKypndWlfdzE2LnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA1IE1hciAyOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvZ3VpX3czMi50eHQgYi9ydW50aW1lL2RvYy9ndWlfdzMyLnR4dAppbmRleCAwMDg3NWNhLi4xNmFmOGZiIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9ndWlfdzMyLnR4dAorKysgYi9ydW50aW1lL2RvYy9ndWlfdzMyLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpndWlfdzMyLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA1IE1hciAyOQorKmd1aV93MzIudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDUgTWFyIDI5CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9ndWlfeDExLnR4dCBiL3J1bnRpbWUvZG9jL2d1aV94MTEudHh0CmluZGV4IDNjMDVhNjguLmI0YzNiZDIgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2d1aV94MTEudHh0CisrKyBiL3J1bnRpbWUvZG9jL2d1aV94MTEudHh0CkBAIC0xLDQgKzEsNCBAQAotKmd1aV94MTEudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDUgRGVjIDA2CisqZ3VpX3gxMS50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMzAKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTEyLDcgKzEyLDcgQEAKIDQuIFZhcmlvdXMJCQl8Z3VpLXgxMS12YXJpb3VzfAogNS4gR1RLIHZlcnNpb24JCQl8Z3VpLWd0a3wKIDYuIEdOT01FIHZlcnNpb24JCXxndWktZ25vbWV8Ci03LiBLREUgdmVyc2lvbiAgICAgICAgICAgICAgICAgIHxndWkta2RlfAorNy4gS0RFIHZlcnNpb24JCQl8Z3VpLWtkZXwKIDguIENvbXBpbGluZwkJCXxndWkteDExLWNvbXBpbGluZ3wKIDkuIFgxMSBzZWxlY3Rpb24gbWVjaGFuaXNtCXx4MTEtc2VsZWN0aW9ufAogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9oYW5ndWxpbi50eHQgYi9ydW50aW1lL2RvYy9oYW5ndWxpbi50eHQKaW5kZXggN2RjMDVlZi4uOTA0ZjY1MCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvaGFuZ3VsaW4udHh0CisrKyBiL3J1bnRpbWUvZG9jL2hhbmd1bGluLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpoYW5ndWxpbi50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAwMgorKmhhbmd1bGluLnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDAyCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IENoaS1EZW9rIEh3YW5nIGFuZCBTdW5nLUh5dW4gTmFtCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9oZWJyZXcudHh0IGIvcnVudGltZS9kb2MvaGVicmV3LnR4dAppbmRleCA0MmVkMDg4Li5mNDk1YWUyIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9oZWJyZXcudHh0CisrKyBiL3J1bnRpbWUvZG9jL2hlYnJldy50eHQKQEAgLTEsNCArMSw0IEBACi0qaGVicmV3LnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwMyBNYXkgMTEKKypoZWJyZXcudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDAzIE1heSAxMQogCiAKIAkgICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBSb24gQWFyb24gKGFuZCBBdm5lciBMb3R0ZW0pCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9oZWxwLnR4dCBiL3J1bnRpbWUvZG9jL2hlbHAudHh0CmluZGV4IDQyMjY3MDQuLmNkYWEzOTcgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2hlbHAudHh0CisrKyBiL3J1bnRpbWUvZG9jL2hlbHAudHh0CkBAIC0xLDQgKzEsNCBAQAotKmhlbHAudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAwMgorKmhlbHAudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAzMAogCiAJCQlWSU0gLSBtYWluIGhlbHAgZmlsZQogCQkJCQkJCQkJIGsKQEAgLTE4LDEyICsxOCwxMiBAQAogCQkJCQkJCSpoZWxwLWNvbnRleHQqCiAJCQkgIFdIQVQJCQlQUkVQRU5EICAgIEVYQU1QTEUJfgogCQkgICAgICBOb3JtYWwgbW9kZSBjb21tYW5kICAgICAgKG5vdGhpbmcpICAgOmhlbHAgeAotCQkgICAgICBWaXN1YWwgbW9kZSBjb21tYW5kIAkgIHZfCSAgIDpoZWxwIHZfdQotCQkgICAgICBJbnNlcnQgbW9kZSBjb21tYW5kIAkgIGlfCSAgIDpoZWxwIGlfPEVzYz4KLQkJICAgICAgQ29tbWFuZC1saW5lIGNvbW1hbmQgCSAgOgkgICA6aGVscCA6cXVpdAorCQkgICAgICBWaXN1YWwgbW9kZSBjb21tYW5kCSAgdl8JICAgOmhlbHAgdl91CisJCSAgICAgIEluc2VydCBtb2RlIGNvbW1hbmQJICBpXwkgICA6aGVscCBpXzxFc2M+CisJCSAgICAgIENvbW1hbmQtbGluZSBjb21tYW5kCSAgOgkgICA6aGVscCA6cXVpdAogCQkgICAgICBDb21tYW5kLWxpbmUgZWRpdGluZwkgIGNfCSAgIDpoZWxwIGNfPERlbD4KLQkJICAgICAgVmltIGNvbW1hbmQgYXJndW1lbnQgCSAgLQkgICA6aGVscCAtcgotCQkgICAgICBPcHRpb24gCQkJICAnCSAgIDpoZWxwICd0ZXh0d2lkdGgnCisJCSAgICAgIFZpbSBjb21tYW5kIGFyZ3VtZW50CSAgLQkgICA6aGVscCAtcgorCQkgICAgICBPcHRpb24JCQkgICcJICAgOmhlbHAgJ3RleHR3aWR0aCcKICAgU2VhcmNoIGZvciBoZWxwOiAgVHlwZSAiOmhlbHAgd29yZCIsIHRoZW4gaGl0IENUUkwtRCB0byBzZWUgbWF0Y2hpbmcKIAkJICAgIGhlbHAgZW50cmllcyBmb3IgIndvcmQiLgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9ob3d0by50eHQgYi9ydW50aW1lL2RvYy9ob3d0by50eHQKaW5kZXggOTcyNzNlZC4uNTE4MzIxOCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvaG93dG8udHh0CisrKyBiL3J1bnRpbWUvZG9jL2hvd3RvLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpob3d0by50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDAyCisqaG93dG8udHh0KglGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAwMgogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9pZl9jc2NvcC50eHQgYi9ydW50aW1lL2RvYy9pZl9jc2NvcC50eHQKaW5kZXggZDQ1OWJhOS4uMDI0NzFmYSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvaWZfY3Njb3AudHh0CisrKyBiL3J1bnRpbWUvZG9jL2lmX2NzY29wLnR4dApAQCAtMSw0ICsxLDQgQEAKLSppZl9jc2NvcC50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA1IE1hciAyOQorKmlmX2NzY29wLnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDUgTWFyIDI5CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEFuZHkgS2FobgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvaWZfbXpzY2gudHh0IGIvcnVudGltZS9kb2MvaWZfbXpzY2gudHh0CmluZGV4IGY4ZmM2NDYuLjdjMzgxMWIgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2lmX216c2NoLnR4dAorKysgYi9ydW50aW1lL2RvYy9pZl9tenNjaC50eHQKQEAgLTEsNCArMSw0IEBACi0qaWZfbXpzY2gudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMDYKKyppZl9tenNjaC50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAzMAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBTZXJnZXkgS2hvcmV2CkBAIC00MSw3ICs0MSw3IEBACiAJCQkJCQkJKjptemZpbGUqICo6bXpmKgogOltyYW5nZV1temZbaWxlXSB7ZmlsZX0JRXhlY3V0ZSB0aGUgTXpTY2hlbWUgc2NyaXB0IGluIHtmaWxlfS4gIHtub3QgaW4gVml9CiAJCQlBbGwgc3RhdGVtZW50cyBhcmUgZXhlY3V0ZWQgaW4gdGhlIG5hbWVzcGFjZSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciB0aGF0IHdhcyBjdXJyZW50IGR1cmluZyA6bXpmaWxlIHN0YXJ0LgorCQkJYnVmZmVyIHRoYXQgd2FzIGN1cnJlbnQgZHVyaW5nIDptemZpbGUgc3RhcnQuCiAJCQlJZiB5b3Ugd2FudCB0byBhY2Nlc3Mgb3RoZXIgbmFtZXNwYWNlcywgdXNlCiAJCQkncGFyYW1ldGVyaXplJy4KIApAQCAtMTk2LDggKzE5Niw4IEBACiAgICAgKHNldC1idWZmLWxpbmUge2xpbmVucn0ge3N0cmluZ30gW2J1ZmZlcl0pCiAJCQkJICAgIFNldCBhIGxpbmUgaW4gYSBidWZmZXIuIElmIHtzdHJpbmd9IGlzICNmLAogCQkJCSAgICB0aGUgbGluZSBnZXRzIGRlbGV0ZWQuICBUaGUgW2J1ZmZlcl0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50IGlzIG9wdGlvbmFsLiBJZiBvbWl0dGVkLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgYnVmZmVyIHdpbGwgYmUgdXNlZC4KKwkJCQkgICAgYXJndW1lbnQgaXMgb3B0aW9uYWwuIElmIG9taXR0ZWQsIHRoZQorCQkJCSAgICBjdXJyZW50IGJ1ZmZlciB3aWxsIGJlIHVzZWQuCiAgICAgKGdldC1idWZmLWxpbmUtbGlzdCB7c3RhcnR9IHtlbmR9IFtidWZmZXJdKQogCQkJCSAgICBHZXQgYSBsaXN0IG9mIGxpbmVzIGluIGEgYnVmZmVyLiB7U3RhcnR9CiAJCQkJICAgIGFuZCB7ZW5kfSBhcmUgMS1iYXNlZC4ge1N0YXJ0fSBpcwpAQCAtMjYyLDcgKzI2Miw3IEBACiAKIFRoZSBuYW1lcyBvZiB0aGUgRExMcyBtdXN0IG1hdGNoIHRoZSBNelNjaGVtZSB2ZXJzaW9uIFZpbSB3YXMgY29tcGlsZWQgd2l0aC4KIEZvciBNelNjaGVtZSB2ZXJzaW9uIDIwOSB0aGV5IHdpbGwgYmUgImxpYm16c2NoMjA5XzAwMC5kbGwiIGFuZAotImxpYm16Z2MyMDlfMDAwLmRsbCIuIFRvIGtub3cgZm9yIHN1cmUgZWRpdCAiZ3ZpbS5leGUiIGFuZCBzZWFyY2ggZm9yIAorImxpYm16Z2MyMDlfMDAwLmRsbCIuIFRvIGtub3cgZm9yIHN1cmUgZWRpdCAiZ3ZpbS5leGUiIGFuZCBzZWFyY2ggZm9yCiAibGlibXpzY2hcZFxkXGRfXGRcZFxkXC5kbGxcYyIuCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2lmX29sZS50eHQgYi9ydW50aW1lL2RvYy9pZl9vbGUudHh0CmluZGV4IDU2ZDA1YmMuLjk0ZGE3NWUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2lmX29sZS50eHQKKysrIGIvcnVudGltZS9kb2MvaWZfb2xlLnR4dApAQCAtMSw0ICsxLDQgQEAKLSppZl9vbGUudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAwNgorKmlmX29sZS50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IFBhdWwgTW9vcmUKQEAgLTE2OSw3ICsxNjksNyBAQAogQWRkCiAgICAgIFRpdGxlICAgICAtIFZpbQogICAgICBDb21tYW5kICAgLSBjOlx2aW1cdmltNjNcZ3ZpbS5leGUKLSAgICAgQXJndW1lbnRzIC0gLS1zZXJ2ZXJuYW1lIFZTX05FVCAtLXJlbW90ZS1zaWxlbnQgIitjYWxsIGN1cnNvcigkKEN1ckxpbmUpLCAkKEN1ckNvbCkpIiAkKEl0ZW1QYXRoKSAgCisgICAgIEFyZ3VtZW50cyAtIC0tc2VydmVybmFtZSBWU19ORVQgLS1yZW1vdGUtc2lsZW50ICIrY2FsbCBjdXJzb3IoJChDdXJMaW5lKSwgJChDdXJDb2wpKSIgJChJdGVtUGF0aCkKICAgICAgSW5pdCBEaXIgIC0gRW1wdHkKIAogTm93LCB3aGVuIHlvdSBvcGVuIGEgZmlsZSBpbiAuTmV0LCB5b3UgY2FuIGNob29zZSBmcm9tIHRoZSAuTmV0IG1lbnU6CkBAIC0xODIsMTQgKzE4MiwxNCBAQAogSWYgeW91IHJlZmluZSB0aGlzIGZ1cnRoZXIsIHBsZWFzZSBwb3N0IGJhY2sgdG8gdGhlIFZpbSBtYWlsbGlzdCBzbyB3ZSBoYXZlIGEKIHJlY29yZCBvZiBpdC4KIAotLS1zZXJ2ZXJuYW1lIFZTX05FVCAKKy0tc2VydmVybmFtZSBWU19ORVQKIFRoaXMgd2lsbCBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdmltIGNhbGxlZCBWU19ORVQuICBTbyBpZiB5b3Ugb3BlbiBtdWx0aXBsZQogZmlsZXMgZnJvbSBWUywgdGhleSB3aWxsIHVzZSB0aGUgc2FtZSBpbnN0YW5jZSBvZiBWaW0uICBUaGlzIGFsbG93cyB5b3UgdG8KIGhhdmUgbXVsdGlwbGUgY29waWVzIG9mIFZpbSBydW5uaW5nLCBidXQgeW91IGNhbiBjb250cm9sIHdoaWNoIG9uZSBoYXMgVlMKIGZpbGVzIGluIGl0LgogCi0tLXJlbW90ZS1zaWxlbnQgIitjYWxsIGN1cnNvcigxMCwgMjcpIiAKLSAgICAgICAgICAgICAgLSBQbGFjZXMgdGhlIGN1cnNvciBvbiBsaW5lIDEwIGNvbHVtbiAyNworLS1yZW1vdGUtc2lsZW50ICIrY2FsbCBjdXJzb3IoMTAsIDI3KSIKKwkgICAgICAtIFBsYWNlcyB0aGUgY3Vyc29yIG9uIGxpbmUgMTAgY29sdW1uIDI3CiBJbiBWaW0gPgogICAgOmggLS1yZW1vdGUtc2lsZW50IGZvciBtb3IgZGV0YWlscwogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9pZl9wZXJsLnR4dCBiL3J1bnRpbWUvZG9jL2lmX3BlcmwudHh0CmluZGV4IDZhM2I2YWYuLjgwM2Y4NzMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2lmX3BlcmwudHh0CisrKyBiL3J1bnRpbWUvZG9jL2lmX3BlcmwudHh0CkBAIC0xLDQgKzEsNCBAQAotKmlmX3BlcmwudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgTWFyIDA2CisqaWZfcGVybC50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMDYKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgU3ZlbiBWZXJkb29sYWVnZQpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvaWZfcHl0aC50eHQgYi9ydW50aW1lL2RvYy9pZl9weXRoLnR4dAppbmRleCAwODFlZmM1Li5jOTZiYTlhIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9pZl9weXRoLnR4dAorKysgYi9ydW50aW1lL2RvYy9pZl9weXRoLnR4dApAQCAtMSw0ICsxLDQgQEAKLSppZl9weXRoLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEphbiAyMAorKmlmX3B5dGgudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IFBhdWwgTW9vcmUKQEAgLTEzNCw3ICsxMzQsNyBAQAogCWV2YWx1YXRvciAoc2VlIHxleHByZXNzaW9ufCkuICBSZXR1cm5zIHRoZSBleHByZXNzaW9uIHJlc3VsdCBhczoKIAktIGEgc3RyaW5nIGlmIHRoZSBWaW0gZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gYSBzdHJpbmcgb3IgbnVtYmVyCiAJLSBhIGxpc3QgaWYgdGhlIFZpbSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBhIFZpbSBsaXN0Ci0gIAktIGEgZGljdGlvbmFyeSBpZiB0aGUgVmltIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGEgVmltIGRpY3Rpb25hcnkKKwktIGEgZGljdGlvbmFyeSBpZiB0aGUgVmltIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGEgVmltIGRpY3Rpb25hcnkKIAlEaWN0aW9uYXJpZXMgYW5kIGxpc3RzIGFyZSByZWN1cnNpdmVseSBleHBhbmRlZC4KIAlFeGFtcGxlczogPgogCSAgICA6cHkgdGV4dF93aWR0aCA9IHZpbS5ldmFsKCImdHciKQpAQCAtMTQyLDcgKzE0Miw3IEBACiAJCQkJCQkjIHN0cmluZy5hdG9pKCkgdG8gY29udmVydCB0bwogCQkJCQkJIyBhIG51bWJlci4KIAotCSAgICA6cHkgdGFnTGlzdCA9IHZpbS5ldmFsKCd0YWdsaXN0KCJldmFsX2V4cHIiKScpIAorCSAgICA6cHkgdGFnTGlzdCA9IHZpbS5ldmFsKCd0YWdsaXN0KCJldmFsX2V4cHIiKScpCiA8CVRoZSBsYXR0ZXIgd2lsbCByZXR1cm4gYSBweXRob24gbGlzdCBvZiBweXRob24gZGljdHMsIGZvciBpbnN0YW5jZToKIAlbeydjbWQnOiAnL15ldmFsX2V4cHIoYXJnLCBuZXh0Y21kKSQvJywgJ3N0YXRpYyc6IDAsICduYW1lJzoKIAknZXZhbF9leHByJywgJ2tpbmQnOiAnZicsICdmaWxlbmFtZSc6ICcuL3NyYy9ldmFsLmMnfV0KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2lmX3J1YnkudHh0IGIvcnVudGltZS9kb2MvaWZfcnVieS50eHQKaW5kZXggZWI4YWRlMC4uOGY5NTdlMCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvaWZfcnVieS50eHQKKysrIGIvcnVudGltZS9kb2MvaWZfcnVieS50eHQKQEAgLTEsNCArMSw0IEBACi0qaWZfcnVieS50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMjYKKyppZl9ydWJ5LnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAzMAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBTaHVnbyBNYWVkYQpAQCAtMTQ3LDcgKzE0Nyw3IEBACiBkZWxldGUoe259KQlEZWxldGVzIGEgbGluZSBmcm9tIHRoZSBidWZmZXIuIHtufSBpcyB0aGUgbGluZSBudW1iZXIuCiBhcHBlbmQoe259LCB7c3RyfSkKIAkJQXBwZW5kcyBhIGxpbmUgYWZ0ZXIgdGhlIGxpbmUge259LgotbGluZSAgICAgICAgICAgIFJldHVybnMgdGhlIGN1cnJlbnQgbGluZSBvZiB0aGUgYnVmZmVyIGlmIHRoZSBidWZmZXIgaXMKK2xpbmUJCVJldHVybnMgdGhlIGN1cnJlbnQgbGluZSBvZiB0aGUgYnVmZmVyIGlmIHRoZSBidWZmZXIgaXMKIAkJYWN0aXZlLgogbGluZSA9IHtzdHJ9ICAgIFNldHMgdGhlIGN1cnJlbnQgbGluZSBvZiB0aGUgYnVmZmVyIGlmIHRoZSBidWZmZXIgaXMgYWN0aXZlLgogbGluZV9udW1iZXIgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiB0aGUgY3VycmVudCBsaW5lIGlmIHRoZSBidWZmZXIgaXMKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2lmX3NuaWZmLnR4dCBiL3J1bnRpbWUvZG9jL2lmX3NuaWZmLnR4dAppbmRleCAxNjY0YmIxLi5iZmZmMWJhIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9pZl9zbmlmZi50eHQKKysrIGIvcnVudGltZS9kb2MvaWZfc25pZmYudHh0CkBAIC0xLDQgKzEsNCBAQAotKmlmX3NuaWZmLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNSBNYXIgMjkKKyppZl9zbmlmZi50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDUgTWFyIDI5CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9pZl90Y2wudHh0IGIvcnVudGltZS9kb2MvaWZfdGNsLnR4dAppbmRleCBlM2RjNDZkLi40MzJhNmJmIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9pZl90Y2wudHh0CisrKyBiL3J1bnRpbWUvZG9jL2lmX3RjbC50eHQKQEAgLTEsNCArMSw0IEBACi0qaWZfdGNsLnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMDYKKyppZl90Y2wudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAwNgogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBJbmdvIFdpbGtlbgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvaW5kZW50LnR4dCBiL3J1bnRpbWUvZG9jL2luZGVudC50eHQKaW5kZXggMzg0NDYyYi4uY2E5OTFjYSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvaW5kZW50LnR4dAorKysgYi9ydW50aW1lL2RvYy9pbmRlbnQudHh0CkBAIC0xLDQgKzEsNCBAQAotKmluZGVudC50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI1CisqaW5kZW50LnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMzAKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTQxMiw4ICs0MTIsOCBAQAogCiAJCWNpbm89CQkJICBjaW5vPU0xID4KIAkJICBpZiAoY29uZDEgJiYJCSAgICBpZiAoY29uZDEgJiYKLQkJICAgICAgICAgY29uZDIJCQkgICBjb25kMgotCQkgICAgICkJCQkgICAgCSAgICkKKwkJCSBjb25kMgkJCSAgIGNvbmQyCisJCSAgICAgKQkJCQkgICApCiA8CiAJCQkJCSpqYXZhLWNpbm9wdGlvbnMqICpqYXZhLWluZGVudGluZyoKIAlqTiAgICBJbmRlbnQgamF2YSBhbm9ueW1vdXMgY2xhc3NlcyBjb3JyZWN0bHkuICBUaGUgdmFsdWUgJ04nIGlzCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9pbmRleC50eHQgYi9ydW50aW1lL2RvYy9pbmRleC50eHQKaW5kZXggMzMyYWQzNy4uNjVmNDljNCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvaW5kZXgudHh0CisrKyBiL3J1bnRpbWUvZG9jL2luZGV4LnR4dApAQCAtMSw0ICsxLDQgQEAKLSppbmRleC50eHQqICAgICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAxMAorKmluZGV4LnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC03NDgsNyArNzQ4LDcgQEAKIHxndXwJCWd1e21vdGlvbn0JMiAgbWFrZSBObW92ZSB0ZXh0IGxvd2VyY2FzZQogfGd2fAkJZ3YJCSAgIHJlc2VsZWN0IHRoZSBwcmV2aW91cyBWaXN1YWwgYXJlYQogfGd3fAkJZ3d7bW90aW9ufQkyICBmb3JtYXQgTm1vdmUgdGV4dCBhbmQga2VlcCBjdXJzb3IKLXxnQHwgICAgICAgICAgICBnQHttb3Rpb259ICAgICAgICAgY2FsbCAnb3BlcmF0b3JmdW5jJworfGdAfAkJZ0B7bW90aW9ufQkgICBjYWxsICdvcGVyYXRvcmZ1bmMnCiB8Z358CQlnfnttb3Rpb259CTIgIHN3YXAgY2FzZSBmb3IgTm1vdmUgdGV4dAogfGc8RG93bj58CWc8RG93bj4JCTEgIHNhbWUgYXMgImdqIgogfGc8RW5kPnwJZzxFbmQ+CQkxICBzYW1lIGFzICJnJCIKQEAgLTEzMzYsNyArMTMzNiw3IEBACiB8OnByb2ZkZWx8CTpwcm9mZFtlbF0Jc3RvcCBwcm9maWxpbmcgYSBmdW5jdGlvbiBvciBzY3JpcHQKIHw6cHJvZmlsZXwJOnByb2ZbaWxlXQlwcm9maWxpbmcgZnVuY3Rpb25zIGFuZCBzY3JpcHRzCiB8OnByb21wdGZpbmR8CTpwcm9bbXRmaW5kXQlvcGVuIEdVSSBkaWFsb2cgZm9yIHNlYXJjaGluZwotfDpwcm9tcHRyZXBsfCAJOnByb210cltlcGxdCW9wZW4gR1VJIGRpYWxvZyBmb3Igc2VhcmNoL3JlcGxhY2UKK3w6cHJvbXB0cmVwbHwJOnByb210cltlcGxdCW9wZW4gR1VJIGRpYWxvZyBmb3Igc2VhcmNoL3JlcGxhY2UKIHw6cGVybGRvfAk6cGVybGRbb10JZXhlY3V0ZSBQZXJsIGNvbW1hbmQgZm9yIGVhY2ggbGluZQogfDpwb3B8CQk6cG9bcF0JCWp1bXAgdG8gb2xkZXIgZW50cnkgaW4gdGFnIHN0YWNrCiB8OnBvcHVwfAk6cG9wW3VwXQlwb3B1cCBhIG1lbnUgYnkgbmFtZQpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvaW5zZXJ0LnR4dCBiL3J1bnRpbWUvZG9jL2luc2VydC50eHQKaW5kZXggYTBlZjYzYy4uZmM1NWU2YiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvaW5zZXJ0LnR4dAorKysgYi9ydW50aW1lL2RvYy9pbnNlcnQudHh0CkBAIC0xLDQgKzEsNCBAQAotKmluc2VydC50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI2CisqaW5zZXJ0LnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMzAKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTEzNTEsNyArMTM1MSw3IEBACiAgICAgY2xhc3MuIFRvIGZpbmQgY2xhc3MgbG9jYXRpb24gYW5kIGNvbnRlbnRzIHRhZ3MgZmlsZSBpcyByZXF1aXJlZC4gQmVjYXVzZQogICAgIFBIUCBpc24ndCBzdHJvbmdseSB0eXBlZCBsYW5ndWFnZSB1c2VyIGNhbiB1c2UgQHZhciB0YWcgdG8gZGVjbGFyZSBjbGFzczogPgogCi0gICAgCS8qIEB2YXIgJG15VmFyIG15Q2xhc3MgKi8KKwkvKiBAdmFyICRteVZhciBteUNsYXNzICovCiAJJG15VmFyLT4KIDwKICAgICBTdGlsbCwgdG8gZmluZCBteUNsYXNzIGNvbnRlbnRzIHRhZ3MgZmlsZSBpcyByZXF1aXJlZC4KQEAgLTEzNzUsNyArMTM3NSw3IEBACiBvcmlnaW5hbCBIVE1MIGZpbGVzIGNvbXBsZXRpb24gb2YgdGFncyAoYW5kIG9ubHkgdGFncykgaXNuJ3QgY29udGV4dCBhd2FyZS4KIAogCi1SVUJZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpmdC1ydWJ5LW9tbmkqCitSVUJZCQkJCQkJCSpmdC1ydWJ5LW9tbmkqCiAKIENvbXBsZXRpb24gb2YgUnVieSBjb2RlIHJlcXVpcmVzIHRoYXQgdmltIGJlIGJ1aWx0IHdpdGggfCtydWJ5fC4KIApAQCAtMTM4NSwxNiArMTM4NSwxNiBAQAogCiBUaGUgY29tcGxldGlvbnMgcHJvdmlkZWQgYnkgQ1RSTC1YIENUUkwtTyBhcmUgc2Vuc2l0aXZlIHRvIHRoZSBjb250ZXh0OgogCi0gICAgICAgICAgQ09OVEVYVCAgICAgICAgICAgICAgICAgICAgICAgICAgQ09NUExFVElPTlMgUFJPVklERUQgfgorCSAgQ09OVEVYVAkJCSAgIENPTVBMRVRJT05TIFBST1ZJREVEIH4KIAogIDEuIE5vdCBpbnNpZGUgYSBjbGFzcyBkZWZpbml0aW9uICAgIENsYXNzZXMsIGNvbnN0YW50cyBhbmQgZ2xvYmFscwogCi0gMi4gSW5zaWRlIGEgY2xhc3MgZGVmaW5pdGlvbiAgICAgICAgTWV0aG9kcyBvciBjb25zdGFudHMgZGVmaW5lZCBpbiB0aGUgY2xhc3MKKyAyLiBJbnNpZGUgYSBjbGFzcyBkZWZpbml0aW9uCSAgICAgTWV0aG9kcyBvciBjb25zdGFudHMgZGVmaW5lZCBpbiB0aGUgY2xhc3MKIAotIDMuIEFmdGVyICcuJywgJzo6JyBvciAnOicgICAgICAgICAgIE1ldGhvZHMgYXBwbGljYWJsZSB0byB0aGUgb2JqZWN0IGJlaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXJlZmVyZW5jZWQKKyAzLiBBZnRlciAnLicsICc6Oicgb3IgJzonCSAgICAgTWV0aG9kcyBhcHBsaWNhYmxlIHRvIHRoZSBvYmplY3QgYmVpbmcKKwkJCQkgICAgICAgZGVyZWZlcmVuY2VkCiAKLSA0LiBBZnRlciAnOicgb3IgJzpmb28nICAgICAgICAgICAgICBTeW1ib2wgbmFtZSAoYmVnaW5uaW5nIHdpdGggJ2ZvbycpCisgNC4gQWZ0ZXIgJzonIG9yICc6Zm9vJwkJICAgICBTeW1ib2wgbmFtZSAoYmVnaW5uaW5nIHdpdGggJ2ZvbycpCiAKIE5vdGVzOgogIC0gVmltIHdpbGwgbG9hZC9ldmFsdWF0ZSBjb2RlIGluIG9yZGVyIHRvIHByb3ZpZGUgY29tcGxldGlvbnMuICBUaGlzIG1heQpAQCAtMTU1Nyw3ICsxNTU3LDcgQEAKIHhzbC52aW0gZm9yIGV4YW1wbGUuCiAKIAotRFREIC0+IFZpbSAgICAgICAgICAgICAgICAgICAgIAkJCQkJKmR0ZDJ2aW0qCitEVEQgLT4gVmltCQkJCQkJCSpkdGQydmltKgogCiBPbiB8d3d3fCBpcyBzY3JpcHQgfGR0ZDJ2aW18IHdoaWNoIHBhcnNlcyBEVEQgYW5kIGNyZWF0ZXMgWE1MIGRhdGEgZmlsZQogZm9yIFZpbSBYTUwgb21uaSBjb21wbGV0aW9uLgpAQCAtMTU2NSw3ICsxNTY1LDcgQEAKICAgICBkdGQydmltOiBodHRwOi8vd3d3LnZpbS5vcmcvc2NyaXB0cy9zY3JpcHQucGhwP3NjcmlwdF9pZD0xNDYyCiAKIENoZWNrIHRoZXJlIGFuZCBiZWdpbm5pbmcgb2YgZmlsZSBmb3IgZGV0YWlscyBvZiB1c2FnZS4KLVNjcmlwdCByZXF1aXJlcyBwZXJsIGFuZDogCitTY3JpcHQgcmVxdWlyZXMgcGVybCBhbmQ6CiAKICAgICBwZXJsU0dNTDogaHR0cDovL3NhdmFubmFoLm5vbmdudS5vcmcvcHJvamVjdHMvcGVybHNnbWwKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvaW50cm8udHh0IGIvcnVudGltZS9kb2MvaW50cm8udHh0CmluZGV4IDZjZjUwMWEuLjQyNTlhYjUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2ludHJvLnR4dAorKysgYi9ydW50aW1lL2RvYy9pbnRyby50eHQKQEAgLTEsNCArMSw0IEBACi0qaW50cm8udHh0KiAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjAKKyppbnRyby50eHQqICAgICBGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyMAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvbWFwLnR4dCBiL3J1bnRpbWUvZG9jL21hcC50eHQKaW5kZXggMmM1MTVjMi4uMjNhZjhiNSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvbWFwLnR4dAorKysgYi9ydW50aW1lL2RvYy9tYXAudHh0CkBAIC0xLDQgKzEsNCBAQAotKm1hcC50eHQqICAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI1CisqbWFwLnR4dCogICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMzAKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTIxOCw4ICsyMTgsMTQgQEAKIHRleHQgYmVmb3JlIHRoZSBjdXJzb3IgYW5kIHN0YXJ0IG9tbmkgY29tcGxldGlvbiB3aGVuIHNvbWUgY29uZGl0aW9uIGlzIG1ldC4KIAogQmUgdmVyeSBjYXJlZnVsIGFib3V0IHNpZGUgZWZmZWN0cyEgIFRoZSBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCB3aGlsZQotb2J0YWluaW5nIGNoYXJhY3RlcnMsIGlmIHlvdSBjaGFuZ2UgYnVmZmVyIHRleHQsIG1vdmUgdGhlIGN1cnNvciwgZWRpdCBhbm90aGVyCi1maWxlLCBldGMuIHlvdSBtYXkgdmVyeSB3ZWxsIG1ha2UgY29tbWFuZCBkeXNmdW5jdGlvbmFsLgorb2J0YWluaW5nIGNoYXJhY3RlcnMsIHlvdSBtYXkgdmVyeSB3ZWxsIG1ha2UgdGhlIGNvbW1hbmQgZHlzZnVuY3Rpb25hbC4KK0ZvciB0aGlzIHJlYXNvbiB0aGUgZm9sbG93aW5nIGlzIGJsb2NrZWQ6CistIGNoYW5naW5nIHRoZSBidWZmZXIgdGV4dCB8dGV4dGxvY2t8CistIGVkaXRpbmcgYW5vdGhlciBidWZmZXIKKy0gdGhlIHw6bm9ybWFsfCBjb21tYW5kCistIG1vdmluZyB0aGUgY3Vyc29yIGlzIGFsbG93ZWQsIGJ1dCBpdCBpcyByZXN0b3JlZCBhZnRlcndhcmRzCitJZiB5b3Ugd2FudCB0aGUgbWFwcGluZyB0byBkbyBhbnkgb2YgdGhlc2UgbGV0IHRoZSByZXR1cm5lZCBjaGFyYWN0ZXJzIGRvCit0aGF0LgogCiBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBpbnNlcnRzIGEgbGlzdCBudW1iZXIgdGhhdCBpbmNyZWFzZXM6ID4KIAlsZXQgY291bnRlciA9IDAKQEAgLTI2OSwyOCArMjc1LDI4IEBACiAKIAkJCSptYXBtb2RlLW52byogKm1hcG1vZGUtbiogKm1hcG1vZGUtdiogKm1hcG1vZGUtbyoKICAgICBjb21tYW5kczoJCQkJICAgICAgbW9kZXM6IH4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbCAgVmlzdWFsK1NlbGVjdCAgT3BlcmF0b3ItcGVuZGluZyB+Ci06bWFwICAgOm5vcmVtYXAgICA6dW5tYXAgICA6bWFwY2xlYXIgICAgIHllcyAgICAgICAgeWVzICAgICAgICAgICAgeWVzCi06bm1hcCAgOm5ub3JlbWFwICA6bnVubWFwICA6bm1hcGNsZWFyICAgIHllcyAgICAgICAgIC0gICAgICAgICAgICAgIC0KLTp2bWFwICA6dm5vcmVtYXAgIDp2dW5tYXAgIDp2bWFwY2xlYXIgICAgIC0gICAgICAgICB5ZXMgICAgICAgICAgICAgLQotOm9tYXAgIDpvbm9yZW1hcCAgOm91bm1hcCAgOm9tYXBjbGVhciAgICAgLSAgICAgICAgICAtICAgICAgICAgICAgIHllcworCQkJCSAgICAgICBOb3JtYWwgIFZpc3VhbCtTZWxlY3QgIE9wZXJhdG9yLXBlbmRpbmcgfgorOm1hcCAgIDpub3JlbWFwICAgOnVubWFwICAgOm1hcGNsZWFyCSB5ZXMJICAgIHllcwkJICAgeWVzCis6bm1hcCAgOm5ub3JlbWFwICA6bnVubWFwICA6bm1hcGNsZWFyCSB5ZXMJICAgICAtCQkgICAgLQorOnZtYXAgIDp2bm9yZW1hcCAgOnZ1bm1hcCAgOnZtYXBjbGVhcgkgIC0JICAgIHllcwkJICAgIC0KKzpvbWFwICA6b25vcmVtYXAgIDpvdW5tYXAgIDpvbWFwY2xlYXIJICAtCSAgICAgLQkJICAgeWVzCiAKIDpudW5tYXAgY2FuIGFsc28gYmUgdXNlZCBvdXRzaWRlIG9mIGEgbW9uYXN0ZXJ5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm1hcG1vZGUteCogKm1hcG1vZGUtcyoKKwkJCQkJCSptYXBtb2RlLXgqICptYXBtb2RlLXMqCiBTb21lIGNvbW1hbmRzIHdvcmsgYm90aCBpbiBWaXN1YWwgYW5kIFNlbGVjdCBtb2RlLCBzb21lIGluIG9ubHkgb25lLiAgTm90ZQogdGhhdCBxdWl0ZSBvZnRlbiAiVmlzdWFsIiBpcyBtZW50aW9uZWQgd2hlcmUgYm90aCBWaXN1YWwgYW5kIFNlbGVjdCBtb2RlCiBhcHBseS4gfFNlbGVjdC1tb2RlLW1hcHBpbmd8CiAKLSAgICBjb21tYW5kczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlczogfgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlzdWFsICAgIFNlbGVjdCB+Ci06dm1hcCAgOnZub3JlbWFwICA6dnVubWFwICA6dm1hcGNsZWFyICAgICAgIHllcyAgICAgIHllcwotOnhtYXAgIDp4bm9yZW1hcCAgOnh1bm1hcCAgOnhtYXBjbGVhciAgICAgICB5ZXMgICAgICAgLQotOnNtYXAgIDpzbm9yZW1hcCAgOnN1bm1hcCAgOnNtYXBjbGVhciAgICAgICAtICAgICAgICB5ZXMKKyAgICBjb21tYW5kczoJCQkJICAgICAgbW9kZXM6IH4KKwkJCQkJICBWaXN1YWwgICAgU2VsZWN0IH4KKzp2bWFwICA6dm5vcmVtYXAgIDp2dW5tYXAgIDp2bWFwY2xlYXIJICAgIHllcyAgICAgIHllcworOnhtYXAgIDp4bm9yZW1hcCAgOnh1bm1hcCAgOnhtYXBjbGVhcgkgICAgeWVzICAgICAgIC0KKzpzbWFwICA6c25vcmVtYXAgIDpzdW5tYXAgIDpzbWFwY2xlYXIJICAgIC0JICAgICB5ZXMKIAogCQkJKm1hcG1vZGUtaWMqICptYXBtb2RlLWkqICptYXBtb2RlLWMqICptYXBtb2RlLWwqCiBTb21lIGNvbW1hbmRzIHdvcmsgYm90aCBpbiBJbnNlcnQgbW9kZSBhbmQgQ29tbWFuZC1saW5lIG1vZGUsIHNvbWUgbm90OgogCi0gICAgY29tbWFuZHM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZXM6IH4KKyAgICBjb21tYW5kczoJCQkJICAgICAgbW9kZXM6IH4KIAkJCQkJICBJbnNlcnQgIENvbW1hbmQtbGluZQlMYW5nLUFyZyB+CiA6bWFwISAgOm5vcmVtYXAhICA6dW5tYXAhICA6bWFwY2xlYXIhCSAgICB5ZXMJICAgICAgIHllcwkgICAtCiA6aW1hcCAgOmlub3JlbWFwICA6aXVubWFwICA6aW1hcGNsZWFyCSAgICB5ZXMJCS0JICAgLQpAQCAtMzY2LDcgKzM3Miw3IEBACiAKIAk6dmVyYm9zZSBtYXAgPEMtVz4qCiAJbiAgPEMtVz4qICAgICAgKiA8Qy1XPjxDLVM+KgotCSAgICAgICAgTGFzdCBzZXQgZnJvbSAvaG9tZS9hYmNkLy52aW1yYworCQlMYXN0IHNldCBmcm9tIC9ob21lL2FiY2QvLnZpbXJjCiAKIFNlZSB8OnZlcmJvc2UtY21kfCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIApAQCAtODcyLDcgKzg3OCw3IEBACiB3YXMgbGFzdCBkZWZpbmVkLiAgRXhhbXBsZTogPgogCiAJOnZlcmJvc2UgYWJicmV2aWF0ZQotCSEgIHRlaCAgICAgICAgICAgdGhlCisJISAgdGVoCQkgdGhlCiAJCUxhc3Qgc2V0IGZyb20gL2hvbWUvYWJjZC92aW0vYWJici52aW0KIAogU2VlIHw6dmVyYm9zZS1jbWR8IGZvciBtb3JlIGluZm9ybWF0aW9uLgpAQCAtMTA4MywxMCArMTA4OSwxMCBAQAogbGFzdCBkZWZpbmVkLiBFeGFtcGxlOiA+CiAKICAgICA6dmVyYm9zZSBjb21tYW5kIFRPaHRtbAotCU5hbWUgICAgICAgIEFyZ3MgUmFuZ2UgQ29tcGxldGUgIERlZmluaXRpb24KLQlUT2h0bWwgICAgICAwICAgICUgICAgICAgICAgICAgICA6Y2FsbCBDb252ZXJ0MkhUTUwoPGxpbmUxPiwgPGxpbmUyPikKLQkgICAgTGFzdCBzZXQgZnJvbSAvdXNyL3NoYXJlL3ZpbS92aW0tNy4wL3BsdWdpbi90b2h0bWwudmltCi08Cis8CU5hbWUJICAgIEFyZ3MgUmFuZ2UgQ29tcGxldGUgIERlZmluaXRpb24gfgorCVRPaHRtbAkgICAgMAkgJQkJIDpjYWxsIENvbnZlcnQySFRNTCg8bGluZTE+LCA8bGluZTI+KSB+CisJICAgIExhc3Qgc2V0IGZyb20gL3Vzci9zaGFyZS92aW0vdmltLTcuMC9wbHVnaW4vdG9odG1sLnZpbSB+CisKIFNlZSB8OnZlcmJvc2UtY21kfCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogCQkJCQkJCSpFMTc0KiAqRTE4MioKQEAgLTEyOTUsNyArMTMwMSw3IEBACiBpcyBhIHNwZWNpYWwgZm9ybSA8Zi1hcmdzPiAoImZ1bmN0aW9uIGFyZ3MiKS4gIFRoaXMgc3BsaXRzIHRoZSBjb21tYW5kCiBhcmd1bWVudHMgYXQgc3BhY2VzIGFuZCBUYWJzLCBxdW90ZXMgZWFjaCBhcmd1bWVudCBpbmRpdmlkdWFsbHksIGFuZCB0aGUKIDxmLWFyZ3M+IHNlcXVlbmNlIGlzIHJlcGxhY2VkIGJ5IHRoZSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBxdW90ZWQgYXJndW1lbnRzLgotU2VlIHRoZSBNeWNtZCBleGFtcGxlIGJlbG93LiAgSWYgbm8gYXJndW1lbnRzIGFyZSBnaXZlbiA8Zi1hcmdzPiBpcyByZW1vdmVkLiAKK1NlZSB0aGUgTXljbWQgZXhhbXBsZSBiZWxvdy4gIElmIG5vIGFyZ3VtZW50cyBhcmUgZ2l2ZW4gPGYtYXJncz4gaXMgcmVtb3ZlZC4KIAogRXhhbXBsZXMgPgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9tYnl0ZS50eHQgYi9ydW50aW1lL2RvYy9tYnl0ZS50eHQKaW5kZXggY2M4ZTcwMC4uNWQ4OWJmMSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvbWJ5dGUudHh0CisrKyBiL3J1bnRpbWUvZG9jL21ieXRlLnR4dApAQCAtMSw0ICsxLDQgQEAKLSptYnl0ZS50eHQqICAgICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyMQorKm1ieXRlLnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIgZXQgYWwuCkBAIC0zNTIsNyArMzUyLDcgQEAKIHUgICB1Y3MtMmJlCXNhbWUgYXMgdWNzLTIgKGJpZyBlbmRpYW4pCiB1ICAgdWNzLTRiZQlzYW1lIGFzIHVjcy00IChiaWcgZW5kaWFuKQogICAgIGRlZmF1bHQgICAgIHN0YW5kcyBmb3IgdGhlIGRlZmF1bHQgdmFsdWUgb2YgJ2VuY29kaW5nJywgZGVwZW5kcyBvbiB0aGUKLSAgICAJCWVudmlyb25tZW50CisJCWVudmlyb25tZW50CiAKIEZvciB0aGUgVUNTIGNvZGVzIHRoZSBieXRlIG9yZGVyIG1hdHRlcnMuICBUaGlzIGlzIHRyaWNreSwgdXNlIFVURi04IHdoZW5ldmVyCiB5b3UgY2FuLiAgVGhlIGRlZmF1bHQgaXMgdG8gdXNlIGJpZy1lbmRpYW4gKG1vc3Qgc2lnbmlmaWNhbnQgYnl0ZSBjb21lcwpAQCAtNzc0LDcgKzc3NCw3IEBACiAgIGxvY2FsZSBpZiB5b3UgbWFrZSBhIGNvcnJlY3QgaW5wdXQgdGFibGUuICBYY2luIGNhbiBiZSBmb3VuZCBhdDoKICAgaHR0cDovL3hjaW4ubGludXgub3JnLnR3LwogICBPdGhlcnMgYXJlIHNjaW06IGh0dHA6Ly9zY2ltLmZyZWVkZXNrdG9wLm9yZy8gYW5kIGZjaXR4OgotICBodHRwOi8vd3d3LmZjaXR4Lm9yZy8gCisgIGh0dHA6Ly93d3cuZmNpdHgub3JnLwogCiAtIENvbnZlcnNpb24gU2VydmVyCiAJCQkJCQkJKmNvbnZlcnNpb24tc2VydmVyKgpAQCAtMTI2MSw3ICsxMjYxLDcgQEAKIAkJCQkJKm1ieXRlLWNvbWJpbmluZyogKm1ieXRlLWNvbXBvc2luZyoKIEEgY29tcG9zaW5nIG9yIGNvbWJpbmluZyBjaGFyYWN0ZXIgaXMgdXNlZCB0byBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgdGhlCiBjaGFyYWN0ZXIgYmVmb3JlIGl0LiAgVGhlIGNvbWJpbmluZyBjaGFyYWN0ZXJzIGFyZSBkcmF3biBvbiB0b3Agb2YgdGhlCi1wcmVjZWRpbmcgY2hhcmFjdGVyLiAgCitwcmVjZWRpbmcgY2hhcmFjdGVyLgogVXAgdG8gdHdvIGNvbWJpbmluZyBjaGFyYWN0ZXJzIGNhbiBiZSB1c2VkIGJ5IGRlZmF1bHQuICBUaGlzIGNhbiBiZSBjaGFuZ2VkCiB3aXRoIHRoZSAnbWF4Y29tYmluZScgb3B0aW9uLgogV2hlbiBlZGl0aW5nIHRleHQgYSBjb21wb3NpbmcgY2hhcmFjdGVyIGlzIG1vc3RseSBjb25zaWRlcmVkIHBhcnQgb2YgdGhlCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9tZXNzYWdlLnR4dCBiL3J1bnRpbWUvZG9jL21lc3NhZ2UudHh0CmluZGV4IDVlM2FkMmQuLjg5YjBmMGMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL21lc3NhZ2UudHh0CisrKyBiL3J1bnRpbWUvZG9jL21lc3NhZ2UudHh0CkBAIC0xLDQgKzEsNCBAQAotKm1lc3NhZ2UudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDExCisqbWVzc2FnZS50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMzAKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTI5Nyw3ICsyOTcsNyBAQAogICB0byBkZWxldGUgdGhlIHN3YXBmaWxlLiAgRWRpdCB7ZmlsZW5hbWV9IHRvIGZpbmQgb3V0IGluZm9ybWF0aW9uIGFib3V0IHRoZQogICBzd2FwZmlsZS4KIC0gSWYgeW91IHdhbnQgdG8gd3JpdGUgYW55d2F5IHByZXBlbmQgIjpzaWxlbnQhIiB0byB0aGUgY29tbWFuZC4gIEZvciBleGFtcGxlOiA+Ci0gIAk6c2lsZW50ISB3ISAvdG1wL3Rlc3QKKwk6c2lsZW50ISB3ISAvdG1wL3Rlc3QKIDwgVGhlIHNwZWNpYWwgY29tbWFuZCBpcyBuZWVkZWQsIHNpbmNlIHlvdSBhbHJlYWR5IGFkZGVkIHRoZSAhIGZvciBvdmVyd3JpdGluZwogICBhbiBleGlzdGluZyBmaWxlLgogCkBAIC03OTYsNyArNzk2LDcgQEAKICAgICAgZAkJCQkJZG93biBhIHBhZ2UgKGhhbGYgYSBzY3JlZW4pCiAgICAgIDxTcGFjZT4gb3IgPFBhZ2VEb3duPgkJZG93biBhIHNjcmVlbgogICAgICBHCQkJCQlkb3duIGFsbCB0aGUgd2F5LCB1bnRpbCB0aGUgaGl0LWVudGVyCi0gICAgIAkJCQkJcHJvbXB0CisJCQkJCXByb21wdAogCiAgICAgIDxCUz4gb3IgayBvciA8VXA+CQkJb25lIGxpbmUgYmFjayAoKikKICAgICAgdQkJCQkJdXAgYSBwYWdlIChoYWxmIGEgc2NyZWVuKSAoKikKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL21sYW5nLnR4dCBiL3J1bnRpbWUvZG9jL21sYW5nLnR4dAppbmRleCA5MTFmMmEwLi5hMzhiOGNkIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9tbGFuZy50eHQKKysrIGIvcnVudGltZS9kb2MvbWxhbmcudHh0CkBAIC0xLDQgKzEsNCBAQAotKm1sYW5nLnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDQgRmViIDI0CisqbWxhbmcudHh0KiAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNCBGZWIgMjQKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL21vdGlvbi50eHQgYi9ydW50aW1lL2RvYy9tb3Rpb24udHh0CmluZGV4IDcxNzNmYWYuLjE2YzkyOWMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL21vdGlvbi50eHQKKysrIGIvcnVudGltZS9kb2MvbW90aW9uLnR4dApAQCAtMSw0ICsxLDQgQEAKLSptb3Rpb24udHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyOQorKm1vdGlvbi50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC03ODAsNyArNzgwLDcgQEAKIDwJCQl0byBsaXN0IG1hcmtzICdhJyBhbmQgJ0InLiAge25vdCBpbiBWaX0KIAogCQkJCQkJCSo6ZGVsbSogKjpkZWxtYXJrcyoKLTpkZWxtW2Fya3NdIHttYXJrc30gCURlbGV0ZSB0aGUgc3BlY2lmaWVkIG1hcmtzLiAgTWFya3MgdGhhdCBjYW4gYmUgZGVsZXRlZAorOmRlbG1bYXJrc10ge21hcmtzfQlEZWxldGUgdGhlIHNwZWNpZmllZCBtYXJrcy4gIE1hcmtzIHRoYXQgY2FuIGJlIGRlbGV0ZWQKIAkJCWluY2x1ZGUgQS1aIGFuZCAwLTkuICBZb3UgY2Fubm90IGRlbGV0ZSB0aGUgJyBtYXJrLgogCQkJVGhleSBjYW4gYmUgc3BlY2lmaWVkIGJ5IGdpdmluZyB0aGUgbGlzdCBvZiBtYXJrCiAJCQluYW1lcywgb3Igd2l0aCBhIHJhbmdlLCBzZXBhcmF0ZWQgd2l0aCBhIGRhc2guICBTcGFjZXMKQEAgLTg1NCwxMSArODU0LDE3IEBACiAKIAkJCQkJCQkqJzwqICpgPCoKICc8ICBgPAkJCVRvIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGxhc3Qgc2VsZWN0ZWQgVmlzdWFsCi0JCQlhcmVhIGluIHRoZSBjdXJyZW50IGJ1ZmZlci4gIHtub3QgaW4gVml9LgorCQkJYXJlYSBpbiB0aGUgY3VycmVudCBidWZmZXIuICBGb3IgYmxvY2sgbW9kZSBpdCBtYXkKKwkJCWFsc28gYmUgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSBmaXJzdCBsaW5lICh0byBiZQorCQkJYWJsZSB0byBkZWZpbmUgdGhlIGJsb2NrKS4gIHtub3QgaW4gVml9LgogCiAJCQkJCQkJKic+KiAqYD4qCiAnPiAgYD4JCQlUbyB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgdGhlIGxhc3Qgc2VsZWN0ZWQgVmlzdWFsCi0JCQlhcmVhIGluIHRoZSBjdXJyZW50IGJ1ZmZlci4gIHtub3QgaW4gVml9LgorCQkJYXJlYSBpbiB0aGUgY3VycmVudCBidWZmZXIuICBGb3IgYmxvY2sgbW9kZSBpdCBtYXkKKwkJCWFsc28gYmUgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgbGFzdCBsaW5lICh0byBiZQorCQkJYWJsZSB0byBkZWZpbmUgdGhlIGJsb2NrKS4gIE5vdGUgdGhhdCAnc2VsZWN0aW9uJworCQkJYXBwbGllcywgdGhlIHBvc2l0aW9uIG1heSBiZSBqdXN0IGFmdGVyIHRoZSBWaXN1YWwKKwkJCWFyZWEuICB7bm90IGluIFZpfS4KIAogCQkJCQkJCSonJyogKmBgKgogJycgIGBgCQkJVG8gdGhlIHBvc2l0aW9uIGJlZm9yZSB0aGUgbGF0ZXN0IGp1bXAsIG9yIHdoZXJlIHRoZQpAQCAtOTg1LDcgKzk5MSw3IEBACiA8CiAJCQlOb3RlIHRoYXQgIjprZWVwanVtcHMiIG11c3QgYmUgdXNlZCBmb3IgZXZlcnkgY29tbWFuZC4KIAkJCVdoZW4gaW52b2tpbmcgYSBmdW5jdGlvbiB0aGUgY29tbWFuZHMgaW4gdGhhdCBmdW5jdGlvbgotCQkJY2FuIHN0aWxsIGNoYW5nZSB0aGUganVtcGxpc3QuICBBbHNvLCBmb3IgCisJCQljYW4gc3RpbGwgY2hhbmdlIHRoZSBqdW1wbGlzdC4gIEFsc28sIGZvcgogCQkJIjprZWVwanVtcHMgZXhlICdjb21tYW5kICciIHRoZSAiY29tbWFuZCIgd29uJ3Qga2VlcAogCQkJanVtcHMuICBJbnN0ZWFkIHVzZTogIjpleGUgJ2tlZXBqdW1wcyBjb21tYW5kJyIKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvbmV0YmVhbnMudHh0IGIvcnVudGltZS9kb2MvbmV0YmVhbnMudHh0CmluZGV4IDNmMDBkYjcuLjk3OTM5NTkgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL25ldGJlYW5zLnR4dAorKysgYi9ydW50aW1lL2RvYy9uZXRiZWFucy50eHQKQEAgLTEsNCArMSw0IEBACi0qbmV0YmVhbnMudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMDkKKypuZXRiZWFucy50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAwOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBHb3Jkb24gUHJpZXVyCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9vcHRpb25zLnR4dCBiL3J1bnRpbWUvZG9jL29wdGlvbnMudHh0CmluZGV4IDc0OWZiNTguLmFmNTI3OGYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL29wdGlvbnMudHh0CisrKyBiL3J1bnRpbWUvZG9jL29wdGlvbnMudHh0CkBAIC0xLDQgKzEsNCBAQAotKm9wdGlvbnMudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyOQorKm9wdGlvbnMudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAzMAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xMTkyLDcgKzExOTIsNyBAQAogCQkJd3JpdHRlbgogCSAgbm93cml0ZQlidWZmZXIgd2hpY2ggd2lsbCBub3QgYmUgd3JpdHRlbgogCSAgYWN3cml0ZQlidWZmZXIgd2hpY2ggd2lsbCBhbHdheXMgYmUgd3JpdHRlbiB3aXRoIEJ1ZldyaXRlQ21kCi0JICAJCWF1dG9jb21tYW5kcy4ge25vdCBhdmFpbGFibGUgd2hlbiBjb21waWxlZCB3aXRob3V0IHRoZQorCQkJYXV0b2NvbW1hbmRzLiB7bm90IGF2YWlsYWJsZSB3aGVuIGNvbXBpbGVkIHdpdGhvdXQgdGhlCiAJCQl8K2F1dG9jbWR8IGZlYXR1cmV9CiAJICBxdWlja2ZpeAlxdWlja2ZpeCBidWZmZXIsIGNvbnRhaW5zIGxpc3Qgb2YgZXJyb3JzIHw6Y3dpbmRvd3wKIAkJCW9yIGxpc3Qgb2YgbG9jYXRpb25zIHw6bHdpbmRvd3wKQEAgLTE2NDgsNyArMTY0OCw3IEBACiAJCSAgICBzdWZmaWNpZW50IGNvbG9ycyBhcmUgYXZhaWxhYmxlLiAgfGlucy1jb21wbGV0aW9uLW1lbnV8CiAKIAkgICBtZW51b25lICBVc2UgdGhlIHBvcHVwIG1lbnUgYWxzbyB3aGVuIHRoZXJlIGlzIG9ubHkgb25lIG1hdGNoLgotCSAgIAkgICAgVXNlZnVsIHdoZW4gdGhlcmUgaXMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKwkJICAgIFVzZWZ1bCB3aGVuIHRoZXJlIGlzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlCiAJCSAgICBtYXRjaCwgZS5nLiwgd2hhdCBmaWxlIGl0IGNvbWVzIGZyb20uCiAKIAkgICBsb25nZXN0ICBPbmx5IGluc2VydCB0aGUgbG9uZ2VzdCBjb21tb24gdGV4dCBvZiB0aGUgbWF0Y2hlcy4gIElmCkBAIC0xNjU4LDcgKzE2NTgsNyBAQAogCQkgICAgdXNlZC4KIAogCSAgIHByZXZpZXcgIFNob3cgZXh0cmEgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnRseSBzZWxlY3RlZAotCSAgIAkgICAgY29tcGxldGlvbiBpbiB0aGUgcHJldmlldyB3aW5kb3cuCisJCSAgICBjb21wbGV0aW9uIGluIHRoZSBwcmV2aWV3IHdpbmRvdy4KIAogCQkJCSonY29uZmlybScqIConY2YnKiAqJ25vY29uZmlybScqIConbm9jZicqCiAnY29uZmlybScgJ2NmJwkJYm9vbGVhbiAoZGVmYXVsdCBvZmYpCkBAIC0xOTU0LDcgKzE5NTQsNyBAQAogCQkrCVdoZW4gaW5jbHVkZWQsIGEgIjp3cml0ZSBmaWxlIiBjb21tYW5kIHdpbGwgcmVzZXQgdGhlCiAJCQknbW9kaWZpZWQnIGZsYWcgb2YgdGhlIGJ1ZmZlciwgZXZlbiB0aG91Z2ggdGhlIGJ1ZmZlcgogCQkJaXRzZWxmIG1heSBzdGlsbCBiZSBkaWZmZXJlbnQgZnJvbSBpdHMgZmlsZS4KLQkJCSAJCQkJCSpjcG8tc3RhcioKKwkJCQkJCQkJKmNwby1zdGFyKgogCQkqCVVzZSAiOioiIGluIHRoZSBzYW1lIHdheSBhcyAiOkAiLiAgV2hlbiBub3QgaW5jbHVkZWQsCiAJCQkiOioiIGlzIGFuIGFsaWFzIGZvciAiOic8LCc+Iiwgc2VsZWN0IHRoZSBWaXN1YWwgYXJlYS4KIAkJCQkJCQkJKmNwby08KgpAQCAtMTk3Myw3ICsxOTczLDcgQEAKIAl3aGVuICRWSU1fUE9TSVggd2FzIHNldCBvbiBzdGFydHVwLiB8cG9zaXh8CiAKIAkgICAgY29udGFpbnMJYmVoYXZpb3IJfgotCQkJIAkJCQkJKmNwby0jKgorCQkJCQkJCQkqY3BvLSMqCiAJCSMJQSBjb3VudCBiZWZvcmUgIkQiLCAibyIgYW5kICJPIiBoYXMgbm8gZWZmZWN0LgogCQkJCQkJCQkqY3BvLSYqCiAJCSYJV2hlbiAiOnByZXNlcnZlIiB3YXMgdXNlZCBrZWVwIHRoZSBzd2FwIGZpbGUgd2hlbgpAQCAtMjk5MCw5ICsyOTkwLDkgQEAKIAlvcGVyYXRvci4gIFdoZW4gdGhpcyBvcHRpb24gaXMgZW1wdHkgJ2Zvcm1hdHByZycgaXMgdXNlZC4KIAogCVRoZSB8djpsbnVtfCAgdmFyaWFibGUgaG9sZHMgdGhlIGZpcnN0IGxpbmUgdG8gYmUgZm9ybWF0dGVkLgotCVRoZSB8djpjb3VudHwgdmFyaWFibGUgdGhlIG51bWJlciBvZiBsaW5lcyB0byBiZSBmb3JtYXR0ZWQuCi0JVGhlIHx2OmNoYXJ8ICB2YXJpYWJsZSB0aGUgY2hhcmFjdGVyIHRvIGJlIGluc2VydGVkLiAgVGhpcyBjYW4gYmUKLQkJICAgICAgZW1wdHkuICBEb24ndCBpbnNlcnQgaXQgeWV0IQorCVRoZSB8djpjb3VudHwgdmFyaWFibGUgaG9sZHMgdGhlIG51bWJlciBvZiBsaW5lcyB0byBiZSBmb3JtYXR0ZWQuCisJVGhlIHx2OmNoYXJ8ICB2YXJpYWJsZSBob2xkcyB0aGUgY2hhcmFjdGVyIHRoYXQgaXMgZ29pbmcgdG8gYmUKKwkJICAgICAgaW5zZXJ0ZWQuICBUaGlzIGNhbiBiZSBlbXB0eS4gIERvbid0IGluc2VydCBpdCB5ZXQhCiAKIAlFeGFtcGxlOiA+CiAJCTpzZXQgZm9ybWF0ZXhwcj1teWxhbmcjRm9ybWF0KCkKQEAgLTMzNzAsNyArMzM3MCw3IEBACiAJICAndCcJSW5jbHVkZSB0ZWFyb2ZmIG1lbnUgaXRlbXMuICBDdXJyZW50bHkgb25seSB3b3JrcyBmb3IgV2luMzIsCiAJCUdUSyssIGFuZCBNb3RpZiAxLjIgR1VJLgogCSAgJ1QnCUluY2x1ZGUgVG9vbGJhci4gIEN1cnJlbnRseSBvbmx5IGluIFdpbjMyLCBHVEsrLCBNb3RpZiwgUGhvdG9uCi0JICAgICAgICBhbmQgQXRoZW5hIEdVSXMuCisJCWFuZCBBdGhlbmEgR1VJcy4KIAogCSAgJ3InCVJpZ2h0LWhhbmQgc2Nyb2xsYmFyIGlzIGFsd2F5cyBwcmVzZW50LgogCSAgJ1InCVJpZ2h0LWhhbmQgc2Nyb2xsYmFyIGlzIHByZXNlbnQgd2hlbiB0aGVyZSBpcyBhIHZlcnRpY2FsbHkKQEAgLTQyOTQsNyArNDI5NCw3IEBACiAJCQlpcyBvZmYgYW5kIHRoZXJlIGlzIHRleHQgcHJlY2VkaW5nIHRoZSBjaGFyYWN0ZXIKIAkJCXZpc2libGUgaW4gdGhlIGZpcnN0IGNvbHVtbi4KIAkgIG5ic3A6YwlDaGFyYWN0ZXIgdG8gc2hvdyBmb3IgYSBub24tYnJlYWthYmxlIHNwYWNlIChjaGFyYWN0ZXIKLQkgIAkJMHhBMCwgMTYwKS4gIExlZnQgYmxhbmsgd2hlbiBvbWl0dGVkLgorCQkJMHhBMCwgMTYwKS4gIExlZnQgYmxhbmsgd2hlbiBvbWl0dGVkLgogCiAJVGhlIGNoYXJhY3RlcnMgJzonIGFuZCAnLCcgc2hvdWxkIG5vdCBiZSB1c2VkLiAgVVRGLTggY2hhcmFjdGVycyBjYW4KIAliZSB1c2VkIHdoZW4gJ2VuY29kaW5nJyBpcyAidXRmLTgiLCBvdGhlcndpc2Ugb25seSBwcmludGFibGUKQEAgLTY0MDgsNyArNjQwOCw3IEBACiAJCQlhbHNvIHVzZWQgaW4gYWxsIGJ1ZmZlciByZWxhdGVkIHNwbGl0IGNvbW1hbmRzLCBmb3IKIAkJCWV4YW1wbGUgIjpzYnVmZmVyIiwgIjpzYm5leHQiLCBvciAiOnNicmV3aW5kIi4KIAkgICB1c2V0YWIJTGlrZSAidXNlb3BlbiIsIGJ1dCBhbHNvIGNvbnNpZGVyIHdpbmRvd3MgaW4gb3RoZXIgdGFiCi0JICAgCQlwYWdlcy4KKwkJCXBhZ2VzLgogCSAgIHNwbGl0CUlmIGluY2x1ZGVkLCBzcGxpdCB0aGUgY3VycmVudCB3aW5kb3cgYmVmb3JlIGxvYWRpbmcKIAkJCWEgYnVmZmVyLiAgT3RoZXJ3aXNlOiBkbyBub3Qgc3BsaXQsIHVzZSBjdXJyZW50IHdpbmRvdy4KIAkJCVN1cHBvcnRlZCBpbiB8cXVpY2tmaXh8IGNvbW1hbmRzIHRoYXQgZGlzcGxheSBlcnJvcnMuCkBAIC02OTg4LDcgKzY5ODgsNyBAQAogCQkJCSJzIiAgPSBidXR0b24gc3RhdGUKIAkJCQkiYyIgID0gY29sdW1uIHBsdXMgMzMKIAkJCQkiciIgID0gcm93IHBsdXMgMzMKLQkgICAJCVRoaXMgb25seSB3b3JrcyB1cCB0byAyMjMgY29sdW1ucyEgIFNlZSAiZGVjIiBmb3IgYQorCQkJVGhpcyBvbmx5IHdvcmtzIHVwIHRvIDIyMyBjb2x1bW5zISAgU2VlICJkZWMiIGZvciBhCiAJCQlzb2x1dGlvbi4KIAkgICB4dGVybTIJV29ya3MgbGlrZSAieHRlcm0iLCBidXQgd2l0aCB0aGUgeHRlcm0gcmVwb3J0aW5nIHRoZQogCQkJbW91c2UgcG9zaXRpb24gd2hpbGUgdGhlIG1vdXNlIGlzIGRyYWdnZWQuICBUaGlzIHdvcmtzCkBAIC03NDc5LDcgKzc0NzksNyBAQAogCUEgbGlzdCBvZiB3b3JkcyB0aGF0IGNoYW5nZSBob3cgY29tbWFuZCBsaW5lIGNvbXBsZXRpb24gaXMgZG9uZS4KIAlDdXJyZW50bHkgb25seSBvbmUgd29yZCBpcyBhbGxvd2VkOgogCSAgdGFnZmlsZQlXaGVuIHVzaW5nIENUUkwtRCB0byBsaXN0IG1hdGNoaW5nIHRhZ3MsIHRoZSBraW5kIG9mCi0JICAgCQl0YWcgYW5kIHRoZSBmaWxlIG9mIHRoZSB0YWcgaXMgbGlzdGVkLiAgT25seSBvbmUgbWF0Y2gKKwkJCXRhZyBhbmQgdGhlIGZpbGUgb2YgdGhlIHRhZyBpcyBsaXN0ZWQuCU9ubHkgb25lIG1hdGNoCiAJCQlpcyBkaXNwbGF5ZWQgcGVyIGxpbmUuICBPZnRlbiB1c2VkIHRhZyBraW5kcyBhcmU6CiAJCQkJZAkjZGVmaW5lCiAJCQkJZglmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvb3NfMzkwLnR4dCBiL3J1bnRpbWUvZG9jL29zXzM5MC50eHQKaW5kZXggMzQyNTJiOS4uYzdhZDZmMiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2Mvb3NfMzkwLnR4dAorKysgYi9ydW50aW1lL2RvYy9vc18zOTAudHh0CkBAIC0xLDQgKzEsNCBAQAotKm9zXzM5MC50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDUgTWFyIDI5Cisqb3NfMzkwLnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNSBNYXIgMjkKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwJICBieSBSYWxmIFNjaGFuZGwKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL29zX2FtaWdhLnR4dCBiL3J1bnRpbWUvZG9jL29zX2FtaWdhLnR4dAppbmRleCA0YjAxYmI1Li5lNGNjODhlIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9vc19hbWlnYS50eHQKKysrIGIvcnVudGltZS9kb2Mvb3NfYW1pZ2EudHh0CkBAIC0xLDQgKzEsNCBAQAotKm9zX2FtaWdhLnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDUgTWFyIDI5Cisqb3NfYW1pZ2EudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNSBNYXIgMjkKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL29zX2Jlb3MudHh0IGIvcnVudGltZS9kb2Mvb3NfYmVvcy50eHQKaW5kZXggZmM4MTU1ZS4uY2Q0M2RmZSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2Mvb3NfYmVvcy50eHQKKysrIGIvcnVudGltZS9kb2Mvb3NfYmVvcy50eHQKQEAgLTEsNCArMSw0IEBACi0qb3NfYmVvcy50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDUgTWFyIDI5Cisqb3NfYmVvcy50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDUgTWFyIDI5CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9vc19kb3MudHh0IGIvcnVudGltZS9kb2Mvb3NfZG9zLnR4dAppbmRleCBhNmY0NTk0Li5lNzc5ZGMxIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9vc19kb3MudHh0CisrKyBiL3J1bnRpbWUvZG9jL29zX2Rvcy50eHQKQEAgLTEsNCArMSw0IEBACi0qb3NfZG9zLnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMzAKKypvc19kb3MudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAzMAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvb3NfbWFjLnR4dCBiL3J1bnRpbWUvZG9jL29zX21hYy50eHQKaW5kZXggM2E3N2NhYS4uNTAzZDJiYiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2Mvb3NfbWFjLnR4dAorKysgYi9ydW50aW1lL2RvYy9vc19tYWMudHh0CkBAIC0xLDQgKzEsNCBAQAotKm9zX21hYy50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgTWFyIDI5Cisqb3NfbWFjLnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMzAKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIgZXQgYWwuCkBAIC04NCw3ICs4NCw3IEBACiBBOiBBc3N1bWluZyB0aGF0IFZpbS5hcHAgaXMgbG9jYXRlZCBpbiAvQXBwbGljYXRpb25zOgogCW9wZW4gL0FwcGxpY2F0aW9ucy9WaW0uYXBwCiAgICBPcjoKLSAgIAkvQXBwbGljYXRpb25zL1ZpbS5hcHAvQ29udGVudHMvTWFjT1MvVmltIC1nICB7YXJndW1lbnRzfQorCS9BcHBsaWNhdGlvbnMvVmltLmFwcC9Db250ZW50cy9NYWNPUy9WaW0gLWcgIHthcmd1bWVudHN9CiAKIFE6IEhvdyBjYW4gSSBzZXQgJFBBVEggdG8gc29tZXRoaW5nIHJlYXNvbmFibGUgd2hlbiBJIHN0YXJ0IFZpbS5hcHAgZnJvbSB0aGUKICAgIEdVSSBvciB3aXRoIG9wZW4/CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9vc19taW50LnR4dCBiL3J1bnRpbWUvZG9jL29zX21pbnQudHh0CmluZGV4IDQ1ZTZmZmEuLjcwOWIwOGMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL29zX21pbnQudHh0CisrKyBiL3J1bnRpbWUvZG9jL29zX21pbnQudHh0CkBAIC0xLDQgKzEsNCBAQAotKm9zX21pbnQudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDUgTWFyIDI5Cisqb3NfbWludC50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNSBNYXIgMjkKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgSmVucyBNLiBGZWxkZXJob2ZmCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9vc19tc2Rvcy50eHQgYi9ydW50aW1lL2RvYy9vc19tc2Rvcy50eHQKaW5kZXggOTQ1MzAwNC4uNGUzNDdkOCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2Mvb3NfbXNkb3MudHh0CisrKyBiL3J1bnRpbWUvZG9jL29zX21zZG9zLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpvc19tc2Rvcy50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA1IE1hciAyOQorKm9zX21zZG9zLnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDUgTWFyIDI5CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9vc19vczIudHh0IGIvcnVudGltZS9kb2Mvb3Nfb3MyLnR4dAppbmRleCA5N2M0N2U2Li42ZTJiNjM2IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9vc19vczIudHh0CisrKyBiL3J1bnRpbWUvZG9jL29zX29zMi50eHQKQEAgLTEsNCArMSw0IEBACi0qb3Nfb3MyLnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNSBNYXIgMjkKKypvc19vczIudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA1IE1hciAyOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBQYXVsIFNsb290bWFuCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9vc19xbngudHh0IGIvcnVudGltZS9kb2Mvb3NfcW54LnR4dAppbmRleCAyN2FjMzI4Li5lNDdlNGRiIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9vc19xbngudHh0CisrKyBiL3J1bnRpbWUvZG9jL29zX3FueC50eHQKQEAgLTEsNCArMSw0IEBACi0qb3NfcW54LnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNSBNYXIgMjkKKypvc19xbngudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA1IE1hciAyOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBKdWxpYW4gS2lucmFpZApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvb3NfcmlzYy50eHQgYi9ydW50aW1lL2RvYy9vc19yaXNjLnR4dAppbmRleCBhZjhhMzdhLi4zZmQ2NDE3IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9vc19yaXNjLnR4dAorKysgYi9ydW50aW1lL2RvYy9vc19yaXNjLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpvc19yaXNjLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA1IE1hciAyOQorKm9zX3Jpc2MudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDUgTWFyIDI5CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IFRob21hcyBMZW9uYXJkCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9vc191bml4LnR4dCBiL3J1bnRpbWUvZG9jL29zX3VuaXgudHh0CmluZGV4IGRlMzZjMDAuLjUxZmZmZDIgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL29zX3VuaXgudHh0CisrKyBiL3J1bnRpbWUvZG9jL29zX3VuaXgudHh0CkBAIC0xLDQgKzEsNCBAQAotKm9zX3VuaXgudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDUgTWFyIDI5Cisqb3NfdW5peC50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNSBNYXIgMjkKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL29zX3Ztcy50eHQgYi9ydW50aW1lL2RvYy9vc192bXMudHh0CmluZGV4IGQzMjk4NzUuLjQxNGRmMzIgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL29zX3Ztcy50eHQKKysrIGIvcnVudGltZS9kb2Mvb3Nfdm1zLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpvc192bXMudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAwMgorKm9zX3Ztcy50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCkBAIC01MCw4ICs1MCw4IEBACiAgIHZpbS1YWC1leGUtaWE2NC1ndWkuemlwICAgICAgIElBNjQgR1VJL01vdGlmIGV4ZWN1dGFibGVzCiAgIHZpbS1YWC1leGUtaWE2NC1ndGsuemlwICAgICAgIElBNjQgR1VJL0dUSyBleGVjdXRhYmxlcwogICB2aW0tWFgtZXhlLWlhNjQtdGVybS56aXAgICAgICBJQTY0IGNvbnNvbGUgZXhlY3V0YWJsZXMKLSAgdmltLVhYLWV4ZS1heHAtZ3VpLnppcCAgICAgICAgQWxwaGEgR1VJL01vdGlmIGV4ZWN1dGFibGVzCi0gIHZpbS1YWC1leGUtYXhwLWd0ay56aXAgICAgICAgIEFscGhhIEdVSS9HVEsgZXhlY3V0YWJsZXMKKyAgdmltLVhYLWV4ZS1heHAtZ3VpLnppcAlBbHBoYSBHVUkvTW90aWYgZXhlY3V0YWJsZXMKKyAgdmltLVhYLWV4ZS1heHAtZ3RrLnppcAlBbHBoYSBHVUkvR1RLIGV4ZWN1dGFibGVzCiAgIHZpbS1YWC1leGUtYXhwLXRlcm0uemlwICAgICAgIEFscGhhIGNvbnNvbGUgZXhlY3V0YWJsZXMKICAgdmltLVhYLWV4ZS12YXgtZ3VpLnppcAlWQVggR1VJIGV4ZWN1dGFibGVzCiAgIHZpbS1YWC1leGUtdmF4LXRlcm0uemlwICAgICAgIFZBWCBjb25zb2xlIGV4ZWN1dGFibGVzCkBAIC02MSw3ICs2MSw3IEBACiAKIFRoZSBiaW5hcnkgYXJjaGl2ZXMgY29udGFpbjogdmltLmV4ZSwgY3RhZ3MuZXhlLCB4eGQuZXhlIGZpbGVzLgogCi1Gb3IgR1RLIGV4ZWN1dGFibGVzIHlvdSB3aWxsIG5lZWQgR1RLTElCIHRoYXQgaXMgYXZhaWxhYmxlIGZvciAKK0ZvciBHVEsgZXhlY3V0YWJsZXMgeW91IHdpbGwgbmVlZCBHVEtMSUIgdGhhdCBpcyBhdmFpbGFibGUgZm9yCiBBbHBoYSBhbmQgSUE2NCBwbGF0Zm9ybS4KIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0yNDksMTAgKzI0OSwxMCBAQAogRXhhbXBsZXM6CiAgID4KIAl2aW0gLVIgIGZpbGVuYW1lICAhIG1lYW5zOiAtciBMaXN0IHN3YXAgZmlsZXMgYW5kIGV4aXQKLSAgICAgICAgdmltIC0vciBmaWxlbmFtZSAgISBtZWFuczogLVIgUmVhZG9ubHkgbW9kZSAobGlrZSAidmlldyIpCi0gICAgICAgIHZpbSAtdSAgPHZpbXJjPiAgICEgbWVhbnM6IC11IFVzZSA8dmltcmM+IGluc3RlYWQgb2YgYW55IC52aW1yYyAgIAotICAgICAgICB2aW0gLS91IDxndmltcmM+ICAhIG1lYW5zOiAtVSBVc2UgPGd2aW1yYz4gaW5zdGVhZCBvZiBhbnkgLmd2aW1yYwotICAgICAgICAgICAgICAgICAgCisJdmltIC0vciBmaWxlbmFtZSAgISBtZWFuczogLVIgUmVhZG9ubHkgbW9kZSAobGlrZSAidmlldyIpCisJdmltIC11CTx2aW1yYz4gICAhIG1lYW5zOiAtdSBVc2UgPHZpbXJjPiBpbnN0ZWFkIG9mIGFueSAudmltcmMKKwl2aW0gLS91IDxndmltcmM+ICAhIG1lYW5zOiAtVSBVc2UgPGd2aW1yYz4gaW5zdGVhZCBvZiBhbnkgLmd2aW1yYworCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogNy4gR1VJIG1vZGUgcXVlc3Rpb25zCQkJCQkqdm1zLWd1aSoKQEAgLTM1Niw3ICszNTYsNyBAQAogCiAJOnNldCBub2JhY2t1cAkgICAgICIgZG9lcyBub3QgY3JlYXRlICouKl8gYmFja3VwIGZpbGVzCiAJOnNldCBub3dyaXRlYmFja3VwICAgIiBkb2VzIG5vdCBoYXZlIGFueSBwdXJwb3NlIG9uIFZNUy4gIEl0J3MgdGhlCi0JICAgICAgICAgICAgICAgICAgICAgIiBkZWZhdWx0LgorCQkJICAgICAiIGRlZmF1bHQuCiAKIFJlY292ZXJ5IGlzIHdvcmtpbmcgcGVyZmVjdCBhcyB3ZWxsIGZyb20gdGhlIGRlZmF1bHQgc3dhcCBmaWxlLgogUmVhZCBtb3JlIHdpdGggOmhlbHAgc3dhcGZpbGUKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL29zX3dpbjMyLnR4dCBiL3J1bnRpbWUvZG9jL29zX3dpbjMyLnR4dAppbmRleCBmMTZkNzZkLi5jOWI4NjZlIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9vc193aW4zMi50eHQKKysrIGIvcnVudGltZS9kb2Mvb3Nfd2luMzIudHh0CkBAIC0xLDQgKzEsNCBAQAotKm9zX3dpbjMyLnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDAyCisqb3Nfd2luMzIudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMzAKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgR2VvcmdlIFJlaWxseQpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvcGF0dGVybi50eHQgYi9ydW50aW1lL2RvYy9wYXR0ZXJuLnR4dAppbmRleCBkNjhkYTQ0Li44Y2E1Yzc2IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9wYXR0ZXJuLnR4dAorKysgYi9ydW50aW1lL2RvYy9wYXR0ZXJuLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpwYXR0ZXJuLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyOQorKnBhdHRlcm4udHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xMDE4LDEzICsxMDE4LDEzIEBACiAJLSBBbiBlcXVpdmFsZW5jZSBjbGFzcy4gIFRoaXMgbWVhbnMgdGhhdCBjaGFyYWN0ZXJzIGFyZSBtYXRjaGVkIHRoYXQKIAkgIGhhdmUgYWxtb3N0IHRoZSBzYW1lIG1lYW5pbmcsIGUuZy4sIHdoZW4gaWdub3JpbmcgYWNjZW50cy4gIFRoZSBmb3JtCiAJICBpczoKLQkgIAlbPWE9XQorCQlbPWE9XQogCSAgQ3VycmVudGx5IHRoaXMgaXMgb25seSBpbXBsZW1lbnRlZCBmb3IgbGF0aW4xLiAgQWxzbyB3b3JrcyBmb3IgdGhlCiAJICBsYXRpbjEgY2hhcmFjdGVycyBpbiB1dGYtOCBhbmQgbGF0aW45LgogCQkJCQkJCSovW1suKiAqWy4uXSoKIAktIEEgY29sbGF0aW9uIGVsZW1lbnQuICBUaGlzIGN1cnJlbnRseSBzaW1wbHkgYWNjZXB0cyBhIHNpbmdsZQogCSAgY2hhcmFjdGVyIGluIHRoZSBmb3JtOgotCSAgCVsuYS5dCisJCVsuYS5dCiAJCQkJCQkJICAqL1xdKgogCS0gVG8gaW5jbHVkZSBhIGxpdGVyYWwgJ10nLCAnXicsICctJyBvciAnXCcgaW4gdGhlIGNvbGxlY3Rpb24sIHB1dCBhCiAJICBiYWNrc2xhc2ggYmVmb3JlIGl0OiAiW3h5elxdXSIsICJbXF54eXpdIiwgIlt4eVwtel0iIGFuZCAiW3h5elxcXSIuCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9waV9nemlwLnR4dCBiL3J1bnRpbWUvZG9jL3BpX2d6aXAudHh0CmluZGV4IDAyZTk2OGQuLmZhYzQ3YTAgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3BpX2d6aXAudHh0CisrKyBiL3J1bnRpbWUvZG9jL3BpX2d6aXAudHh0CkBAIC0xLDQgKzEsNCBAQAotKnBpX2d6aXAudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDIgT2N0IDI5CisqcGlfZ3ppcC50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwMiBPY3QgMjkKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3BpX25ldHJ3LnR4dCBiL3J1bnRpbWUvZG9jL3BpX25ldHJ3LnR4dAppbmRleCBhODNjYWFmLi5lYzg1NWYwIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9waV9uZXRydy50eHQKKysrIGIvcnVudGltZS9kb2MvcGlfbmV0cncudHh0CkBAIC0xLDExICsxLDExIEBACi0qcGlfbmV0cncudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjgKKypwaV9uZXRydy50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAzMAogCiAJCVZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLgogCiAKLSpkYXYqICAgICAgICAgICAqaHR0cCogICAgICAgICAgKm5ldHdvcmsqICAgICAgICpyY3AqICAgICAgICAgICAqc2NwKgotKmZldGNoKiAgICAgICAgICpuZXRydyogICAgICAgICAqTnJlYWQqICAgICAgICAgKnJzeW5jKiAgICAgICAgICpzZnRwKgotKmZ0cCogICAgICAgICAgICpuZXRydy52aW0qICAgICAqTndyaXRlKiAgICAgICAgKm5ldHJ3LWZpbGUqCisqZGF2KgkJKmh0dHAqCQkqbmV0d29yayoJKnJjcCoJCSpzY3AqCisqZmV0Y2gqCQkqbmV0cncqCQkqTnJlYWQqCQkqcnN5bmMqCQkqc2Z0cCoKKypmdHAqCQkqbmV0cncudmltKgkqTndyaXRlKgkqbmV0cnctZmlsZSoKIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAwLiBDb250ZW50cwkJCQkJCSpuZXRydy1jb250ZW50cyoKQEAgLTY4LDggKzY4LDggQEAKIGhhdmUgcGx1Z2lucyBhdmFpbGFibGUgd2hpY2ggY2FuIGJlIGRvbmUgd2l0aCB0aGUgZm9sbG93aW5nCiB0d28gbGluZXMgaW4geW91ciA8LnZpbXJjPjogPgogCi0Jc2V0IG5vY3AgICAgICAgICAgICAgICAgICAgICIgJ2NvbXBhdGlibGUnIGlzIG5vdCBzZXQKLQlmaWxldHlwZSBwbHVnaW4gb24gICAgICAgICAgIiBwbHVnaW5zIGFyZSBlbmFibGVkCisJc2V0IG5vY3AJCSAgICAiICdjb21wYXRpYmxlJyBpcyBub3Qgc2V0CisJZmlsZXR5cGUgcGx1Z2luIG9uCSAgICAiIHBsdWdpbnMgYXJlIGVuYWJsZWQKIDwKIFlvdSBjYW4gYXZvaWQgbG9hZGluZyB0aGlzIHBsdWdpbiBieSBzZXR0aW5nIHRoZSAibG9hZGVkX25ldHJ3IiB2YXJpYWJsZQogaW4geW91ciA8LnZpbXJjPiBmaWxlOiA+CkBAIC04NSw4ICs4NSw4IEBACiBGaXJzdCwgbWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgcGx1Z2lucyBlbmFibGVkLCBzbyB5b3UnbGwgbmVlZCB0byBoYXZlIGF0CiBsZWFzdCB0aGUgZm9sbG93aW5nIGluIHlvdXIgPC52aW1yYz46IChvciBzZWUgfG5ldHJ3LWFjdGl2YXRlfCkgPgogCi0Jc2V0IG5vY3AgICAgICAgICAgICAgICAgICAgICIgJ2NvbXBhdGlibGUnIGlzIG5vdCBzZXQKLQlmaWxldHlwZSBwbHVnaW4gb24gICAgICAgICAgIiBwbHVnaW5zIGFyZSBlbmFibGVkCisJc2V0IG5vY3AJCSAgICAiICdjb21wYXRpYmxlJyBpcyBub3Qgc2V0CisJZmlsZXR5cGUgcGx1Z2luIG9uCSAgICAiIHBsdWdpbnMgYXJlIGVuYWJsZWQKIDwKIChzZWUgfCdjcCd8IGFuZCB8OmZpbGV0eXBlLXBsdWdpbi1vbnwpCiAKQEAgLTExMSw3ICsxMTEsNyBAQAogCW1hY2hpbmUgSE9TVE5BTUUgbG9naW4gVVNFUklEIHBhc3N3b3JkICJQQVNTV09SRCIKIAltYWNoaW5lIEhPU1ROQU1FIGxvZ2luIFVTRVJJRCBwYXNzd29yZCAiUEFTU1dPUkQiCiAJLi4uCi0JZGVmYXVsdCAgICAgICAgICBsb2dpbiBVU0VSSUQgcGFzc3dvcmQgIlBBU1NXT1JEIgorCWRlZmF1bHQJCSBsb2dpbiBVU0VSSUQgcGFzc3dvcmQgIlBBU1NXT1JEIgogPAogSG93IGFib3V0IGJyb3dzaW5nIC0tIGllLiB5b3UganVzdCB3YW50IHRvIGxvb2sgYXJvdW5kIGJlZm9yZSBlZGl0aW5nIGEKIGZpbGUuICBGb3IgYnJvd3Npbmcgb24geW91ciBjdXJyZW50IGhvc3QsIGp1c3QgImVkaXQiIGEgZGlyZWN0b3J5OiA+CkBAIC0xNDAsNyArMTQwLDcgQEAKIAkgICBkYXY6ICAgICpnOm5ldHJ3X2Rhdl9jbWQqICA9ICJjYWRhdmVyIgogCSBmZXRjaDogICpnOm5ldHJ3X2ZldGNoX2NtZCogID0gImZldGNoIC1vIiAgICBpZiBmZXRjaCBpcyBhdmFpbGFibGUKIAkgICBmdHA6ICAgICpnOm5ldHJ3X2Z0cF9jbWQqICA9ICJmdHAiCi0gICAgICAgICAgaHR0cDogICAqZzpuZXRyd19odHRwX2NtZCogID0gImZldGNoIC1vIiAgICBpZiBmZXRjaCBpcyBhdmFpbGFibGUKKwkgIGh0dHA6ICAgKmc6bmV0cndfaHR0cF9jbWQqICA9ICJmZXRjaCAtbyIgICAgaWYgZmV0Y2ggaXMgYXZhaWxhYmxlCiAJICBodHRwOiAgICBnOm5ldHJ3X2h0dHBfY21kICAgPSAid2dldCAtcSAtTyIgIElmIHdnZXQgIGlzIGF2YWlsYWJsZQogCSAgIHJjcDogICAgKmc6bmV0cndfcmNwX2NtZCogID0gInJjcCIKIAkgcnN5bmM6ICAqZzpuZXRyd19yc3luY19jbWQqICA9ICJyc3luYyAtYSIKQEAgLTIyNiw3ICsyMjYsNyBAQAogCQkJVGhpcyBvcHRpb24gaXMgaWdub3JlZCBpZiB5b3UncmUgdXNpbmcgdW5peAogCiAgKmc6bmV0cndfdXNlX250X3JjcCoJPTAgZG9uJ3QgdXNlIHRoZSByY3Agb2YgV2luTlQsIFdpbjIwMDAgYW5kIFdpblhQCi0JCQk9MSB1c2UgV2luTlQncyByY3AgaW4gYmluYXJ5IG1vZGUgICAgICAgICAoZGVmYXVsdCkKKwkJCT0xIHVzZSBXaW5OVCdzIHJjcCBpbiBiaW5hcnkgbW9kZQkgIChkZWZhdWx0KQogCiBQQVRIUwkJCQkJCQkJKm5ldHJ3LXBhdGgqCiAKQEAgLTMwMyw0OCArMzAzLDQ4IEBACiAKIAkJCQkJCQkJKm5ldHJ3LXVybHMqCiAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT0rCi0gIHwgIFJlYWRpbmcgICAgICAgICAgICAgICAgICAgICAgICB8IFdyaXRpbmcgICAgICAgICAgICAgICAgICAgIHwgIFVzZXMgICAgICB8CisgIHwgIFJlYWRpbmcJCQkgICAgfCBXcml0aW5nCQkJIHwgIFVzZXMgICAgICB8CiAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT0rCi0gIHwgREFWOiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8Ci0gIHwgIGRhdjovL2hvc3QvcGF0aCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FkYXZlciAgICB8Ci0gIHwgIDpOcmVhZCBkYXY6Ly9ob3N0L3BhdGggICAgICAgICB8IDpOd3JpdGUgZGF2Oi8vaG9zdC9wYXRoICAgIHwgY2FkYXZlciAgICB8CisgIHwgREFWOgkJCSAgICB8CQkJCSB8CSAgICAgIHwKKyAgfCAgZGF2Oi8vaG9zdC9wYXRoCQkgICAgfAkJCQkgfCBjYWRhdmVyICAgIHwKKyAgfCAgOk5yZWFkIGRhdjovL2hvc3QvcGF0aAkgICAgfCA6TndyaXRlIGRhdjovL2hvc3QvcGF0aAkgfCBjYWRhdmVyICAgIHwKICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKLSAgfCBGRVRDSDogICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKLSAgfCAgZmV0Y2g6Ly9bdXNlckBdaG9zdC9wYXRoICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKLSAgfCAgZmV0Y2g6Ly9bdXNlckBdaG9zdDpodHRwL3BhdGggIHwgIE5vdCBBdmFpbGFibGUgICAgICAgICAgICAgfCBmZXRjaCAgICAgIHwKLSAgfCAgOk5yZWFkIGZldGNoOi8vW3VzZXJAXWhvc3QvcGF0aHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKKyAgfCBGRVRDSDoJCQkgICAgfAkJCQkgfAkgICAgICB8CisgIHwgIGZldGNoOi8vW3VzZXJAXWhvc3QvcGF0aAkgICAgfAkJCQkgfAkgICAgICB8CisgIHwgIGZldGNoOi8vW3VzZXJAXWhvc3Q6aHR0cC9wYXRoICB8ICBOb3QgQXZhaWxhYmxlCQkgfCBmZXRjaCAgICAgIHwKKyAgfCAgOk5yZWFkIGZldGNoOi8vW3VzZXJAXWhvc3QvcGF0aHwJCQkJIHwJICAgICAgfAogICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwotICB8IEZJTEU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAotICB8ICBmaWxlOi8vLyogICAgICAgICAgICAgICAgICAgICAgfCBmaWxlOi8vLyogICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAotICB8ICBmaWxlOi8vbG9jYWxob3N0LyogICAgICAgICAgICAgfCBmaWxlOi8vbG9jYWxob3N0LyogICAgICAgICB8ICAgICAgICAgICAgfAorICB8IEZJTEU6CQkJICAgIHwJCQkJIHwJICAgICAgfAorICB8ICBmaWxlOi8vLyoJCQkgICAgfCBmaWxlOi8vLyoJCQkgfAkgICAgICB8CisgIHwgIGZpbGU6Ly9sb2NhbGhvc3QvKgkJICAgIHwgZmlsZTovL2xvY2FsaG9zdC8qCSB8CSAgICAgIHwKICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKLSAgfCBGVFA6ICAgICAgICAgICgqMykgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICgqMykgICAgICAgICAgfCAgICAgICAgICAgIHwKLSAgfCAgZnRwOi8vW3VzZXJAXWhvc3QvcGF0aCAgICAgICAgIHwgZnRwOi8vW3VzZXJAXWhvc3QvcGF0aCAgICAgfCBmdHAgICgqMikgIHwKLSAgfCAgOk5yZWFkIGZ0cDovL2hvc3QvcGF0aCAgICAgICAgIHwgOk53cml0ZSBmdHA6Ly9ob3N0L3BhdGggICAgfCBmdHArLm5ldHJjIHwKLSAgfCAgOk5yZWFkIGhvc3QgcGF0aCAgICAgICAgICAgICAgIHwgOk53cml0ZSBob3N0IHBhdGggICAgICAgICAgfCBmdHArLm5ldHJjIHwKLSAgfCAgOk5yZWFkIGhvc3QgdWlkIHBhc3MgcGF0aCAgICAgIHwgOk53cml0ZSBob3N0IHVpZCBwYXNzIHBhdGggfCBmdHAgICAgICAgIHwKKyAgfCBGVFA6CSAgKCozKQkJICAgIHwJCSAgICgqMykJCSB8CSAgICAgIHwKKyAgfCAgZnRwOi8vW3VzZXJAXWhvc3QvcGF0aAkgICAgfCBmdHA6Ly9bdXNlckBdaG9zdC9wYXRoCSB8IGZ0cAkoKjIpICB8CisgIHwgIDpOcmVhZCBmdHA6Ly9ob3N0L3BhdGgJICAgIHwgOk53cml0ZSBmdHA6Ly9ob3N0L3BhdGgJIHwgZnRwKy5uZXRyYyB8CisgIHwgIDpOcmVhZCBob3N0IHBhdGgJCSAgICB8IDpOd3JpdGUgaG9zdCBwYXRoCQkgfCBmdHArLm5ldHJjIHwKKyAgfCAgOk5yZWFkIGhvc3QgdWlkIHBhc3MgcGF0aAkgICAgfCA6TndyaXRlIGhvc3QgdWlkIHBhc3MgcGF0aCB8IGZ0cAkgICAgICB8CiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCi0gIHwgSFRUUDogd2dldCBpcyBleGVjdXRhYmxlOiAoKjQpICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8Ci0gIHwgIGh0dHA6Ly9bdXNlckBdaG9zdC9wYXRoICAgICAgICB8ICAgICAgICBOb3QgQXZhaWxhYmxlICAgICAgIHwgd2dldCAgICAgICB8CisgIHwgSFRUUDogd2dldCBpcyBleGVjdXRhYmxlOiAoKjQpICB8CQkJCSB8CSAgICAgIHwKKyAgfCAgaHR0cDovL1t1c2VyQF1ob3N0L3BhdGgJICAgIHwJICAgICBOb3QgQXZhaWxhYmxlCSB8IHdnZXQgICAgICAgfAogICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwotICB8IEhUVFA6IGZldGNoIGlzIGV4ZWN1dGFibGUgKCo0KSAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAotICB8ICBodHRwOi8vW3VzZXJAXWhvc3QvcGF0aCAgICAgICAgfCAgICAgICAgTm90IEF2YWlsYWJsZSAgICAgICB8IGZldGNoICAgICAgfAorICB8IEhUVFA6IGZldGNoIGlzIGV4ZWN1dGFibGUgKCo0KSAgfAkJCQkgfAkgICAgICB8CisgIHwgIGh0dHA6Ly9bdXNlckBdaG9zdC9wYXRoCSAgICB8CSAgICAgTm90IEF2YWlsYWJsZQkgfCBmZXRjaCAgICAgIHwKICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKLSAgfCBSQ1A6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKLSAgfCAgcmNwOi8vW3VzZXJAXWhvc3QvcGF0aCAgICAgICAgIHwgcmNwOi8vW3VzZXJAXWhvc3QvcGF0aCAgICAgfCByY3AgICAgICAgIHwKKyAgfCBSQ1A6CQkJICAgIHwJCQkJIHwJICAgICAgfAorICB8ICByY3A6Ly9bdXNlckBdaG9zdC9wYXRoCSAgICB8IHJjcDovL1t1c2VyQF1ob3N0L3BhdGgJIHwgcmNwCSAgICAgIHwKICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKLSAgfCBSU1lOQzogICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKLSAgfCAgcnN5bmM6Ly9bdXNlckBdaG9zdC9wYXRoICAgICAgIHwgcnN5bmM6Ly9bdXNlckBdaG9zdC9wYXRoICAgfCByc3luYyAgICAgIHwKLSAgfCAgOk5yZWFkIHJzeW5jOi8vaG9zdC9wYXRoICAgICAgIHwgOk53cml0ZSByc3luYzovL2hvc3QvcGF0aCAgfCByc3luYyAgICAgIHwKLSAgfCAgOk5yZWFkIHJjcDovL2hvc3QvcGF0aCAgICAgICAgIHwgOk53cml0ZSByY3A6Ly9ob3N0L3BhdGggICAgfCByY3AgICAgICAgIHwKKyAgfCBSU1lOQzoJCQkgICAgfAkJCQkgfAkgICAgICB8CisgIHwgIHJzeW5jOi8vW3VzZXJAXWhvc3QvcGF0aAkgICAgfCByc3luYzovL1t1c2VyQF1ob3N0L3BhdGgJIHwgcnN5bmMgICAgICB8CisgIHwgIDpOcmVhZCByc3luYzovL2hvc3QvcGF0aAkgICAgfCA6TndyaXRlIHJzeW5jOi8vaG9zdC9wYXRoICB8IHJzeW5jICAgICAgfAorICB8ICA6TnJlYWQgcmNwOi8vaG9zdC9wYXRoCSAgICB8IDpOd3JpdGUgcmNwOi8vaG9zdC9wYXRoCSB8IHJjcAkgICAgICB8CiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCi0gIHwgU0NQOiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8Ci0gIHwgIHNjcDovL1t1c2VyQF1ob3N0L3BhdGggICAgICAgICB8IHNjcDovL1t1c2VyQF1ob3N0L3BhdGggICAgIHwgc2NwICAgICAgICB8Ci0gIHwgIDpOcmVhZCBzY3A6Ly9ob3N0L3BhdGggICAgICAgICB8IDpOd3JpdGUgc2NwOi8vaG9zdC9wYXRoICAgIHwgc2NwICAoKjEpICB8CisgIHwgU0NQOgkJCSAgICB8CQkJCSB8CSAgICAgIHwKKyAgfCAgc2NwOi8vW3VzZXJAXWhvc3QvcGF0aAkgICAgfCBzY3A6Ly9bdXNlckBdaG9zdC9wYXRoCSB8IHNjcAkgICAgICB8CisgIHwgIDpOcmVhZCBzY3A6Ly9ob3N0L3BhdGgJICAgIHwgOk53cml0ZSBzY3A6Ly9ob3N0L3BhdGgJIHwgc2NwCSgqMSkgIHwKICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKLSAgfCBTRlRQOiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKLSAgfCAgc2Z0cDovL1t1c2VyQF1ob3N0L3BhdGggICAgICAgIHwgc2Z0cDovL1t1c2VyQF1ob3N0L3BhdGggICAgfCBzZnRwICAgICAgIHwKLSAgfCAgOk5yZWFkIHNmdHA6Ly9ob3N0L3BhdGggICAgICAgIHwgOk53cml0ZSBzZnRwOi8vaG9zdC9wYXRoICAgfCBzZnRwICAoKjEpIHwKKyAgfCBTRlRQOgkJCSAgICB8CQkJCSB8CSAgICAgIHwKKyAgfCAgc2Z0cDovL1t1c2VyQF1ob3N0L3BhdGgJICAgIHwgc2Z0cDovL1t1c2VyQF1ob3N0L3BhdGgJIHwgc2Z0cCAgICAgICB8CisgIHwgIDpOcmVhZCBzZnRwOi8vaG9zdC9wYXRoCSAgICB8IDpOd3JpdGUgc2Z0cDovL2hvc3QvcGF0aAkgfCBzZnRwICAoKjEpIHwKICAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PSsKIAogCSgqMSkgRm9yIGFuIGFic29sdXRlIHBhdGggdXNlIHNjcDovL21hY2hpbmUvL3BhdGguCkBAIC0zNTMsNyArMzUzLDcgQEAKIAl3b3JrIHdpdGggeW91ciBmdHAgY2xpZW50LiAgT3RoZXJ3aXNlIHRoZSBzY3JpcHQgd2lsbAogCXByb21wdCBmb3IgdXNlci1pZCBhbmQgcGFzd29yZC4KIAotICAgICAgICAoKjMpIGZvciBmdHAsICJtYWNoaW5lIiBtYXkgYmUgbWFjaGluZSNwb3J0IG9yIG1hY2hpbmU6cG9ydAorCSgqMykgZm9yIGZ0cCwgIm1hY2hpbmUiIG1heSBiZSBtYWNoaW5lI3BvcnQgb3IgbWFjaGluZTpwb3J0CiAJaWYgYSBkaWZmZXJlbnQgcG9ydCBpcyBuZWVkZWQgdGhhbiB0aGUgc3RhbmRhcmQgZnRwIHBvcnQKIAogCSgqNCkgZm9yIGh0dHA6Li4uLCBpZiB3Z2V0IGlzIGF2YWlsYWJsZSBpdCB3aWxsIGJlIHVzZWQuICBPdGhlcndpc2UsCkBAIC00NTksNyArNDU5LDcgQEAKIAkJc3RyaW5ncy4KIAogOk5ldHJ3U2V0dGluZ3MgIFRoaXMgY29tbWFuZCBpcyBkZXNyaWJlZCBpbiB8bmV0cnctc2V0dGluZ3N8IC0tIHVzZWQgdG8KLSAgICAgICAgICAgICAgICBkaXNwbGF5IG5ldHJ3IHNldHRpbmdzIGFuZCBjaGFuZ2UgbmV0cncgYmVoYXZpb3IuCisJCWRpc3BsYXkgbmV0cncgc2V0dGluZ3MgYW5kIGNoYW5nZSBuZXRydyBiZWhhdmlvci4KIAogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTQ2OSwzNyArNDY5LDM3IEBACiBiZWhhdmlvci4gIFRoZXNlIHZhcmlhYmxlcyB0eXBpY2FsbHkgbWF5IGJlIHNldCBpbiB0aGUgdXNlcidzIDwudmltcmM+IGZpbGU6CiAoYWxzbyBzZWUgfG5ldHJ3LXNldHRpbmdzfCkgPgogCi0gICAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tCi0gICAgICAgICAgICAgICAgICAgICAgICBOZXRydyBPcHRpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tCisJCQktLS0tLS0tLS0tLS0tCisJCQlOZXRydyBPcHRpb25zCisJCQktLS0tLS0tLS0tLS0tCiAJT3B0aW9uCQkJTWVhbmluZwogCS0tLS0tLS0tLS0tLS0tCQktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogPAotICAgICAgICBiOm5ldHJ3X2NvbCAgICAgICAgICAgICBIb2xkcyBjdXJyZW50IGN1cnNvciBwb3NpdGlvbiAoZHVyaW5nIE5ldFdyaXRlKQotICAgICAgICBnOm5ldHJ3X2N5Z3dpbiAgICAgICAgICA9MSBhc3N1bWUgc2NwIHVuZGVyIHdpbmRvd3MgaXMgZnJvbSBjeWd3aW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQvd2luZG93cykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPTAgYXNzdW1lIHNjcCB1bmRlciB3aW5kb3dzIGFjY2VwdHMgd2luZG93cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZSBwYXRocyAgICAgICAgICAgICAgICAoZGVmYXVsdC9lbHNlKQotICAgICAgICBnOm5ldHJ3X2Z0cCAgICAgICAgICAgICA9MCB1c2UgZGVmYXVsdCBmdHAgICAgICAgICAgICAodWlkIHBhc3N3b3JkKQotICAgICAgICBnOm5ldHJ3X2Z0cG1vZGUgICAgICAgICA9ImJpbmFyeSIgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSJhc2NpaSIgICAgICAgICAgICAgICAgICAgICAgKHlvdXIgY2hvaWNlKQotCWc6bmV0cndfaWdub3JlbmV0cmMgICAgID0xICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0KQotCSAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHlvdSBoYXZlIGEgPC5uZXRyYz4gZmlsZSBidXQgeW91IGRvbid0CisJYjpuZXRyd19jb2wJCUhvbGRzIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uIChkdXJpbmcgTmV0V3JpdGUpCisJZzpuZXRyd19jeWd3aW4JCT0xIGFzc3VtZSBzY3AgdW5kZXIgd2luZG93cyBpcyBmcm9tIGN5Z3dpbgorCQkJCQkJCSAgICAgIChkZWZhdWx0L3dpbmRvd3MpCisJCQkJPTAgYXNzdW1lIHNjcCB1bmRlciB3aW5kb3dzIGFjY2VwdHMgd2luZG93cworCQkJCSAgIHN0eWxlIHBhdGhzCQkgICAgICAoZGVmYXVsdC9lbHNlKQorCWc6bmV0cndfZnRwCQk9MCB1c2UgZGVmYXVsdCBmdHAJICAgICAgKHVpZCBwYXNzd29yZCkKKwlnOm5ldHJ3X2Z0cG1vZGUJCT0iYmluYXJ5IgkJICAgICAgKGRlZmF1bHQpCisJCQkJPSJhc2NpaSIJCSAgICAgICh5b3VyIGNob2ljZSkKKwlnOm5ldHJ3X2lnbm9yZW5ldHJjCT0xCQkJICAgICAgKGRlZmF1bHQpCisJCQkJICAgaWYgeW91IGhhdmUgYSA8Lm5ldHJjPiBmaWxlIGJ1dCB5b3UgZG9uJ3QKIAkJCQkgICB3YW50IGl0IHVzZWQsIHRoZW4gc2V0IHRoaXMgdmFyaWFibGUuICBJdHMKIAkJCQkgICBtZXJlIGV4aXN0ZW5jZSBpcyBlbm91Z2ggdG8gY2F1c2UgPC5uZXRyYz4KIAkJCQkgICB0byBiZSBpZ25vcmVkLgotICAgICAgICBiOm5ldHJ3X2xhc3RmaWxlICAgICAgICBIb2xkcyBsYXRlc3QgbWV0aG9kL21hY2hpbmUvcGF0aC4KLSAgICAgICAgYjpuZXRyd19saW5lICAgICAgICAgICAgSG9sZHMgY3VycmVudCBsaW5lIG51bWJlciAgICAgKGR1cmluZyBOZXRXcml0ZSkKLSAgICAgICAgZzpuZXRyd19wYXNzd2QgICAgICAgICAgSG9sZHMgY3VycmVudCBwYXNzd29yZCBmb3IgZnRwLgotCWc6bmV0cndfc2lsZW50ICAgICAgICAgID0wIHRyYW5zZmVycyBkb25lIG5vcm1hbGx5Ci0JICAgICAgICAgICAgICAgICAgICAgICAgPTEgdHJhbnNmZXJzIGRvbmUgc2lsZW50bHkKLSAgICAgICAgZzpuZXRyd191aWQgICAgICAgICAgICAgSG9sZHMgY3VycmVudCB1c2VyLWlkIGZvciBmdHAuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0xIHVzZSBhbHRlcm5hdGUgZnRwICAgICAgICAgKHVzZXIgdWlkIHBhc3N3b3JkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VlIHxuZXRydy1vcHRpb25zfCkKLSAgICAgICAgZzpuZXRyd191c2VfbnRfcmNwICAgICAgPTAgZG9uJ3QgdXNlIFdpbk5ULzJLL1hQJ3MgcmNwIChkZWZhdWx0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9MSB1c2UgV2luTlQvMksvWFAncyByY3AsIGJpbmFyeSBtb2RlCi0gICAgICAgIGc6bmV0cndfd2luOTVmdHAgICAgICAgID0wIHVzZSB1bml4LXN0eWxlIGZ0cCBldmVuIGlmIHdpbjk1Lzk4L01FL2V0YwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9MSB1c2UgZGVmYXVsdCBtZXRob2QgdG8gZG8gZnRwID4KKwliOm5ldHJ3X2xhc3RmaWxlCUhvbGRzIGxhdGVzdCBtZXRob2QvbWFjaGluZS9wYXRoLgorCWI6bmV0cndfbGluZQkJSG9sZHMgY3VycmVudCBsaW5lIG51bWJlciAgICAgKGR1cmluZyBOZXRXcml0ZSkKKwlnOm5ldHJ3X3Bhc3N3ZAkJSG9sZHMgY3VycmVudCBwYXNzd29yZCBmb3IgZnRwLgorCWc6bmV0cndfc2lsZW50CQk9MCB0cmFuc2ZlcnMgZG9uZSBub3JtYWxseQorCQkJCT0xIHRyYW5zZmVycyBkb25lIHNpbGVudGx5CisJZzpuZXRyd191aWQJCUhvbGRzIGN1cnJlbnQgdXNlci1pZCBmb3IgZnRwLgorCQkJCT0xIHVzZSBhbHRlcm5hdGUgZnRwCSAgICAgKHVzZXIgdWlkIHBhc3N3b3JkKQorCQkJCShzZWUgfG5ldHJ3LW9wdGlvbnN8KQorCWc6bmV0cndfdXNlX250X3JjcAk9MCBkb24ndCB1c2UgV2luTlQvMksvWFAncyByY3AgKGRlZmF1bHQpCisJCQkJPTEgdXNlIFdpbk5ULzJLL1hQJ3MgcmNwLCBiaW5hcnkgbW9kZQorCWc6bmV0cndfd2luOTVmdHAJPTAgdXNlIHVuaXgtc3R5bGUgZnRwIGV2ZW4gaWYgd2luOTUvOTgvTUUvZXRjCisJCQkJPTEgdXNlIGRlZmF1bHQgbWV0aG9kIHRvIGRvIGZ0cCA+CiAJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDwKIFRoZSBzY3JpcHQgd2lsbCBhbHNvIG1ha2UgdXNlIG9mIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGludGVybmFsbHksIGFsYmVpdApAQCAtNTIyLDIxICs1MjIsMjEgQEAKIHZhcmlhYmxlcyBsaXN0ZWQgYmVsb3csIGFuZCBtYXkgYmUgbW9kaWZpZWQgYnkgdGhlIHVzZXIuCiA+CiAJCQkgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sIENvbnRyb2wgT3B0aW9ucworCQkJICAgUHJvdG9jb2wgQ29udHJvbCBPcHRpb25zCiAJCQkgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBPcHRpb24gICAgICAgICAgICBUeXBlICAgICAgICBTZXR0aW5nICAgICAgICAgTWVhbmluZwotICAgIC0tLS0tLS0tLSAgICAgICAgIC0tLS0tLS0tICAgIC0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBPcHRpb24JICAgICAgVHlwZQkgIFNldHRpbmcJICBNZWFuaW5nCisgICAgLS0tLS0tLS0tCSAgICAgIC0tLS0tLS0tCSAgLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogPAotICAgIG5ldHJ3X2Z0cCAgICAgICAgIHZhcmlhYmxlICAgID1kb2Vzbid0IGV4aXN0ICB1c2VyaWQgc2V0IGJ5ICJ1c2VyIHVzZXJpZCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9MCAgICAgICAgICAgICAgdXNlcmlkIHNldCBieSAidXNlciB1c2VyaWQiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPTEgICAgICAgICAgICAgIHVzZXJpZCBzZXQgYnkgInVzZXJpZCIKLSAgICBOZXRSZWFkRml4dXAgICAgICBmdW5jdGlvbiAgICA9ZG9lc24ndCBleGlzdCAgbm8gY2hhbmdlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPWV4aXN0cyAgICAgICAgIEFsbG93cyB1c2VyIHRvIGhhdmUgZmlsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCB2aWEgZnRwIGF1dG9tYXRpY2FsbHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtZWQgaG93ZXZlciB0aGV5IHdpc2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgTmV0UmVhZEZpeHVwKCkKKyAgICBuZXRyd19mdHAJICAgICAgdmFyaWFibGUJICA9ZG9lc24ndCBleGlzdCAgdXNlcmlkIHNldCBieSAidXNlciB1c2VyaWQiCisJCQkJICA9MAkJICB1c2VyaWQgc2V0IGJ5ICJ1c2VyIHVzZXJpZCIKKwkJCQkgID0xCQkgIHVzZXJpZCBzZXQgYnkgInVzZXJpZCIKKyAgICBOZXRSZWFkRml4dXAgICAgICBmdW5jdGlvbgkgID1kb2Vzbid0IGV4aXN0ICBubyBjaGFuZ2UKKwkJCQkgID1leGlzdHMJICBBbGxvd3MgdXNlciB0byBoYXZlIGZpbGVzCisJCQkJCQkgIHJlYWQgdmlhIGZ0cCBhdXRvbWF0aWNhbGx5CisJCQkJCQkgIHRyYW5zZm9ybWVkIGhvd2V2ZXIgdGhleSB3aXNoCisJCQkJCQkgIGJ5IE5ldFJlYWRGaXh1cCgpCiAgICAgZzpuZXRyd19kYXZfY21kICAgIHZhcmlhYmxlICAgPSJjYWRhdmVyIgotICAgIGc6bmV0cndfZmV0Y2hfY21kICB2YXJpYWJsZSAgID0iZmV0Y2ggLW8iICAgICBpZiBmZXRjaCBpcyBhdmFpbGFibGUKKyAgICBnOm5ldHJ3X2ZldGNoX2NtZCAgdmFyaWFibGUgICA9ImZldGNoIC1vIgkgIGlmIGZldGNoIGlzIGF2YWlsYWJsZQogICAgIGc6bmV0cndfZnRwX2NtZCAgICB2YXJpYWJsZSAgID0iZnRwIgogICAgIGc6bmV0cndfaHR0cF9jbWQgICB2YXJpYWJsZSAgID0iZmV0Y2ggLW8iICAgICBpZiAgICAgIGZldGNoIGlzIGF2YWlsYWJsZQogICAgIGc6bmV0cndfaHR0cF9jbWQgICB2YXJpYWJsZSAgID0id2dldCAtTyIgICAgICBlbHNlIGlmIHdnZXQgIGlzIGF2YWlsYWJsZQpAQCAtNTY1LDExICs1NjUsMTEgQEAKICAgSUYgZzpuZXRyd19mdHAgIWV4aXN0cyBvciBpcyBub3QgMSAgICAgSUYgZzpuZXRyd19mdHAgZXhpc3RzIGFuZCBpcyAxCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogPAotICAgICAgIG9wZW4gbWFjaGluZSBbcG9ydF0gICAgICAgICAgICAgICAgICAgIG9wZW4gbWFjaGluZSBbcG9ydF0KLSAgICAgICB1c2VyIHVzZXJpZCBwYXNzd29yZCAgICAgICAgICAgICAgICAgICB1c2VyaWQgcGFzc3dvcmQKLSAgICAgICBbZzpuZXRyd19mdHBtb2RlXSAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZAotICAgICAgIGdldCBmaWxlbmFtZSB0ZW1wZmlsZSAgICAgICAgICAgICAgICAgIFtnOm5ldHJ3X2Z0cG1vZGVdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IGZpbGVuYW1lIHRlbXBmaWxlID4KKyAgICAgICBvcGVuIG1hY2hpbmUgW3BvcnRdCQkgICAgICBvcGVuIG1hY2hpbmUgW3BvcnRdCisgICAgICAgdXNlciB1c2VyaWQgcGFzc3dvcmQJCSAgICAgIHVzZXJpZCBwYXNzd29yZAorICAgICAgIFtnOm5ldHJ3X2Z0cG1vZGVdCQkgICAgICBwYXNzd29yZAorICAgICAgIGdldCBmaWxlbmFtZSB0ZW1wZmlsZQkJICAgICAgW2c6bmV0cndfZnRwbW9kZV0KKwkJCQkJICAgICAgZ2V0IGZpbGVuYW1lIHRlbXBmaWxlID4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiA8CiBOZXRydyB0aGVuIGV4ZWN1dGVzIHRoZSBsaW5lcyBhYm92ZSBieSB1c2Ugb2YgYSBmaWx0ZXI6CkBAIC02MTEsNyArNjExLDcgQEAKICAgICAgIGVsc2VpZiBhOm1ldGhvZCA9PSA3ICJyc3luYwogICAgICAgZWxzZWlmIGE6bWV0aG9kID09IDggImZldGNoCiAgICAgICBlbHNlaWYgYTptZXRob2QgPT0gOSAic2Z0cAotICAgICAgZWxzZSAgICAgICAgICAgICAgICIgY29tcGxhaW4KKyAgICAgIGVsc2UJCSAiIGNvbXBsYWluCiAgICAgICBlbmRpZgogICAgIGVuZGZ1bmN0aW9uCiA+CkBAIC02MjUsOCArNjI1LDggQEAKICAgICBpZiBoYXMoIndpbjk1IikgJiYgZzpuZXRyd193aW45NWZ0cAogICAgICBmdW4hIE5ldFJlYWRGaXh1cChtZXRob2QsIGxpbmUxLCBsaW5lMikKICAgICAgICBpZiBtZXRob2QgPT0gMyAgICIgZnRwIChubyA8Lm5ldHJjPikKLSAgICAgICAgbGV0IGZvdXJibGFua2xpbmVzPSBsaW5lMiAtIDMKLSAgICAgICAgc2lsZW50IGZvdXJibGFua2xpbmVzLiIsIi5saW5lMi4iZy9eXHMqL2QiCisJbGV0IGZvdXJibGFua2xpbmVzPSBsaW5lMiAtIDMKKwlzaWxlbnQgZm91cmJsYW5rbGluZXMuIiwiLmxpbmUyLiJnL15ccyovZCIKICAgICAgICBlbmRpZgogICAgICBlbmRmdW5jdGlvbgogICAgIGVuZGlmCkBAIC02NzIsOSArNjcyLDkgQEAKIAogUVVJQ0sgUkVGRVJFTkNFIENPTU1BTkRTIFRBQkxFCQkJCSpuZXRydy1icm93c2UtY21kcyoKID4KLSAgICAgICAgLS0tLS0tLQktLS0tLS0tLS0tLQorCS0tLS0tLS0JLS0tLS0tLS0tLS0KIAlDb21tYW5kCUV4cGxhbmF0aW9uCi0gICAgICAgIC0tLS0tLS0JLS0tLS0tLS0tLS0KKwktLS0tLS0tCS0tLS0tLS0tLS0tCiA8CTxGMT4JQ2F1c2VzIE5ldHJ3IHRvIGlzc3VlIGhlbHAKIAkgPGNyPglOZXRydyB3aWxsIGVudGVyIHRoZSBkaXJlY3Rvcnkgb3IgcmVhZCB0aGUgZmlsZSB8bmV0cnctY3J8CiAJIDxkZWw+CU5ldHJ3IHdpbGwgYXR0ZW1wdCB0byByZW1vdmUgdGhlIGZpbGUvZGlyZWN0b3J5IHxuZXRydy1kZWx8CkBAIC03MjQsOCArNzI0LDggQEAKIAogICAqZzpuZXRyd19icm93c2Vfc3BsaXQqCXdoZW4gYnJvd3NpbmcsIDxjcj4gd2lsbCBvcGVuIHRoZSBmaWxlIGJ5OgogCQkJCT0wOiByZS11c2luZyB0aGUgc2FtZSB3aW5kb3cKLQkJCQk9MTogaG9yaXpvbnRhbGx5IHNwbGl0dGluZyB0aGUgd2luZG93IGZpcnN0ICAKLQkJCQk9MjogdmVydGljYWxseSAgIHNwbGl0dGluZyB0aGUgd2luZG93IGZpcnN0ICAKKwkJCQk9MTogaG9yaXpvbnRhbGx5IHNwbGl0dGluZyB0aGUgd2luZG93IGZpcnN0CisJCQkJPTI6IHZlcnRpY2FsbHkgICBzcGxpdHRpbmcgdGhlIHdpbmRvdyBmaXJzdAogCiAgICpnOm5ldHJ3X2Jyb3dzZXhfdmlld2VyKglzcGVjaWZ5IHVzZXIncyBwcmVmZXJlbmNlIGZvciBhIHZpZXdlcjogPgogCQkJCQkia2ZtY2xpZW50IGV4ZWMiCkBAIC03NzIsNyArNzcyLDcgQEAKICAgKmc6bmV0cndfZnRwX2xpc3RfY21kKglvcHRpb25zIGZvciBwYXNzaW5nIGFsb25nIHRvIGZ0cCBmb3IgZGlyZWN0b3J5CiAJCQkJbGlzdGluZy4gIERlZmF1bHRzOgogCQkJCSB1bml4IG9yIGc6bmV0cndfY3lnd2luIHNldDogOiAibHMgLWxGIgotCQkJCSBvdGhlcndpc2UgICAgICAgICAgICAgICAgICAgICAiZGlyIgorCQkJCSBvdGhlcndpc2UJCSAgICAgICAiZGlyIgogCiAgICpnOm5ldHJ3X2hpZGUqCQkJaWYgdHJ1ZSwgdGhlIGhpZGluZyBsaXN0IGlzIHVzZWQKIAkJCQkgZGVmYXVsdDogPTAKQEAgLTc4Niw3ICs3ODYsNyBAQAogCiAgICpnOm5ldHJ3X2xpc3RfY21kKgkJY29tbWFuZCBmb3IgbGlzdGluZyByZW1vdGUgZGlyZWN0b3JpZXMKIAkJCQkgZGVmYXVsdDogKGlmIHNzaCBpcyBleGVjdXRhYmxlKQotCQkJCSAgICAgICAgICAic3NoIEhPU1ROQU1FIGxzIC1GTGEiCisJCQkJCSAgInNzaCBIT1NUTkFNRSBscyAtRkxhIgogCiAgICpnOm5ldHJ3X2xvbmdsaXN0KgkJaWYgPTEsIHRoZW4gbG9uZyBsaXN0aW5nIHdpbGwgYmUgZGVmYXVsdAogCkBAIC04MjcsNyArODI3LDcgQEAKICAgKmc6bmV0cndfc29ydF9zZXF1ZW5jZSoJd2hlbiBzb3J0aW5nIGJ5IG5hbWUsIGZpcnN0IHNvcnQgYnkgdGhlCiAJCQkJY29tbWEtc2VwYXJhdGVkIHBhdHRlcm4gc2VxdWVuY2UKIAkJCQkgZGVmYXVsdDogJ1tcL10kLCosXC5iYWskLFwubyQsXC5oJCwKLQkJCQkgICAgICAgICAgIFwuaW5mbyQsXC5zd3AkLFwub2JqJCcKKwkJCQkJICAgXC5pbmZvJCxcLnN3cCQsXC5vYmokJwogCiAgICpnOm5ldHJ3X3NzaF9jbWQqCQlPbmUgbWF5IHNwZWNpZnkgYW4gZXhlY3V0YWJsZSBjb21tYW5kCiAJCQkJdG8gdXNlIGluc3RlYWQgb2Ygc3NoIGZvciByZW1vdGUgYWN0aW9ucwpAQCAtODk0LDIxICs4OTQsMjEgQEAKIAogICAgICA6RXhwbG9yZVshXSAgIFtkaXJdLi4uIEV4cGxvcmUgZGlyZWN0b3J5IG9mIGN1cnJlbnQgZmlsZSAgICAgICAqOkV4cGxvcmUqCiAgICAgIDpTZXhwbG9yZVshXSAgW2Rpcl0uLi4gU3BsaXQmRXhwbG9yZSBkaXJlY3Rvcnkgb2YgY3VycmVudCBmaWxlICo6U2V4cGxvcmUqCi0gICAgIDpIZXhwbG9yZVshXSAgW2Rpcl0uLi4gSG9yaXpvbnRhbCBTcGxpdCAmIEV4cGxvcmUgICAgICAgICAgICAgICo6SGV4cGxvcmUqCi0gICAgIDpWZXhwbG9yZVshXSAgW2Rpcl0uLi4gVmVydGljYWwgICBTcGxpdCAmIEV4cGxvcmUgICAgICAgICAgICAgICo6VmV4cGxvcmUqCisgICAgIDpIZXhwbG9yZVshXSAgW2Rpcl0uLi4gSG9yaXpvbnRhbCBTcGxpdCAmIEV4cGxvcmUJCSAgICAqOkhleHBsb3JlKgorICAgICA6VmV4cGxvcmVbIV0gIFtkaXJdLi4uIFZlcnRpY2FsICAgU3BsaXQgJiBFeHBsb3JlCQkgICAgKjpWZXhwbG9yZSoKIAogICAgICBVc2VkIHdpdGggOkV4cGxvcmUgKiovcGF0dGVybiA6Ci0gICAgIDpOZXhwbG9yZS4uLi4uLi4uLi4uLi4gZ28gdG8gbmV4dCBtYXRjaGluZyBmaWxlICAgICAgICAgICAgICAgICo6TmV4cGxvcmUqCi0gICAgIDpQZXhwbG9yZS4uLi4uLi4uLi4uLi4gZ28gdG8gcHJldmlvdXMgbWF0Y2hpbmcgZmlsZSAgICAgICAgICAgICo6UGV4cGxvcmUqCisgICAgIDpOZXhwbG9yZS4uLi4uLi4uLi4uLi4gZ28gdG8gbmV4dCBtYXRjaGluZyBmaWxlCQkgICAgKjpOZXhwbG9yZSoKKyAgICAgOlBleHBsb3JlLi4uLi4uLi4uLi4uLiBnbyB0byBwcmV2aW91cyBtYXRjaGluZyBmaWxlCSAgICAqOlBleHBsb3JlKgogCiA6RXhwbG9yZSAgd2lsbCBvcGVuIHRoZSBsb2NhbC1kaXJlY3RvcnkgYnJvd3NlciBvbiB0aGUgY3VycmVudCBmaWxlJ3MKLSAgICAgICAgICBkaXJlY3RvcnkgKG9yIG9uIGRpcmVjdG9yeSBbZGlyXSBpZiBzcGVjaWZpZWQpLiAgVGhlIHdpbmRvdyB3aWxsIGJlCisJICBkaXJlY3RvcnkgKG9yIG9uIGRpcmVjdG9yeSBbZGlyXSBpZiBzcGVjaWZpZWQpLiAgVGhlIHdpbmRvdyB3aWxsIGJlCiAJICBzcGxpdCBvbmx5IGlmIHRoZSBmaWxlIGhhcyBiZWVuIG1vZGlmaWVkLCBvdGhlcndpc2UgdGhlIGJyb3dzaW5nCiAJICB3aW5kb3cgd2lsbCB0YWtlIG92ZXIgdGhhdCB3aW5kb3cuICBOb3JtYWxseSB0aGUgc3BsaXR0aW5nIGlzIHRha2VuCiAJICBob3Jpem9udGFsbHkuCiA6RXhwbG9yZSEgaXMgbGlrZSA6RXhwbG9yZSwgYnV0IHdpbGwgdXNlIHZlcnRpY2FsIHNwbGl0dGluZy4KIDpTZXhwbG9yZSB3aWxsIGFsd2F5cyBzcGxpdCB0aGUgd2luZG93IGJlZm9yZSBpbnZva2luZyB0aGUgbG9jYWwtZGlyZWN0b3J5Ci0gICAgICAgICAgYnJvd3Nlci4gIEFzIHdpdGggRXhwbG9yZSwgdGhlIHNwbGl0dGluZyBpcyBub3JtYWxseSBkb25lCisJICBicm93c2VyLiAgQXMgd2l0aCBFeHBsb3JlLCB0aGUgc3BsaXR0aW5nIGlzIG5vcm1hbGx5IGRvbmUKIAkgIGhvcml6b250YWxseS4KIDpTZXhwbG9yZSEgW2Rpcl0gaXMgbGlrZSA6U2V4cGxvcmUsIGJ1dCB0aGUgc3BsaXR0aW5nIHdpbGwgYmUgZG9uZSB2ZXJ0aWNhbGx5LgogOkhleHBsb3JlICBbZGlyXSBkb2VzIGFuIDpFeHBsb3JlIHdpdGggfDpiZWxvd3JpZ2h0fCBob3Jpem9udGFsIHNwbGl0dGluZy4KQEAgLTEwMDUsNyArMTAwNSw3IEBACiBCcm93c2luZyBpcyBzaW1wbGU6IG1vdmUgdGhlIGN1cnNvciBvbnRvIGEgZmlsZSBvciBkaXJlY3Rvcnkgb2YgaW50ZXJlc3QuCiBIaXR0aW5nIHRoZSA8Y3I+ICh0aGUgcmV0dXJuIGtleSkgd2lsbCBzZWxlY3QgdGhlIGZpbGUgb3IgZGlyZWN0b3J5LgogRGlyZWN0b3JpZXMgd2lsbCB0aGVtc2VsdmVzIGJlIGxpc3RlZCwgYW5kIGZpbGVzIHdpbGwgYmUgb3BlbmVkIHVzaW5nIHRoZQotcHJvdG9jb2wgZ2l2ZW4gaW4gdGhlIG9yaWdpbmFsIHJlYWQgcmVxdWVzdC4gIAorcHJvdG9jb2wgZ2l2ZW4gaW4gdGhlIG9yaWdpbmFsIHJlYWQgcmVxdWVzdC4KIAogICBDQVZFQVQ6IFRoZXJlIGFyZSB0aHJlZSBmb3JtcyBvZiBsaXN0aW5nIChzZWUgfG5ldHJ3LWl8KS4gIE5ldHJ3IGFzc3VtZXMKICAgdGhhdCB0d28gb3IgbW9yZSBzcGFjZXMgZGVsaW1pdCBmaWxlbmFtZXMgYW5kIGRpcmVjdG9yeSBuYW1lcyBmb3IgdGhlIGxvbmcKQEAgLTEyNTUsNyArMTI1NSw3IEBACiAgICAgSWYgZzpuZXRyd19icm93c2V4X3ZpZXdlciA9PSAnLScsIHRoZW4gbmV0cndGaWxlSGFuZGxlcigpIHdpbGwgYmUKICAgICBpbnZva2VkIGZpcnN0IChzZWUgfG5ldHJ3X2ZpbGVoYW5kbGVyfCkuCiAKLSAgKiBmb3IgV2luZG93cyAzMiBvciA2NCwgdGhlIHVybCBhbmQgRmlsZVByb3RvY29sSGFuZGxlciBkbGxzIGFyZSB1c2VkLiAgCisgICogZm9yIFdpbmRvd3MgMzIgb3IgNjQsIHRoZSB1cmwgYW5kIEZpbGVQcm90b2NvbEhhbmRsZXIgZGxscyBhcmUgdXNlZC4KICAgKiBmb3IgR25vbWUgKHdpdGggZ25vbWUtb3Blbik6IGdub21lLW9wZW4gaXMgdXNlZC4KICAgKiBmb3IgS0RFICh3aXRoIGtmbWNsaWVudCk6IGtmbWNsaWVudCBpcyB1c2VkLgogICAqIG90aGVyd2lzZSB0aGUgbmV0cndGaWxlSGFuZGxlciBwbHVnaW4gaXMgdXNlZC4KQEAgLTEyNzAsNyArMTI3MCw3IEBACiBleHRlbnNpb24uICBPZiBjb3Vyc2UsIHRoZSBoYW5kbGVyIGZ1bmN0aW9uIG11c3QgZXhpc3QgZm9yIGl0IHRvIGJlIGNhbGxlZCEKID4KICBFeC4gbXlwZ20uaHRtbCAgIHggLT4KLSAgICAgICAgICAgICAgICAgIG5ldHJ3RmlsZUhhbmRsZXJfaHRtbCgic2NwOi8vdXNlckBob3N0L3NvbWUvcGF0aC9teXBnbS5odG1sIikKKwkJICBuZXRyd0ZpbGVIYW5kbGVyX2h0bWwoInNjcDovL3VzZXJAaG9zdC9zb21lL3BhdGgvbXlwZ20uaHRtbCIpCiA8CiBTZWUgdGhlIDxwbHVnaW4vbmV0cndGaWxlSGFuZGxlcnMudmltPiBmb3IgYW4gZXhhbXBsZSBvZiBob3cgdG8gaGFuZGxlIGFuIGh0bWwKIGZpbGUgd2l0aCBtb3ppbGxhLgpAQCAtMTUyNSw3ICsxNTI1LDcgQEAKIAkgICAgICogZzpuZXRyd19icm93c2V4X3ZpZXdlciBpbXBsZW1lbnRlZAogCSAgICAgKiBNaWtvbGFqIE1hY2hvd3NraSBwb2ludGVkIG91dCB0aGF0IGdub21lLW9wZW4gaXMgb2Z0ZW4KIAkgICAgICAgZXhlY3V0YWJsZSB1bmRlciBLREUgc3lzdGVtcywgYWx0aG91Z2ggaXQgaXMgZWZmZWN0aXZlbHkKLQkgICAgICAgbm90IGZ1bmN0aW9uYWwuICBOZXRCcm93c2VYIG5vdyBsb29rcyBmb3IgImtpY2tlciIgYXMgCisJICAgICAgIG5vdCBmdW5jdGlvbmFsLiAgTmV0QnJvd3NlWCBub3cgbG9va3MgZm9yICJraWNrZXIiIGFzCiAJICAgICAgIGEgcnVubmluZyBwcm9jZXNzIHRvIGRldGVybWluZSBpZiBLREUgaXMgYWN0dWFsbHkgdGhlCiAJICAgICAgIHJlYWxseSBydW5uaW5nLgogCSAgICAgKiBFeHBsb3JlcidzIE8gZnVuY3Rpb25hbGl0eSB3YXMgaW5hZHZlcnRlbnRseSBsZWZ0IG91dC4KQEAgLTE1ODMsNyArMTU4Myw3IEBACiAJICAgICAgIGluIG9yZGVyIHRvIGFsbG93IHRoZW0gdG8gYmUgdXNlZCBmb3IgbW90aW9ucwogCXY2NTogKiBCcm93c2VyIGZ1bmN0aW9ucyBub3cgdXNlIE5ldE9wdGlvblNhdmUvUmVzdG9yZTsgaW4gcGFydGljdWxhciwKIAkgICAgICAgbmV0cncgbm93IHdvcmtzIGFyb3VuZCB0aGUgcmVwb3J0IHNldHRpbmcKLQl2NjQ6ICogQnVnZml4IC0gYnJvd3NpbmcgYSAiLyIgZGlyZWN0b3J5IChVbml4KSB5aWVsZGVkIGJ1ZmZlcnMgCisJdjY0OiAqIEJ1Z2ZpeCAtIGJyb3dzaW5nIGEgIi8iIGRpcmVjdG9yeSAoVW5peCkgeWllbGRlZCBidWZmZXJzCiAJICAgICAgIG5hbWVkICJbU2NyYXRjaF0iIGluc3RlYWQgb2YgIi8iCiAJICAgICAqIEJ1Z2ZpeCAtIHJlbW90ZSBicm93c2luZyB3aXRoIGZ0cCB3YXMgb21pdHRpbmcgdGhlIC4vIGFuZCAuLi8KIAl2NjM6ICogbmV0cncgbm93IHRha2VzIGFkdmFudGFnZSBvZiBhdXRvbG9hZCAoYW5kIHJlcXVpcmVzIDcuMCkKQEAgLTE3NDEsMTIgKzE3NDEsMTIgQEAKIAogCUrDqXLDtG1lIEF1Z8OpCQktLSBhbHNvIHVzaW5nIG5ldyBidWZmZXIgbWV0aG9kIHdpdGggZnRwKy5uZXRyYwogCUJyYW0gTW9vbGVuYWFyCQktLSBvYnZpb3VzbHkgdmltIGl0c2VsZiwgOmUgYW5kIHY6Y21kYXJnIHVzZSwKLQkgICAgICAgICAgICAgICAgICAgICAgICAgICBmZXRjaCwuLi4KKwkJCQkgICBmZXRjaCwuLi4KIAlZYXN1aGlybyBNYXRzdW1vdG8JLS0gcG9pbnRpbmcgb3V0IHVuZG8rMHIgcHJvYmxlbSBhbmQgYSBzb2x1dGlvbgogCUVyaWsgV2FyZW5kb3JwaAkJLS0gZm9yIHNldmVyYWwgc3VnZ2VzdGlvbnMgKGc6bmV0cndfLi4uX2NtZAogCQkJCSAgIHZhcmlhYmxlcywgcnN5bmMgZXRjKQogCURvdWcgQ2xhYXIJCS0tIG1vZGlmaWNhdGlvbnMgdG8gdGVzdCBmb3Igc3VjY2VzcyB3aXRoIGZ0cAotCSAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbgorCQkJCSAgIG9wZXJhdGlvbgogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICB2aW06dHc9Nzg6dHM9ODpmdD1oZWxwOm5vcmw6ZmRtPW1hcmtlcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvcGlfcGFyZW4udHh0IGIvcnVudGltZS9kb2MvcGlfcGFyZW4udHh0CmluZGV4IDczMjZhNGUuLmI3MjFkZTAgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3BpX3BhcmVuLnR4dAorKysgYi9ydW50aW1lL2RvYy9waV9wYXJlbi50eHQKQEAgLTEsNCArMSw0IEBACi0qcGlfcGFyZW4udHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKKypwaV9wYXJlbi50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvcGlfc3BlYy50eHQgYi9ydW50aW1lL2RvYy9waV9zcGVjLnR4dAppbmRleCBlMGIwZTJjLi44YmEwZmZhIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9waV9zcGVjLnR4dAorKysgYi9ydW50aW1lL2RvYy9waV9zcGVjLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpwaV9zcGVjLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnBpX3NwZWMudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CiAKIGJ5IEd1c3Rhdm8gTmllbWV5ZXIgfgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9waV90YXIudHh0IGIvcnVudGltZS9kb2MvcGlfdGFyLnR4dAppbmRleCBmNGMzNjVkLi4wNzM4ZDA3IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9waV90YXIudHh0CisrKyBiL3J1bnRpbWUvZG9jL3BpX3Rhci50eHQKQEAgLTEsOCArMSw4IEBACi0qcGlfdGFyLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKKypwaV90YXIudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAzMAogCi0gICAgICAgCSAgICAgICAJICAgICAgICs9PT09PT09PT09PT09PT09PT09PSsKLSAgICAgICAJICAgICAgIAkgICAgICAgfCBUYXIgRmlsZSBJbnRlcmZhY2UgfAotICAgICAgIAkgICAgICAgCSAgICAgICArPT09PT09PT09PT09PT09PT09PT0rCisJCSAgICAgICArPT09PT09PT09PT09PT09PT09PT0rCisJCSAgICAgICB8IFRhciBGaWxlIEludGVyZmFjZSB8CisJCSAgICAgICArPT09PT09PT09PT09PT09PT09PT0rCiAKIEF1dGhvcjogIENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLiAgPE5kck9jaGlwQFNjYW1wYmVsbFBmYW1pbHkuQWJpek0+CiAJICAocmVtb3ZlIE5PU1BBTSBmcm9tIENhbXBiZWxsJ3MgZW1haWwgZmlyc3QpCkBAIC0zMSwxMSArMzEsMTEgQEAKIAogICAgVGhlc2Ugb3B0aW9ucyBhcmUgdmFyaWFibGVzIHRoYXQgb25lIG1heSBjaGFuZ2UsIHR5cGljYWxseSBpbiBvbmUncwogICAgPC52aW1yYz4gZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0Ci0gICBWYXJpYWJsZSAgICAgICAgICAgICAgIFZhbHVlICAgRXhwbGFuYXRpb24KKwkJCSBEZWZhdWx0CisgICBWYXJpYWJsZQkJICBWYWx1ZSAgIEV4cGxhbmF0aW9uCiAgICAqZzp0YXJfYnJvd3Nlb3B0aW9ucyogICJQdGYiICAgdXNlZCB0byBnZXQgYSBsaXN0IG9mIGNvbnRlbnRzCi0gICAqZzp0YXJfcmVhZG9wdGlvbnMqICAgICJPUHhmIiAgdXNlZCB0byBleHRyYWN0IGEgZmlsZSBmcm9tIGEgdGFyYmFsbAotICAgKmc6dGFyX2NtZCogICAgICAgICAgICAidGFyIiAgIHRoZSBuYW1lIG9mIHRoZSB0YXIgcHJvZ3JhbQorICAgKmc6dGFyX3JlYWRvcHRpb25zKgkgICJPUHhmIiAgdXNlZCB0byBleHRyYWN0IGEgZmlsZSBmcm9tIGEgdGFyYmFsbAorICAgKmc6dGFyX2NtZCoJCSAgInRhciIgICB0aGUgbmFtZSBvZiB0aGUgdGFyIHByb2dyYW0KICAgICpnOnRhcl93cml0ZW9wdGlvbnMqICAgInVmIiAgICB1c2VkIHRvIHVwZGF0ZS9yZXBsYWNlIGEgZmlsZQogCiAKQEAgLTQ0LDE5ICs0NCwxOSBAQAogCiAgICB2NyBNYXIgMjIsIDIwMDYgKiB3b3JrIG9uIG1ha2luZyB0YXIgcGx1Z2luIHdvcmsgYWNyb3NzIG5ldHdvcmsKICAgICAgIE1hciAyNywgMjAwNiAqIGc6dGFyX2NtZCBub3cgYXZhaWxhYmxlIGZvciB1c2VycyB0byBjaGFuZ2UgdGhlIG5hbWUKLSAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSB0YXIgcHJvZ3JhbSB0byBiZSB1c2VkLiAgQnkgZGVmYXVsdCwgb2YgY291cnNlLAorCQkgICAgIG9mIHRoZSB0YXIgcHJvZ3JhbSB0byBiZSB1c2VkLiAgQnkgZGVmYXVsdCwgb2YgY291cnNlLAogCQkgICAgIGl0cyAidGFyIi4KICAgIHY2IERlYyAyMSwgMjAwNSAqIHdyaXRpbmcgdG8gZmlsZXMgbm90IGluIGRpcmVjdG9yaWVzIGNhdXNlZCBwcm9ibGVtcyAtCi0gICAgICAgICAgICAgICAgICAgICBmaXhlZCAocG9pbnRlZCBvdXQgYnkgQ2hyaXN0aWFuIFJvYmluc29uKQorCQkgICAgIGZpeGVkIChwb2ludGVkIG91dCBieSBDaHJpc3RpYW4gUm9iaW5zb24pCiAgICB2NSBOb3YgMjIsIDIwMDUgKiByZXBvcnQgb3B0aW9uIHdvcmthcm91bmQgaW5zdGFsbGVkCiAgICB2MyBTZXAgMTYsIDIwMDUgKiBoYW5kbGVzIHdyaXRpbmcgZmlsZXMgaW4gYW4gYXJjaGl2ZSBiYWNrIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZQorCQkgICAgIGFyY2hpdmUKICAgICAgIE9jdCAxOCwgMjAwNSAqIDxhbWF0Y2g+IHVzZWQgaW5zdGVhZCBvZiA8YWZpbGU+IGluIGF1dG9jbWRzCiAgICAgICBPY3QgMTgsIDIwMDUgKiBoYW5kbGVzIHdyaXRpbmcgdG8gY29tcHJlc3NlZCBhcmNoaXZlcwogICAgICAgTm92IDAzLCAyMDA1ICogaGFuZGxlcyB3cml0aW5nIHRhcmZpbGVzIGFjcm9zcyBhIG5ldHdvcmsgdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgIG5ldHJ3I05ldFdyaXRlKCkKLSAgIHYyICAgICAgICAgICAgICAqIGNvbnZlcnRlZCB0byB1c2UgVmltNydzIG5ldyBhdXRvbG9hZCBmZWF0dXJlIGJ5Ci0gICAgICAgICAgICAgICAgICAgICBCcmFtIE1vb2xlbmFhcgorCQkgICAgIG5ldHJ3I05ldFdyaXRlKCkKKyAgIHYyCQkgICAqIGNvbnZlcnRlZCB0byB1c2UgVmltNydzIG5ldyBhdXRvbG9hZCBmZWF0dXJlIGJ5CisJCSAgICAgQnJhbSBNb29sZW5hYXIKICAgIHYxIChvcmlnaW5hbCkgICAqIE1pY2hhZWwgVG9yZW4gKHNlZSBodHRwOi8vbWljaGFlbC50b3Jlbi5uZXQvY29kZS8pCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvcGlfdmltYmFsbC50eHQgYi9ydW50aW1lL2RvYy9waV92aW1iYWxsLnR4dAppbmRleCBkOWU4N2U4Li44NWRhYjQxIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9waV92aW1iYWxsLnR4dAorKysgYi9ydW50aW1lL2RvYy9waV92aW1iYWxsLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpwaV92aW1iYWxsLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjcKKypwaV92aW1iYWxsLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMzAKIAogCQkJICAgICAgIC0tLS0tLS0tLS0tLS0tLS0KIAkJCSAgICAgICBWaW1iYWxsIEFyY2hpdmVyCkBAIC03LDggKzcsOCBAQAogQXV0aG9yOiAgQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuICA8TmRyT2NoaXBAU2NhbXBiZWxsUGZhbWlseS5BYml6TT4KIAkgIChyZW1vdmUgTk9TUEFNIGZyb20gQ2FtcGJlbGwncyBlbWFpbCBmaXJzdCkKIENvcHlyaWdodDogKGMpIDIwMDQtMjAwNiBieSBDaGFybGVzIEUuIENhbXBiZWxsLCBKci4JKlZpbWJhbGwtY29weXJpZ2h0KgotICAgICAgICAgICBUaGUgVklNIExJQ0VOU0UgYXBwbGllcyB0byBWaW1iYWxsLnZpbSwgYW5kIFZpbWJhbGwudHh0Ci0gICAgICAgICAgIChzZWUgfGNvcHlyaWdodHwpIGV4Y2VwdCB1c2UgIlZpbWJhbGwiIGluc3RlYWQgb2YgIlZpbSIuCisJICAgVGhlIFZJTSBMSUNFTlNFIGFwcGxpZXMgdG8gVmltYmFsbC52aW0sIGFuZCBWaW1iYWxsLnR4dAorCSAgIChzZWUgfGNvcHlyaWdodHwpIGV4Y2VwdCB1c2UgIlZpbWJhbGwiIGluc3RlYWQgb2YgIlZpbSIuCiAJICAgTm8gd2FycmFudHksIGV4cHJlc3Mgb3IgaW1wbGllZC4KIAkgICBVc2UgQXQtWW91ci1Pd24tUmlzayEKIApAQCAtNTMsNyArNTMsNyBAQAogCWxpbmUuCiAKIAkJOlZpbWJhbGxMaXN0CQkJCSp2aW1iYWxsLXZpbWJhbGxsaXN0KgotCQorCiAJVGhpcyBjb21tYW5kIHdpbGwgdGVsbCBWaW1iYWxsIHRvIGxpc3QgdGhlIGZpbGVzIGluIHRoZSBhcmNoaXZlLCBhbG9uZwogCXdpdGggdGhlaXIgbGVuZ3RocyBpbiBsaW5lcy4KIApAQCAtNjIsMjIgKzYyLDIyIEBACiAzLiBWaW1iYWxsIEhpc3RvcnkJCQkJCSp2aW1iYWxsLWhpc3RvcnkqIHt7ezEKIAogCTExIDogQXByIDI3LCAyMDA2ICogVmltYmFsbExpc3Qgd291bGQgY3JlYXRlIG1pc3Npbmcgc3ViZGlyZWN0b3JpZXMgdGhhdAotCSAgICAgICAgICAgICAgICAgICAgdGhlIHZpbWJhbGwgc3BlY2lmaWVkIHdlcmUgbmVlZGVkLiAgRml4ZWQuCisJCQkgICAgdGhlIHZpbWJhbGwgc3BlY2lmaWVkIHdlcmUgbmVlZGVkLglGaXhlZC4KIAkxMCA6IEFwciAyNywgMjAwNiAqIG1vdmVkIGFsbCBzZXR0aW5nIHNhdmluZy9yZXN0b3JhdGlvbiB0byBhIHBhaXIgb2YKLQkgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy4gIEluY2x1ZGVkIHNvbWUgbW9yZSBzZXR0aW5ncyBpbiB0aGVtCisJCQkgICAgZnVuY3Rpb25zLglJbmNsdWRlZCBzb21lIG1vcmUgc2V0dGluZ3MgaW4gdGhlbQogCQkJICAgIHdoaWNoIGZyZXF1ZW50bHkgY2F1c2UgdHJvdWJsZS4KIAk5ICA6IEFwciAyNiwgMjAwNiAqIHZhcmlvdXMgY2hhbmdlcyB0byBzdXBwb3J0IFdpbmRvd3MgcHJlZGlsaWN0aW9uCi0JICAgICAgICAgICAgICAgICAgICBmb3IgYmFja3NsYXNoZXMgYW5kIHNwYWNlcyBpbiBmaWxlIGFuZCBkaXJlY3RvcnkKKwkJCSAgICBmb3IgYmFja3NsYXNoZXMgYW5kIHNwYWNlcyBpbiBmaWxlIGFuZCBkaXJlY3RvcnkKIAkJCSAgICBuYW1lcy4KIAk3ICA6IEFwciAyNSwgMjAwNiAqIGJ5cGFzc2VzIGZvbGRlbmFibGUKLQkgICAgICAgICAgICAgICAgICAqIHVzZXMgbW9yZSBleGUgYW5kIGxlc3Mgbm9ybSEgKDp5YW5rIDpwdXQgZXRjKQorCQkJICAqIHVzZXMgbW9yZSBleGUgYW5kIGxlc3Mgbm9ybSEgKDp5YW5rIDpwdXQgZXRjKQogCQkJICAqIGRvZXMgYmV0dGVyIGF0IGluc3VyaW5nIGEgIlByZXNzIEVOVEVSIiBwcm9tcHQKIAkJCSAgICBhcHBlYXJzIHRvIGtlZXAgaXRzIG1lc3NhZ2VzIHZpc2libGUKIAk0ICA6IE1hciAzMSwgMjAwNiAqIEJ1ZlJlYWRQb3N0IHNlZW1zIHRvIGZpcmUgdHdpY2U7IEJ1ZlJlYWRFbnRlcgotCSAgICAgICAgICAgICAgICAgICAgb25seSBmaXJlcyBvbmNlLCBzbyB0aGUgIlNvdXJjZSB0aGlzIGZpbGUuLi4iCisJCQkgICAgb25seSBmaXJlcyBvbmNlLCBzbyB0aGUgIlNvdXJjZSB0aGlzIGZpbGUuLi4iCiAJCQkgICAgbWVzc2FnZSBpcyBub3cgaXNzdWVkIG9ubHkgb25jZS4KIAkzICA6IE1hciAyMCwgMjAwNiAqIHJlbW92ZWQgcXVlcnksIG5vdyByZXF1aXJlcyBzb3VyY2luZyB0byBiZQotCSAgICAgICAgICAgICAgICAgICAgZXh0cmFjdGVkICg6c28gJSkuICBNZXNzYWdlIHRvIHRoYXQgZWZmZWN0CisJCQkgICAgZXh0cmFjdGVkICg6c28gJSkuCU1lc3NhZ2UgdG8gdGhhdCBlZmZlY3QKIAkJCSAgICBpbmNsdWRlZC4KIAkJCSAgKiA6VmltYmFsbExpc3QgIG5vdyBzaG93cyBmaWxlcyB0aGF0IHdvdWxkIGJlCiAJCQkgICAgZXh0cmFjdGVkLgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvcGlfemlwLnR4dCBiL3J1bnRpbWUvZG9jL3BpX3ppcC50eHQKaW5kZXggM2ZiYTAzZC4uMTBhNjJmNiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvcGlfemlwLnR4dAorKysgYi9ydW50aW1lL2RvYy9waV96aXAudHh0CkBAIC0xLDQgKzEsNCBAQAotKnBpX3ppcC50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisqcGlfemlwLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMzAKIAogCQkJCSs9PT09PT09PT09PT09PT09PT09PSsKIAkJCQl8IFppcCBGaWxlIEludGVyZmFjZSB8CkBAIC03LDcgKzcsNyBAQAogQXV0aG9yOiAgQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuICA8TmRyT2NoaXBAU2NhbXBiZWxsUGZhbWlseS5BYml6TT4KIAkgIChyZW1vdmUgTk9TUEFNIGZyb20gQ2FtcGJlbGwncyBlbWFpbCBmaXJzdCkKIENvcHlyaWdodDogQ29weXJpZ2h0IChDKSAyMDA1LDIwMDYgQ2hhcmxlcyBFIENhbXBiZWxsLCBKciB7e3sxICp6aXAtY29weXJpZ2h0KgotICAgICAgICAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkIHRvIHVzZSBhbmQgZGlzdHJpYnV0ZSB0aGlzIGNvZGUsCisJICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCB0byB1c2UgYW5kIGRpc3RyaWJ1dGUgdGhpcyBjb2RlLAogCSAgIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBwcm92aWRlZCB0aGF0IHRoaXMgY29weXJpZ2h0CiAJICAgbm90aWNlIGlzIGNvcGllZCB3aXRoIGl0LiBMaWtlIGFueXRoaW5nIGVsc2UgdGhhdCdzIGZyZWUsCiAJICAgemlwLnZpbSwgemlwUGx1Z2luLnZpbSwgYW5kIHBpX3ppcC50eHQgYXJlIHByb3ZpZGVkICphcyBpcyoKQEAgLTM0LDIxICszNCwyMSBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAzLiBIaXN0b3J5CQkJCQkqemlwLWhpc3RvcnkqCiAgICB2OCBBcHIgMTAsIDIwMDYgKiBCcmFtIE1vb2xlbmFhciByZXBvcnRlZCB0aGF0IGhlIHJlY2VpdmVkIGFuIGVycm9yIG1lc3NhZ2UKLSAgICAgICAgICAgICAgICAgICAgIGR1ZSB0byAiUGF0dGVybiBub3QgZm91bmQ6IF4uKlwlMGMiOyB0aGlzIHdhcyBjYXVzZWQgYnkKKwkJICAgICBkdWUgdG8gIlBhdHRlcm4gbm90IGZvdW5kOiBeLipcJTBjIjsgdGhpcyB3YXMgY2F1c2VkIGJ5CiAJCSAgICAgc3RyaWR4IGZpbmRpbmcgYSBOYW1lLi4uIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmU7CiAJCSAgICAgemlwLnZpbSB0cmllZCA0LCRzL14uKlwlMGMvLywgYnV0IHRoYXQgZG9lc24ndCB3b3JrLgogCQkgICAgIEZpeGVkLgogICAgdjcgTWFyIDIyLCAyMDA2ICogZXNjYXBlZCBzb21lIGNoYXJhY3RlcnMgdGhhdCBjYW4gY2F1c2UgZmlsZW5hbWUgaGFuZGxpbmcKLSAgICAgICAgICAgICAgICAgICAgIHByb2JsZW1zLgorCQkgICAgIHByb2JsZW1zLgogICAgdjYgRGVjIDIxLCAyMDA1ICogd3JpdGluZyB0byBmaWxlcyBub3QgaW4gZGlyZWN0b3JpZXMgY2F1c2VkIHByb2JsZW1zIC0KLSAgICAgICAgICAgICAgICAgICAgIGZpeGVkIChwb2ludGVkIG91dCBieSBDaHJpc3RpYW4gUm9iaW5zb24pCisJCSAgICAgZml4ZWQgKHBvaW50ZWQgb3V0IGJ5IENocmlzdGlhbiBSb2JpbnNvbikKICAgIHY1IE5vdiAyMiwgMjAwNSAqIHJlcG9ydCBvcHRpb24gd29ya2Fyb3VuZCBpbnN0YWxsZWQKICAgIHYzIE9jdCAxOCwgMjAwNSAqIDxhbWF0Y2g+IHVzZWQgaW5zdGVhZCBvZiA8YWZpbGU+IGluIGF1dG9jbWRzCiAgICB2MiBTZXAgMTYsIDIwMDUgKiBzaWxlbmNlZCBzb21lIGNvbW1hbmRzIChhdm9pZGluZyBoaXQtZW50ZXIgcHJvbXB0KQotICAgICAgICAgICAgICAgICAgICogYmVnYW4gdGVzdGluZyB1bmRlciBXaW5kb3dzOyB3b3JrcyB0aHVzIGZhcgorCQkgICAqIGJlZ2FuIHRlc3RpbmcgdW5kZXIgV2luZG93czsgd29ya3MgdGh1cyBmYXIKIAkJICAgKiBmaWxldHlwZSBkZXRlY3Rpb24gZml4ZWQKICAgICAgIE5vdiAwMywgMjAwNSAqIGhhbmRsZXMgd3JpdGluZyB6aXBmaWxlcyBhY3Jvc3MgYSBuZXR3b3JrIHVzaW5nCi0gICAgICAgICAgICAgICAgICAgICBuZXRydyNOZXRXcml0ZSgpCisJCSAgICAgbmV0cncjTmV0V3JpdGUoKQogICAgdjEgU2VwIDE1LCAyMDA1ICogSW5pdGlhbCByZWxlYXNlLCBoYWQgYnJvd3NpbmcsIHJlYWRpbmcsIGFuZCB3cml0aW5nCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvcHJpbnQudHh0IGIvcnVudGltZS9kb2MvcHJpbnQudHh0CmluZGV4IDQ4NDRmMDAuLjY0ZjA4N2EgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3ByaW50LnR4dAorKysgYi9ydW50aW1lL2RvYy9wcmludC50eHQKQEAgLTEsNCArMSw0IEBACi0qcHJpbnQudHh0KiAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKKypwcmludC50eHQqICAgICBGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAzMAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMTAsNyArMTAsNyBAQAogMi4gUHJpbnQgb3B0aW9ucwkJCXxwcmludC1vcHRpb25zfAogMy4gUG9zdFNjcmlwdCBQcmludGluZwkJCXxwb3N0c2NyaXB0LXByaW50aW5nfAogNC4gUG9zdFNjcmlwdCBQcmludGluZyBFbmNvZGluZwkJfHBvc3RzY3JpcHQtcHJpbnQtZW5jb2Rpbmd8Ci01LiBQb3N0U2NyaXB0IENKSyBQcmludGluZyAJCXxwb3N0c2NyaXB0LWNqay1wcmludGluZ3wKKzUuIFBvc3RTY3JpcHQgQ0pLIFByaW50aW5nCQl8cG9zdHNjcmlwdC1jamstcHJpbnRpbmd8CiA2LiBQb3N0U2NyaXB0IFByaW50aW5nIFRyb3VibGVzaG9vdGluZwl8cG9zdHNjcmlwdC1wcmludC10cm91YmxlfAogNy4gUG9zdFNjcmlwdCBVdGlsaXRpZXMJCQl8cG9zdHNjcmlwdC1wcmludC11dGlsfAogOC4gRm9ybWZlZWQgQ2hhcmFjdGVycwkJCXxwcmludGluZy1mb3JtZmVlZHwKQEAgLTIxOCw3ICsyMTgsNyBAQAogICBKYXBhbmVzZQlKSVNfQ18xOTc4CiAJCUpJU19YXzE5ODMKIAkJSklTX1hfMTk5MAotCQlNU1dJTkRPV1MJV2luMy4xLzk1SiAoSklTIFggMTk5NyArIE5FQyArIAorCQlNU1dJTkRPV1MJV2luMy4xLzk1SiAoSklTIFggMTk5NyArIE5FQyArCiAJCQkJICBJQk0gZXh0ZW5zaW9ucykKIAkJS0FOSklUQUxLNglBcHBsZSBNYWMgS2FuamlUYWxrIFY2LngKIAkJS0FOSklUQUxLNwlBcHBsZSBNYWMgS2FuamlUYWxrIFY3LngKQEAgLTI1NCw3ICsyNTQsNyBAQAogCQlLQU5KSVRBTEs3CSAgIHgKIAogCQkJCWV1Yy1rcgkgY3A5NDkJdWNzLTIJdXRmLTggfgotICBLb3JlYW4JS1NfWF8xOTkyCSAgIHggICAKKyAgS29yZWFuCUtTX1hfMTk5MgkgICB4CiAJCU1BQwkJICAgeAogCQlNU1dJTkRPV1MJCSAgIHgKIAkJSVNPMTA2NDYJCQkgIHgJICB4CkBAIC0zMDcsNyArMzA3LDcgQEAKIAk6c2V0IHByaW50bWJmb250PXI6V2FkYU1pbi1SZWd1bGFyLGI6V2FkYU1pbi1Cb2xkLGM6eWVzCiA8CiAJCQkJCQkJKnBvcHQtb3B0aW9uKgotJ3ByaW50b3B0aW9ucycgJ3BvcHQnIAlzdHJpbmcgKGRlZmF1bHQgIiIpCisncHJpbnRvcHRpb25zJyAncG9wdCcJc3RyaW5nIChkZWZhdWx0ICIiKQogCQkJZ2xvYmFsCiBUaGlzIGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgaXRlbXMgdGhhdCBjb250cm9sIHRoZSBmb3JtYXQgb2YgdGhlIG91dHB1dAogb2YgfDpoYXJkY29weXw6CkBAIC0zMzYsNyArMzM2LDcgQEAKIAkJCXRodXMgdXNlZnVsIHdoZW4gcHJpbnRpbmcgbGFyZ2UgZmlsZXMuCiAgIHN5bnRheDp5CQlEbyBzeW50YXggaGlnaGxpZ2h0aW5nLgogICBzeW50YXg6YSAgKGRlZmF1bHQpCVVzZSBzeW50YXggaGlnaGxpZ2h0aW5nIGlmIHRoZSBwcmludGVyIGFwcGVhcnMgdG8gYmUKLSAgCQkJYWJsZSB0byBwcmludCBjb2xvciBvciBncmV5LgorCQkJYWJsZSB0byBwcmludCBjb2xvciBvciBncmV5LgogCiAgIG51bWJlcjp5CQlJbmNsdWRlIGxpbmUgbnVtYmVycyBpbiB0aGUgcHJpbnRlZCBvdXRwdXQuCiAgIG51bWJlcjpuICAoZGVmYXVsdCkJTm8gbGluZSBudW1iZXJzLgpAQCAtMzQ2LDE2ICszNDYsMTYgQEAKIAogICBkdXBsZXg6b2ZmCQlQcmludCBvbiBvbmUgc2lkZS4KICAgZHVwbGV4OmxvbmcgKGRlZmF1bHQpCVByaW50IG9uIGJvdGggc2lkZXMgKHdoZW4gcG9zc2libGUpLCBiaW5kIG9uIGxvbmcKLSAgCQkJc2lkZS4KKwkJCXNpZGUuCiAgIGR1cGxleDpzaG9ydAkJUHJpbnQgb24gYm90aCBzaWRlcyAod2hlbiBwb3NzaWJsZSksIGJpbmQgb24gc2hvcnQKLSAgCQkJc2lkZS4KKwkJCXNpZGUuCiAKICAgY29sbGF0ZTp5ICAoZGVmYXVsdCkJQ29sbGF0aW5nOiAxIDIgMywgMSAyIDMsIDEgMiAzCiAgIGNvbGxhdGU6bgkJTm8gY29sbGF0aW5nOiAxIDEgMSwgMiAyIDIsIDMgMyAzCiAKICAgam9ic3BsaXQ6biAoZGVmYXVsdCkJRG8gYWxsIGNvcGllcyBpbiBvbmUgcHJpbnQgam9iCiAgIGpvYnNwbGl0OnkJCURvIGVhY2ggY29weSBhcyBhIHNlcGFyYXRlIHByaW50IGpvYi4gIFVzZWZ1bCB3aGVuCi0gIAkJCWRvaW5nIE4tdXAgcG9zdHByb2Nlc3NpbmcuCisJCQlkb2luZyBOLXVwIHBvc3Rwcm9jZXNzaW5nLgogCiAgIHBvcnRyYWl0OnkgKGRlZmF1bHQpCU9yaWVudGF0aW9uIGlzIHBvcnRyYWl0LgogICBwb3J0cmFpdDpuCQlPcmllbnRhdGlvbiBpcyBsYW5kc2NhcGUuCkBAIC0zNzksNyArMzc5LDcgQEAKIAkJCXRhYmxvaWQgICAgIDI3Ljk2IHggNDMuMTMgICAgMTEgICAgeCAxNwogCiAgIGZvcm1mZWVkOm4gKGRlZmF1bHQpCVRyZWF0IGZvcm0gZmVlZCBjaGFyYWN0ZXJzICgweDBjKSBhcyBhIG5vcm1hbCBwcmludAotICAJCQljaGFyYWN0ZXIuCisJCQljaGFyYWN0ZXIuCiAgIGZvcm1mZWVkOnkJCVdoZW4gYSBmb3JtIGZlZWQgY2hhcmFjdGVyIGlzIGVuY291bnRlcmVkLCBjb250aW51ZQogCQkJcHJpbnRpbmcgb2YgdGhlIGN1cnJlbnQgbGluZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQogCQkJZmlyc3QgbGluZSBvbiBhIG5ldyBwYWdlLgpAQCAtNDg0LDcgKzQ4NCw3IEBACiAKICAgaHR0cDovL2V4YW1wbGVzLm9yZWlsbHkuY29tL2Nqa3ZpbmZvL2Fkb2JlL3NhbXBsZXMvCiAKLVlvdSBjYW4gZmluZCBkZXNjcmlwdGlvbnMgb2YgdGhlIHZhcmlvdXMgZm9udHMgaW4gdGhlIHJlYWQgbWUgZmlsZSBhdCAKK1lvdSBjYW4gZmluZCBkZXNjcmlwdGlvbnMgb2YgdGhlIHZhcmlvdXMgZm9udHMgaW4gdGhlIHJlYWQgbWUgZmlsZSBhdAogCiAgIGh0dHA6Ly9leGFtcGxlcy5vcmVpbGx5LmNvbS9jamt2aW5mby9hZG9iZS8wMFJFQURNRQogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9xdWlja2ZpeC50eHQgYi9ydW50aW1lL2RvYy9xdWlja2ZpeC50eHQKaW5kZXggNzMzMWM4OS4uNDAwOGE2ZSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvcXVpY2tmaXgudHh0CisrKyBiL3J1bnRpbWUvZG9jL3F1aWNrZml4LnR4dApAQCAtMSw0ICsxLDQgQEAKLSpxdWlja2ZpeC50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnF1aWNrZml4LnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC04OCw3ICs4OCw3IEBACiAJCQlhbGwsIGdvIHRvIHRoZSBbY291bnRdIHByZXZpb3VzIGVycm9yLiAgU2VlIHw6Y2N8IGZvcgogCQkJWyFdIGFuZCAnc3dpdGNoYnVmJy4KIAotCQkJCQorCiA6W2NvdW50XWxOW2V4dF1bIV0JCQkqOmxwKiAqOmxwcmV2aW91cyogKjpsTiogKjpsTmV4dCoKIDpbY291bnRdbHBbcmV2aW91c11bIV0JU2FtZSBhcyAiOmNOZXh0IiBhbmQgIjpjcHJldmlvdXMiLCBleGNlcHQgdGhlIGxvY2F0aW9uCiAJCQlsaXN0IGZvciB0aGUgY3VycmVudCB3aW5kb3cgaXMgdXNlZCBpbnN0ZWFkIG9mIHRoZQpAQCAtMTU4LDEyICsxNTgsMTIgQEAKIAkJCVlvdSBjYW4gbm90IHVzZSB0aGUgLXEgY29tbWFuZC1saW5lIG9wdGlvbiB0byBzZXQKIAkJCXRoZSBsb2NhdGlvbiBsaXN0LgogCi0JCQorCiA6Y2dbZXRmaWxlXVshXSBbZXJyb3JmaWxlXQkJCQkqOmNnKiAqOmNnZXRmaWxlKgogCQkJUmVhZCB0aGUgZXJyb3IgZmlsZS4gIEp1c3QgbGlrZSAiOmNmaWxlIiBidXQgZG9uJ3QKIAkJCWp1bXAgdG8gdGhlIGZpcnN0IGVycm9yLgogCi0JCQkKKwogOmxnW2V0ZmlsZV1bIV0gW2Vycm9yZmlsZV0JCQkJKjpsZyogKjpsZ2V0ZmlsZSoKIAkJCVNhbWUgYXMgIjpjZ2V0ZmlsZSIsIGV4Y2VwdCB0aGUgbG9jYXRpb24gbGlzdCBmb3IgdGhlCiAJCQljdXJyZW50IHdpbmRvdyBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIHF1aWNrZml4IGxpc3QuCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9xdWlja3JlZi50eHQgYi9ydW50aW1lL2RvYy9xdWlja3JlZi50eHQKaW5kZXggNDVhM2E3ZC4uZGQ2OGIyYiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvcXVpY2tyZWYudHh0CisrKyBiL3J1bnRpbWUvZG9jL3F1aWNrcmVmLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpxdWlja3JlZi50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnF1aWNrcmVmLnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC01ODgsNTggKzU4OCw1OCBAQAogCQkJCQkgIHRoZSBoZWxwLgogCiBTaG9ydCBleHBsYW5hdGlvbiBvZiBlYWNoIG9wdGlvbjoJCSpvcHRpb24tbGlzdCoKLSdhbGVwaCcgICAgICAgICAgICdhbCcgICAgICBBU0NJSSBjb2RlIG9mIHRoZSBsZXR0ZXIgQWxlcGggKEhlYnJldykKLSdhbGxvd3JldmlucycgICAgICdhcmknICAgICBhbGxvdyBDVFJMLV8gaW4gSW5zZXJ0IGFuZCBDb21tYW5kLWxpbmUgbW9kZQotJ2FsdGtleW1hcCcgICAgICAgJ2FrbScgICAgIGZvciBkZWZhdWx0IHNlY29uZCBsYW5ndWFnZSAoRmFyc2kvSGVicmV3KQotJ2FtYml3aWR0aCcgICAgICAgJ2FtYncnICAgIHdoYXQgdG8gZG8gd2l0aCBVbmljb2RlIGNoYXJzIG9mIGFtYmlndW91cyB3aWR0aAotJ2FudGlhbGlhcycgICAgICAgJ2FudGknICAgIE1hYyBPUyBYOiB1c2Ugc21vb3RoLCBhbnRpYWxpYXNlZCBmb250cwotJ2F1dG9jaGRpcicgICAgICAgJ2FjZCcgICAgIGNoYW5nZSBkaXJlY3RvcnkgdG8gdGhlIGZpbGUgaW4gdGhlIGN1cnJlbnQgd2luZG93Ci0nYXJhYmljJyAgICAgICAgICAnYXJhYicgICAgZm9yIEFyYWJpYyBhcyBhIGRlZmF1bHQgc2Vjb25kIGxhbmd1YWdlCi0nYXJhYmljc2hhcGUnICAgICAnYXJzaGFwZScgZG8gc2hhcGluZyBmb3IgQXJhYmljIGNoYXJhY3RlcnMKLSdhdXRvaW5kZW50JyAgICAgICdhaScgICAgICB0YWtlIGluZGVudCBmb3IgbmV3IGxpbmUgZnJvbSBwcmV2aW91cyBsaW5lCi0nYXV0b3JlYWQnICAgICAgICAnYXInICAgICAgYXV0b20uIHJlYWQgZmlsZSB3aGVuIGNoYW5nZWQgb3V0c2lkZSBvZiBWaW0KLSdhdXRvd3JpdGUnICAgICAgICdhdycgICAgICBhdXRvbWF0aWNhbGx5IHdyaXRlIGZpbGUgaWYgY2hhbmdlZAotJ2F1dG93cml0ZWFsbCcgICAgJ2F3YScgICAgIGFzICdhdXRvd3JpdGUnLCBidXQgd29ya3Mgd2l0aCBtb3JlIGNvbW1hbmRzCi0nYmFja2dyb3VuZCcgICAgICAnYmcnICAgICAgImRhcmsiIG9yICJsaWdodCIsIHVzZWQgZm9yIGhpZ2hsaWdodCBjb2xvcnMKLSdiYWNrc3BhY2UnICAgICAgICdicycgICAgICBob3cgYmFja3NwYWNlIHdvcmtzIGF0IHN0YXJ0IG9mIGxpbmUKLSdiYWNrdXAnICAgICAgICAgICdiaycgICAgICBrZWVwIGJhY2t1cCBmaWxlIGFmdGVyIG92ZXJ3cml0aW5nIGEgZmlsZQotJ2JhY2t1cGNvcHknICAgICAgJ2JrYycgICAgIG1ha2UgYmFja3VwIGFzIGEgY29weSwgZG9uJ3QgcmVuYW1lIHRoZSBmaWxlCi0nYmFja3VwZGlyJyAgICAgICAnYmRpcicgICAgbGlzdCBvZiBkaXJlY3RvcmllcyBmb3IgdGhlIGJhY2t1cCBmaWxlCi0nYmFja3VwZXh0JyAgICAgICAnYmV4JyAgICAgZXh0ZW5zaW9uIHVzZWQgZm9yIHRoZSBiYWNrdXAgZmlsZQotJ2JhY2t1cHNraXAnICAgICAgJ2JzaycgICAgIG5vIGJhY2t1cCBmb3IgZmlsZXMgdGhhdCBtYXRjaCB0aGVzZSBwYXR0ZXJucwotJ2JhbGxvb25kZWxheScgICAgJ2JkbGF5JyAgIGRlbGF5IGluIG1TIGJlZm9yZSBhIGJhbGxvb24gbWF5IHBvcCB1cAotJ2JhbGxvb25ldmFsJyAgICAgJ2JldmFsJyAgIHN3aXRjaCBvbiBiYWxsb29uIGV2YWx1YXRpb24KLSdiYWxsb29uZXhwcicgICAgICdiZXhwcicgICBleHByZXNzaW9uIHRvIHNob3cgaW4gYmFsbG9vbgotJ2JpbmFyeScgICAgICAgICAgJ2JpbicgICAgIHJlYWQvd3JpdGUvZWRpdCBmaWxlIGluIGJpbmFyeSBtb2RlCi0nYmlvc2tleScgICAgICAgICAnYmlvc2snICAgTVMtRE9TOiB1c2UgYmlvcyBjYWxscyBmb3IgaW5wdXQgY2hhcmFjdGVycwotJ2JvbWInICAgICAgICAgICAgICAgICAgICAgIHByZXBlbmQgYSBCeXRlIE9yZGVyIE1hcmsgdG8gdGhlIGZpbGUKLSdicmVha2F0JyAgICAgICAgICdicmsnICAgICBjaGFyYWN0ZXJzIHRoYXQgbWF5IGNhdXNlIGEgbGluZSBicmVhawotJ2Jyb3dzZWRpcicgICAgICAgJ2JzZGlyJyAgIHdoaWNoIGRpcmVjdG9yeSB0byBzdGFydCBicm93c2luZyBpbgotJ2J1ZmhpZGRlbicgICAgICAgJ2JoJyAgICAgIHdoYXQgdG8gZG8gd2hlbiBidWZmZXIgaXMgbm8gbG9uZ2VyIGluIHdpbmRvdwotJ2J1Zmxpc3RlZCcgICAgICAgJ2JsJyAgICAgIHdoZXRoZXIgdGhlIGJ1ZmZlciBzaG93cyB1cCBpbiB0aGUgYnVmZmVyIGxpc3QKLSdidWZ0eXBlJyAgICAgICAgICdidCcgICAgICBzcGVjaWFsIHR5cGUgb2YgYnVmZmVyCi0nY2FzZW1hcCcgICAgICAgICAnY21wJyAgICAgc3BlY2lmaWVzIGhvdyBjYXNlIG9mIGxldHRlcnMgaXMgY2hhbmdlZAotJ2NkcGF0aCcgICAgICAgICAgJ2NkJyAgICAgIGxpc3Qgb2YgZGlyZWN0b3JpZXMgc2VhcmNoZWQgd2l0aCAiOmNkIgotJ2NlZGl0JyAgICAgICAgICAgICAgICAgICAgIGtleSB1c2VkIHRvIG9wZW4gdGhlIGNvbW1hbmQtbGluZSB3aW5kb3cKLSdjaGFyY29udmVydCcgICAgICdjY3YnICAgICBleHByZXNzaW9uIGZvciBjaGFyYWN0ZXIgZW5jb2RpbmcgY29udmVyc2lvbgotJ2NpbmRlbnQnICAgICAgICAgJ2NpbicgICAgIGRvIEMgcHJvZ3JhbSBpbmRlbnRpbmcKLSdjaW5rZXlzJyAgICAgICAgICdjaW5rJyAgICBrZXlzIHRoYXQgdHJpZ2dlciBpbmRlbnQgd2hlbiAnY2luZGVudCcgaXMgc2V0Ci0nY2lub3B0aW9ucycgICAgICAnY2lubycgICAgaG93IHRvIGRvIGluZGVudGluZyB3aGVuICdjaW5kZW50JyBpcyBzZXQKLSdjaW53b3JkcycgICAgICAgICdjaW53JyAgICB3b3JkcyB3aGVyZSAnc2knIGFuZCAnY2luJyBhZGQgYW4gaW5kZW50Ci0nY2xpcGJvYXJkJyAgICAgICAnY2InICAgICAgdXNlIHRoZSBjbGlwYm9hcmQgYXMgdGhlIHVubmFtZWQgcmVnaXN0ZXIKLSdjbWRoZWlnaHQnICAgICAgICdjaCcgICAgICBudW1iZXIgb2YgbGluZXMgdG8gdXNlIGZvciB0aGUgY29tbWFuZC1saW5lCi0nY21kd2luaGVpZ2h0JyAgICAnY3doJyAgICAgaGVpZ2h0IG9mIHRoZSBjb21tYW5kLWxpbmUgd2luZG93Ci0nY29sdW1ucycgICAgICAgICAnY28nICAgICAgbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGRpc3BsYXkKLSdjb21tZW50cycgICAgICAgICdjb20nICAgICBwYXR0ZXJucyB0aGF0IGNhbiBzdGFydCBhIGNvbW1lbnQgbGluZQorJ2FsZXBoJwkJICAnYWwnCSAgICBBU0NJSSBjb2RlIG9mIHRoZSBsZXR0ZXIgQWxlcGggKEhlYnJldykKKydhbGxvd3JldmlucycJICAnYXJpJyAgICAgYWxsb3cgQ1RSTC1fIGluIEluc2VydCBhbmQgQ29tbWFuZC1saW5lIG1vZGUKKydhbHRrZXltYXAnCSAgJ2FrbScgICAgIGZvciBkZWZhdWx0IHNlY29uZCBsYW5ndWFnZSAoRmFyc2kvSGVicmV3KQorJ2FtYml3aWR0aCcJICAnYW1idycgICAgd2hhdCB0byBkbyB3aXRoIFVuaWNvZGUgY2hhcnMgb2YgYW1iaWd1b3VzIHdpZHRoCisnYW50aWFsaWFzJwkgICdhbnRpJyAgICBNYWMgT1MgWDogdXNlIHNtb290aCwgYW50aWFsaWFzZWQgZm9udHMKKydhdXRvY2hkaXInCSAgJ2FjZCcgICAgIGNoYW5nZSBkaXJlY3RvcnkgdG8gdGhlIGZpbGUgaW4gdGhlIGN1cnJlbnQgd2luZG93CisnYXJhYmljJwkgICdhcmFiJyAgICBmb3IgQXJhYmljIGFzIGEgZGVmYXVsdCBzZWNvbmQgbGFuZ3VhZ2UKKydhcmFiaWNzaGFwZScJICAnYXJzaGFwZScgZG8gc2hhcGluZyBmb3IgQXJhYmljIGNoYXJhY3RlcnMKKydhdXRvaW5kZW50JwkgICdhaScJICAgIHRha2UgaW5kZW50IGZvciBuZXcgbGluZSBmcm9tIHByZXZpb3VzIGxpbmUKKydhdXRvcmVhZCcJICAnYXInCSAgICBhdXRvbS4gcmVhZCBmaWxlIHdoZW4gY2hhbmdlZCBvdXRzaWRlIG9mIFZpbQorJ2F1dG93cml0ZScJICAnYXcnCSAgICBhdXRvbWF0aWNhbGx5IHdyaXRlIGZpbGUgaWYgY2hhbmdlZAorJ2F1dG93cml0ZWFsbCcJICAnYXdhJyAgICAgYXMgJ2F1dG93cml0ZScsIGJ1dCB3b3JrcyB3aXRoIG1vcmUgY29tbWFuZHMKKydiYWNrZ3JvdW5kJwkgICdiZycJICAgICJkYXJrIiBvciAibGlnaHQiLCB1c2VkIGZvciBoaWdobGlnaHQgY29sb3JzCisnYmFja3NwYWNlJwkgICdicycJICAgIGhvdyBiYWNrc3BhY2Ugd29ya3MgYXQgc3RhcnQgb2YgbGluZQorJ2JhY2t1cCcJICAnYmsnCSAgICBrZWVwIGJhY2t1cCBmaWxlIGFmdGVyIG92ZXJ3cml0aW5nIGEgZmlsZQorJ2JhY2t1cGNvcHknCSAgJ2JrYycgICAgIG1ha2UgYmFja3VwIGFzIGEgY29weSwgZG9uJ3QgcmVuYW1lIHRoZSBmaWxlCisnYmFja3VwZGlyJwkgICdiZGlyJyAgICBsaXN0IG9mIGRpcmVjdG9yaWVzIGZvciB0aGUgYmFja3VwIGZpbGUKKydiYWNrdXBleHQnCSAgJ2JleCcgICAgIGV4dGVuc2lvbiB1c2VkIGZvciB0aGUgYmFja3VwIGZpbGUKKydiYWNrdXBza2lwJwkgICdic2snICAgICBubyBiYWNrdXAgZm9yIGZpbGVzIHRoYXQgbWF0Y2ggdGhlc2UgcGF0dGVybnMKKydiYWxsb29uZGVsYXknCSAgJ2JkbGF5JyAgIGRlbGF5IGluIG1TIGJlZm9yZSBhIGJhbGxvb24gbWF5IHBvcCB1cAorJ2JhbGxvb25ldmFsJwkgICdiZXZhbCcgICBzd2l0Y2ggb24gYmFsbG9vbiBldmFsdWF0aW9uCisnYmFsbG9vbmV4cHInCSAgJ2JleHByJyAgIGV4cHJlc3Npb24gdG8gc2hvdyBpbiBiYWxsb29uCisnYmluYXJ5JwkgICdiaW4nICAgICByZWFkL3dyaXRlL2VkaXQgZmlsZSBpbiBiaW5hcnkgbW9kZQorJ2Jpb3NrZXknCSAgJ2Jpb3NrJyAgIE1TLURPUzogdXNlIGJpb3MgY2FsbHMgZm9yIGlucHV0IGNoYXJhY3RlcnMKKydib21iJwkJCSAgICBwcmVwZW5kIGEgQnl0ZSBPcmRlciBNYXJrIHRvIHRoZSBmaWxlCisnYnJlYWthdCcJICAnYnJrJyAgICAgY2hhcmFjdGVycyB0aGF0IG1heSBjYXVzZSBhIGxpbmUgYnJlYWsKKydicm93c2VkaXInCSAgJ2JzZGlyJyAgIHdoaWNoIGRpcmVjdG9yeSB0byBzdGFydCBicm93c2luZyBpbgorJ2J1ZmhpZGRlbicJICAnYmgnCSAgICB3aGF0IHRvIGRvIHdoZW4gYnVmZmVyIGlzIG5vIGxvbmdlciBpbiB3aW5kb3cKKydidWZsaXN0ZWQnCSAgJ2JsJwkgICAgd2hldGhlciB0aGUgYnVmZmVyIHNob3dzIHVwIGluIHRoZSBidWZmZXIgbGlzdAorJ2J1ZnR5cGUnCSAgJ2J0JwkgICAgc3BlY2lhbCB0eXBlIG9mIGJ1ZmZlcgorJ2Nhc2VtYXAnCSAgJ2NtcCcgICAgIHNwZWNpZmllcyBob3cgY2FzZSBvZiBsZXR0ZXJzIGlzIGNoYW5nZWQKKydjZHBhdGgnCSAgJ2NkJwkgICAgbGlzdCBvZiBkaXJlY3RvcmllcyBzZWFyY2hlZCB3aXRoICI6Y2QiCisnY2VkaXQnCQkJICAgIGtleSB1c2VkIHRvIG9wZW4gdGhlIGNvbW1hbmQtbGluZSB3aW5kb3cKKydjaGFyY29udmVydCcJICAnY2N2JyAgICAgZXhwcmVzc2lvbiBmb3IgY2hhcmFjdGVyIGVuY29kaW5nIGNvbnZlcnNpb24KKydjaW5kZW50JwkgICdjaW4nICAgICBkbyBDIHByb2dyYW0gaW5kZW50aW5nCisnY2lua2V5cycJICAnY2luaycgICAga2V5cyB0aGF0IHRyaWdnZXIgaW5kZW50IHdoZW4gJ2NpbmRlbnQnIGlzIHNldAorJ2Npbm9wdGlvbnMnCSAgJ2Npbm8nICAgIGhvdyB0byBkbyBpbmRlbnRpbmcgd2hlbiAnY2luZGVudCcgaXMgc2V0CisnY2lud29yZHMnCSAgJ2NpbncnICAgIHdvcmRzIHdoZXJlICdzaScgYW5kICdjaW4nIGFkZCBhbiBpbmRlbnQKKydjbGlwYm9hcmQnCSAgJ2NiJwkgICAgdXNlIHRoZSBjbGlwYm9hcmQgYXMgdGhlIHVubmFtZWQgcmVnaXN0ZXIKKydjbWRoZWlnaHQnCSAgJ2NoJwkgICAgbnVtYmVyIG9mIGxpbmVzIHRvIHVzZSBmb3IgdGhlIGNvbW1hbmQtbGluZQorJ2NtZHdpbmhlaWdodCcJICAnY3doJyAgICAgaGVpZ2h0IG9mIHRoZSBjb21tYW5kLWxpbmUgd2luZG93CisnY29sdW1ucycJICAnY28nCSAgICBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZGlzcGxheQorJ2NvbW1lbnRzJwkgICdjb20nICAgICBwYXR0ZXJucyB0aGF0IGNhbiBzdGFydCBhIGNvbW1lbnQgbGluZQogJ2NvbW1lbnRzdHJpbmcnICAgJ2NtcycgICAgIHRlbXBsYXRlIGZvciBjb21tZW50czsgdXNlZCBmb3IgZm9sZCBtYXJrZXIKLSdjb21wYXRpYmxlJyAgICAgICdjcCcgICAgICBiZWhhdmUgVmktY29tcGF0aWJsZSBhcyBtdWNoIGFzIHBvc3NpYmxlCi0nY29tcGxldGUnICAgICAgICAnY3B0JyAgICAgc3BlY2lmeSBob3cgSW5zZXJ0IG1vZGUgY29tcGxldGlvbiB3b3JrcwotJ2NvbXBsZXRlZnVuYycgICAgJ2NmdScgICAgIGZ1bmN0aW9uIHRvIGJlIHVzZWQgZm9yIEluc2VydCBtb2RlIGNvbXBsZXRpb24KLSdjb21wbGV0ZW9wdCcgICAgICdjb3QnICAgICBvcHRpb25zIGZvciBJbnNlcnQgbW9kZSBjb21wbGV0aW9uCi0nY29uZmlybScgICAgICAgICAnY2YnICAgICAgYXNrIHdoYXQgdG8gZG8gYWJvdXQgdW5zYXZlZC9yZWFkLW9ubHkgZmlsZXMKLSdjb25za2V5JyAgICAgICAgICdjb25zaycgICBnZXQga2V5cyBkaXJlY3RseSBmcm9tIGNvbnNvbGUgKE1TLURPUyBvbmx5KQotJ2NvcHlpbmRlbnQnICAgICAgJ2NpJyAgICAgIG1ha2UgJ2F1dG9pbmRlbnQnIHVzZSBleGlzdGluZyBpbmRlbnQgc3RydWN0dXJlCi0nY3BvcHRpb25zJyAgICAgICAnY3BvJyAgICAgZmxhZ3MgZm9yIFZpLWNvbXBhdGlibGUgYmVoYXZpb3IKKydjb21wYXRpYmxlJwkgICdjcCcJICAgIGJlaGF2ZSBWaS1jb21wYXRpYmxlIGFzIG11Y2ggYXMgcG9zc2libGUKKydjb21wbGV0ZScJICAnY3B0JyAgICAgc3BlY2lmeSBob3cgSW5zZXJ0IG1vZGUgY29tcGxldGlvbiB3b3JrcworJ2NvbXBsZXRlZnVuYycJICAnY2Z1JyAgICAgZnVuY3Rpb24gdG8gYmUgdXNlZCBmb3IgSW5zZXJ0IG1vZGUgY29tcGxldGlvbgorJ2NvbXBsZXRlb3B0JwkgICdjb3QnICAgICBvcHRpb25zIGZvciBJbnNlcnQgbW9kZSBjb21wbGV0aW9uCisnY29uZmlybScJICAnY2YnCSAgICBhc2sgd2hhdCB0byBkbyBhYm91dCB1bnNhdmVkL3JlYWQtb25seSBmaWxlcworJ2NvbnNrZXknCSAgJ2NvbnNrJyAgIGdldCBrZXlzIGRpcmVjdGx5IGZyb20gY29uc29sZSAoTVMtRE9TIG9ubHkpCisnY29weWluZGVudCcJICAnY2knCSAgICBtYWtlICdhdXRvaW5kZW50JyB1c2UgZXhpc3RpbmcgaW5kZW50IHN0cnVjdHVyZQorJ2Nwb3B0aW9ucycJICAnY3BvJyAgICAgZmxhZ3MgZm9yIFZpLWNvbXBhdGlibGUgYmVoYXZpb3IKICdjc2NvcGVwYXRoY29tcCcgICdjc3BjJyAgICBob3cgbWFueSBjb21wb25lbnRzIG9mIHRoZSBwYXRoIHRvIHNob3cKICdjc2NvcGVwcmcnICAgICAgICdjc3ByZycgICBjb21tYW5kIHRvIGV4ZWN1dGUgY3Njb3BlCiAnY3Njb3BlcXVpY2tmaXgnICAnY3NxZicgICAgdXNlIHF1aWNrZml4IHdpbmRvdyBmb3IgY3Njb3BlIHJlc3VsdHMKQEAgLTY0OCwyODggKzY0OCwyODggQEAKICdjc2NvcGV2ZXJib3NlJyAgICdjc3ZlcmInICBnaXZlIG1lc3NhZ2VzIHdoZW4gYWRkaW5nIGEgY3Njb3BlIGRhdGFiYXNlCiAnY3Vyc29yY29sdW1uJwkgICdjdWMnCSAgICBoaWdobGlnaHQgdGhlIHNjcmVlbiBjb2x1bW4gb2YgdGhlIGN1cnNvcgogJ2N1cnNvcmxpbmUnCSAgJ2N1bCcJICAgIGhpZ2hsaWdodCB0aGUgc2NyZWVuIGxpbmUgb2YgdGhlIGN1cnNvcgotJ2RlYnVnJyAgICAgICAgICAgICAgICAgICAgIHNldCB0byAibXNnIiB0byBzZWUgYWxsIGVycm9yIG1lc3NhZ2VzCi0nZGVmaW5lJyAgICAgICAgICAnZGVmJyAgICAgcGF0dGVybiB0byBiZSB1c2VkIHRvIGZpbmQgYSBtYWNybyBkZWZpbml0aW9uCi0nZGVsY29tYmluZScgICAgICAnZGVjbycgICAgZGVsZXRlIGNvbWJpbmluZyBjaGFyYWN0ZXJzIG9uIHRoZWlyIG93bgotJ2RpY3Rpb25hcnknICAgICAgJ2RpY3QnICAgIGxpc3Qgb2YgZmlsZSBuYW1lcyB1c2VkIGZvciBrZXl3b3JkIGNvbXBsZXRpb24KLSdkaWZmJyAgICAgICAgICAgICAgICAgICAgICB1c2UgZGlmZiBtb2RlIGZvciB0aGUgY3VycmVudCB3aW5kb3cKLSdkaWZmZXhwcicgICAgICAgICdkZXgnICAgICBleHByZXNzaW9uIHVzZWQgdG8gb2J0YWluIGEgZGlmZiBmaWxlCi0nZGlmZm9wdCcgICAgICAgICAnZGlwJyAgICAgb3B0aW9ucyBmb3IgdXNpbmcgZGlmZiBtb2RlCi0nZGlncmFwaCcgICAgICAgICAnZGcnICAgICAgZW5hYmxlIHRoZSBlbnRlcmluZyBvZiBkaWdyYXBocyBpbiBJbnNlcnQgbW9kZQotJ2RpcmVjdG9yeScgICAgICAgJ2RpcicgICAgIGxpc3Qgb2YgZGlyZWN0b3J5IG5hbWVzIGZvciB0aGUgc3dhcCBmaWxlCi0nZGlzcGxheScgICAgICAgICAnZHknICAgICAgbGlzdCBvZiBmbGFncyBmb3IgaG93IHRvIGRpc3BsYXkgdGV4dAotJ2VhZGlyZWN0aW9uJyAgICAgJ2VhZCcgICAgIGluIHdoaWNoIGRpcmVjdGlvbiAnZXF1YWxhbHdheXMnIHdvcmtzCi0nZWRjb21wYXRpYmxlJyAgICAnZWQnICAgICAgdG9nZ2xlIGZsYWdzIG9mICI6c3Vic3RpdHV0ZSIgY29tbWFuZAotJ2VuY29kaW5nJyAgICAgICAgJ2VuYycgICAgIGVuY29kaW5nIHVzZWQgaW50ZXJuYWxseQotJ2VuZG9mbGluZScgICAgICAgJ2VvbCcgICAgIHdyaXRlIDxFT0w+IGZvciBsYXN0IGxpbmUgaW4gZmlsZQotJ2VxdWFsYWx3YXlzJyAgICAgJ2VhJyAgICAgIHdpbmRvd3MgYXJlIGF1dG9tYXRpY2FsbHkgbWFkZSB0aGUgc2FtZSBzaXplCi0nZXF1YWxwcmcnICAgICAgICAnZXAnICAgICAgZXh0ZXJuYWwgcHJvZ3JhbSB0byB1c2UgZm9yICI9IiBjb21tYW5kCi0nZXJyb3JiZWxscycgICAgICAnZWInICAgICAgcmluZyB0aGUgYmVsbCBmb3IgZXJyb3IgbWVzc2FnZXMKLSdlcnJvcmZpbGUnICAgICAgICdlZicgICAgICBuYW1lIG9mIHRoZSBlcnJvcmZpbGUgZm9yIHRoZSBRdWlja0ZpeCBtb2RlCi0nZXJyb3Jmb3JtYXQnICAgICAnZWZtJyAgICAgZGVzY3JpcHRpb24gb2YgdGhlIGxpbmVzIGluIHRoZSBlcnJvciBmaWxlCi0nZXNja2V5cycgICAgICAgICAnZWsnICAgICAgcmVjb2duaXplIGZ1bmN0aW9uIGtleXMgaW4gSW5zZXJ0IG1vZGUKLSdldmVudGlnbm9yZScgICAgICdlaScgICAgICBhdXRvY29tbWFuZCBldmVudHMgdGhhdCBhcmUgaWdub3JlZAotJ2V4cGFuZHRhYicgICAgICAgJ2V0JyAgICAgIHVzZSBzcGFjZXMgd2hlbiA8VGFiPiBpcyBpbnNlcnRlZAotJ2V4cmMnICAgICAgICAgICAgJ2V4JyAgICAgIHJlYWQgLnZpbXJjIGFuZCAuZXhyYyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkKLSdmaWxlZW5jb2RpbmcnICAgICdmZW5jJyAgICBmaWxlIGVuY29kaW5nIGZvciBtdWx0aS1ieXRlIHRleHQKKydkZWJ1ZycJCQkgICAgc2V0IHRvICJtc2ciIHRvIHNlZSBhbGwgZXJyb3IgbWVzc2FnZXMKKydkZWZpbmUnCSAgJ2RlZicgICAgIHBhdHRlcm4gdG8gYmUgdXNlZCB0byBmaW5kIGEgbWFjcm8gZGVmaW5pdGlvbgorJ2RlbGNvbWJpbmUnCSAgJ2RlY28nICAgIGRlbGV0ZSBjb21iaW5pbmcgY2hhcmFjdGVycyBvbiB0aGVpciBvd24KKydkaWN0aW9uYXJ5JwkgICdkaWN0JyAgICBsaXN0IG9mIGZpbGUgbmFtZXMgdXNlZCBmb3Iga2V5d29yZCBjb21wbGV0aW9uCisnZGlmZicJCQkgICAgdXNlIGRpZmYgbW9kZSBmb3IgdGhlIGN1cnJlbnQgd2luZG93CisnZGlmZmV4cHInCSAgJ2RleCcgICAgIGV4cHJlc3Npb24gdXNlZCB0byBvYnRhaW4gYSBkaWZmIGZpbGUKKydkaWZmb3B0JwkgICdkaXAnICAgICBvcHRpb25zIGZvciB1c2luZyBkaWZmIG1vZGUKKydkaWdyYXBoJwkgICdkZycJICAgIGVuYWJsZSB0aGUgZW50ZXJpbmcgb2YgZGlncmFwaHMgaW4gSW5zZXJ0IG1vZGUKKydkaXJlY3RvcnknCSAgJ2RpcicgICAgIGxpc3Qgb2YgZGlyZWN0b3J5IG5hbWVzIGZvciB0aGUgc3dhcCBmaWxlCisnZGlzcGxheScJICAnZHknCSAgICBsaXN0IG9mIGZsYWdzIGZvciBob3cgdG8gZGlzcGxheSB0ZXh0CisnZWFkaXJlY3Rpb24nCSAgJ2VhZCcgICAgIGluIHdoaWNoIGRpcmVjdGlvbiAnZXF1YWxhbHdheXMnIHdvcmtzCisnZWRjb21wYXRpYmxlJwkgICdlZCcJICAgIHRvZ2dsZSBmbGFncyBvZiAiOnN1YnN0aXR1dGUiIGNvbW1hbmQKKydlbmNvZGluZycJICAnZW5jJyAgICAgZW5jb2RpbmcgdXNlZCBpbnRlcm5hbGx5CisnZW5kb2ZsaW5lJwkgICdlb2wnICAgICB3cml0ZSA8RU9MPiBmb3IgbGFzdCBsaW5lIGluIGZpbGUKKydlcXVhbGFsd2F5cycJICAnZWEnCSAgICB3aW5kb3dzIGFyZSBhdXRvbWF0aWNhbGx5IG1hZGUgdGhlIHNhbWUgc2l6ZQorJ2VxdWFscHJnJwkgICdlcCcJICAgIGV4dGVybmFsIHByb2dyYW0gdG8gdXNlIGZvciAiPSIgY29tbWFuZAorJ2Vycm9yYmVsbHMnCSAgJ2ViJwkgICAgcmluZyB0aGUgYmVsbCBmb3IgZXJyb3IgbWVzc2FnZXMKKydlcnJvcmZpbGUnCSAgJ2VmJwkgICAgbmFtZSBvZiB0aGUgZXJyb3JmaWxlIGZvciB0aGUgUXVpY2tGaXggbW9kZQorJ2Vycm9yZm9ybWF0JwkgICdlZm0nICAgICBkZXNjcmlwdGlvbiBvZiB0aGUgbGluZXMgaW4gdGhlIGVycm9yIGZpbGUKKydlc2NrZXlzJwkgICdlaycJICAgIHJlY29nbml6ZSBmdW5jdGlvbiBrZXlzIGluIEluc2VydCBtb2RlCisnZXZlbnRpZ25vcmUnCSAgJ2VpJwkgICAgYXV0b2NvbW1hbmQgZXZlbnRzIHRoYXQgYXJlIGlnbm9yZWQKKydleHBhbmR0YWInCSAgJ2V0JwkgICAgdXNlIHNwYWNlcyB3aGVuIDxUYWI+IGlzIGluc2VydGVkCisnZXhyYycJCSAgJ2V4JwkgICAgcmVhZCAudmltcmMgYW5kIC5leHJjIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQorJ2ZpbGVlbmNvZGluZycJICAnZmVuYycgICAgZmlsZSBlbmNvZGluZyBmb3IgbXVsdGktYnl0ZSB0ZXh0CiAnZmlsZWVuY29kaW5ncycgICAnZmVuY3MnICAgYXV0b21hdGljYWxseSBkZXRlY3RlZCBjaGFyYWN0ZXIgZW5jb2RpbmdzCi0nZmlsZWZvcm1hdCcgICAgICAnZmYnICAgICAgZmlsZSBmb3JtYXQgdXNlZCBmb3IgZmlsZSBJL08KLSdmaWxlZm9ybWF0cycgICAgICdmZnMnICAgICBhdXRvbWF0aWNhbGx5IGRldGVjdGVkIHZhbHVlcyBmb3IgJ2ZpbGVmb3JtYXQnCi0nZmlsZXR5cGUnICAgICAgICAnZnQnICAgICAgdHlwZSBvZiBmaWxlLCB1c2VkIGZvciBhdXRvY29tbWFuZHMKLSdmaWxsY2hhcnMnICAgICAgICdmY3MnICAgICBjaGFyYWN0ZXJzIHRvIHVzZSBmb3IgZGlzcGxheWluZyBzcGVjaWFsIGl0ZW1zCi0nZmttYXAnICAgICAgICAgICAnZmsnICAgICAgRmFyc2kga2V5Ym9hcmQgbWFwcGluZwotJ2ZvbGRjbG9zZScgICAgICAgJ2ZjbCcgICAgIGNsb3NlIGEgZm9sZCB3aGVuIHRoZSBjdXJzb3IgbGVhdmVzIGl0Ci0nZm9sZGNvbHVtbicgICAgICAnZmRjJyAgICAgd2lkdGggb2YgdGhlIGNvbHVtbiB1c2VkIHRvIGluZGljYXRlIGZvbGRzCi0nZm9sZGVuYWJsZScgICAgICAnZmVuJyAgICAgc2V0IHRvIGRpc3BsYXkgYWxsIGZvbGRzIG9wZW4KLSdmb2xkZXhwcicgICAgICAgICdmZGUnICAgICBleHByZXNzaW9uIHVzZWQgd2hlbiAnZm9sZG1ldGhvZCcgaXMgImV4cHIiCi0nZm9sZGlnbm9yZScgICAgICAnZmRpJyAgICAgaWdub3JlIGxpbmVzIHdoZW4gJ2ZvbGRtZXRob2QnIGlzICJpbmRlbnQiCi0nZm9sZGxldmVsJyAgICAgICAnZmRsJyAgICAgY2xvc2UgZm9sZHMgd2l0aCBhIGxldmVsIGhpZ2hlciB0aGFuIHRoaXMKKydmaWxlZm9ybWF0JwkgICdmZicJICAgIGZpbGUgZm9ybWF0IHVzZWQgZm9yIGZpbGUgSS9PCisnZmlsZWZvcm1hdHMnCSAgJ2ZmcycgICAgIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQgdmFsdWVzIGZvciAnZmlsZWZvcm1hdCcKKydmaWxldHlwZScJICAnZnQnCSAgICB0eXBlIG9mIGZpbGUsIHVzZWQgZm9yIGF1dG9jb21tYW5kcworJ2ZpbGxjaGFycycJICAnZmNzJyAgICAgY2hhcmFjdGVycyB0byB1c2UgZm9yIGRpc3BsYXlpbmcgc3BlY2lhbCBpdGVtcworJ2ZrbWFwJwkJICAnZmsnCSAgICBGYXJzaSBrZXlib2FyZCBtYXBwaW5nCisnZm9sZGNsb3NlJwkgICdmY2wnICAgICBjbG9zZSBhIGZvbGQgd2hlbiB0aGUgY3Vyc29yIGxlYXZlcyBpdAorJ2ZvbGRjb2x1bW4nCSAgJ2ZkYycgICAgIHdpZHRoIG9mIHRoZSBjb2x1bW4gdXNlZCB0byBpbmRpY2F0ZSBmb2xkcworJ2ZvbGRlbmFibGUnCSAgJ2ZlbicgICAgIHNldCB0byBkaXNwbGF5IGFsbCBmb2xkcyBvcGVuCisnZm9sZGV4cHInCSAgJ2ZkZScgICAgIGV4cHJlc3Npb24gdXNlZCB3aGVuICdmb2xkbWV0aG9kJyBpcyAiZXhwciIKKydmb2xkaWdub3JlJwkgICdmZGknICAgICBpZ25vcmUgbGluZXMgd2hlbiAnZm9sZG1ldGhvZCcgaXMgImluZGVudCIKKydmb2xkbGV2ZWwnCSAgJ2ZkbCcgICAgIGNsb3NlIGZvbGRzIHdpdGggYSBsZXZlbCBoaWdoZXIgdGhhbiB0aGlzCiAnZm9sZGxldmVsc3RhcnQnICAnZmRscycgICAgJ2ZvbGRsZXZlbCcgd2hlbiBzdGFydGluZyB0byBlZGl0IGEgZmlsZQotJ2ZvbGRtYXJrZXInICAgICAgJ2ZtcicgICAgIG1hcmtlcnMgdXNlZCB3aGVuICdmb2xkbWV0aG9kJyBpcyAibWFya2VyIgotJ2ZvbGRtZXRob2QnICAgICAgJ2ZkbScgICAgIGZvbGRpbmcgdHlwZQotJ2ZvbGRtaW5saW5lcycgICAgJ2ZtbCcgICAgIG1pbmltdW0gbnVtYmVyIG9mIGxpbmVzIGZvciBhIGZvbGQgdG8gYmUgY2xvc2VkCi0nZm9sZG5lc3RtYXgnICAgICAnZmRuJyAgICAgbWF4aW11bSBmb2xkIGRlcHRoCi0nZm9sZG9wZW4nICAgICAgICAnZmRvJyAgICAgZm9yIHdoaWNoIGNvbW1hbmRzIGEgZm9sZCB3aWxsIGJlIG9wZW5lZAotJ2ZvbGR0ZXh0JyAgICAgICAgJ2ZkdCcgICAgIGV4cHJlc3Npb24gdXNlZCB0byBkaXNwbGF5IGZvciBhIGNsb3NlZCBmb2xkCisnZm9sZG1hcmtlcicJICAnZm1yJyAgICAgbWFya2VycyB1c2VkIHdoZW4gJ2ZvbGRtZXRob2QnIGlzICJtYXJrZXIiCisnZm9sZG1ldGhvZCcJICAnZmRtJyAgICAgZm9sZGluZyB0eXBlCisnZm9sZG1pbmxpbmVzJwkgICdmbWwnICAgICBtaW5pbXVtIG51bWJlciBvZiBsaW5lcyBmb3IgYSBmb2xkIHRvIGJlIGNsb3NlZAorJ2ZvbGRuZXN0bWF4JwkgICdmZG4nICAgICBtYXhpbXVtIGZvbGQgZGVwdGgKKydmb2xkb3BlbicJICAnZmRvJyAgICAgZm9yIHdoaWNoIGNvbW1hbmRzIGEgZm9sZCB3aWxsIGJlIG9wZW5lZAorJ2ZvbGR0ZXh0JwkgICdmZHQnICAgICBleHByZXNzaW9uIHVzZWQgdG8gZGlzcGxheSBmb3IgYSBjbG9zZWQgZm9sZAogJ2Zvcm1hdGxpc3RwYXQnICAgJ2ZscCcgICAgIHBhdHRlcm4gdXNlZCB0byByZWNvZ25pemUgYSBsaXN0IGhlYWRlcgotJ2Zvcm1hdG9wdGlvbnMnICAgJ2ZvJyAgICAgIGhvdyBhdXRvbWF0aWMgZm9ybWF0dGluZyBpcyB0byBiZSBkb25lCi0nZm9ybWF0cHJnJyAgICAgICAnZnAnICAgICAgbmFtZSBvZiBleHRlcm5hbCBwcm9ncmFtIHVzZWQgd2l0aCAiZ3EiIGNvbW1hbmQKLSdmb3JtYXRleHByJyAgICAgICdmZXgnICAgICBleHByZXNzaW9uIHVzZWQgd2l0aCAiZ3EiIGNvbW1hbmQKLSdmc3luYycgICAgICAgICAgICdmcycgICAgICB3aGV0aGVyIHRvIGludm9rZSBmc3luYygpIGFmdGVyIGZpbGUgd3JpdGUKLSdnZGVmYXVsdCcgICAgICAgICdnZCcgICAgICB0aGUgIjpzdWJzdGl0dXRlIiBmbGFnICdnJyBpcyBkZWZhdWx0IG9uCi0nZ3JlcGZvcm1hdCcgICAgICAnZ2ZtJyAgICAgZm9ybWF0IG9mICdncmVwcHJnJyBvdXRwdXQKLSdncmVwcHJnJyAgICAgICAgICdncCcgICAgICBwcm9ncmFtIHRvIHVzZSBmb3IgIjpncmVwIgotJ2d1aWN1cnNvcicgICAgICAgJ2djcicgICAgIEdVSTogc2V0dGluZ3MgZm9yIGN1cnNvciBzaGFwZSBhbmQgYmxpbmtpbmcKLSdndWlmb250JyAgICAgICAgICdnZm4nICAgICBHVUk6IE5hbWUocykgb2YgZm9udChzKSB0byBiZSB1c2VkCi0nZ3VpZm9udHNldCcgICAgICAnZ2ZzJyAgICAgR1VJOiBOYW1lcyBvZiBtdWx0aS1ieXRlIGZvbnRzIHRvIGJlIHVzZWQKLSdndWlmb250d2lkZScgICAgICdnZncnICAgICBsaXN0IG9mIGZvbnQgbmFtZXMgZm9yIGRvdWJsZS13aWRlIGNoYXJhY3RlcnMKLSdndWloZWFkcm9vbScgICAgICdnaHInICAgICBHVUk6IHBpeGVscyByb29tIGZvciB3aW5kb3cgZGVjb3JhdGlvbnMKLSdndWlvcHRpb25zJyAgICAgICdnbycgICAgICBHVUk6IFdoaWNoIGNvbXBvbmVudHMgYW5kIG9wdGlvbnMgYXJlIHVzZWQKLSdndWlwdHknICAgICAgICAgICAgICAgICAgICBHVUk6IHRyeSB0byB1c2UgYSBwc2V1ZG8tdHR5IGZvciAiOiEiIGNvbW1hbmRzCi0nZ3VpdGFibGFiZWwnICAgICAnZ3RsJyAgICAgR1VJOiBjdXN0b20gbGFiZWwgZm9yIGEgdGFiIHBhZ2UKKydmb3JtYXRvcHRpb25zJyAgICdmbycJICAgIGhvdyBhdXRvbWF0aWMgZm9ybWF0dGluZyBpcyB0byBiZSBkb25lCisnZm9ybWF0cHJnJwkgICdmcCcJICAgIG5hbWUgb2YgZXh0ZXJuYWwgcHJvZ3JhbSB1c2VkIHdpdGggImdxIiBjb21tYW5kCisnZm9ybWF0ZXhwcicJICAnZmV4JyAgICAgZXhwcmVzc2lvbiB1c2VkIHdpdGggImdxIiBjb21tYW5kCisnZnN5bmMnCQkgICdmcycJICAgIHdoZXRoZXIgdG8gaW52b2tlIGZzeW5jKCkgYWZ0ZXIgZmlsZSB3cml0ZQorJ2dkZWZhdWx0JwkgICdnZCcJICAgIHRoZSAiOnN1YnN0aXR1dGUiIGZsYWcgJ2cnIGlzIGRlZmF1bHQgb24KKydncmVwZm9ybWF0JwkgICdnZm0nICAgICBmb3JtYXQgb2YgJ2dyZXBwcmcnIG91dHB1dAorJ2dyZXBwcmcnCSAgJ2dwJwkgICAgcHJvZ3JhbSB0byB1c2UgZm9yICI6Z3JlcCIKKydndWljdXJzb3InCSAgJ2djcicgICAgIEdVSTogc2V0dGluZ3MgZm9yIGN1cnNvciBzaGFwZSBhbmQgYmxpbmtpbmcKKydndWlmb250JwkgICdnZm4nICAgICBHVUk6IE5hbWUocykgb2YgZm9udChzKSB0byBiZSB1c2VkCisnZ3VpZm9udHNldCcJICAnZ2ZzJyAgICAgR1VJOiBOYW1lcyBvZiBtdWx0aS1ieXRlIGZvbnRzIHRvIGJlIHVzZWQKKydndWlmb250d2lkZScJICAnZ2Z3JyAgICAgbGlzdCBvZiBmb250IG5hbWVzIGZvciBkb3VibGUtd2lkZSBjaGFyYWN0ZXJzCisnZ3VpaGVhZHJvb20nCSAgJ2docicgICAgIEdVSTogcGl4ZWxzIHJvb20gZm9yIHdpbmRvdyBkZWNvcmF0aW9ucworJ2d1aW9wdGlvbnMnCSAgJ2dvJwkgICAgR1VJOiBXaGljaCBjb21wb25lbnRzIGFuZCBvcHRpb25zIGFyZSB1c2VkCisnZ3VpcHR5JwkJICAgIEdVSTogdHJ5IHRvIHVzZSBhIHBzZXVkby10dHkgZm9yICI6ISIgY29tbWFuZHMKKydndWl0YWJsYWJlbCcJICAnZ3RsJyAgICAgR1VJOiBjdXN0b20gbGFiZWwgZm9yIGEgdGFiIHBhZ2UKICdndWl0YWJ0b29sdGlwJyAgICdndHQnICAgICBHVUk6IGN1c3RvbSB0b29sdGlwIGZvciBhIHRhYiBwYWdlCi0naGVscGZpbGUnICAgICAgICAnaGYnICAgICAgZnVsbCBwYXRoIG5hbWUgb2YgdGhlIG1haW4gaGVscCBmaWxlCi0naGVscGhlaWdodCcgICAgICAnaGgnICAgICAgbWluaW11bSBoZWlnaHQgb2YgYSBuZXcgaGVscCB3aW5kb3cKLSdoZWxwbGFuZycgICAgICAgICdobGcnICAgICBwcmVmZXJyZWQgaGVscCBsYW5ndWFnZXMKLSdoaWRkZW4nICAgICAgICAgICdoaWQnICAgICBkb24ndCB1bmxvYWQgYnVmZmVyIHdoZW4gaXQgaXMgfGFiYW5kb258ZWQKLSdoaWdobGlnaHQnICAgICAgICdobCcgICAgICBzZXRzIGhpZ2hsaWdodGluZyBtb2RlIGZvciB2YXJpb3VzIG9jY2FzaW9ucwotJ2hsc2VhcmNoJyAgICAgICAgJ2hscycgICAgIGhpZ2hsaWdodCBtYXRjaGVzIHdpdGggbGFzdCBzZWFyY2ggcGF0dGVybgotJ2hpc3RvcnknICAgICAgICAgJ2hpJyAgICAgIG51bWJlciBvZiBjb21tYW5kLWxpbmVzIHRoYXQgYXJlIHJlbWVtYmVyZWQKLSdoa21hcCcgICAgICAgICAgICdoaycgICAgICBIZWJyZXcga2V5Ym9hcmQgbWFwcGluZwotJ2hrbWFwcCcgICAgICAgICAgJ2hrcCcgICAgIHBob25ldGljIEhlYnJldyBrZXlib2FyZCBtYXBwaW5nCi0naWNvbicgICAgICAgICAgICAgICAgICAgICAgbGV0IFZpbSBzZXQgdGhlIHRleHQgb2YgdGhlIHdpbmRvdyBpY29uCi0naWNvbnN0cmluZycgICAgICAgICAgICAgICAgc3RyaW5nIHRvIHVzZSBmb3IgdGhlIFZpbSBpY29uIHRleHQKLSdpZ25vcmVjYXNlJyAgICAgICdpYycgICAgICBpZ25vcmUgY2FzZSBpbiBzZWFyY2ggcGF0dGVybnMKKydoZWxwZmlsZScJICAnaGYnCSAgICBmdWxsIHBhdGggbmFtZSBvZiB0aGUgbWFpbiBoZWxwIGZpbGUKKydoZWxwaGVpZ2h0JwkgICdoaCcJICAgIG1pbmltdW0gaGVpZ2h0IG9mIGEgbmV3IGhlbHAgd2luZG93CisnaGVscGxhbmcnCSAgJ2hsZycgICAgIHByZWZlcnJlZCBoZWxwIGxhbmd1YWdlcworJ2hpZGRlbicJICAnaGlkJyAgICAgZG9uJ3QgdW5sb2FkIGJ1ZmZlciB3aGVuIGl0IGlzIHxhYmFuZG9ufGVkCisnaGlnaGxpZ2h0JwkgICdobCcJICAgIHNldHMgaGlnaGxpZ2h0aW5nIG1vZGUgZm9yIHZhcmlvdXMgb2NjYXNpb25zCisnaGxzZWFyY2gnCSAgJ2hscycgICAgIGhpZ2hsaWdodCBtYXRjaGVzIHdpdGggbGFzdCBzZWFyY2ggcGF0dGVybgorJ2hpc3RvcnknCSAgJ2hpJwkgICAgbnVtYmVyIG9mIGNvbW1hbmQtbGluZXMgdGhhdCBhcmUgcmVtZW1iZXJlZAorJ2hrbWFwJwkJICAnaGsnCSAgICBIZWJyZXcga2V5Ym9hcmQgbWFwcGluZworJ2hrbWFwcCcJICAnaGtwJyAgICAgcGhvbmV0aWMgSGVicmV3IGtleWJvYXJkIG1hcHBpbmcKKydpY29uJwkJCSAgICBsZXQgVmltIHNldCB0aGUgdGV4dCBvZiB0aGUgd2luZG93IGljb24KKydpY29uc3RyaW5nJwkJICAgIHN0cmluZyB0byB1c2UgZm9yIHRoZSBWaW0gaWNvbiB0ZXh0CisnaWdub3JlY2FzZScJICAnaWMnCSAgICBpZ25vcmUgY2FzZSBpbiBzZWFyY2ggcGF0dGVybnMKICdpbWFjdGl2YXRla2V5JyAgICdpbWFrJyAgICBrZXkgdGhhdCBhY3RpdmF0ZXMgdGhlIFggaW5wdXQgbWV0aG9kCi0naW1jbWRsaW5lJyAgICAgICAnaW1jJyAgICAgdXNlIElNIHdoZW4gc3RhcnRpbmcgdG8gZWRpdCBhIGNvbW1hbmQgbGluZQotJ2ltZGlzYWJsZScgICAgICAgJ2ltZCcgICAgIGRvIG5vdCB1c2UgdGhlIElNIGluIGFueSBtb2RlCi0naW1pbnNlcnQnICAgICAgICAnaW1pJyAgICAgdXNlIDpsbWFwIG9yIElNIGluIEluc2VydCBtb2RlCi0naW1zZWFyY2gnICAgICAgICAnaW1zJyAgICAgdXNlIDpsbWFwIG9yIElNIHdoZW4gdHlwaW5nIGEgc2VhcmNoIHBhdHRlcm4KLSdpbmNsdWRlJyAgICAgICAgICdpbmMnICAgICBwYXR0ZXJuIHRvIGJlIHVzZWQgdG8gZmluZCBhbiBpbmNsdWRlIGZpbGUKLSdpbmNsdWRlZXhwcicgICAgICdpbmV4JyAgICBleHByZXNzaW9uIHVzZWQgdG8gcHJvY2VzcyBhbiBpbmNsdWRlIGxpbmUKLSdpbmNzZWFyY2gnICAgICAgICdpcycgICAgICBoaWdobGlnaHQgbWF0Y2ggd2hpbGUgdHlwaW5nIHNlYXJjaCBwYXR0ZXJuCi0naW5kZW50ZXhwcicgICAgICAnaW5kZScgICAgZXhwcmVzc2lvbiB1c2VkIHRvIG9idGFpbiB0aGUgaW5kZW50IG9mIGEgbGluZQotJ2luZGVudGtleXMnICAgICAgJ2luZGsnICAgIGtleXMgdGhhdCB0cmlnZ2VyIGluZGVudGluZyB3aXRoICdpbmRlbnRleHByJwotJ2luZmVyY2FzZScgICAgICAgJ2luZicgICAgIGFkanVzdCBjYXNlIG9mIG1hdGNoIGZvciBrZXl3b3JkIGNvbXBsZXRpb24KLSdpbnNlcnRtb2RlJyAgICAgICdpbScgICAgICBzdGFydCB0aGUgZWRpdCBvZiBhIGZpbGUgaW4gSW5zZXJ0IG1vZGUKLSdpc2ZuYW1lJyAgICAgICAgICdpc2YnICAgICBjaGFyYWN0ZXJzIGluY2x1ZGVkIGluIGZpbGUgbmFtZXMgYW5kIHBhdGhuYW1lcwotJ2lzaWRlbnQnICAgICAgICAgJ2lzaScgICAgIGNoYXJhY3RlcnMgaW5jbHVkZWQgaW4gaWRlbnRpZmllcnMKLSdpc2tleXdvcmQnICAgICAgICdpc2snICAgICBjaGFyYWN0ZXJzIGluY2x1ZGVkIGluIGtleXdvcmRzCi0naXNwcmludCcgICAgICAgICAnaXNwJyAgICAgcHJpbnRhYmxlIGNoYXJhY3RlcnMKLSdqb2luc3BhY2VzJyAgICAgICdqcycgICAgICB0d28gc3BhY2VzIGFmdGVyIGEgcGVyaW9kIHdpdGggYSBqb2luIGNvbW1hbmQKLSdrZXknICAgICAgICAgICAgICAgICAgICAgICBlbmNyeXB0aW9uIGtleQotJ2tleW1hcCcgICAgICAgICAgJ2ttcCcgICAgIG5hbWUgb2YgYSBrZXlib2FyZCBtYXBwaW5nCi0na2V5bW9kZWwnICAgICAgICAna20nICAgICAgZW5hYmxlIHN0YXJ0aW5nL3N0b3BwaW5nIHNlbGVjdGlvbiB3aXRoIGtleXMKLSdrZXl3b3JkcHJnJyAgICAgICdrcCcgICAgICBwcm9ncmFtIHRvIHVzZSBmb3IgdGhlICJLIiBjb21tYW5kCi0nbGFuZ21hcCcgICAgICAgICAnbG1hcCcgICAgYWxwaGFiZXRpYyBjaGFyYWN0ZXJzIGZvciBvdGhlciBsYW5ndWFnZSBtb2RlCi0nbGFuZ21lbnUnICAgICAgICAnbG0nICAgICAgbGFuZ3VhZ2UgdG8gYmUgdXNlZCBmb3IgdGhlIG1lbnVzCi0nbGFzdHN0YXR1cycgICAgICAnbHMnICAgICAgdGVsbHMgd2hlbiBsYXN0IHdpbmRvdyBoYXMgc3RhdHVzIGxpbmVzCi0nbGF6eXJlZHJhdycgICAgICAnbHonICAgICAgZG9uJ3QgcmVkcmF3IHdoaWxlIGV4ZWN1dGluZyBtYWNyb3MKLSdsaW5lYnJlYWsnICAgICAgICdsYnInICAgICB3cmFwIGxvbmcgbGluZXMgYXQgYSBibGFuawotJ2xpbmVzJyAgICAgICAgICAgICAgICAgICAgIG51bWJlciBvZiBsaW5lcyBpbiB0aGUgZGlzcGxheQotJ2xpbmVzcGFjZScgICAgICAgJ2xzcCcgICAgIG51bWJlciBvZiBwaXhlbCBsaW5lcyB0byB1c2UgYmV0d2VlbiBjaGFyYWN0ZXJzCi0nbGlzcCcgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljIGluZGVudGluZyBmb3IgTGlzcAotJ2xpc3B3b3JkcycgICAgICAgJ2x3JyAgICAgIHdvcmRzIHRoYXQgY2hhbmdlIGhvdyBsaXNwIGluZGVudGluZyB3b3JrcwotJ2xpc3QnICAgICAgICAgICAgICAgICAgICAgIHNob3cgPFRhYj4gYW5kIDxFT0w+Ci0nbGlzdGNoYXJzJyAgICAgICAnbGNzJyAgICAgY2hhcmFjdGVycyBmb3IgZGlzcGxheWluZyBpbiBsaXN0IG1vZGUKLSdsb2FkcGx1Z2lucycgICAgICdscGwnICAgICBsb2FkIHBsdWdpbiBzY3JpcHRzIHdoZW4gc3RhcnRpbmcgdXAKKydpbWNtZGxpbmUnCSAgJ2ltYycgICAgIHVzZSBJTSB3aGVuIHN0YXJ0aW5nIHRvIGVkaXQgYSBjb21tYW5kIGxpbmUKKydpbWRpc2FibGUnCSAgJ2ltZCcgICAgIGRvIG5vdCB1c2UgdGhlIElNIGluIGFueSBtb2RlCisnaW1pbnNlcnQnCSAgJ2ltaScgICAgIHVzZSA6bG1hcCBvciBJTSBpbiBJbnNlcnQgbW9kZQorJ2ltc2VhcmNoJwkgICdpbXMnICAgICB1c2UgOmxtYXAgb3IgSU0gd2hlbiB0eXBpbmcgYSBzZWFyY2ggcGF0dGVybgorJ2luY2x1ZGUnCSAgJ2luYycgICAgIHBhdHRlcm4gdG8gYmUgdXNlZCB0byBmaW5kIGFuIGluY2x1ZGUgZmlsZQorJ2luY2x1ZGVleHByJwkgICdpbmV4JyAgICBleHByZXNzaW9uIHVzZWQgdG8gcHJvY2VzcyBhbiBpbmNsdWRlIGxpbmUKKydpbmNzZWFyY2gnCSAgJ2lzJwkgICAgaGlnaGxpZ2h0IG1hdGNoIHdoaWxlIHR5cGluZyBzZWFyY2ggcGF0dGVybgorJ2luZGVudGV4cHInCSAgJ2luZGUnICAgIGV4cHJlc3Npb24gdXNlZCB0byBvYnRhaW4gdGhlIGluZGVudCBvZiBhIGxpbmUKKydpbmRlbnRrZXlzJwkgICdpbmRrJyAgICBrZXlzIHRoYXQgdHJpZ2dlciBpbmRlbnRpbmcgd2l0aCAnaW5kZW50ZXhwcicKKydpbmZlcmNhc2UnCSAgJ2luZicgICAgIGFkanVzdCBjYXNlIG9mIG1hdGNoIGZvciBrZXl3b3JkIGNvbXBsZXRpb24KKydpbnNlcnRtb2RlJwkgICdpbScJICAgIHN0YXJ0IHRoZSBlZGl0IG9mIGEgZmlsZSBpbiBJbnNlcnQgbW9kZQorJ2lzZm5hbWUnCSAgJ2lzZicgICAgIGNoYXJhY3RlcnMgaW5jbHVkZWQgaW4gZmlsZSBuYW1lcyBhbmQgcGF0aG5hbWVzCisnaXNpZGVudCcJICAnaXNpJyAgICAgY2hhcmFjdGVycyBpbmNsdWRlZCBpbiBpZGVudGlmaWVycworJ2lza2V5d29yZCcJICAnaXNrJyAgICAgY2hhcmFjdGVycyBpbmNsdWRlZCBpbiBrZXl3b3JkcworJ2lzcHJpbnQnCSAgJ2lzcCcgICAgIHByaW50YWJsZSBjaGFyYWN0ZXJzCisnam9pbnNwYWNlcycJICAnanMnCSAgICB0d28gc3BhY2VzIGFmdGVyIGEgcGVyaW9kIHdpdGggYSBqb2luIGNvbW1hbmQKKydrZXknCQkJICAgIGVuY3J5cHRpb24ga2V5Cisna2V5bWFwJwkgICdrbXAnICAgICBuYW1lIG9mIGEga2V5Ym9hcmQgbWFwcGluZworJ2tleW1vZGVsJwkgICdrbScJICAgIGVuYWJsZSBzdGFydGluZy9zdG9wcGluZyBzZWxlY3Rpb24gd2l0aCBrZXlzCisna2V5d29yZHByZycJICAna3AnCSAgICBwcm9ncmFtIHRvIHVzZSBmb3IgdGhlICJLIiBjb21tYW5kCisnbGFuZ21hcCcJICAnbG1hcCcgICAgYWxwaGFiZXRpYyBjaGFyYWN0ZXJzIGZvciBvdGhlciBsYW5ndWFnZSBtb2RlCisnbGFuZ21lbnUnCSAgJ2xtJwkgICAgbGFuZ3VhZ2UgdG8gYmUgdXNlZCBmb3IgdGhlIG1lbnVzCisnbGFzdHN0YXR1cycJICAnbHMnCSAgICB0ZWxscyB3aGVuIGxhc3Qgd2luZG93IGhhcyBzdGF0dXMgbGluZXMKKydsYXp5cmVkcmF3JwkgICdseicJICAgIGRvbid0IHJlZHJhdyB3aGlsZSBleGVjdXRpbmcgbWFjcm9zCisnbGluZWJyZWFrJwkgICdsYnInICAgICB3cmFwIGxvbmcgbGluZXMgYXQgYSBibGFuaworJ2xpbmVzJwkJCSAgICBudW1iZXIgb2YgbGluZXMgaW4gdGhlIGRpc3BsYXkKKydsaW5lc3BhY2UnCSAgJ2xzcCcgICAgIG51bWJlciBvZiBwaXhlbCBsaW5lcyB0byB1c2UgYmV0d2VlbiBjaGFyYWN0ZXJzCisnbGlzcCcJCQkgICAgYXV0b21hdGljIGluZGVudGluZyBmb3IgTGlzcAorJ2xpc3B3b3JkcycJICAnbHcnCSAgICB3b3JkcyB0aGF0IGNoYW5nZSBob3cgbGlzcCBpbmRlbnRpbmcgd29ya3MKKydsaXN0JwkJCSAgICBzaG93IDxUYWI+IGFuZCA8RU9MPgorJ2xpc3RjaGFycycJICAnbGNzJyAgICAgY2hhcmFjdGVycyBmb3IgZGlzcGxheWluZyBpbiBsaXN0IG1vZGUKKydsb2FkcGx1Z2lucycJICAnbHBsJyAgICAgbG9hZCBwbHVnaW4gc2NyaXB0cyB3aGVuIHN0YXJ0aW5nIHVwCiAnbWFjYXRzdWknCQkgICAgTWFjIEdVSTogdXNlIEFUU1VJIHRleHQgZHJhd2luZwotJ21hZ2ljJyAgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIHNlYXJjaCBwYXR0ZXJucwotJ21ha2VlZicgICAgICAgICAgJ21lZicgICAgIG5hbWUgb2YgdGhlIGVycm9yZmlsZSBmb3IgIjptYWtlIgotJ21ha2VwcmcnICAgICAgICAgJ21wJyAgICAgIHByb2dyYW0gdG8gdXNlIGZvciB0aGUgIjptYWtlIiBjb21tYW5kCi0nbWF0Y2hwYWlycycgICAgICAnbXBzJyAgICAgcGFpcnMgb2YgY2hhcmFjdGVycyB0aGF0ICIlIiBjYW4gbWF0Y2gKLSdtYXRjaHRpbWUnICAgICAgICdtYXQnICAgICB0ZW50aHMgb2YgYSBzZWNvbmQgdG8gc2hvdyBtYXRjaGluZyBwYXJlbgotJ21heGNvbWJpbmUnICAgICAgJ21jbycgICAgIG1heGltdW0gbnIgb2YgY29tYmluaW5nIGNoYXJhY3RlcnMgZGlzcGxheWVkCi0nbWF4ZnVuY2RlcHRoJyAgICAnbWZkJyAgICAgbWF4aW11bSByZWN1cnNpdmUgZGVwdGggZm9yIHVzZXIgZnVuY3Rpb25zCi0nbWF4bWFwZGVwdGgnICAgICAnbW1kJyAgICAgbWF4aW11bSByZWN1cnNpdmUgZGVwdGggZm9yIG1hcHBpbmcKLSdtYXhtZW0nICAgICAgICAgICdtbScgICAgICBtYXhpbXVtIG1lbW9yeSAoaW4gS2J5dGUpIHVzZWQgZm9yIG9uZSBidWZmZXIKKydtYWdpYycJCQkgICAgY2hhbmdlcyBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gc2VhcmNoIHBhdHRlcm5zCisnbWFrZWVmJwkgICdtZWYnICAgICBuYW1lIG9mIHRoZSBlcnJvcmZpbGUgZm9yICI6bWFrZSIKKydtYWtlcHJnJwkgICdtcCcJICAgIHByb2dyYW0gdG8gdXNlIGZvciB0aGUgIjptYWtlIiBjb21tYW5kCisnbWF0Y2hwYWlycycJICAnbXBzJyAgICAgcGFpcnMgb2YgY2hhcmFjdGVycyB0aGF0ICIlIiBjYW4gbWF0Y2gKKydtYXRjaHRpbWUnCSAgJ21hdCcgICAgIHRlbnRocyBvZiBhIHNlY29uZCB0byBzaG93IG1hdGNoaW5nIHBhcmVuCisnbWF4Y29tYmluZScJICAnbWNvJyAgICAgbWF4aW11bSBuciBvZiBjb21iaW5pbmcgY2hhcmFjdGVycyBkaXNwbGF5ZWQKKydtYXhmdW5jZGVwdGgnCSAgJ21mZCcgICAgIG1heGltdW0gcmVjdXJzaXZlIGRlcHRoIGZvciB1c2VyIGZ1bmN0aW9ucworJ21heG1hcGRlcHRoJwkgICdtbWQnICAgICBtYXhpbXVtIHJlY3Vyc2l2ZSBkZXB0aCBmb3IgbWFwcGluZworJ21heG1lbScJICAnbW0nCSAgICBtYXhpbXVtIG1lbW9yeSAoaW4gS2J5dGUpIHVzZWQgZm9yIG9uZSBidWZmZXIKICdtYXhtZW1wYXR0ZXJuJyAgICdtbXAnICAgICBtYXhpbXVtIG1lbW9yeSAoaW4gS2J5dGUpIHVzZWQgZm9yIHBhdHRlcm4gc2VhcmNoCi0nbWF4bWVtdG90JyAgICAgICAnbW10JyAgICAgbWF4aW11bSBtZW1vcnkgKGluIEtieXRlKSB1c2VkIGZvciBhbGwgYnVmZmVycwotJ21lbnVpdGVtcycgICAgICAgJ21pcycgICAgIG1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIGluIGEgbWVudQotJ21rc3BlbGxtZW0nICAgICAgJ21zbScgICAgIG1lbW9yeSB1c2VkIGJlZm9yZSB8Om1rc3BlbGx8IGNvbXByZXNzZXMgdGhlIHRyZWUKLSdtb2RlbGluZScgICAgICAgICdtbCcgICAgICByZWNvZ25pemUgbW9kZWxpbmVzIGF0IHN0YXJ0IG9yIGVuZCBvZiBmaWxlCi0nbW9kZWxpbmVzJyAgICAgICAnbWxzJyAgICAgbnVtYmVyIG9mIGxpbmVzIGNoZWNrZWQgZm9yIG1vZGVsaW5lcwotJ21vZGlmaWFibGUnICAgICAgJ21hJyAgICAgIGNoYW5nZXMgdG8gdGhlIHRleHQgYXJlIG5vdCBwb3NzaWJsZQotJ21vZGlmaWVkJyAgICAgICAgJ21vZCcgICAgIGJ1ZmZlciBoYXMgYmVlbiBtb2RpZmllZAotJ21vcmUnICAgICAgICAgICAgICAgICAgICAgIHBhdXNlIGxpc3RpbmdzIHdoZW4gdGhlIHdob2xlIHNjcmVlbiBpcyBmaWxsZWQKLSdtb3VzZScgICAgICAgICAgICAgICAgICAgICBlbmFibGUgdGhlIHVzZSBvZiBtb3VzZSBjbGlja3MKLSdtb3VzZWZvY3VzJyAgICAgICdtb3VzZWYnICBrZXlib2FyZCBmb2N1cyBmb2xsb3dzIHRoZSBtb3VzZQotJ21vdXNlaGlkZScgICAgICAgJ21oJyAgICAgIGhpZGUgbW91c2UgcG9pbnRlciB3aGlsZSB0eXBpbmcKLSdtb3VzZW1vZGVsJyAgICAgICdtb3VzZW0nICBjaGFuZ2VzIG1lYW5pbmcgb2YgbW91c2UgYnV0dG9ucwotJ21vdXNlc2hhcGUnICAgICAgJ21vdXNlcycgIHNoYXBlIG9mIHRoZSBtb3VzZSBwb2ludGVyIGluIGRpZmZlcmVudCBtb2RlcwotJ21vdXNldGltZScgICAgICAgJ21vdXNldCcgIG1heCB0aW1lIGJldHdlZW4gbW91c2UgZG91YmxlLWNsaWNrCi0nbXpxdWFudHVtJyAgICAgICAnbXpxJyAgICAgdGhlIGludGVydmFsIGJldHdlZW4gcG9sbHMgZm9yIE16U2NoZW1lIHRocmVhZHMKLSducmZvcm1hdHMnICAgICAgICduZicgICAgICBudW1iZXIgZm9ybWF0cyByZWNvZ25pemVkIGZvciBDVFJMLUEgY29tbWFuZAotJ251bWJlcicgICAgICAgICAgJ251JyAgICAgIHByaW50IHRoZSBsaW5lIG51bWJlciBpbiBmcm9udCBvZiBlYWNoIGxpbmUKLSdudW1iZXJ3aWR0aCcgICAgICdudXcnICAgICBudW1iZXIgb2YgY29sdW1ucyB1c2VkIGZvciB0aGUgbGluZSBudW1iZXIKLSdvbW5pZnVuYycgICAgICAgICdvZnUnICAgICBmdW5jdGlvbiBmb3IgZmlsZXR5cGUtc3BlY2lmaWMgY29tcGxldGlvbgotJ29wZXJhdG9yZnVuYycgICAgJ29wZnVuYycgIGZ1bnRpb24gdG8gYmUgY2FsbGVkIGZvciB8Z0B8IG9wZXJhdG9yCi0nb3NmaWxldHlwZScgICAgICAnb2Z0JyAgICAgb3BlcmF0aW5nIHN5c3RlbS1zcGVjaWZpYyBmaWxldHlwZSBpbmZvcm1hdGlvbgotJ3BhcmFncmFwaHMnICAgICAgJ3BhcmEnICAgIG5yb2ZmIG1hY3JvcyB0aGF0IHNlcGFyYXRlIHBhcmFncmFwaHMKLSdwYXN0ZScgICAgICAgICAgICAgICAgICAgICBhbGxvdyBwYXN0aW5nIHRleHQKLSdwYXN0ZXRvZ2dsZScgICAgICdwdCcgICAgICBrZXkgY29kZSB0aGF0IGNhdXNlcyAncGFzdGUnIHRvIHRvZ2dsZQotJ3BhdGNoZXhwcicgICAgICAgJ3BleCcgICAgIGV4cHJlc3Npb24gdXNlZCB0byBwYXRjaCBhIGZpbGUKLSdwYXRjaG1vZGUnICAgICAgICdwbScgICAgICBrZWVwIHRoZSBvbGRlc3QgdmVyc2lvbiBvZiBhIGZpbGUKLSdwYXRoJyAgICAgICAgICAgICdwYScgICAgICBsaXN0IG9mIGRpcmVjdG9yaWVzIHNlYXJjaGVkIHdpdGggImdmIiBldC5hbC4KLSdwcmVzZXJ2ZWluZGVudCcgICdwaScgICAgICBwcmVzZXJ2ZSB0aGUgaW5kZW50IHN0cnVjdHVyZSB3aGVuIHJlaW5kZW50aW5nCisnbWF4bWVtdG90JwkgICdtbXQnICAgICBtYXhpbXVtIG1lbW9yeSAoaW4gS2J5dGUpIHVzZWQgZm9yIGFsbCBidWZmZXJzCisnbWVudWl0ZW1zJwkgICdtaXMnICAgICBtYXhpbXVtIG51bWJlciBvZiBpdGVtcyBpbiBhIG1lbnUKKydta3NwZWxsbWVtJwkgICdtc20nICAgICBtZW1vcnkgdXNlZCBiZWZvcmUgfDpta3NwZWxsfCBjb21wcmVzc2VzIHRoZSB0cmVlCisnbW9kZWxpbmUnCSAgJ21sJwkgICAgcmVjb2duaXplIG1vZGVsaW5lcyBhdCBzdGFydCBvciBlbmQgb2YgZmlsZQorJ21vZGVsaW5lcycJICAnbWxzJyAgICAgbnVtYmVyIG9mIGxpbmVzIGNoZWNrZWQgZm9yIG1vZGVsaW5lcworJ21vZGlmaWFibGUnCSAgJ21hJwkgICAgY2hhbmdlcyB0byB0aGUgdGV4dCBhcmUgbm90IHBvc3NpYmxlCisnbW9kaWZpZWQnCSAgJ21vZCcgICAgIGJ1ZmZlciBoYXMgYmVlbiBtb2RpZmllZAorJ21vcmUnCQkJICAgIHBhdXNlIGxpc3RpbmdzIHdoZW4gdGhlIHdob2xlIHNjcmVlbiBpcyBmaWxsZWQKKydtb3VzZScJCQkgICAgZW5hYmxlIHRoZSB1c2Ugb2YgbW91c2UgY2xpY2tzCisnbW91c2Vmb2N1cycJICAnbW91c2VmJyAga2V5Ym9hcmQgZm9jdXMgZm9sbG93cyB0aGUgbW91c2UKKydtb3VzZWhpZGUnCSAgJ21oJwkgICAgaGlkZSBtb3VzZSBwb2ludGVyIHdoaWxlIHR5cGluZworJ21vdXNlbW9kZWwnCSAgJ21vdXNlbScgIGNoYW5nZXMgbWVhbmluZyBvZiBtb3VzZSBidXR0b25zCisnbW91c2VzaGFwZScJICAnbW91c2VzJyAgc2hhcGUgb2YgdGhlIG1vdXNlIHBvaW50ZXIgaW4gZGlmZmVyZW50IG1vZGVzCisnbW91c2V0aW1lJwkgICdtb3VzZXQnICBtYXggdGltZSBiZXR3ZWVuIG1vdXNlIGRvdWJsZS1jbGljaworJ216cXVhbnR1bScJICAnbXpxJyAgICAgdGhlIGludGVydmFsIGJldHdlZW4gcG9sbHMgZm9yIE16U2NoZW1lIHRocmVhZHMKKyducmZvcm1hdHMnCSAgJ25mJwkgICAgbnVtYmVyIGZvcm1hdHMgcmVjb2duaXplZCBmb3IgQ1RSTC1BIGNvbW1hbmQKKydudW1iZXInCSAgJ251JwkgICAgcHJpbnQgdGhlIGxpbmUgbnVtYmVyIGluIGZyb250IG9mIGVhY2ggbGluZQorJ251bWJlcndpZHRoJwkgICdudXcnICAgICBudW1iZXIgb2YgY29sdW1ucyB1c2VkIGZvciB0aGUgbGluZSBudW1iZXIKKydvbW5pZnVuYycJICAnb2Z1JyAgICAgZnVuY3Rpb24gZm9yIGZpbGV0eXBlLXNwZWNpZmljIGNvbXBsZXRpb24KKydvcGVyYXRvcmZ1bmMnCSAgJ29wZnVuYycgIGZ1bnRpb24gdG8gYmUgY2FsbGVkIGZvciB8Z0B8IG9wZXJhdG9yCisnb3NmaWxldHlwZScJICAnb2Z0JyAgICAgb3BlcmF0aW5nIHN5c3RlbS1zcGVjaWZpYyBmaWxldHlwZSBpbmZvcm1hdGlvbgorJ3BhcmFncmFwaHMnCSAgJ3BhcmEnICAgIG5yb2ZmIG1hY3JvcyB0aGF0IHNlcGFyYXRlIHBhcmFncmFwaHMKKydwYXN0ZScJCQkgICAgYWxsb3cgcGFzdGluZyB0ZXh0CisncGFzdGV0b2dnbGUnCSAgJ3B0JwkgICAga2V5IGNvZGUgdGhhdCBjYXVzZXMgJ3Bhc3RlJyB0byB0b2dnbGUKKydwYXRjaGV4cHInCSAgJ3BleCcgICAgIGV4cHJlc3Npb24gdXNlZCB0byBwYXRjaCBhIGZpbGUKKydwYXRjaG1vZGUnCSAgJ3BtJwkgICAga2VlcCB0aGUgb2xkZXN0IHZlcnNpb24gb2YgYSBmaWxlCisncGF0aCcJCSAgJ3BhJwkgICAgbGlzdCBvZiBkaXJlY3RvcmllcyBzZWFyY2hlZCB3aXRoICJnZiIgZXQuYWwuCisncHJlc2VydmVpbmRlbnQnICAncGknCSAgICBwcmVzZXJ2ZSB0aGUgaW5kZW50IHN0cnVjdHVyZSB3aGVuIHJlaW5kZW50aW5nCiAncHJldmlld2hlaWdodCcgICAncHZoJyAgICAgaGVpZ2h0IG9mIHRoZSBwcmV2aWV3IHdpbmRvdwogJ3ByZXZpZXd3aW5kb3cnICAgJ3B2dycgICAgIGlkZW50aWZpZXMgdGhlIHByZXZpZXcgd2luZG93Ci0ncHJpbnRkZXZpY2UnICAgICAncGRldicgICAgbmFtZSBvZiB0aGUgcHJpbnRlciB0byBiZSB1c2VkIGZvciA6aGFyZGNvcHkKKydwcmludGRldmljZScJICAncGRldicgICAgbmFtZSBvZiB0aGUgcHJpbnRlciB0byBiZSB1c2VkIGZvciA6aGFyZGNvcHkKICdwcmludGVuY29kaW5nJyAgICdwZW5jJyAgICBlbmNvZGluZyB0byBiZSB1c2VkIGZvciBwcmludGluZwotJ3ByaW50ZXhwcicgICAgICAgJ3BleHByJyAgIGV4cHJlc3Npb24gdXNlZCB0byBwcmludCBQb3N0U2NyaXB0IGZvciA6aGFyZGNvcHkKLSdwcmludGZvbnQnICAgICAgICdwZm4nICAgICBuYW1lIG9mIHRoZSBmb250IHRvIGJlIHVzZWQgZm9yIDpoYXJkY29weQotJ3ByaW50aGVhZGVyJyAgICAgJ3BoZWFkZXInIGZvcm1hdCBvZiB0aGUgaGVhZGVyIHVzZWQgZm9yIDpoYXJkY29weQorJ3ByaW50ZXhwcicJICAncGV4cHInICAgZXhwcmVzc2lvbiB1c2VkIHRvIHByaW50IFBvc3RTY3JpcHQgZm9yIDpoYXJkY29weQorJ3ByaW50Zm9udCcJICAncGZuJyAgICAgbmFtZSBvZiB0aGUgZm9udCB0byBiZSB1c2VkIGZvciA6aGFyZGNvcHkKKydwcmludGhlYWRlcicJICAncGhlYWRlcicgZm9ybWF0IG9mIHRoZSBoZWFkZXIgdXNlZCBmb3IgOmhhcmRjb3B5CiAncHJpbnRtYmNoYXJzZXQnICAncG1iY3MnICAgQ0pLIGNoYXJhY3RlciBzZXQgdG8gYmUgdXNlZCBmb3IgOmhhcmRjb3B5Ci0ncHJpbnRtYmZvbnQnICAgICAncG1iZm4nICAgZm9udCBuYW1lcyB0byBiZSB1c2VkIGZvciBDSksgb3V0cHV0IG9mIDpoYXJkY29weQotJ3ByaW50b3B0aW9ucycgICAgJ3BvcHQnICAgIGNvbnRyb2xzIHRoZSBmb3JtYXQgb2YgOmhhcmRjb3B5IG91dHB1dAotJ3B1bWhlaWdodCcnICAgICAgJ3BoJyAgICAgIG1heGltdW0gaGVpZ2h0IG9mIHRoZSBwb3B1cCBtZW51Ci0ncXVvdGVlc2NhcGUnICAgICAncWUnICAgICAgZXNjYXBlIGNoYXJhY3RlcnMgdXNlZCBpbiBhIHN0cmluZwotJ3JlYWRvbmx5JyAgICAgICAgJ3JvJyAgICAgIGRpc2FsbG93IHdyaXRpbmcgdGhlIGJ1ZmZlcgotJ3JlbWFwJyAgICAgICAgICAgICAgICAgICAgIGFsbG93IG1hcHBpbmdzIHRvIHdvcmsgcmVjdXJzaXZlbHkKLSdyZXBvcnQnICAgICAgICAgICAgICAgICAgICB0aHJlc2hvbGQgZm9yIHJlcG9ydGluZyBuci4gb2YgbGluZXMgY2hhbmdlZAotJ3Jlc3RvcmVzY3JlZW4nICAgJ3JzJyAgICAgIFdpbjMyOiByZXN0b3JlIHNjcmVlbiB3aGVuIGV4aXRpbmcKLSdyZXZpbnMnICAgICAgICAgICdyaScgICAgICBpbnNlcnRpbmcgY2hhcmFjdGVycyB3aWxsIHdvcmsgYmFja3dhcmRzCi0ncmlnaHRsZWZ0JyAgICAgICAncmwnICAgICAgd2luZG93IGlzIHJpZ2h0LXRvLWxlZnQgb3JpZW50ZWQKLSdyaWdodGxlZnRjbWQnICAgICdybGMnICAgICBjb21tYW5kcyBmb3Igd2hpY2ggZWRpdGluZyB3b3JrcyByaWdodC10by1sZWZ0Ci0ncnVsZXInICAgICAgICAgICAncnUnICAgICAgc2hvdyBjdXJzb3IgbGluZSBhbmQgY29sdW1uIGluIHRoZSBzdGF0dXMgbGluZQotJ3J1bGVyZm9ybWF0JyAgICAgJ3J1ZicgICAgIGN1c3RvbSBmb3JtYXQgZm9yIHRoZSBydWxlcgotJ3J1bnRpbWVwYXRoJyAgICAgJ3J0cCcgICAgIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdXNlZCBmb3IgcnVudGltZSBmaWxlcwotJ3Njcm9sbCcgICAgICAgICAgJ3NjcicgICAgIGxpbmVzIHRvIHNjcm9sbCB3aXRoIENUUkwtVSBhbmQgQ1RSTC1ECi0nc2Nyb2xsYmluZCcgICAgICAnc2NiJyAgICAgc2Nyb2xsIGluIHdpbmRvdyBhcyBvdGhlciB3aW5kb3dzIHNjcm9sbAotJ3Njcm9sbGp1bXAnICAgICAgJ3NqJyAgICAgIG1pbmltdW0gbnVtYmVyIG9mIGxpbmVzIHRvIHNjcm9sbAotJ3Njcm9sbG9mZicgICAgICAgJ3NvJyAgICAgIG1pbmltdW0gbnIuIG9mIGxpbmVzIGFib3ZlIGFuZCBiZWxvdyBjdXJzb3IKLSdzY3JvbGxvcHQnICAgICAgICdzYm8nICAgICBob3cgJ3Njcm9sbGJpbmQnIHNob3VsZCBiZWhhdmUKLSdzZWN0aW9ucycgICAgICAgICdzZWN0JyAgICBucm9mZiBtYWNyb3MgdGhhdCBzZXBhcmF0ZSBzZWN0aW9ucwotJ3NlY3VyZScgICAgICAgICAgICAgICAgICAgIHNlY3VyZSBtb2RlIGZvciByZWFkaW5nIC52aW1yYyBpbiBjdXJyZW50IGRpcgotJ3NlbGVjdGlvbicgICAgICAgJ3NlbCcgICAgIHdoYXQgdHlwZSBvZiBzZWxlY3Rpb24gdG8gdXNlCi0nc2VsZWN0bW9kZScgICAgICAnc2xtJyAgICAgd2hlbiB0byB1c2UgU2VsZWN0IG1vZGUgaW5zdGVhZCBvZiBWaXN1YWwgbW9kZQorJ3ByaW50bWJmb250JwkgICdwbWJmbicgICBmb250IG5hbWVzIHRvIGJlIHVzZWQgZm9yIENKSyBvdXRwdXQgb2YgOmhhcmRjb3B5CisncHJpbnRvcHRpb25zJwkgICdwb3B0JyAgICBjb250cm9scyB0aGUgZm9ybWF0IG9mIDpoYXJkY29weSBvdXRwdXQKKydwdW1oZWlnaHQnJwkgICdwaCcJICAgIG1heGltdW0gaGVpZ2h0IG9mIHRoZSBwb3B1cCBtZW51CisncXVvdGVlc2NhcGUnCSAgJ3FlJwkgICAgZXNjYXBlIGNoYXJhY3RlcnMgdXNlZCBpbiBhIHN0cmluZworJ3JlYWRvbmx5JwkgICdybycJICAgIGRpc2FsbG93IHdyaXRpbmcgdGhlIGJ1ZmZlcgorJ3JlbWFwJwkJCSAgICBhbGxvdyBtYXBwaW5ncyB0byB3b3JrIHJlY3Vyc2l2ZWx5CisncmVwb3J0JwkJICAgIHRocmVzaG9sZCBmb3IgcmVwb3J0aW5nIG5yLiBvZiBsaW5lcyBjaGFuZ2VkCisncmVzdG9yZXNjcmVlbicgICAncnMnCSAgICBXaW4zMjogcmVzdG9yZSBzY3JlZW4gd2hlbiBleGl0aW5nCisncmV2aW5zJwkgICdyaScJICAgIGluc2VydGluZyBjaGFyYWN0ZXJzIHdpbGwgd29yayBiYWNrd2FyZHMKKydyaWdodGxlZnQnCSAgJ3JsJwkgICAgd2luZG93IGlzIHJpZ2h0LXRvLWxlZnQgb3JpZW50ZWQKKydyaWdodGxlZnRjbWQnCSAgJ3JsYycgICAgIGNvbW1hbmRzIGZvciB3aGljaCBlZGl0aW5nIHdvcmtzIHJpZ2h0LXRvLWxlZnQKKydydWxlcicJCSAgJ3J1JwkgICAgc2hvdyBjdXJzb3IgbGluZSBhbmQgY29sdW1uIGluIHRoZSBzdGF0dXMgbGluZQorJ3J1bGVyZm9ybWF0JwkgICdydWYnICAgICBjdXN0b20gZm9ybWF0IGZvciB0aGUgcnVsZXIKKydydW50aW1lcGF0aCcJICAncnRwJyAgICAgbGlzdCBvZiBkaXJlY3RvcmllcyB1c2VkIGZvciBydW50aW1lIGZpbGVzCisnc2Nyb2xsJwkgICdzY3InICAgICBsaW5lcyB0byBzY3JvbGwgd2l0aCBDVFJMLVUgYW5kIENUUkwtRAorJ3Njcm9sbGJpbmQnCSAgJ3NjYicgICAgIHNjcm9sbCBpbiB3aW5kb3cgYXMgb3RoZXIgd2luZG93cyBzY3JvbGwKKydzY3JvbGxqdW1wJwkgICdzaicJICAgIG1pbmltdW0gbnVtYmVyIG9mIGxpbmVzIHRvIHNjcm9sbAorJ3Njcm9sbG9mZicJICAnc28nCSAgICBtaW5pbXVtIG5yLiBvZiBsaW5lcyBhYm92ZSBhbmQgYmVsb3cgY3Vyc29yCisnc2Nyb2xsb3B0JwkgICdzYm8nICAgICBob3cgJ3Njcm9sbGJpbmQnIHNob3VsZCBiZWhhdmUKKydzZWN0aW9ucycJICAnc2VjdCcgICAgbnJvZmYgbWFjcm9zIHRoYXQgc2VwYXJhdGUgc2VjdGlvbnMKKydzZWN1cmUnCQkgICAgc2VjdXJlIG1vZGUgZm9yIHJlYWRpbmcgLnZpbXJjIGluIGN1cnJlbnQgZGlyCisnc2VsZWN0aW9uJwkgICdzZWwnICAgICB3aGF0IHR5cGUgb2Ygc2VsZWN0aW9uIHRvIHVzZQorJ3NlbGVjdG1vZGUnCSAgJ3NsbScgICAgIHdoZW4gdG8gdXNlIFNlbGVjdCBtb2RlIGluc3RlYWQgb2YgVmlzdWFsIG1vZGUKICdzZXNzaW9ub3B0aW9ucycgICdzc29wJyAgICBvcHRpb25zIGZvciB8Om1rc2Vzc2lvbnwKLSdzaGVsbCcgICAgICAgICAgICdzaCcgICAgICBuYW1lIG9mIHNoZWxsIHRvIHVzZSBmb3IgZXh0ZXJuYWwgY29tbWFuZHMKLSdzaGVsbGNtZGZsYWcnICAgICdzaGNmJyAgICBmbGFnIHRvIHNoZWxsIHRvIGV4ZWN1dGUgb25lIGNvbW1hbmQKLSdzaGVsbHBpcGUnICAgICAgICdzcCcgICAgICBzdHJpbmcgdG8gcHV0IG91dHB1dCBvZiAiOm1ha2UiIGluIGVycm9yIGZpbGUKLSdzaGVsbHF1b3RlJyAgICAgICdzaHEnICAgICBxdW90ZSBjaGFyYWN0ZXIocykgZm9yIGFyb3VuZCBzaGVsbCBjb21tYW5kCi0nc2hlbGxyZWRpcicgICAgICAnc3JyJyAgICAgc3RyaW5nIHRvIHB1dCBvdXRwdXQgb2YgZmlsdGVyIGluIGEgdGVtcCBmaWxlCi0nc2hlbGxzbGFzaCcgICAgICAnc3NsJyAgICAgdXNlIGZvcndhcmQgc2xhc2ggZm9yIHNoZWxsIGZpbGUgbmFtZXMKLSdzaGVsbHRlbXAnICAgICAgICdzdG1wJyAgICB3aGV0aGVyIHRvIHVzZSBhIHRlbXAgZmlsZSBmb3Igc2hlbGwgY29tbWFuZHMKLSdzaGVsbHR5cGUnICAgICAgICdzdCcgICAgICBBbWlnYTogaW5mbHVlbmNlcyBob3cgdG8gdXNlIGEgc2hlbGwKLSdzaGVsbHhxdW90ZScgICAgICdzeHEnICAgICBsaWtlICdzaGVsbHF1b3RlJywgYnV0IGluY2x1ZGUgcmVkaXJlY3Rpb24KLSdzaGlmdHJvdW5kJyAgICAgICdzcicgICAgICByb3VuZCBpbmRlbnQgdG8gbXVsdGlwbGUgb2Ygc2hpZnR3aWR0aAotJ3NoaWZ0d2lkdGgnICAgICAgJ3N3JyAgICAgIG51bWJlciBvZiBzcGFjZXMgdG8gdXNlIGZvciAoYXV0bylpbmRlbnQgc3RlcAotJ3Nob3J0bWVzcycgICAgICAgJ3NobScgICAgIGxpc3Qgb2YgZmxhZ3MsIHJlZHVjZSBsZW5ndGggb2YgbWVzc2FnZXMKLSdzaG9ydG5hbWUnICAgICAgICdzbicgICAgICBub24tTVMtRE9TOiBGaWxlbmFtZXMgYXNzdW1lZCB0byBiZSA4LjMgY2hhcnMKLSdzaG93YnJlYWsnICAgICAgICdzYnInICAgICBzdHJpbmcgdG8gdXNlIGF0IHRoZSBzdGFydCBvZiB3cmFwcGVkIGxpbmVzCi0nc2hvd2NtZCcgICAgICAgICAnc2MnICAgICAgc2hvdyAocGFydGlhbCkgY29tbWFuZCBpbiBzdGF0dXMgbGluZQotJ3Nob3dmdWxsdGFnJyAgICAgJ3NmdCcgICAgIHNob3cgZnVsbCB0YWcgcGF0dGVybiB3aGVuIGNvbXBsZXRpbmcgdGFnCi0nc2hvd21hdGNoJyAgICAgICAnc20nICAgICAgYnJpZWZseSBqdW1wIHRvIG1hdGNoaW5nIGJyYWNrZXQgaWYgaW5zZXJ0IG9uZQotJ3Nob3dtb2RlJyAgICAgICAgJ3NtZCcgICAgIG1lc3NhZ2Ugb24gc3RhdHVzIGxpbmUgdG8gc2hvdyBjdXJyZW50IG1vZGUKLSdzaG93dGFibGluZScgICAgICdzdGFsJyAgICB0ZWxscyB3aGVuIHRoZSB0YWIgcGFnZXMgbGluZSBpcyBkaXNwbGF5ZWQKLSdzaWRlc2Nyb2xsJyAgICAgICdzcycgICAgICBtaW5pbXVtIG51bWJlciBvZiBjb2x1bW5zIHRvIHNjcm9sbCBob3Jpem9udGFsCisnc2hlbGwnCQkgICdzaCcJICAgIG5hbWUgb2Ygc2hlbGwgdG8gdXNlIGZvciBleHRlcm5hbCBjb21tYW5kcworJ3NoZWxsY21kZmxhZycJICAnc2hjZicgICAgZmxhZyB0byBzaGVsbCB0byBleGVjdXRlIG9uZSBjb21tYW5kCisnc2hlbGxwaXBlJwkgICdzcCcJICAgIHN0cmluZyB0byBwdXQgb3V0cHV0IG9mICI6bWFrZSIgaW4gZXJyb3IgZmlsZQorJ3NoZWxscXVvdGUnCSAgJ3NocScgICAgIHF1b3RlIGNoYXJhY3RlcihzKSBmb3IgYXJvdW5kIHNoZWxsIGNvbW1hbmQKKydzaGVsbHJlZGlyJwkgICdzcnInICAgICBzdHJpbmcgdG8gcHV0IG91dHB1dCBvZiBmaWx0ZXIgaW4gYSB0ZW1wIGZpbGUKKydzaGVsbHNsYXNoJwkgICdzc2wnICAgICB1c2UgZm9yd2FyZCBzbGFzaCBmb3Igc2hlbGwgZmlsZSBuYW1lcworJ3NoZWxsdGVtcCcJICAnc3RtcCcgICAgd2hldGhlciB0byB1c2UgYSB0ZW1wIGZpbGUgZm9yIHNoZWxsIGNvbW1hbmRzCisnc2hlbGx0eXBlJwkgICdzdCcJICAgIEFtaWdhOiBpbmZsdWVuY2VzIGhvdyB0byB1c2UgYSBzaGVsbAorJ3NoZWxseHF1b3RlJwkgICdzeHEnICAgICBsaWtlICdzaGVsbHF1b3RlJywgYnV0IGluY2x1ZGUgcmVkaXJlY3Rpb24KKydzaGlmdHJvdW5kJwkgICdzcicJICAgIHJvdW5kIGluZGVudCB0byBtdWx0aXBsZSBvZiBzaGlmdHdpZHRoCisnc2hpZnR3aWR0aCcJICAnc3cnCSAgICBudW1iZXIgb2Ygc3BhY2VzIHRvIHVzZSBmb3IgKGF1dG8paW5kZW50IHN0ZXAKKydzaG9ydG1lc3MnCSAgJ3NobScgICAgIGxpc3Qgb2YgZmxhZ3MsIHJlZHVjZSBsZW5ndGggb2YgbWVzc2FnZXMKKydzaG9ydG5hbWUnCSAgJ3NuJwkgICAgbm9uLU1TLURPUzogRmlsZW5hbWVzIGFzc3VtZWQgdG8gYmUgOC4zIGNoYXJzCisnc2hvd2JyZWFrJwkgICdzYnInICAgICBzdHJpbmcgdG8gdXNlIGF0IHRoZSBzdGFydCBvZiB3cmFwcGVkIGxpbmVzCisnc2hvd2NtZCcJICAnc2MnCSAgICBzaG93IChwYXJ0aWFsKSBjb21tYW5kIGluIHN0YXR1cyBsaW5lCisnc2hvd2Z1bGx0YWcnCSAgJ3NmdCcgICAgIHNob3cgZnVsbCB0YWcgcGF0dGVybiB3aGVuIGNvbXBsZXRpbmcgdGFnCisnc2hvd21hdGNoJwkgICdzbScJICAgIGJyaWVmbHkganVtcCB0byBtYXRjaGluZyBicmFja2V0IGlmIGluc2VydCBvbmUKKydzaG93bW9kZScJICAnc21kJyAgICAgbWVzc2FnZSBvbiBzdGF0dXMgbGluZSB0byBzaG93IGN1cnJlbnQgbW9kZQorJ3Nob3d0YWJsaW5lJwkgICdzdGFsJyAgICB0ZWxscyB3aGVuIHRoZSB0YWIgcGFnZXMgbGluZSBpcyBkaXNwbGF5ZWQKKydzaWRlc2Nyb2xsJwkgICdzcycJICAgIG1pbmltdW0gbnVtYmVyIG9mIGNvbHVtbnMgdG8gc2Nyb2xsIGhvcml6b250YWwKICdzaWRlc2Nyb2xsb2ZmJyAgICdzaXNvJyAgICBtaW4uIG5yLiBvZiBjb2x1bW5zIHRvIGxlZnQgYW5kIHJpZ2h0IG9mIGN1cnNvcgotJ3NtYXJ0Y2FzZScgICAgICAgJ3NjcycgICAgIG5vIGlnbm9yZSBjYXNlIHdoZW4gcGF0dGVybiBoYXMgdXBwZXJjYXNlCi0nc21hcnRpbmRlbnQnICAgICAnc2knICAgICAgc21hcnQgYXV0b2luZGVudGluZyBmb3IgQyBwcm9ncmFtcwotJ3NtYXJ0dGFiJyAgICAgICAgJ3N0YScgICAgIHVzZSAnc2hpZnR3aWR0aCcgd2hlbiBpbnNlcnRpbmcgPFRhYj4KLSdzb2Z0dGFic3RvcCcgICAgICdzdHMnICAgICBudW1iZXIgb2Ygc3BhY2VzIHRoYXQgPFRhYj4gdXNlcyB3aGlsZSBlZGl0aW5nCi0nc3BlbGwnICAgICAgICAgICAgICAgICAgICAgZW5hYmxlIHNwZWxsIGNoZWNraW5nCisnc21hcnRjYXNlJwkgICdzY3MnICAgICBubyBpZ25vcmUgY2FzZSB3aGVuIHBhdHRlcm4gaGFzIHVwcGVyY2FzZQorJ3NtYXJ0aW5kZW50JwkgICdzaScJICAgIHNtYXJ0IGF1dG9pbmRlbnRpbmcgZm9yIEMgcHJvZ3JhbXMKKydzbWFydHRhYicJICAnc3RhJyAgICAgdXNlICdzaGlmdHdpZHRoJyB3aGVuIGluc2VydGluZyA8VGFiPgorJ3NvZnR0YWJzdG9wJwkgICdzdHMnICAgICBudW1iZXIgb2Ygc3BhY2VzIHRoYXQgPFRhYj4gdXNlcyB3aGlsZSBlZGl0aW5nCisnc3BlbGwnCQkJICAgIGVuYWJsZSBzcGVsbCBjaGVja2luZwogJ3NwZWxsY2FwY2hlY2snICAgJ3NwYycgICAgIHBhdHRlcm4gdG8gbG9jYXRlIGVuZCBvZiBhIHNlbnRlbmNlCi0nc3BlbGxmaWxlJyAgICAgICAnc3BmJyAgICAgZmlsZXMgd2hlcmUgfHpnfCBhbmQgfHp3fCBzdG9yZSB3b3JkcwotJ3NwZWxsbGFuZycgICAgICAgJ3NwbCcgICAgIGxhbmd1YWdlKHMpIHRvIGRvIHNwZWxsIGNoZWNraW5nIGZvcgotJ3NwZWxsc3VnZ2VzdCcgICAgJ3NwcycgICAgIG1ldGhvZChzKSB1c2VkIHRvIHN1Z2dlc3Qgc3BlbGxpbmcgY29ycmVjdGlvbnMKLSdzcGxpdGJlbG93JyAgICAgICdzYicgICAgICBuZXcgd2luZG93IGZyb20gc3BsaXQgaXMgYmVsb3cgdGhlIGN1cnJlbnQgb25lCi0nc3BsaXRyaWdodCcgICAgICAnc3ByJyAgICAgbmV3IHdpbmRvdyBpcyBwdXQgcmlnaHQgb2YgdGhlIGN1cnJlbnQgb25lCi0nc3RhcnRvZmxpbmUnICAgICAnc29sJyAgICAgY29tbWFuZHMgbW92ZSBjdXJzb3IgdG8gZmlyc3QgYmxhbmsgaW4gbGluZQotJ3N0YXR1c2xpbmUnICAgICAgJ3N0bCcgICAgIGN1c3RvbSBmb3JtYXQgZm9yIHRoZSBzdGF0dXMgbGluZQotJ3N1ZmZpeGVzJyAgICAgICAgJ3N1JyAgICAgIHN1ZmZpeGVzIHRoYXQgYXJlIGlnbm9yZWQgd2l0aCBtdWx0aXBsZSBtYXRjaAotJ3N1ZmZpeGVzYWRkJyAgICAgJ3N1YScgICAgIHN1ZmZpeGVzIGFkZGVkIHdoZW4gc2VhcmNoaW5nIGZvciBhIGZpbGUKLSdzd2FwZmlsZScgICAgICAgICdzd2YnICAgICB3aGV0aGVyIHRvIHVzZSBhIHN3YXBmaWxlIGZvciBhIGJ1ZmZlcgotJ3N3YXBzeW5jJyAgICAgICAgJ3N3cycgICAgIGhvdyB0byBzeW5jIHRoZSBzd2FwIGZpbGUKLSdzd2l0Y2hidWYnICAgICAgICdzd2InICAgICBzZXRzIGJlaGF2aW9yIHdoZW4gc3dpdGNoaW5nIHRvIGFub3RoZXIgYnVmZmVyCi0nc3lubWF4Y29sJyAgICAgICAnc21jJyAgICAgbWF4aW11bSBjb2x1bW4gdG8gZmluZCBzeW50YXggaXRlbXMKLSdzeW50YXgnICAgICAgICAgICdzeW4nICAgICBzeW50YXggdG8gYmUgbG9hZGVkIGZvciBjdXJyZW50IGJ1ZmZlcgotJ3RhYnN0b3AnICAgICAgICAgJ3RzJyAgICAgIG51bWJlciBvZiBzcGFjZXMgdGhhdCA8VGFiPiBpbiBmaWxlIHVzZXMKLSd0YWJsaW5lJyAgICAgICAgICd0YWwnICAgICBjdXN0b20gZm9ybWF0IGZvciB0aGUgY29uc29sZSB0YWIgcGFnZXMgbGluZQotJ3RhYnBhZ2VtYXgnICAgICAgJ3RwbScgICAgIG1heGltdW0gbnVtYmVyIG9mIHRhYiBwYWdlcyBmb3IgfC1wfCBhbmQgInRhYiBhbGwiCi0ndGFnYnNlYXJjaCcgICAgICAndGJzJyAgICAgdXNlIGJpbmFyeSBzZWFyY2hpbmcgaW4gdGFncyBmaWxlcwotJ3RhZ2xlbmd0aCcgICAgICAgJ3RsJyAgICAgIG51bWJlciBvZiBzaWduaWZpY2FudCBjaGFyYWN0ZXJzIGZvciBhIHRhZwotJ3RhZ3JlbGF0aXZlJyAgICAgJ3RyJyAgICAgIGZpbGUgbmFtZXMgaW4gdGFnIGZpbGUgYXJlIHJlbGF0aXZlCi0ndGFncycgICAgICAgICAgICAndGFnJyAgICAgbGlzdCBvZiBmaWxlIG5hbWVzIHVzZWQgYnkgdGhlIHRhZyBjb21tYW5kCi0ndGFnc3RhY2snICAgICAgICAndGdzdCcgICAgcHVzaCB0YWdzIG9udG8gdGhlIHRhZyBzdGFjawotJ3Rlcm0nICAgICAgICAgICAgICAgICAgICAgIG5hbWUgb2YgdGhlIHRlcm1pbmFsCi0ndGVybWJpZGknICAgICAgICAndGJpZGknICAgdGVybWluYWwgdGFrZXMgY2FyZSBvZiBiaS1kaXJlY3Rpb25hbGl0eQotJ3Rlcm1lbmNvZGluZycgICAgJ3RlbmMnICAgIGNoYXJhY3RlciBlbmNvZGluZyB1c2VkIGJ5IHRoZSB0ZXJtaW5hbAotJ3RlcnNlJyAgICAgICAgICAgICAgICAgICAgIHNob3J0ZW4gc29tZSBtZXNzYWdlcwotJ3RleHRhdXRvJyAgICAgICAgJ3RhJyAgICAgIG9ic29sZXRlLCB1c2UgJ2ZpbGVmb3JtYXRzJwotJ3RleHRtb2RlJyAgICAgICAgJ3R4JyAgICAgIG9ic29sZXRlLCB1c2UgJ2ZpbGVmb3JtYXQnCi0ndGV4dHdpZHRoJyAgICAgICAndHcnICAgICAgbWF4aW11bSB3aWR0aCBvZiB0ZXh0IHRoYXQgaXMgYmVpbmcgaW5zZXJ0ZWQKLSd0aGVzYXVydXMnICAgICAgICd0c3InICAgICBsaXN0IG9mIHRoZXNhdXJ1cyBmaWxlcyBmb3Iga2V5d29yZCBjb21wbGV0aW9uCi0ndGlsZGVvcCcgICAgICAgICAndG9wJyAgICAgdGlsZGUgY29tbWFuZCAifiIgYmVoYXZlcyBsaWtlIGFuIG9wZXJhdG9yCi0ndGltZW91dCcgICAgICAgICAndG8nICAgICAgdGltZSBvdXQgb24gbWFwcGluZ3MgYW5kIGtleSBjb2RlcwotJ3RpbWVvdXRsZW4nICAgICAgJ3RtJyAgICAgIHRpbWUgb3V0IHRpbWUgaW4gbWlsbGlzZWNvbmRzCi0ndGl0bGUnICAgICAgICAgICAgICAgICAgICAgbGV0IFZpbSBzZXQgdGhlIHRpdGxlIG9mIHRoZSB3aW5kb3cKLSd0aXRsZWxlbicgICAgICAgICAgICAgICAgICBwZXJjZW50YWdlIG9mICdjb2x1bW5zJyB1c2VkIGZvciB3aW5kb3cgdGl0bGUKLSd0aXRsZW9sZCcgICAgICAgICAgICAgICAgICBvbGQgdGl0bGUsIHJlc3RvcmVkIHdoZW4gZXhpdGluZwotJ3RpdGxlc3RyaW5nJyAgICAgICAgICAgICAgIHN0cmluZyB0byB1c2UgZm9yIHRoZSBWaW0gd2luZG93IHRpdGxlCi0ndG9vbGJhcicgICAgICAgICAndGInICAgICAgR1VJOiB3aGljaCBpdGVtcyB0byBzaG93IGluIHRoZSB0b29sYmFyCisnc3BlbGxmaWxlJwkgICdzcGYnICAgICBmaWxlcyB3aGVyZSB8emd8IGFuZCB8end8IHN0b3JlIHdvcmRzCisnc3BlbGxsYW5nJwkgICdzcGwnICAgICBsYW5ndWFnZShzKSB0byBkbyBzcGVsbCBjaGVja2luZyBmb3IKKydzcGVsbHN1Z2dlc3QnCSAgJ3NwcycgICAgIG1ldGhvZChzKSB1c2VkIHRvIHN1Z2dlc3Qgc3BlbGxpbmcgY29ycmVjdGlvbnMKKydzcGxpdGJlbG93JwkgICdzYicJICAgIG5ldyB3aW5kb3cgZnJvbSBzcGxpdCBpcyBiZWxvdyB0aGUgY3VycmVudCBvbmUKKydzcGxpdHJpZ2h0JwkgICdzcHInICAgICBuZXcgd2luZG93IGlzIHB1dCByaWdodCBvZiB0aGUgY3VycmVudCBvbmUKKydzdGFydG9mbGluZScJICAnc29sJyAgICAgY29tbWFuZHMgbW92ZSBjdXJzb3IgdG8gZmlyc3QgYmxhbmsgaW4gbGluZQorJ3N0YXR1c2xpbmUnCSAgJ3N0bCcgICAgIGN1c3RvbSBmb3JtYXQgZm9yIHRoZSBzdGF0dXMgbGluZQorJ3N1ZmZpeGVzJwkgICdzdScJICAgIHN1ZmZpeGVzIHRoYXQgYXJlIGlnbm9yZWQgd2l0aCBtdWx0aXBsZSBtYXRjaAorJ3N1ZmZpeGVzYWRkJwkgICdzdWEnICAgICBzdWZmaXhlcyBhZGRlZCB3aGVuIHNlYXJjaGluZyBmb3IgYSBmaWxlCisnc3dhcGZpbGUnCSAgJ3N3ZicgICAgIHdoZXRoZXIgdG8gdXNlIGEgc3dhcGZpbGUgZm9yIGEgYnVmZmVyCisnc3dhcHN5bmMnCSAgJ3N3cycgICAgIGhvdyB0byBzeW5jIHRoZSBzd2FwIGZpbGUKKydzd2l0Y2hidWYnCSAgJ3N3YicgICAgIHNldHMgYmVoYXZpb3Igd2hlbiBzd2l0Y2hpbmcgdG8gYW5vdGhlciBidWZmZXIKKydzeW5tYXhjb2wnCSAgJ3NtYycgICAgIG1heGltdW0gY29sdW1uIHRvIGZpbmQgc3ludGF4IGl0ZW1zCisnc3ludGF4JwkgICdzeW4nICAgICBzeW50YXggdG8gYmUgbG9hZGVkIGZvciBjdXJyZW50IGJ1ZmZlcgorJ3RhYnN0b3AnCSAgJ3RzJwkgICAgbnVtYmVyIG9mIHNwYWNlcyB0aGF0IDxUYWI+IGluIGZpbGUgdXNlcworJ3RhYmxpbmUnCSAgJ3RhbCcgICAgIGN1c3RvbSBmb3JtYXQgZm9yIHRoZSBjb25zb2xlIHRhYiBwYWdlcyBsaW5lCisndGFicGFnZW1heCcJICAndHBtJyAgICAgbWF4aW11bSBudW1iZXIgb2YgdGFiIHBhZ2VzIGZvciB8LXB8IGFuZCAidGFiIGFsbCIKKyd0YWdic2VhcmNoJwkgICd0YnMnICAgICB1c2UgYmluYXJ5IHNlYXJjaGluZyBpbiB0YWdzIGZpbGVzCisndGFnbGVuZ3RoJwkgICd0bCcJICAgIG51bWJlciBvZiBzaWduaWZpY2FudCBjaGFyYWN0ZXJzIGZvciBhIHRhZworJ3RhZ3JlbGF0aXZlJwkgICd0cicJICAgIGZpbGUgbmFtZXMgaW4gdGFnIGZpbGUgYXJlIHJlbGF0aXZlCisndGFncycJCSAgJ3RhZycgICAgIGxpc3Qgb2YgZmlsZSBuYW1lcyB1c2VkIGJ5IHRoZSB0YWcgY29tbWFuZAorJ3RhZ3N0YWNrJwkgICd0Z3N0JyAgICBwdXNoIHRhZ3Mgb250byB0aGUgdGFnIHN0YWNrCisndGVybScJCQkgICAgbmFtZSBvZiB0aGUgdGVybWluYWwKKyd0ZXJtYmlkaScJICAndGJpZGknICAgdGVybWluYWwgdGFrZXMgY2FyZSBvZiBiaS1kaXJlY3Rpb25hbGl0eQorJ3Rlcm1lbmNvZGluZycJICAndGVuYycgICAgY2hhcmFjdGVyIGVuY29kaW5nIHVzZWQgYnkgdGhlIHRlcm1pbmFsCisndGVyc2UnCQkJICAgIHNob3J0ZW4gc29tZSBtZXNzYWdlcworJ3RleHRhdXRvJwkgICd0YScJICAgIG9ic29sZXRlLCB1c2UgJ2ZpbGVmb3JtYXRzJworJ3RleHRtb2RlJwkgICd0eCcJICAgIG9ic29sZXRlLCB1c2UgJ2ZpbGVmb3JtYXQnCisndGV4dHdpZHRoJwkgICd0dycJICAgIG1heGltdW0gd2lkdGggb2YgdGV4dCB0aGF0IGlzIGJlaW5nIGluc2VydGVkCisndGhlc2F1cnVzJwkgICd0c3InICAgICBsaXN0IG9mIHRoZXNhdXJ1cyBmaWxlcyBmb3Iga2V5d29yZCBjb21wbGV0aW9uCisndGlsZGVvcCcJICAndG9wJyAgICAgdGlsZGUgY29tbWFuZCAifiIgYmVoYXZlcyBsaWtlIGFuIG9wZXJhdG9yCisndGltZW91dCcJICAndG8nCSAgICB0aW1lIG91dCBvbiBtYXBwaW5ncyBhbmQga2V5IGNvZGVzCisndGltZW91dGxlbicJICAndG0nCSAgICB0aW1lIG91dCB0aW1lIGluIG1pbGxpc2Vjb25kcworJ3RpdGxlJwkJCSAgICBsZXQgVmltIHNldCB0aGUgdGl0bGUgb2YgdGhlIHdpbmRvdworJ3RpdGxlbGVuJwkJICAgIHBlcmNlbnRhZ2Ugb2YgJ2NvbHVtbnMnIHVzZWQgZm9yIHdpbmRvdyB0aXRsZQorJ3RpdGxlb2xkJwkJICAgIG9sZCB0aXRsZSwgcmVzdG9yZWQgd2hlbiBleGl0aW5nCisndGl0bGVzdHJpbmcnCQkgICAgc3RyaW5nIHRvIHVzZSBmb3IgdGhlIFZpbSB3aW5kb3cgdGl0bGUKKyd0b29sYmFyJwkgICd0YicJICAgIEdVSTogd2hpY2ggaXRlbXMgdG8gc2hvdyBpbiB0aGUgdG9vbGJhcgogJ3Rvb2xiYXJpY29uc2l6ZScgJ3RiaXMnICAgIHNpemUgb2YgdGhlIHRvb2xiYXIgaWNvbnMgKGZvciBHVEsgMiBvbmx5KQotJ3R0aW1lb3V0JyAgICAgICAgICAgICAgICAgIHRpbWUgb3V0IG9uIG1hcHBpbmdzCi0ndHRpbWVvdXRsZW4nICAgICAndHRtJyAgICAgdGltZSBvdXQgdGltZSBmb3Iga2V5IGNvZGVzIGluIG1pbGxpc2Vjb25kcwotJ3R0eWJ1aWx0aW4nICAgICAgJ3RiaScgICAgIHVzZSBidWlsdC1pbiB0ZXJtY2FwIGJlZm9yZSBleHRlcm5hbCB0ZXJtY2FwCi0ndHR5ZmFzdCcgICAgICAgICAndGYnICAgICAgaW5kaWNhdGVzIGEgZmFzdCB0ZXJtaW5hbCBjb25uZWN0aW9uCi0ndHR5bW91c2UnICAgICAgICAndHR5bScgICAgdHlwZSBvZiBtb3VzZSBjb2RlcyBnZW5lcmF0ZWQKLSd0dHlzY3JvbGwnICAgICAgICd0c2wnICAgICBtYXhpbXVtIG51bWJlciBvZiBsaW5lcyBmb3IgYSBzY3JvbGwKLSd0dHl0eXBlJyAgICAgICAgICd0dHknICAgICBhbGlhcyBmb3IgJ3Rlcm0nCi0ndW5kb2xldmVscycgICAgICAndWwnICAgICAgbWF4aW11bSBudW1iZXIgb2YgY2hhbmdlcyB0aGF0IGNhbiBiZSB1bmRvbmUKLSd1cGRhdGVjb3VudCcgICAgICd1YycgICAgICBhZnRlciB0aGlzIG1hbnkgY2hhcmFjdGVycyBmbHVzaCBzd2FwIGZpbGUKLSd1cGRhdGV0aW1lJyAgICAgICd1dCcgICAgICBhZnRlciB0aGlzIG1hbnkgbWlsbGlzZWNvbmRzIGZsdXNoIHN3YXAgZmlsZQotJ3ZlcmJvc2UnICAgICAgICAgJ3ZicycgICAgIGdpdmUgaW5mb3JtYXRpdmUgbWVzc2FnZXMKLSd2ZXJib3NlZmlsZScgICAgICd2ZmlsZScgICBmaWxlIHRvIHdyaXRlIG1lc3NhZ2VzIGluCi0ndmlld2RpcicgICAgICAgICAndmRpcicgICAgZGlyZWN0b3J5IHdoZXJlIHRvIHN0b3JlIGZpbGVzIHdpdGggOm1rdmlldwotJ3ZpZXdvcHRpb25zJyAgICAgJ3ZvcCcgICAgIHNwZWNpZmllcyB3aGF0IHRvIHNhdmUgZm9yIDpta3ZpZXcKLSd2aW1pbmZvJyAgICAgICAgICd2aScgICAgICB1c2UgLnZpbWluZm8gZmlsZSB1cG9uIHN0YXJ0dXAgYW5kIGV4aXRpbmcKLSd2aXJ0dWFsZWRpdCcgICAgICd2ZScgICAgICB3aGVuIHRvIHVzZSB2aXJ0dWFsIGVkaXRpbmcKLSd2aXN1YWxiZWxsJyAgICAgICd2YicgICAgICB1c2UgdmlzdWFsIGJlbGwgaW5zdGVhZCBvZiBiZWVwaW5nCi0nd2FybicgICAgICAgICAgICAgICAgICAgICAgd2FybiBmb3Igc2hlbGwgY29tbWFuZCB3aGVuIGJ1ZmZlciB3YXMgY2hhbmdlZAotJ3dlaXJkaW52ZXJ0JyAgICAgJ3dpJyAgICAgIGZvciB0ZXJtaW5hbHMgdGhhdCBoYXZlIHdlaXJkIGludmVyc2lvbiBtZXRob2QKLSd3aGljaHdyYXAnICAgICAgICd3dycgICAgICBhbGxvdyBzcGVjaWZpZWQga2V5cyB0byBjcm9zcyBsaW5lIGJvdW5kYXJpZXMKLSd3aWxkY2hhcicgICAgICAgICd3YycgICAgICBjb21tYW5kLWxpbmUgY2hhcmFjdGVyIGZvciB3aWxkY2FyZCBleHBhbnNpb24KLSd3aWxkY2hhcm0nICAgICAgICd3Y20nICAgICBsaWtlICd3aWxkY2hhcicgYnV0IGFsc28gd29ya3Mgd2hlbiBtYXBwZWQKLSd3aWxkaWdub3JlJyAgICAgICd3aWcnICAgICBmaWxlcyBtYXRjaGluZyB0aGVzZSBwYXR0ZXJucyBhcmUgbm90IGNvbXBsZXRlZAotJ3dpbGRtZW51JyAgICAgICAgJ3dtbnUnICAgIHVzZSBtZW51IGZvciBjb21tYW5kIGxpbmUgY29tcGxldGlvbgotJ3dpbGRtb2RlJyAgICAgICAgJ3dpbScgICAgIG1vZGUgZm9yICd3aWxkY2hhcicgY29tbWFuZC1saW5lIGV4cGFuc2lvbgotJ3dpbGRvcHRpb25zJyAgICAgJ3dvcCcgICAgIHNwZWNpZmllcyBob3cgY29tbWFuZCBsaW5lIGNvbXBsZXRpb24gaXMgZG9uZS4KLSd3aW5hbHRrZXlzJyAgICAgICd3YWsnICAgICB3aGVuIHRoZSB3aW5kb3dzIHN5c3RlbSBoYW5kbGVzIEFMVCBrZXlzCi0nd2luaGVpZ2h0JyAgICAgICAnd2gnICAgICAgbWluaW11bSBudW1iZXIgb2YgbGluZXMgZm9yIHRoZSBjdXJyZW50IHdpbmRvdwotJ3dpbmZpeGhlaWdodCcgICAgJ3dmaCcgICAgIGtlZXAgd2luZG93IGhlaWdodCB3aGVuIG9wZW5pbmcvY2xvc2luZyB3aW5kb3dzCi0nd2luZml4d2lkdGgnICAgICAnd2Z3JyAgICAga2VlcCB3aW5kb3cgd2lkdGggd2hlbiBvcGVuaW5nL2Nsb3Npbmcgd2luZG93cwotJ3dpbm1pbmhlaWdodCcgICAgJ3dtaCcgICAgIG1pbmltdW0gbnVtYmVyIG9mIGxpbmVzIGZvciBhbnkgd2luZG93Ci0nd2lubWlud2lkdGgnICAgICAnd213JyAgICAgbWluaW1hbCBudW1iZXIgb2YgY29sdW1ucyBmb3IgYW55IHdpbmRvdwotJ3dpbndpZHRoJyAgICAgICAgJ3dpdycgICAgIG1pbmltYWwgbnVtYmVyIG9mIGNvbHVtbnMgZm9yIGN1cnJlbnQgd2luZG93Ci0nd3JhcCcgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsaW5lcyB3cmFwIGFuZCBjb250aW51ZSBvbiB0aGUgbmV4dCBsaW5lCi0nd3JhcG1hcmdpbicgICAgICAnd20nICAgICAgY2hhcnMgZnJvbSB0aGUgcmlnaHQgd2hlcmUgd3JhcHBpbmcgc3RhcnRzCi0nd3JhcHNjYW4nICAgICAgICAnd3MnICAgICAgc2VhcmNoZXMgd3JhcCBhcm91bmQgdGhlIGVuZCBvZiB0aGUgZmlsZQotJ3dyaXRlJyAgICAgICAgICAgICAgICAgICAgIHdyaXRpbmcgdG8gYSBmaWxlIGlzIGFsbG93ZWQKLSd3cml0ZWFueScgICAgICAgICd3YScgICAgICB3cml0ZSB0byBmaWxlIHdpdGggbm8gbmVlZCBmb3IgIiEiIG92ZXJyaWRlCi0nd3JpdGViYWNrdXAnICAgICAnd2InICAgICAgbWFrZSBhIGJhY2t1cCBiZWZvcmUgb3ZlcndyaXRpbmcgYSBmaWxlCi0nd3JpdGVkZWxheScgICAgICAnd2QnICAgICAgZGVsYXkgdGhpcyBtYW55IG1zZWMgZm9yIGVhY2ggY2hhciAoZm9yIGRlYnVnKQorJ3R0aW1lb3V0JwkJICAgIHRpbWUgb3V0IG9uIG1hcHBpbmdzCisndHRpbWVvdXRsZW4nCSAgJ3R0bScgICAgIHRpbWUgb3V0IHRpbWUgZm9yIGtleSBjb2RlcyBpbiBtaWxsaXNlY29uZHMKKyd0dHlidWlsdGluJwkgICd0YmknICAgICB1c2UgYnVpbHQtaW4gdGVybWNhcCBiZWZvcmUgZXh0ZXJuYWwgdGVybWNhcAorJ3R0eWZhc3QnCSAgJ3RmJwkgICAgaW5kaWNhdGVzIGEgZmFzdCB0ZXJtaW5hbCBjb25uZWN0aW9uCisndHR5bW91c2UnCSAgJ3R0eW0nICAgIHR5cGUgb2YgbW91c2UgY29kZXMgZ2VuZXJhdGVkCisndHR5c2Nyb2xsJwkgICd0c2wnICAgICBtYXhpbXVtIG51bWJlciBvZiBsaW5lcyBmb3IgYSBzY3JvbGwKKyd0dHl0eXBlJwkgICd0dHknICAgICBhbGlhcyBmb3IgJ3Rlcm0nCisndW5kb2xldmVscycJICAndWwnCSAgICBtYXhpbXVtIG51bWJlciBvZiBjaGFuZ2VzIHRoYXQgY2FuIGJlIHVuZG9uZQorJ3VwZGF0ZWNvdW50JwkgICd1YycJICAgIGFmdGVyIHRoaXMgbWFueSBjaGFyYWN0ZXJzIGZsdXNoIHN3YXAgZmlsZQorJ3VwZGF0ZXRpbWUnCSAgJ3V0JwkgICAgYWZ0ZXIgdGhpcyBtYW55IG1pbGxpc2Vjb25kcyBmbHVzaCBzd2FwIGZpbGUKKyd2ZXJib3NlJwkgICd2YnMnICAgICBnaXZlIGluZm9ybWF0aXZlIG1lc3NhZ2VzCisndmVyYm9zZWZpbGUnCSAgJ3ZmaWxlJyAgIGZpbGUgdG8gd3JpdGUgbWVzc2FnZXMgaW4KKyd2aWV3ZGlyJwkgICd2ZGlyJyAgICBkaXJlY3Rvcnkgd2hlcmUgdG8gc3RvcmUgZmlsZXMgd2l0aCA6bWt2aWV3Cisndmlld29wdGlvbnMnCSAgJ3ZvcCcgICAgIHNwZWNpZmllcyB3aGF0IHRvIHNhdmUgZm9yIDpta3ZpZXcKKyd2aW1pbmZvJwkgICd2aScJICAgIHVzZSAudmltaW5mbyBmaWxlIHVwb24gc3RhcnR1cCBhbmQgZXhpdGluZworJ3ZpcnR1YWxlZGl0JwkgICd2ZScJICAgIHdoZW4gdG8gdXNlIHZpcnR1YWwgZWRpdGluZworJ3Zpc3VhbGJlbGwnCSAgJ3ZiJwkgICAgdXNlIHZpc3VhbCBiZWxsIGluc3RlYWQgb2YgYmVlcGluZworJ3dhcm4nCQkJICAgIHdhcm4gZm9yIHNoZWxsIGNvbW1hbmQgd2hlbiBidWZmZXIgd2FzIGNoYW5nZWQKKyd3ZWlyZGludmVydCcJICAnd2knCSAgICBmb3IgdGVybWluYWxzIHRoYXQgaGF2ZSB3ZWlyZCBpbnZlcnNpb24gbWV0aG9kCisnd2hpY2h3cmFwJwkgICd3dycJICAgIGFsbG93IHNwZWNpZmllZCBrZXlzIHRvIGNyb3NzIGxpbmUgYm91bmRhcmllcworJ3dpbGRjaGFyJwkgICd3YycJICAgIGNvbW1hbmQtbGluZSBjaGFyYWN0ZXIgZm9yIHdpbGRjYXJkIGV4cGFuc2lvbgorJ3dpbGRjaGFybScJICAnd2NtJyAgICAgbGlrZSAnd2lsZGNoYXInIGJ1dCBhbHNvIHdvcmtzIHdoZW4gbWFwcGVkCisnd2lsZGlnbm9yZScJICAnd2lnJyAgICAgZmlsZXMgbWF0Y2hpbmcgdGhlc2UgcGF0dGVybnMgYXJlIG5vdCBjb21wbGV0ZWQKKyd3aWxkbWVudScJICAnd21udScgICAgdXNlIG1lbnUgZm9yIGNvbW1hbmQgbGluZSBjb21wbGV0aW9uCisnd2lsZG1vZGUnCSAgJ3dpbScgICAgIG1vZGUgZm9yICd3aWxkY2hhcicgY29tbWFuZC1saW5lIGV4cGFuc2lvbgorJ3dpbGRvcHRpb25zJwkgICd3b3AnICAgICBzcGVjaWZpZXMgaG93IGNvbW1hbmQgbGluZSBjb21wbGV0aW9uIGlzIGRvbmUuCisnd2luYWx0a2V5cycJICAnd2FrJyAgICAgd2hlbiB0aGUgd2luZG93cyBzeXN0ZW0gaGFuZGxlcyBBTFQga2V5cworJ3dpbmhlaWdodCcJICAnd2gnCSAgICBtaW5pbXVtIG51bWJlciBvZiBsaW5lcyBmb3IgdGhlIGN1cnJlbnQgd2luZG93Cisnd2luZml4aGVpZ2h0JwkgICd3ZmgnICAgICBrZWVwIHdpbmRvdyBoZWlnaHQgd2hlbiBvcGVuaW5nL2Nsb3Npbmcgd2luZG93cworJ3dpbmZpeHdpZHRoJwkgICd3ZncnICAgICBrZWVwIHdpbmRvdyB3aWR0aCB3aGVuIG9wZW5pbmcvY2xvc2luZyB3aW5kb3dzCisnd2lubWluaGVpZ2h0JwkgICd3bWgnICAgICBtaW5pbXVtIG51bWJlciBvZiBsaW5lcyBmb3IgYW55IHdpbmRvdworJ3dpbm1pbndpZHRoJwkgICd3bXcnICAgICBtaW5pbWFsIG51bWJlciBvZiBjb2x1bW5zIGZvciBhbnkgd2luZG93Cisnd2lud2lkdGgnCSAgJ3dpdycgICAgIG1pbmltYWwgbnVtYmVyIG9mIGNvbHVtbnMgZm9yIGN1cnJlbnQgd2luZG93Cisnd3JhcCcJCQkgICAgbG9uZyBsaW5lcyB3cmFwIGFuZCBjb250aW51ZSBvbiB0aGUgbmV4dCBsaW5lCisnd3JhcG1hcmdpbicJICAnd20nCSAgICBjaGFycyBmcm9tIHRoZSByaWdodCB3aGVyZSB3cmFwcGluZyBzdGFydHMKKyd3cmFwc2NhbicJICAnd3MnCSAgICBzZWFyY2hlcyB3cmFwIGFyb3VuZCB0aGUgZW5kIG9mIHRoZSBmaWxlCisnd3JpdGUnCQkJICAgIHdyaXRpbmcgdG8gYSBmaWxlIGlzIGFsbG93ZWQKKyd3cml0ZWFueScJICAnd2EnCSAgICB3cml0ZSB0byBmaWxlIHdpdGggbm8gbmVlZCBmb3IgIiEiIG92ZXJyaWRlCisnd3JpdGViYWNrdXAnCSAgJ3diJwkgICAgbWFrZSBhIGJhY2t1cCBiZWZvcmUgb3ZlcndyaXRpbmcgYSBmaWxlCisnd3JpdGVkZWxheScJICAnd2QnCSAgICBkZWxheSB0aGlzIG1hbnkgbXNlYyBmb3IgZWFjaCBjaGFyIChmb3IgZGVidWcpCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICpRX3VyKgkJVW5kby9SZWRvIGNvbW1hbmRzCiAKQEAgLTk3NSw3ICs5NzUsNyBAQAogfGdhfAkJICAgZ2EJCXNob3cgYXNjaWkgdmFsdWUgb2YgY2hhcmFjdGVyIHVuZGVyIGN1cnNvciBpbgogCQkJCSAgIGRlY2ltYWwsIGhleCwgYW5kIG9jdGFsCiB8Zzh8CQkgICBnOAkJZm9yIHV0Zi04IGVuY29kaW5nOiBzaG93IGJ5dGUgc2VxdWVuY2UgZm9yCi0JCQkgCSAgIGNoYXJhY3RlciB1bmRlciBjdXJzb3IgaW4gaGV4LgorCQkJCSAgIGNoYXJhY3RlciB1bmRlciBjdXJzb3IgaW4gaGV4LgogfGdfQ1RSTC1HfAkgICBnIENUUkwtRwlzaG93IGN1cnNvciBjb2x1bW4sIGxpbmUsIGFuZCBjaGFyYWN0ZXIKIAkJCQkgICBwb3NpdGlvbgogfENUUkwtQ3wJICAgQ1RSTC1DCWR1cmluZyBzZWFyY2hlczogSW50ZXJydXB0IHRoZSBzZWFyY2gKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3F1b3Rlcy50eHQgYi9ydW50aW1lL2RvYy9xdW90ZXMudHh0CmluZGV4IGU5OWJlMjYuLmU2MzliMzUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3F1b3Rlcy50eHQKKysrIGIvcnVudGltZS9kb2MvcXVvdGVzLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpxdW90ZXMudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnF1b3Rlcy50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9yZWNvdmVyLnR4dCBiL3J1bnRpbWUvZG9jL3JlY292ZXIudHh0CmluZGV4IDQ0ZDY5NTIuLmQ2ZTE3NmUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3JlY292ZXIudHh0CisrKyBiL3J1bnRpbWUvZG9jL3JlY292ZXIudHh0CkBAIC0xLDQgKzEsNCBAQAotKnJlY292ZXIudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisqcmVjb3Zlci50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3JlbW90ZS50eHQgYi9ydW50aW1lL2RvYy9yZW1vdGUudHh0CmluZGV4IGQzZDRhMzguLjU1NzkxOGQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3JlbW90ZS50eHQKKysrIGIvcnVudGltZS9kb2MvcmVtb3RlLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpyZW1vdGUudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnJlbW90ZS50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC00NSwxOSArNDUsMTkgQEAKICAgIC0tcmVtb3RlLXdhaXQtc2lsZW50IFsre2NtZH1dIHtmaWxlfSAuLi4JCSotLXJlbW90ZS13YWl0LXNpbGVudCoKIAkJCQlBcyAtLXJlbW90ZS13YWl0LCBidXQgZG9uJ3QgY29tcGxhaW4gaWYgdGhlcmUKIAkJCQlpcyBubyBzZXJ2ZXIuCi0gICAgCQkJCQkJCSotLXJlbW90ZS10YWIqCisJCQkJCQkJKi0tcmVtb3RlLXRhYioKICAgIC0tcmVtb3RlLXRhYgkJCUxpa2UgLS1yZW1vdGUgYnV0IG9wZW4gZWFjaCBmaWxlIGluIGEgbmV3Ci0gICAgCQkJCXRhYnBhZ2UuCi0gICAgCQkJCQkJCSotLXJlbW90ZS10YWItc2lsZW50KgorCQkJCXRhYnBhZ2UuCisJCQkJCQkJKi0tcmVtb3RlLXRhYi1zaWxlbnQqCiAgICAtLXJlbW90ZS10YWItc2lsZW50CQlMaWtlIC0tcmVtb3RlLXNpbGVudCBidXQgb3BlbiBlYWNoIGZpbGUgaW4gYQotICAgIAkJCQluZXcgdGFicGFnZS4KKwkJCQluZXcgdGFicGFnZS4KIAkJCQkJCQkqLS1yZW1vdGUtdGFiLXdhaXQqCiAgICAtLXJlbW90ZS10YWItd2FpdAkJTGlrZSAtLXJlbW90ZS13YWl0IGJ1dCBvcGVuIGVhY2ggZmlsZSBpbiBhIG5ldwotICAgIAkJCQl0YWJwYWdlLgorCQkJCXRhYnBhZ2UuCiAKLSAgICAJCQkJCQkqLS1yZW1vdGUtdGFiLXdhaXQtc2lsZW50KgorCQkJCQkJKi0tcmVtb3RlLXRhYi13YWl0LXNpbGVudCoKICAgIC0tcmVtb3RlLXRhYi13YWl0LXNpbGVudAlMaWtlIC0tcmVtb3RlLXdhaXQtc2lsZW50IGJ1dCBvcGVuIGVhY2ggZmlsZQotICAgIAkJCQlpbiBhIG5ldyB0YWJwYWdlLgorCQkJCWluIGEgbmV3IHRhYnBhZ2UuCiAJCQkJCQkJCSotLXNlcnZlcm5hbWUqCiAgICAtLXNlcnZlcm5hbWUge25hbWV9CQlCZWNvbWUgdGhlIHNlcnZlciB7bmFtZX0uICBXaGVuIHVzZWQgdG9nZXRoZXIKIAkJCQl3aXRoIG9uZSBvZiB0aGUgLS1yZW1vdGUgY29tbWFuZHM6IGNvbm5lY3QgdG8KQEAgLTY3LDcgKzY3LDcgQEAKICAgIC0tcmVtb3RlLXNlbmQge2tleXN9CQlTZW5kIHtrZXlzfSB0byBzZXJ2ZXIgYW5kIGV4aXQuCiAJCQkJCQkJCSotLXJlbW90ZS1leHByKgogICAgLS1yZW1vdGUtZXhwciB7ZXhwcn0JCUV2YWx1YXRlIHtleHByfSBpbiBzZXJ2ZXIgYW5kIHByaW50IHRoZSByZXN1bHQKLSAgIAkJCQlvbiBzdGRvdXQuCisJCQkJb24gc3Rkb3V0LgogCQkJCQkJCQkqLS1zZXJ2ZXJsaXN0KgogICAgLS1zZXJ2ZXJsaXN0CQkJT3V0cHV0IGEgbGlzdCBvZiBzZXJ2ZXIgbmFtZXMuCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3JlcGVhdC50eHQgYi9ydW50aW1lL2RvYy9yZXBlYXQudHh0CmluZGV4IDdjM2FkNjcuLjZiOWE1NWIgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3JlcGVhdC50eHQKKysrIGIvcnVudGltZS9kb2MvcmVwZWF0LnR4dApAQCAtMSw0ICsxLDQgQEAKLSpyZXBlYXQudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnJlcGVhdC50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC02MDYsMTEgKzYwNiwxMSBAQAogICA0ICBTZWxmIHRpbWU6ICAgMC4wMDIwMDYgfgogICA1ICB+CiAgIDYgY291bnQgIHRvdGFsIChzKSAgIHNlbGYgKHMpIH4KLSAgNyAgICAgOSAgICAgICAgICAgICAgMC4wMDAwOTYgICBmb3IgaSBpbiByYW5nZSg4KSB+Ci0gIDggICAgIDggICAwLjE1MzY1NSAgIDAuMDAwNDEwICAgICBjYWxsIFRlc3QzKCkgfgotICA5ICAgICA4ICAgICAgICAgICAgICAwLjAwMDA3MCAgIGVuZGZvciB+Ci0gMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBBc2sgYSBxdWVzdGlvbiB+Ci0gMTEgICAgIDEgICAgICAgICAgICAgIDAuMDAxMzQxICAgZWNobyBpbnB1dCgiZ2l2ZSBtZSBhbiBhbnN3ZXI6ICIpIH4KKyAgNwk5CSAgICAgICAwLjAwMDA5NiAgIGZvciBpIGluIHJhbmdlKDgpIH4KKyAgOAk4ICAgMC4xNTM2NTUgICAwLjAwMDQxMCAgICAgY2FsbCBUZXN0MygpIH4KKyAgOQk4CSAgICAgICAwLjAwMDA3MCAgIGVuZGZvciB+CisgMTAJCQkJICAiIEFzayBhIHF1ZXN0aW9uIH4KKyAxMQkxCSAgICAgICAwLjAwMTM0MSAgIGVjaG8gaW5wdXQoImdpdmUgbWUgYW4gYW5zd2VyOiAiKSB+CiAKIFRoZSBoZWFkZXIgKGxpbmVzIDEtNCkgZ2l2ZXMgdGhlIHRpbWUgZm9yIHRoZSB3aG9sZSBmdW5jdGlvbi4gIFRoZSAiVG90YWwiCiB0aW1lIGlzIHRoZSB0aW1lIHBhc3NlZCB3aGlsZSB0aGUgZnVuY3Rpb24gd2FzIGV4ZWN1dGluZy4gIFRoZSAiU2VsZiIgdGltZSBpcwpAQCAtNjQ5LDcgKzY0OSw3IEBACiAKIC0gRnVuY3Rpb25zIHRoYXQgYXJlIGRlbGV0ZWQgYmVmb3JlIFZpbSBleGl0cyB3aWxsIG5vdCBwcm9kdWNlIHByb2ZpbGluZwogICBpbmZvcm1hdGlvbi4gIFlvdSBjYW4gY2hlY2sgdGhlIHx2OnByb2ZpbGluZ3wgdmFyaWFibGUgaWYgbmVlZGVkOiA+Ci0gIAk6aWYgIXY6cHJvZmlsaW5nCisJOmlmICF2OnByb2ZpbGluZwogCTogICBkZWxmdW5jIE15RnVuYwogCTplbmRpZgogPApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvcmlsZWZ0LnR4dCBiL3J1bnRpbWUvZG9jL3JpbGVmdC50eHQKaW5kZXggZWVhMjg3MS4uOGQ1ZjE1MiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvcmlsZWZ0LnR4dAorKysgYi9ydW50aW1lL2RvYy9yaWxlZnQudHh0CkBAIC0xLDQgKzEsNCBAQAotKnJpbGVmdC50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisqcmlsZWZ0LnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQXZuZXIgTG90dGVtCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9ydXNzaWFuLnR4dCBiL3J1bnRpbWUvZG9jL3J1c3NpYW4udHh0CmluZGV4IDBmNmRjZWMuLmRiM2NjOTkgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3J1c3NpYW4udHh0CisrKyBiL3J1bnRpbWUvZG9jL3J1c3NpYW4udHh0CkBAIC0xLDQgKzEsNCBAQAotKnJ1c3NpYW4udHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisqcnVzc2lhbi50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgVmFzc2lseSBSYWdvc2luCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9zY3JvbGwudHh0IGIvcnVudGltZS9kb2Mvc2Nyb2xsLnR4dAppbmRleCA1YTgzNGE1Li4yODgxYTJhIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9zY3JvbGwudHh0CisrKyBiL3J1bnRpbWUvZG9jL3Njcm9sbC50eHQKQEAgLTEsNCArMSw0IEBACi0qc2Nyb2xsLnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKKypzY3JvbGwudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvc2lnbi50eHQgYi9ydW50aW1lL2RvYy9zaWduLnR4dAppbmRleCAwZTgyMzNlLi41NGFlNmQ2IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9zaWduLnR4dAorKysgYi9ydW50aW1lL2RvYy9zaWduLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpzaWduLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnNpZ24udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEdvcmRvbiBQcmlldXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3NwZWxsLnR4dCBiL3J1bnRpbWUvZG9jL3NwZWxsLnR4dAppbmRleCA4YjBjODgzLi5kNjljN2FkIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9zcGVsbC50eHQKKysrIGIvcnVudGltZS9kb2Mvc3BlbGwudHh0CkBAIC0xLDQgKzEsNCBAQAotKnNwZWxsLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKKypzcGVsbC50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTY5OCwxMSArNjk4LDExIEBACiAgIGtub3cgc29tZXRoaW5nIHdvbid0IHdvcmsuCiAKIC0gQSAiLyIgbWF5IGZvbGxvdyB0aGUgd29yZCB3aXRoIHRoZSBmb2xsb3dpbmcgaXRlbXM6Ci0gICAgPSAgIAlDYXNlIG11c3QgbWF0Y2ggZXhhY3RseS4KKyAgICA9CQlDYXNlIG11c3QgbWF0Y2ggZXhhY3RseS4KICAgICA/CQlSYXJlIHdvcmQuCiAgICAgIQkJQmFkICh3cm9uZykgd29yZC4KICAgICBkaWdpdAlBIHJlZ2lvbiBpbiB3aGljaCB0aGUgd29yZCBpcyB2YWxpZC4gIElmIG5vIHJlZ2lvbnMgYXJlCi0gICAgCQlzcGVjaWZpZWQgdGhlIHdvcmQgaXMgdmFsaWQgaW4gYWxsIHJlZ2lvbnMuCisJCXNwZWNpZmllZCB0aGUgd29yZCBpcyB2YWxpZCBpbiBhbGwgcmVnaW9ucy4KIAogRXhhbXBsZToKIApAQCAtODU3LDEyICs4NTcsMTIgQEAKIAogCQkJCSpzcGVsbC1OQU1FKiAqc3BlbGwtVkVSU0lPTiogKnNwZWxsLUhPTUUqCiAJCQkJKnNwZWxsLUFVVEhPUiogKnNwZWxsLUVNQUlMKiAqc3BlbGwtQ09QWVJJR0hUKgotCU5BTUUJICAJTmFtZSBvZiB0aGUgbGFuZ3VhZ2UKLQlWRVJTSU9OICAgCTEuMC4xICB3aXRoIGZpeGVzCisJTkFNRQkJTmFtZSBvZiB0aGUgbGFuZ3VhZ2UKKwlWRVJTSU9OCQkxLjAuMSAgd2l0aCBmaXhlcwogCUhPTUUJCWh0dHA6Ly93d3cubXlob21lLmV1CiAJQVVUSE9SCQlKb2huIERvZQogCUVNQUlMCQlqb2huIEFUIERvZSBET1QgbmV0Ci0JQ09QWVJJR0hUICAgCUxHUEwKKwlDT1BZUklHSFQJTEdQTAogCiBUaGVzZSBmaWVsZHMgYXJlIHB1dCBpbiB0aGUgLnNwbCBmaWxlIGFzLWlzLiAgVGhlIHw6c3BlbGxpbmZvfCBjb21tYW5kIGNhbiBiZQogdXNlZCB0byB2aWV3IHRoZSBpbmZvLgpAQCAtMTAyMyw3ICsxMDIzLDcgQEAKIHRoaXMgdGV4dCB0byBzdGFydCB3aXRoIGEgIiMiIHNvIHRoYXQgbWlzdGFrZXMgZG9uJ3QgZ28gdW5ub3RpY2VkLiAgRXhhbXBsZToKIAogCVNGWCBGIDAgaW4gICBbXmldbiAgICAgICMgU3Bpb24gPiBTcGlvbmluICB+Ci0JU0ZYIEYgMCBuZW4gIGluICAgICAgICAgIyBCYXVlcmluID4gQmF1ZXJpbm5lbiB+CisJU0ZYIEYgMCBuZW4gIGluCQkjIEJhdWVyaW4gPiBCYXVlcmlubmVuIH4KIAogQXBwYXJlbnRseSBNeXNwZWxsIGFsbG93cyBhbiBhZmZpeCBuYW1lIHRvIGFwcGVhciBtb3JlIHRoYW4gb25jZS4gIFNpbmNlIHRoaXMKIG1pZ2h0IGFsc28gYmUgYSBtaXN0YWtlLCBWaW0gY2hlY2tzIGZvciBhbiBleHRyYSAiUyIuICBUaGUgYWZmaXggZmlsZXMgZm9yCkBAIC0xMDg3LDcgKzEwODcsNyBAQAogZmxhZ3M6IFRoZSByZXF1aXJlZCBwcmVmaXggYW5kIHRoZSBORUVEQUZGSVggZmxhZy4gIHxzcGVsbC1ORUVEQUZGSVh8CiAKIAotUEZYUE9TVFBPTkUJCQkJCSAgICAJKnNwZWxsLVBGWFBPU1RQT05FKgorUEZYUE9TVFBPTkUJCQkJCQkqc3BlbGwtUEZYUE9TVFBPTkUqCiAKIFdoZW4gYW4gYWZmaXggZmlsZSBoYXMgdmVyeSBtYW55IHByZWZpeGVzIHRoYXQgYXBwbHkgdG8gbWFueSB3b3JkcyBpdCdzIG5vdAogcG9zc2libGUgdG8gYnVpbGQgdGhlIHdob2xlIHdvcmQgbGlzdCBpbiBtZW1vcnkuICBUaGlzIGFwcGxpZXMgdG8gSGVicmV3IChhCkBAIC0xNDM0LDEwICsxNDM0LDEwIEBACiB0byBiZSB1c2VkLiAgVGhlIG1haW4gaXRlbXMgZGVmaW5lIHRoZSAiZnJvbSIgdGV4dCBhbmQgdGhlICJ0byIgcmVwbGFjZW1lbnQuCiBTaW1wbGlzdGljIGV4YW1wbGU6CiAKLQlTQUwgQ0lBICAgICAgICAgICAgICAgICAgWCB+Ci0JU0FMIENIICAgICAgICAgICAgICAgICAgIFggfgotCVNBTCBDICAgICAgICAgICAgICAgICAgICBLIH4KLQlTQUwgSyAgICAgICAgICAgICAgICAgICAgSyB+CisJU0FMIENJQQkJCSBYIH4KKwlTQUwgQ0gJCQkgWCB+CisJU0FMIEMJCQkgSyB+CisJU0FMIEsJCQkgSyB+CiAKIFRoZXJlIGFyZSBhIGZldyBydWxlcyBhbmQgdGhpcyBjYW4gYmVjb21lIHF1aXRlIGNvbXBsaWNhdGVkLiAgQW4gZXhwbGFuYXRpb24KIGhvdyBpdCB3b3JrcyBjYW4gYmUgZm91bmQgaW4gdGhlIEFzcGVsbCBtYW51YWw6CkBAIC0xNTEwLDEwICsxNTEwLDEwIEBACiAJCUVuYWJsZXMgdXNpbmcgdHdvIHByZWZpeGVzLiAgTm90IHN1cHBvcnRlZC4KIAogQ09NUE9VTkQJKEh1bnNwZWxsKQkJCQkqc3BlbGwtQ09NUE9VTkQqCi0gICAgICAgICAgICAgICAgVGhpcyBpcyBvbmUgbGluZSB3aXRoIHRoZSBjb3VudCBvZiBDT01QT1VORCBpdGVtcywgZm9sbG93ZCBieQotICAgICAgICAgICAgICAgIHRoYXQgbWFueSBDT01QT1VORCBsaW5lcyB3aXRoIGEgcGF0dGVybi4KLSAgICAgICAgICAgICAgICBSZW1vdmUgdGhlIGZpcnN0IGxpbmUgd2l0aCB0aGUgY291bnQgYW5kIHJlbmFtZSB0aGUgb3RoZXIKLSAgICAgICAgICAgICAgICBpdGVtcyB0byBDT01QT1VORFJVTEUgfHNwZWxsLUNPTVBPVU5EUlVMRXwKKwkJVGhpcyBpcyBvbmUgbGluZSB3aXRoIHRoZSBjb3VudCBvZiBDT01QT1VORCBpdGVtcywgZm9sbG93ZCBieQorCQl0aGF0IG1hbnkgQ09NUE9VTkQgbGluZXMgd2l0aCBhIHBhdHRlcm4uCisJCVJlbW92ZSB0aGUgZmlyc3QgbGluZSB3aXRoIHRoZSBjb3VudCBhbmQgcmVuYW1lIHRoZSBvdGhlcgorCQlpdGVtcyB0byBDT01QT1VORFJVTEUgfHNwZWxsLUNPTVBPVU5EUlVMRXwKIAogQ09NUE9VTkRGSVJTVAkoSHVuc3BlbGwpCQkJCSpzcGVsbC1DT01QT1VOREZJUlNUKgogCQlVc2UgQ09NUE9VTkRSVUxFIGluc3RlYWQuIHxzcGVsbC1DT01QT1VORFJVTEV8CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9zcG9uc29yLnR4dCBiL3J1bnRpbWUvZG9jL3Nwb25zb3IudHh0CmluZGV4IGQwOGRlNDkuLjcwYTNhZTUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Nwb25zb3IudHh0CisrKyBiL3J1bnRpbWUvZG9jL3Nwb25zb3IudHh0CkBAIC0xLDQgKzEsNCBAQAotKnNwb25zb3IudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0Cisqc3BvbnNvci50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMzAKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTIwOCw3ICsyMDgsNyBAQAogCiBDYW4geW91IHNlbmQgbWUgYSBiaWxsPwogCi1ObywgYmVjYXVzZSB0aGVyZSBpcyBubyByZWxhdGlvbiBiZXR3ZWVuIHRoZSBtb25leSB5b3Ugc2VuZCBhbmQgdGhlIHdvcmsgdGhhdCAKK05vLCBiZWNhdXNlIHRoZXJlIGlzIG5vIHJlbGF0aW9uIGJldHdlZW4gdGhlIG1vbmV5IHlvdSBzZW5kIGFuZCB0aGUgd29yayB0aGF0CiBpcyBkb25lLiAgQnV0IGEgcmVjZWlwdCBpcyBwb3NzaWJsZS4KIAogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9zcWwudHh0IGIvcnVudGltZS9kb2Mvc3FsLnR4dAppbmRleCBlN2Q0MGQ2Li5mMDg5MDEyIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9zcWwudHh0CisrKyBiL3J1bnRpbWUvZG9jL3NxbC50eHQKQEAgLTEsNCArMSw0IEBACi0qc3FsLnR4dCogICAJRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogV2VkIEFwciAyNiAyMDA2IDM6MDU6MzMgUE0KKypzcWwudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiBXZWQgQXByIDI2IDIwMDYgMzowNTozMyBQTQogCiBieSBEYXZpZCBGaXNoYnVybgogCkBAIC04LDQwICs4LDQwIEBACiB0aGF0IGFsbG93IGEgdXNlciB0byBpbnRlcmFjdCB3aXRoIGEgcmVsYXRpb25hbCBkYXRhYmFzZS4gIFZpbSBpbmNsdWRlcwogZmVhdHVyZXMgZm9yIG5hdmlnYXRpb24sIGluZGVudGF0aW9uIGFuZCBzeW50YXggaGlnaGxpZ2h0aW5nLgogCi0xLiBOYXZpZ2F0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8c3FsLW5hdmlnYXRpb258Ci0gICAgMS4xIE1hdGNoaXQJCSAgICAgICAgCQl8c3FsLW1hdGNoaXR8Ci0gICAgMS4yIFRleHQgT2JqZWN0IE1vdGlvbnMJCSAgICAgICAgfHNxbC1vYmplY3QtbW90aW9uc3wKLSAgICAxLjMgUHJlZGVmaW5lZCBPYmplY3QgTW90aW9ucyAgICAgICAgICAgICAgIHxzcWwtcHJlZGVmaW5lZC1vYmplY3RzfAotICAgIDEuNCBNYWNyb3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHNxbC1tYWNyb3N8Ci0yLiBTUUwgRGlhbGVjdHMJCSAgICAgICAgICAgICAgICAgICAgICAgIHxzcWwtZGlhbGVjdHN8Ci0gICAgMi4xIFNRTFNldFR5cGUJCSAgICAgICAgCXxTUUxTZXRUeXBlfAotICAgIDIuMiBTUUwgRGlhbGVjdCBEZWZhdWx0CQkgICAgICAgIHxzcWwtdHlwZS1kZWZhdWx0fAotMy4gQWRkaW5nIG5ldyBTUUwgRGlhbGVjdHMJCSAgICAgICAgfHNxbC1hZGRpbmctZGlhbGVjdHN8Ci00LiBPTU5JIFNRTCBDb21wbGV0aW9uICAJCSAgICAgICAgfHNxbC1jb21wbGV0aW9ufAotICAgIDQuMSBTdGF0aWMgbW9kZQkJICAgICAgICAJfHNxbC1jb21wbGV0aW9uLXN0YXRpY3wKLSAgICA0LjIgRHluYW1pYyBtb2RlICAgIAkJICAgICAgICB8c3FsLWNvbXBsZXRpb24tZHluYW1pY3wKKzEuIE5hdmlnYXRpb24JCQkJCXxzcWwtbmF2aWdhdGlvbnwKKyAgICAxLjEgTWF0Y2hpdAkJCQkJfHNxbC1tYXRjaGl0fAorICAgIDEuMiBUZXh0IE9iamVjdCBNb3Rpb25zCQkJfHNxbC1vYmplY3QtbW90aW9uc3wKKyAgICAxLjMgUHJlZGVmaW5lZCBPYmplY3QgTW90aW9ucwkJfHNxbC1wcmVkZWZpbmVkLW9iamVjdHN8CisgICAgMS40IE1hY3JvcwkJCQkJfHNxbC1tYWNyb3N8CisyLiBTUUwgRGlhbGVjdHMJCQkJCXxzcWwtZGlhbGVjdHN8CisgICAgMi4xIFNRTFNldFR5cGUJCQkJfFNRTFNldFR5cGV8CisgICAgMi4yIFNRTCBEaWFsZWN0IERlZmF1bHQJCQl8c3FsLXR5cGUtZGVmYXVsdHwKKzMuIEFkZGluZyBuZXcgU1FMIERpYWxlY3RzCQkJfHNxbC1hZGRpbmctZGlhbGVjdHN8Cis0LiBPTU5JIFNRTCBDb21wbGV0aW9uCQkJCXxzcWwtY29tcGxldGlvbnwKKyAgICA0LjEgU3RhdGljIG1vZGUJCQkJfHNxbC1jb21wbGV0aW9uLXN0YXRpY3wKKyAgICA0LjIgRHluYW1pYyBtb2RlCQkJCXxzcWwtY29tcGxldGlvbi1keW5hbWljfAogICAgIDQuMyBUdXRvcmlhbAkJCQl8c3FsLWNvbXBsZXRpb24tdHV0b3JpYWx8Ci0gICAgICAgIDQuMy4xIENvbXBsZXRlIFRhYmxlcwkJCXxzcWwtY29tcGxldGlvbi10YWJsZXN8Ci0gICAgICAgIDQuMy4yIENvbXBsZXRlIENvbHVtbnMJCQl8c3FsLWNvbXBsZXRpb24tY29sdW1uc3wKLSAgICAgICAgNC4zLjMgQ29tcGxldGUgUHJvY2VkdXJlcwkJfHNxbC1jb21wbGV0aW9uLXByb2NlZHVyZXN8Ci0gICAgICAgIDQuMy40IENvbXBsZXRlIFZpZXdzCQkJfHNxbC1jb21wbGV0aW9uLXZpZXdzfAorCTQuMy4xIENvbXBsZXRlIFRhYmxlcwkJCXxzcWwtY29tcGxldGlvbi10YWJsZXN8CisJNC4zLjIgQ29tcGxldGUgQ29sdW1ucwkJCXxzcWwtY29tcGxldGlvbi1jb2x1bW5zfAorCTQuMy4zIENvbXBsZXRlIFByb2NlZHVyZXMJCXxzcWwtY29tcGxldGlvbi1wcm9jZWR1cmVzfAorCTQuMy40IENvbXBsZXRlIFZpZXdzCQkJfHNxbC1jb21wbGV0aW9uLXZpZXdzfAogICAgIDQuNCBDb21wbGV0aW9uIEN1c3RvbWl6YXRpb24JCXxzcWwtY29tcGxldGlvbi1jdXN0b21pemF0aW9ufAotICAgIDQuNSBTUUwgTWFwcwkgICAgICAgIAkJfHNxbC1jb21wbGV0aW9uLW1hcHN8CisgICAgNC41IFNRTCBNYXBzCQkJCXxzcWwtY29tcGxldGlvbi1tYXBzfAogICAgIDQuNiBVc2luZyB3aXRoIG90aGVyIGZpbGV0eXBlcwkJfHNxbC1jb21wbGV0aW9uLWZpbGV0eXBlc3wKIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0xLiBOYXZpZ2F0aW9uCSAgICAgICAgCQkJKnNxbC1uYXZpZ2F0aW9uKgorMS4gTmF2aWdhdGlvbgkJCQkJKnNxbC1uYXZpZ2F0aW9uKgogCiBUaGUgU1FMIGZ0cGx1Z2luIHByb3ZpZGVzIGEgbnVtYmVyIG9mIG9wdGlvbnMgdG8gYXNzaXN0IHdpdGggZmlsZQogbmF2aWdhdGlvbi4KIAogCi0xLjEgTWF0Y2hpdAkJICAgICAgICAJCSpzcWwtbWF0Y2hpdCoKKzEuMSBNYXRjaGl0CQkJCQkqc3FsLW1hdGNoaXQqCiAtLS0tLS0tLS0tLQogVGhlIG1hdGNoaXQgcGx1Z2luIChodHRwOi8vd3d3LnZpbS5vcmcvc2NyaXB0cy9zY3JpcHQucGhwP3NjcmlwdF9pZD0zOSkKIHByb3ZpZGVzIG1hbnkgYWRkaXRpb25hbCBmZWF0dXJlcyBhbmQgY2FuIGJlIGN1c3RvbWl6ZWQgZm9yIGRpZmZlcmVudAotbGFuZ3VhZ2VzLiAgVGhlIG1hdGNoaXQgcGx1Z2luIGlzIGNvbmZpZ3VyZWQgYnkgZGVmaW5pbmcgYSBsb2NhbCAKLWJ1ZmZlciB2YXJpYWJsZSwgYjptYXRjaF93b3Jkcy4gIFByZXNzaW5nIHRoZSAlIGtleSB3aGlsZSBvbiB2YXJpb3VzIAorbGFuZ3VhZ2VzLiAgVGhlIG1hdGNoaXQgcGx1Z2luIGlzIGNvbmZpZ3VyZWQgYnkgZGVmaW5pbmcgYSBsb2NhbAorYnVmZmVyIHZhcmlhYmxlLCBiOm1hdGNoX3dvcmRzLiAgUHJlc3NpbmcgdGhlICUga2V5IHdoaWxlIG9uIHZhcmlvdXMKIGtleXdvcmRzIHdpbGwgbW92ZSB0aGUgY3Vyc29yIHRvIGl0cyBtYXRjaC4gIEZvciBleGFtcGxlLCBpZiB0aGUgY3Vyc29yCiBpcyBvbiBhbiAiaWYiLCBwcmVzc2luZyAlIHdpbGwgY3ljbGUgYmV0d2VlbiB0aGUgImVsc2UiLCAiZWxzZWlmIiBhbmQKICJlbmQgaWYiIGtleXdvcmRzLgpAQCAtNTEsNDAgKzUxLDQwIEBACiAgICAgZWxzZWlmIHwgZWxzaWYKICAgICBlbHNlIFtpZl0KICAgICBlbmQgaWYKLSAgICAKKwogICAgIFt3aGlsZSBjb25kaXRpb25dIGxvb3AKLSAgICAgICAgbGVhdmUKLSAgICAgICAgYnJlYWsKLSAgICAgICAgY29udGludWUKLSAgICAgICAgZXhpdAorCWxlYXZlCisJYnJlYWsKKwljb250aW51ZQorCWV4aXQKICAgICBlbmQgbG9vcAotICAgIAorCiAgICAgZm9yCi0gICAgICAgIGxlYXZlCi0gICAgICAgIGJyZWFrCi0gICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGV4aXQKKwlsZWF2ZQorCWJyZWFrCisJY29udGludWUKKwlleGl0CiAgICAgZW5kIGxvb3AKLSAgICAKKwogICAgIGRvCi0gICAgICAgIHN0YXRlbWVudHMKKwlzdGF0ZW1lbnRzCiAgICAgZG9lbmQKLSAgICAKKwogICAgIGNhc2UKLSAgICB3aGVuIAorICAgIHdoZW4KICAgICB3aGVuCiAgICAgZGVmYXVsdAogICAgIGVuZCBjYXNlCi0gICAgCisKICAgICBtZXJnZQogICAgIHdoZW4gbm90IG1hdGNoZWQKICAgICB3aGVuIG1hdGNoZWQKIAogICAgIGNyZWF0ZVsgb3IgcmVwbGFjZV0gcHJvY2VkdXJlfGZ1bmN0aW9ufGV2ZW50CiAgICAgcmV0dXJucwotIAogCi0xLjIgVGV4dCBPYmplY3QgTW90aW9ucwkJICAgICAgICAJKnNxbC1vYmplY3QtbW90aW9ucyoKKworMS4yIFRleHQgT2JqZWN0IE1vdGlvbnMJCQkJKnNxbC1vYmplY3QtbW90aW9ucyoKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBWaW0gaGFzIGEgbnVtYmVyIG9mIHByZWRlZmluZWQga2V5cyBmb3Igd29ya2luZyB3aXRoIHRleHQgfG9iamVjdC1tb3Rpb25zfC4KIFRoaXMgZmlsZXR5cGUgcGx1Z2luIGF0dGVtcHRzIHRvIHRyYW5zbGF0ZSB0aGVzZSBrZXlzIHRvIG1hcHMgd2hpY2ggbWFrZSBzZW5zZQpAQCAtOTIsMTMgKzkyLDEzIEBACiAKIFRoZSBmb2xsb3dpbmcgfE5vcm1hbHwgbW9kZSBhbmQgfFZpc3VhbHwgbW9kZSBtYXBzIGV4aXN0ICh3aGVuIHlvdSBlZGl0IGEgU1FMCiBmaWxlKTogPgotICAgIF1dICAgICAgICAgICAgICBtb3ZlIGZvcndhcmQgdG8gdGhlIG5leHQgJ2JlZ2luJwotICAgIFtbICAgICAgICAgICAgICBtb3ZlIGJhY2t3YXJkcyB0byB0aGUgcHJldmlvdXMgJ2JlZ2luJwotICAgIF1bICAgICAgICAgICAgICBtb3ZlIGZvcndhcmQgdG8gdGhlIG5leHQgJ2VuZCcKLSAgICBbXSAgICAgICAgICAgICAgbW92ZSBiYWNrd2FyZHMgdG8gdGhlIHByZXZpb3VzICdlbmQnCi0gCisgICAgXV0JCSAgICBtb3ZlIGZvcndhcmQgdG8gdGhlIG5leHQgJ2JlZ2luJworICAgIFtbCQkgICAgbW92ZSBiYWNrd2FyZHMgdG8gdGhlIHByZXZpb3VzICdiZWdpbicKKyAgICBdWwkJICAgIG1vdmUgZm9yd2FyZCB0byB0aGUgbmV4dCAnZW5kJworICAgIFtdCQkgICAgbW92ZSBiYWNrd2FyZHMgdG8gdGhlIHByZXZpb3VzICdlbmQnCiAKLTEuMyBQcmVkZWZpbmVkIE9iamVjdCBNb3Rpb25zICAgICAgICAgICAgICAgICAgICpzcWwtcHJlZGVmaW5lZC1vYmplY3RzKgorCisxLjMgUHJlZGVmaW5lZCBPYmplY3QgTW90aW9ucwkJCSpzcWwtcHJlZGVmaW5lZC1vYmplY3RzKgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIE1vc3QgcmVsYXRpb25hbCBkYXRhYmFzZXMgc3VwcG9ydCB2YXJpb3VzIHN0YW5kYXJkIGZlYXR1cmVzLCB0YWJsZXMsIGluZGljZXMsCiB0cmlnZ2VycyBhbmQgc3RvcmVkIHByb2NlZHVyZXMuICBFYWNoIHZlbmRvciBhbHNvIGhhcyBhIHZhcmlldHkgb2YgcHJvcHJpZXRhcnkKQEAgLTEwOSw0NCArMTA5LDQ0IEBACiBmbGV4aWJsZSBhcyBwb3NzaWJsZSwgeW91IGNhbiBvdmVycmlkZSB0aGUgbGlzdCBvZiBvYmplY3RzIGZyb20gd2l0aGluIHlvdXIKIHx2aW1yY3wgd2l0aCB0aGUgZm9sbG93aW5nOiA+CiAgICAgbGV0IGc6ZnRwbHVnaW5fc3FsX29iamVjdHMgPSAnZnVuY3Rpb24scHJvY2VkdXJlLGV2ZW50LHRhYmxlLHRyaWdnZXInIC4KLSAgICAgICAgICAgICAgICBcICcsc2NoZW1hLHNlcnZpY2UscHVibGljYXRpb24sZGF0YWJhc2UsZGF0YXR5cGUsZG9tYWluJyAuCi0gICAgICAgICAgICAgICAgXCAnLGluZGV4LHN1YnNjcmlwdGlvbixzeW5jaHJvbml6YXRpb24sdmlldyx2YXJpYWJsZScKLSAgICAgICAgICAgICAgICAgCisJCVwgJyxzY2hlbWEsc2VydmljZSxwdWJsaWNhdGlvbixkYXRhYmFzZSxkYXRhdHlwZSxkb21haW4nIC4KKwkJXCAnLGluZGV4LHN1YnNjcmlwdGlvbixzeW5jaHJvbml6YXRpb24sdmlldyx2YXJpYWJsZScKKwogVGhlIGZvbGxvd2luZyB8Tm9ybWFsfCBtb2RlIGFuZCB8VmlzdWFsfCBtb2RlIG1hcHMgaGF2ZSBiZWVuIGNyZWF0ZWQgd2hpY2ggdXNlCiB0aGUgYWJvdmUgbGlzdDogPgotICAgIF19ICAgICAgICAgICAgICBtb3ZlIGZvcndhcmQgdG8gdGhlIG5leHQgJ2NyZWF0ZSA8b2JqZWN0IG5hbWU+JwotICAgIFt7ICAgICAgICAgICAgICBtb3ZlIGJhY2t3YXJkIHRvIHRoZSBwcmV2aW91cyAnY3JlYXRlIDxvYmplY3QgbmFtZT4nCisgICAgXX0JCSAgICBtb3ZlIGZvcndhcmQgdG8gdGhlIG5leHQgJ2NyZWF0ZSA8b2JqZWN0IG5hbWU+JworICAgIFt7CQkgICAgbW92ZSBiYWNrd2FyZCB0byB0aGUgcHJldmlvdXMgJ2NyZWF0ZSA8b2JqZWN0IG5hbWU+JwogCiBSZXBlYXRlZGx5IHByZXNzaW5nIF19IHdpbGwgY3ljbGUgdGhyb3VnaCBlYWNoIG9mIHRoZXNlIGNyZWF0ZSBzdGF0ZW1lbnRzOiA+CiAgICAgY3JlYXRlIHRhYmxlIHQxICgKLSAgICAgICAgLi4uCisJLi4uCiAgICAgKTsKIAogICAgIGNyZWF0ZSBwcm9jZWR1cmUgcDEKICAgICBiZWdpbgotICAgICAgICAuLi4KKwkuLi4KICAgICBlbmQ7CiAKICAgICBjcmVhdGUgaW5kZXggaTEgb24gdDEgKGMxKTsKLSAKKwogVGhlIGRlZmF1bHQgc2V0dGluZyBmb3IgZzpmdHBsdWdpbl9zcWxfb2JqZWN0cyBpczogPgogICAgIGxldCBnOmZ0cGx1Z2luX3NxbF9vYmplY3RzID0gJ2Z1bmN0aW9uLHByb2NlZHVyZSxldmVudCwnIC4KLSAgICAgICAgICAgICAgICBcICdcXChleGlzdGluZ1xcXFx8Z2xvYmFsXFxzXFwrdGVtcG9yYXJ5XFxzXFwrXFwpXFxceywxfScgLgotICAgICAgICAgICAgICAgIFwgJ3RhYmxlLHRyaWdnZXInIC4KLSAgICAgICAgICAgICAgICBcICcsc2NoZW1hLHNlcnZpY2UscHVibGljYXRpb24sZGF0YWJhc2UsZGF0YXR5cGUsZG9tYWluJyAuCi0gICAgICAgICAgICAgICAgXCAnLGluZGV4LHN1YnNjcmlwdGlvbixzeW5jaHJvbml6YXRpb24sdmlldyx2YXJpYWJsZScKLSAKKwkJXCAnXFwoZXhpc3RpbmdcXFxcfGdsb2JhbFxcc1xcK3RlbXBvcmFyeVxcc1xcK1xcKVxcXHssMX0nIC4KKwkJXCAndGFibGUsdHJpZ2dlcicgLgorCQlcICcsc2NoZW1hLHNlcnZpY2UscHVibGljYXRpb24sZGF0YWJhc2UsZGF0YXR5cGUsZG9tYWluJyAuCisJCVwgJyxpbmRleCxzdWJzY3JpcHRpb24sc3luY2hyb25pemF0aW9uLHZpZXcsdmFyaWFibGUnCisKIFRoZSBhYm92ZSB3aWxsIGFsc28gaGFuZGxlIHRoZXNlIGNhc2VzOiA+CiAgICAgY3JlYXRlIHRhYmxlIHQxICgKLSAgICAgICAgLi4uCisJLi4uCiAgICAgKTsKICAgICBjcmVhdGUgZXhpc3RpbmcgdGFibGUgdDIgKAotICAgICAgICAuLi4KKwkuLi4KICAgICApOwogICAgIGNyZWF0ZSBnbG9iYWwgdGVtcG9yYXJ5IHRhYmxlIHQzICgKLSAgICAgICAgLi4uCisJLi4uCiAgICAgKTsKLSAKKwogQnkgZGVmYXVsdCwgdGhlIGZ0cGx1Z2luIG9ubHkgc2VhcmNoZXMgZm9yIENSRUFURSBzdGF0ZW1lbnRzLiAgWW91IGNhbiBhbHNvCiBvdmVycmlkZSB0aGlzIHZpYSB5b3VyIHx2aW1yY3wgd2l0aCB0aGUgZm9sbG93aW5nOiA+CiAgICAgbGV0IGc6ZnRwbHVnaW5fc3FsX3N0YXRlbWVudHMgPSAnY3JlYXRlLGFsdGVyJwpAQCAtMTU1LDQzICsxNTUsNDMgQEAKICAgICAxLiAgLS0KICAgICAyLiAgLy8KICAgICAzLiAgLyoKLSAgICAgICAgICoKLSAgICAgICAgICovCi0gICAgICAgICAgCisJICoKKwkgKi8KKwogVGhlIGZvbGxvd2luZyB8Tm9ybWFsfCBtb2RlIGFuZCB8VmlzdWFsfCBtb2RlIG1hcHMgaGF2ZSBiZWVuIGNyZWF0ZWQgdG8gd29yawogd2l0aCBjb21tZW50czogPgotICAgIF0iICAgICAgICAgICAgICBtb3ZlIGZvcndhcmQgdG8gdGhlIGJlZ2lubmluZyBvZiBhIGNvbW1lbnQKLSAgICBbIiAgICAgICAgICAgICAgbW92ZSBmb3J3YXJkIHRvIHRoZSBlbmQgb2YgYSBjb21tZW50CisgICAgXSIJCSAgICBtb3ZlIGZvcndhcmQgdG8gdGhlIGJlZ2lubmluZyBvZiBhIGNvbW1lbnQKKyAgICBbIgkJICAgIG1vdmUgZm9yd2FyZCB0byB0aGUgZW5kIG9mIGEgY29tbWVudAogCiAKIAotMS40IE1hY3JvcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnNxbC1tYWNyb3MqCisxLjQgTWFjcm9zCQkJCQkgICAqc3FsLW1hY3JvcyoKIC0tLS0tLS0tLS0KIFZpbSdzIGZlYXR1cmUgdG8gZmluZCBtYWNybyBkZWZpbml0aW9ucywgfCdkZWZpbmUnfCwgaXMgc3VwcG9ydGVkIHVzaW5nIHRoaXMKIHJlZ3VsYXIgZXhwcmVzc2lvbjogPgogICAgIFxjXDxcKFZBUklBQkxFXHxERUNMQVJFXHxJTlx8T1VUXHxJTk9VVFwpXD4KLSAKKwogVGhpcyBhZGRyZXNzZXMgdGhlIGZvbGxvd2luZyBjb2RlOiA+CiAgICAgQ1JFQVRFIFZBUklBQkxFIG15VmFyMSBJTlRFR0VSOwogCiAgICAgQ1JFQVRFIFBST0NFRFVSRSBzcF90ZXN0KAotICAgICAgICBJTiBteVZhcjIgSU5URUdFUiwKLSAgICAgICAgT1VUIG15VmFyMyBDSEFSKDMwKSwKLSAgICAgICAgSU5PVVQgbXlWYXI0IE5VTUVSSUMoMjAsMCkKKwlJTiBteVZhcjIgSU5URUdFUiwKKwlPVVQgbXlWYXIzIENIQVIoMzApLAorCUlOT1VUIG15VmFyNCBOVU1FUklDKDIwLDApCiAgICAgKQogICAgIEJFR0lOCi0gICAgICAgIERFQ0xBUkUgbXlWYXI1IElOVEVHRVI7CisJREVDTEFSRSBteVZhcjUgSU5URUdFUjsKIAotICAgICAgICBTRUxFQ1QgYzEsIGMyLCBjMwotICAgICAgICAgIElOVE8gbXlWYXIyLCBteVZhcjMsIG15VmFyNAotICAgICAgICAgIEZST00gVDEKLSAgICAgICAgIFdIRVJFIGM0ID0gbXlWYXIxOworCVNFTEVDVCBjMSwgYzIsIGMzCisJICBJTlRPIG15VmFyMiwgbXlWYXIzLCBteVZhcjQKKwkgIEZST00gVDEKKwkgV0hFUkUgYzQgPSBteVZhcjE7CiAgICAgRU5EOwotIAorCiBQbGFjZSB5b3VyIGN1cnNvciBvbiAibXlWYXIxIiBvbiB0aGlzIGxpbmU6ID4KLSAgICAgICAgIFdIRVJFIGM0ID0gbXlWYXIxOwotICAgICAgICAgICAgICAgICAgICAgXgotIAorCSBXSEVSRSBjNCA9IG15VmFyMTsKKwkJICAgICBeCisKIFByZXNzIGFueSBvZiB0aGUgZm9sbG93aW5nIGtleXM6ID4KICAgICBbZAogICAgIFtECkBAIC0xOTksMTcgKzE5OSwxNyBAQAogCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotMi4gU1FMIERpYWxlY3RzCSAgICAgICAgCQkJKnNxbC1kaWFsZWN0cyogKnNxbC10eXBlcyoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzeWJhc2UqICpUU1FMKiAqVHJhbnNhY3QtU1FMKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnNxbGFueXdoZXJlKiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpvcmFjbGUqICpwbHNxbCogKnNxbGoqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3Fsc2VydmVyKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm15c3FsKiAqcG9zdGdyZXNzKiAqcHNxbCoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICppbmZvcm1peCoKKzIuIFNRTCBEaWFsZWN0cwkJCQkJKnNxbC1kaWFsZWN0cyogKnNxbC10eXBlcyoKKwkJCQkJCSpzeWJhc2UqICpUU1FMKiAqVHJhbnNhY3QtU1FMKgorCQkJCQkJKnNxbGFueXdoZXJlKgorCQkJCQkJKm9yYWNsZSogKnBsc3FsKiAqc3FsaioKKwkJCQkJCSpzcWxzZXJ2ZXIqCisJCQkJCQkqbXlzcWwqICpwb3N0Z3Jlc3MqICpwc3FsKgorCQkJCQkJKmluZm9ybWl4KgogCiBBbGwgcmVsYXRpb25hbCBkYXRhYmFzZXMgc3VwcG9ydCBTUUwuICBUaGVyZSBpcyBhIHBvcnRpb24gb2YgU1FMIHRoYXQgaXMKIHBvcnRhYmxlIGFjcm9zcyB2ZW5kb3JzIChleC4gQ1JFQVRFIFRBQkxFLCBDUkVBVEUgSU5ERVgpLCBidXQgdGhlcmUgaXMgYQotZ3JlYXQgZGVhbCBvZiB2ZW5kb3Igc3BlY2lmaWMgZXh0ZW5zaW9ucyB0byBTUUwuICBPcmFjbGUgc3VwcG9ydHMgdGhlIAorZ3JlYXQgZGVhbCBvZiB2ZW5kb3Igc3BlY2lmaWMgZXh0ZW5zaW9ucyB0byBTUUwuICBPcmFjbGUgc3VwcG9ydHMgdGhlCiAiQ1JFQVRFIE9SIFJFUExBQ0UiIHN5bnRheCwgY29sdW1uIGRlZmF1bHRzIHNwZWNpZmllZCBpbiB0aGUgQ1JFQVRFIFRBQkxFCiBzdGF0ZW1lbnQgYW5kIHRoZSBwcm9jZWR1cmFsIGxhbmd1YWdlIChmb3Igc3RvcmVkIHByb2NlZHVyZXMgYW5kIHRyaWdnZXJzKS4KIApAQCAtMjI5LDEzICsyMjksMTMgQEAKIGJlIG5pY2UgdG8gc3BlY2lmeSBhIGRlZmF1bHQgaW4geW91ciB8dmltcmN8LgogCiAKLTIuMSBTUUxTZXRUeXBlCQkgICAgICAgIAkJKnNxbHNldHR5cGUqICpTUUxTZXRUeXBlKgorMi4xIFNRTFNldFR5cGUJCQkJCSpzcWxzZXR0eXBlKiAqU1FMU2V0VHlwZSoKIC0tLS0tLS0tLS0tLS0tCiBGb3IgdGhlIHBlb3BsZSB0aGF0IHdvcmsgd2l0aCBtYW55IGRpZmZlcmVudCBkYXRhYmFzZXMsIGl0IHdvdWxkIGJlIG5pY2UgdG8gYmUKIGFibGUgdG8gZmxpcCBiZXR3ZWVuIHRoZSB2YXJpb3VzIHZlbmRvcnMgcnVsZXMgKGluZGVudCwgc3ludGF4KSBvbiBhIHBlcgogYnVmZmVyIGJhc2lzLCBhdCBhbnkgdGltZS4gIFRoZSBmdHBsdWdpbi9zcWwudmltIGZpbGUgZGVmaW5lcyB0aGlzIGZ1bmN0aW9uOiA+CiAgICAgU1FMU2V0VHlwZQotIAorCiBFeGVjdXRpbmcgdGhpcyBmdW5jdGlvbiB3aXRob3V0IGFueSBwYXJhbWV0ZXJzIHdpbGwgc2V0IHRoZSBpbmRlbnQgYW5kIHN5bnRheAogc2NyaXB0cyBiYWNrIHRvIHRoZWlyIGRlZmF1bHRzLCBzZWUgfHNxbC10eXBlLWRlZmF1bHR8LiAgSWYgeW91IGhhdmUgdHVybmVkCiBvZmYgVmkncyBjb21wYXRpYmlsaXR5IG1vZGUsIHwnY29tcGF0aWJsZSd8LCB5b3UgY2FuIHVzZSB0aGUgPFRhYj4ga2V5IHRvCkBAIC0yNDcsMTkgKzI0NywxOSBAQAogc2VhcmNoIHRoZSB8J3J1bnRpbWVwYXRoJ3wgZm9yIGFsbCBWaW0gc2NyaXB0cyB3aXRoIGEgbmFtZSBjb250YWluaW5nICdzcWwnLgogVGhpcyB0YWtlcyB0aGUgZ3Vlc3Mgd29yayBvdXQgb2YgdGhlIHNwZWxsaW5nIG9mIHRoZSBuYW1lcy4gIFRoZSBmb2xsb3dpbmcgYXJlCiBleGFtcGxlczogPgotICAgIDpTUUxTZXRUeXBlIAorICAgIDpTUUxTZXRUeXBlCiAgICAgOlNRTFNldFR5cGUgc3Fsb3JhY2xlCiAgICAgOlNRTFNldFR5cGUgc3FsYW55d2hlcmUKICAgICA6U1FMU2V0VHlwZSBzcWxpbmZvcm1peAogICAgIDpTUUxTZXRUeXBlIG15c3FsCi0gCisKIFRoZSBlYXNpZXN0IGFwcHJvYWNoIGlzIHRvIHRoZSB1c2UgPFRhYj4gY2hhcmFjdGVyIHdoaWNoIHdpbGwgZmlyc3QgY29tcGxldGUKIHRoZSBjb21tYW5kIG5hbWUgKFNRTFNldFR5cGUpLCBhZnRlciBhIHNwYWNlIGFuZCBhbm90aGVyIDxUYWI+LCBkaXNwbGF5IGEgbGlzdAogb2YgYXZhaWxhYmxlIFZpbSBzY3JpcHQgbmFtZXM6ID4KICAgICA6U1FMPFRhYj48c3BhY2U+PFRhYj4KLSAKIAotMi4yIFNRTCBEaWFsZWN0IERlZmF1bHQJCSAgICAgICAgCSpzcWwtdHlwZS1kZWZhdWx0KgorCisyLjIgU1FMIERpYWxlY3QgRGVmYXVsdAkJCQkqc3FsLXR5cGUtZGVmYXVsdCoKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBBcyBtZW50aW9uZWQgZWFybGllciwgdGhlIGRlZmF1bHQgc3ludGF4IHJ1bGVzIGZvciBWaW0gaXMgYmFzZWQgb24gT3JhY2xlCiAoUEwvU1FMKS4gIFlvdSBjYW4gb3ZlcnJpZGUgdGhpcyBkZWZhdWx0IGJ5IHBsYWNpbmcgb25lIG9mIHRoZSBmb2xsb3dpbmcgaW4KQEAgLTI2NywxMSArMjY3LDExIEBACiAgICAgbGV0IGc6c3FsX3R5cGVfZGVmYXVsdCA9ICdzcWxhbnl3aGVyZScKICAgICBsZXQgZzpzcWxfdHlwZV9kZWZhdWx0ID0gJ3NxbGluZm9ybWl4JwogICAgIGxldCBnOnNxbF90eXBlX2RlZmF1bHQgPSAnbXlzcWwnCi0gCisKIElmIHlvdSBhZGRlZCB0aGUgZm9sbG93aW5nIHRvIHlvdXIgfHZpbXJjfDogPgogICAgIGxldCBnOnNxbF90eXBlX2RlZmF1bHQgPSAnc3FsaW5mb3JtaXgnCi0gCi1UaGUgbmV4dCB0aW1lIGVkaXQgYSBTUUwgZmlsZSB0aGUgZm9sbG93aW5nIHNjcmlwdHMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IAorCitUaGUgbmV4dCB0aW1lIGVkaXQgYSBTUUwgZmlsZSB0aGUgZm9sbG93aW5nIHNjcmlwdHMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5CiBsb2FkZWQgYnkgVmltOiA+CiAgICAgZnRwbHVnaW4vc3FsLnZpbQogICAgIHN5bnRheC9zcWxpbmZvcm1peC52aW0KQEAgLTI4Myw3ICsyODMsNyBAQAogCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotMy4gQWRkaW5nIG5ldyBTUUwgRGlhbGVjdHMJCSAgICAgICAgKnNxbC1hZGRpbmctZGlhbGVjdHMqCiszLiBBZGRpbmcgbmV3IFNRTCBEaWFsZWN0cwkJCSpzcWwtYWRkaW5nLWRpYWxlY3RzKgogCiBJZiB5b3UgYmVnaW4gd29ya2luZyB3aXRoIGEgU1FMIGRpYWxlY3Qgd2hpY2ggZG9lcyBub3QgaGF2ZSBhbnkgY3VzdG9taXphdGlvbnMKIGF2YWlsYWJsZSB3aXRoIHRoZSBkZWZhdWx0IFZpbSBkaXN0cmlidXRpb24geW91IGNhbiBjaGVjayBodHRwOi8vd3d3LnZpbS5vcmcKQEAgLTI5NCwyMiArMjk0LDIyIEBACiBJZiB5b3UgZGVjaWRlIHlvdSB3aXNoIHRvIGNyZWF0ZSBjdXN0b21pemF0aW9ucyBmb3IgdGhlIFNRTGl0ZSBkYXRhYmFzZSwgeW91CiBjYW4gY3JlYXRlIGFueSBvZiB0aGUgZm9sbG93aW5nOiA+CiAgICAgVW5peAotICAgICAgICB+Ly52aW0vc3ludGF4L3NxbGl0ZS52aW0KLSAgICAgICAgfi8udmltL2luZGVudC9zcWxpdGUudmltCisJfi8udmltL3N5bnRheC9zcWxpdGUudmltCisJfi8udmltL2luZGVudC9zcWxpdGUudmltCiAgICAgV2luZG93cwotICAgICAgICAkVklNL3ZpbWZpbGVzL3N5bnRheC9zcWxpdGUudmltCi0gICAgICAgICRWSU0vdmltZmlsZXMvaW5kZW50L3NxbGl0ZS52aW0KLSAKKwkkVklNL3ZpbWZpbGVzL3N5bnRheC9zcWxpdGUudmltCisJJFZJTS92aW1maWxlcy9pbmRlbnQvc3FsaXRlLnZpbQorCiBObyBjaGFuZ2VzIGFyZSBuZWNlc3NhcnkgdG8gdGhlIFNRTFNldFR5cGUgZnVuY3Rpb24uICBJdCB3aWxsIGF1dG9tYXRpY2FsbHkKLXBpY2t1cCB0aGUgbmV3IFNRTCBmaWxlcyBhbmQgbG9hZCB0aGVtIHdoZW4geW91IGlzc3VlIHRoZSBTUUxTZXRUeXBlIGNvbW1hbmQuIAorcGlja3VwIHRoZSBuZXcgU1FMIGZpbGVzIGFuZCBsb2FkIHRoZW0gd2hlbiB5b3UgaXNzdWUgdGhlIFNRTFNldFR5cGUgY29tbWFuZC4KIAogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLTQuIE9NTkkgU1FMIENvbXBsZXRpb24gIAkJICAgICAgICAqc3FsLWNvbXBsZXRpb24qIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm9tbmktc3FsLWNvbXBsZXRpb24qCis0LiBPTU5JIFNRTCBDb21wbGV0aW9uCQkJCSpzcWwtY29tcGxldGlvbioKKwkJCQkJCSpvbW5pLXNxbC1jb21wbGV0aW9uKgogCiBWaW0gNyBpbmNsdWRlcyBhIGNvZGUgY29tcGxldGlvbiBpbnRlcmZhY2UgYW5kIGZ1bmN0aW9ucyB3aGljaCBhbGxvd3MgcGx1Z2luCi1kZXZlbG9wZXJzIHRvIGJ1aWxkIGluIGNvZGUgY29tcGxldGlvbiBmb3IgYW55IGxhbmd1YWdlLiAgVmltIDcgaW5jbHVkZXMgCitkZXZlbG9wZXJzIHRvIGJ1aWxkIGluIGNvZGUgY29tcGxldGlvbiBmb3IgYW55IGxhbmd1YWdlLiAgVmltIDcgaW5jbHVkZXMKIGNvZGUgY29tcGxldGlvbiBmb3IgdGhlIFNRTCBsYW5ndWFnZS4KIAogVGhlcmUgYXJlIHR3byBtb2RlcyB0byB0aGUgU1FMIGNvbXBsZXRpb24gcGx1Z2luLCBzdGF0aWMgYW5kIGR5bmFtaWMuICBUaGUKQEAgLTMxOCw3ICszMTgsNyBAQAogZGlyZWN0bHkgZnJvbSBhIGRhdGFiYXNlLiAgVGhpcyBpbmNsdWRlcywgdGFibGUgbGlzdHMsIGNvbHVtbiBsaXN0cywKIHByb2NlZHVyZXMgbmFtZXMgYW5kIG1vcmUuCiAKLTQuMSBTdGF0aWMgTW9kZSAgCQkgICAgICAgICAgICAgICAgKnNxbC1jb21wbGV0aW9uLXN0YXRpYyoKKzQuMSBTdGF0aWMgTW9kZQkJCQkJKnNxbC1jb21wbGV0aW9uLXN0YXRpYyoKIC0tLS0tLS0tLS0tLS0tLQogVGhlIHN0YXRpYyBwb3B1cHMgY3JlYXRlZCBjb250YWluIGl0ZW1zIGRlZmluZWQgYnkgdGhlIGFjdGl2ZSBzeW50YXggcnVsZXMKIHdoaWxlIGVkaXRpbmcgYSBmaWxlIHdpdGggYSBmaWxldHlwZSBvZiBTUUwuICBUaGUgcGx1Z2luIGRlZmluZXMgKGJ5IGRlZmF1bHQpCkBAIC0zMzAsMzkgKzMzMCwzOSBAQAogICAgIGltYXAgPGJ1ZmZlcj4gPEMtQz5vIDxDLVw+PEMtTz46Y2FsbCBzcWxjb21wbGV0ZSNNYXAoJ3NxbE9wdGlvbicpPENSPjxDLVg+PEMtTz4KICAgICBpbWFwIDxidWZmZXI+IDxDLUM+VCA8Qy1cPjxDLU8+OmNhbGwgc3FsY29tcGxldGUjTWFwKCdzcWxUeXBlJyk8Q1I+PEMtWD48Qy1PPgogICAgIGltYXAgPGJ1ZmZlcj4gPEMtQz5zIDxDLVw+PEMtTz46Y2FsbCBzcWxjb21wbGV0ZSNNYXAoJ3NxbFN0YXRlbWVudCcpPENSPjxDLVg+PEMtTz4KLSAgCisKIFRoZSBzdGF0aWMgbWFwcyAod2hpY2ggYXJlIGJhc2VkIG9uIHRoZSBzeW50YXggaGlnaGxpZ2h0IGdyb3VwcykgZm9sbG93IHRoaXMKIGZvcm1hdDogPgogICAgIGltYXAgPGJ1ZmZlcj4gPEMtQz5rIDxDLVw+PEMtTz46Y2FsbCBzcWxjb21wbGV0ZSNNYXAoJ3NxbEtleXdvcmQnKTxDUj48Qy1YPjxDLU8+Ci0gCisKIFRoaXMgY29tbWFuZCBicmVha3MgZG93biBhczogPgotICAgIGltYXAgICAgICAgICAgICAgICAgICAgLSBDcmVhdGUgYW4gaW5zZXJ0IG1hcAotICAgIDxidWZmZXI+ICAgICAgICAgICAgICAgLSBPbmx5IGZvciB0aGlzIGJ1ZmZlcgotICAgIDxDLUM+ayAgICAgICAgICAgICAgICAgLSBZb3VyIGNob2ljZSBvZiBrZXkgbWFwCi0gICAgPEMtXD48Qy1PPiAgICAgICAgICAgICAtIEV4ZWN1dGUgb25lIGNvbW1hbmQsIHJldHVybiB0byBJbnNlcnQgbW9kZQorICAgIGltYXAJCSAgIC0gQ3JlYXRlIGFuIGluc2VydCBtYXAKKyAgICA8YnVmZmVyPgkJICAgLSBPbmx5IGZvciB0aGlzIGJ1ZmZlcgorICAgIDxDLUM+awkJICAgLSBZb3VyIGNob2ljZSBvZiBrZXkgbWFwCisgICAgPEMtXD48Qy1PPgkJICAgLSBFeGVjdXRlIG9uZSBjb21tYW5kLCByZXR1cm4gdG8gSW5zZXJ0IG1vZGUKICAgICA6Y2FsbCBzcWxjb21wbGV0ZSNNYXAoIC0gQWxsb3dzIHRoZSBTUUwgY29tcGxldGlvbiBwbHVnaW4gdG8gcGVyZm9ybSBzb21lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdXNla2VlcGluZyBmdW5jdGlvbnMgdG8gYWxsb3cgaXQgdG8gYmUgdXNlZCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25qdW5jdGlvbiB3aXRoIG90aGVyIGNvbXBsZXRpb24gcGx1Z2lucy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kaWNhdGUgd2hpY2ggaXRlbSB5b3Ugd2FudCB0aGUgU1FMIGNvbXBsZXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luIHRvIGNvbXBsZXRlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2Ugd2UgYXJlIGFza2luZyB0aGUgcGx1Z2luIHRvIGRpc3BsYXkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMgZnJvbSB0aGUgc3ludGF4IGhpZ2hsaWdodCBncm91cAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3FsS2V5d29yZCcuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdmlldyBhIGxpc3Qgb2YgaGlnaGxpZ2h0IGdyb3VwIG5hbWVzIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNob29zZSBmcm9tIGJ5IGV4ZWN1dGluZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzeW50YXggbGlzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHdoaWxlIGVkaXRpbmcgYSBTUUwgZmlsZS4KLSAgICAnc3FsS2V5d29yZCcgICAgICAgICAgIC0gRGlzcGxheSB0aGUgaXRlbXMgZm9yIHRoZSBzcWxLZXl3b3JkIGhpZ2hsaWdodAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cAotICAgICk8Q1I+ICAgICAgICAgICAgICAgICAgLSBFeGVjdXRlIHRoZSA6bGV0IGNvbW1hbmQKLSAgICA8Qy1YPjxDLU8+ICAgICAgICAgICAgIC0gVHJpZ2dlciB0aGUgc3RhbmRhcmQgb21uaSBjb21wbGV0aW9uIGtleSBzdHJva2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NpbmcgaW4gJ3NxbEtleXdvcmQnIGluc3RydWN0cyB0aGUgU1FMCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb24gcGx1Z2luIHRvIHBvcHVsYXRlIHRoZSBwb3B1cCB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zIGZyb20gdGhlIHNxbEtleXdvcmQgaGlnaGxpZ2h0IGdyb3VwLiAgVGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdpbiB3aWxsIGFsc28gY2FjaGUgdGhpcyByZXN1bHQgdW50aWwgVmltIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RhcnRlZC4gIFRoZSBzeW50YXggbGlzdCBpcyByZXRyaWV2ZWQgdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN5bnRheGNvbXBsZXRlIHBsdWdpbi4KLSAKKwkJCSAgICAgaG91c2VrZWVwaW5nIGZ1bmN0aW9ucyB0byBhbGxvdyBpdCB0byBiZSB1c2VkIGluCisJCQkgICAgIGNvbmp1bmN0aW9uIHdpdGggb3RoZXIgY29tcGxldGlvbiBwbHVnaW5zLgorCQkJICAgICBJbmRpY2F0ZSB3aGljaCBpdGVtIHlvdSB3YW50IHRoZSBTUUwgY29tcGxldGlvbgorCQkJICAgICBwbHVnaW4gdG8gY29tcGxldGUuCisJCQkgICAgIEluIHRoaXMgY2FzZSB3ZSBhcmUgYXNraW5nIHRoZSBwbHVnaW4gdG8gZGlzcGxheQorCQkJICAgICBpdGVtcyBmcm9tIHRoZSBzeW50YXggaGlnaGxpZ2h0IGdyb3VwCisJCQkgICAgICdzcWxLZXl3b3JkJy4KKwkJCSAgICAgWW91IGNhbiB2aWV3IGEgbGlzdCBvZiBoaWdobGlnaHQgZ3JvdXAgbmFtZXMgdG8KKwkJCSAgICAgY2hvb3NlIGZyb20gYnkgZXhlY3V0aW5nIHRoZQorCQkJCSA6c3ludGF4IGxpc3QKKwkJCSAgICAgY29tbWFuZCB3aGlsZSBlZGl0aW5nIGEgU1FMIGZpbGUuCisgICAgJ3NxbEtleXdvcmQnCSAgIC0gRGlzcGxheSB0aGUgaXRlbXMgZm9yIHRoZSBzcWxLZXl3b3JkIGhpZ2hsaWdodAorCQkJICAgICBncm91cAorICAgICk8Q1I+CQkgICAtIEV4ZWN1dGUgdGhlIDpsZXQgY29tbWFuZAorICAgIDxDLVg+PEMtTz4JCSAgIC0gVHJpZ2dlciB0aGUgc3RhbmRhcmQgb21uaSBjb21wbGV0aW9uIGtleSBzdHJva2UuCisJCQkgICAgIFBhc3NpbmcgaW4gJ3NxbEtleXdvcmQnIGluc3RydWN0cyB0aGUgU1FMCisJCQkgICAgIGNvbXBsZXRpb24gcGx1Z2luIHRvIHBvcHVsYXRlIHRoZSBwb3B1cCB3aXRoCisJCQkgICAgIGl0ZW1zIGZyb20gdGhlIHNxbEtleXdvcmQgaGlnaGxpZ2h0IGdyb3VwLiAgVGhlCisJCQkgICAgIHBsdWdpbiB3aWxsIGFsc28gY2FjaGUgdGhpcyByZXN1bHQgdW50aWwgVmltIGlzCisJCQkgICAgIHJlc3RhcnRlZC4gIFRoZSBzeW50YXggbGlzdCBpcyByZXRyaWV2ZWQgdXNpbmcKKwkJCSAgICAgdGhlIHN5bnRheGNvbXBsZXRlIHBsdWdpbi4KKwogVXNpbmcgdGhlICdzeW50YXgnIGtleXdvcmQgaXMgYSBzcGVjaWFsIGNhc2UuICBUaGlzIGluc3RydWN0cyB0aGUKIHN5bnRheGNvbXBsZXRlIHBsdWdpbiB0byByZXRyaWV2ZSBhbGwgc3ludGF4IGl0ZW1zLiAgU28gdGhpcyB3aWxsIGVmZmVjdGl2ZWx5CiB3b3JrIGZvciBhbnkgb2YgVmltJ3MgU1FMIHN5bnRheCBmaWxlcy4gIEF0IHRoZSB0aW1lIG9mIHdyaXRpbmcgdGhpcyBpbmNsdWRlcwpAQCAtMzcxLDc3ICszNzEsNzcgQEAKIAogSGVyZSBhcmUgc29tZSBleGFtcGxlcyBvZiB0aGUgZW50cmllcyB3aGljaCBhcmUgcHVsbGVkIGZyb20gdGhlIHN5bnRheCBmaWxlczogPgogICAgICBBbGwKLSAgICAgICAgIC0gQ29udGFpbnMgdGhlIGNvbnRlbnRzIG9mIGFsbCBzeW50YXggaGlnaGxpZ2h0IGdyb3VwcworCSAtIENvbnRhaW5zIHRoZSBjb250ZW50cyBvZiBhbGwgc3ludGF4IGhpZ2hsaWdodCBncm91cHMKICAgICAgU3RhdGVtZW50cwotICAgICAgICAgLSBTZWxlY3QsIEluc2VydCwgVXBkYXRlLCBEZWxldGUsIENyZWF0ZSwgQWx0ZXIsIC4uLgorCSAtIFNlbGVjdCwgSW5zZXJ0LCBVcGRhdGUsIERlbGV0ZSwgQ3JlYXRlLCBBbHRlciwgLi4uCiAgICAgIEZ1bmN0aW9ucwotICAgICAgICAgLSBNaW4sIE1heCwgVHJpbSwgUm91bmQsIERhdGUsIC4uLgorCSAtIE1pbiwgTWF4LCBUcmltLCBSb3VuZCwgRGF0ZSwgLi4uCiAgICAgIEtleXdvcmRzCi0gICAgICAgICAtIEluZGV4LCBEYXRhYmFzZSwgSGF2aW5nLCBHcm91cCwgV2l0aAorCSAtIEluZGV4LCBEYXRhYmFzZSwgSGF2aW5nLCBHcm91cCwgV2l0aAogICAgICBPcHRpb25zCi0gICAgICAgICAtIElzb2xhdGlvbl9sZXZlbCwgT25fZXJyb3IsIFF1YWxpZnlfb3duZXJzLCBGaXJlX3RyaWdnZXJzLCAuLi4KKwkgLSBJc29sYXRpb25fbGV2ZWwsIE9uX2Vycm9yLCBRdWFsaWZ5X293bmVycywgRmlyZV90cmlnZ2VycywgLi4uCiAgICAgIFR5cGVzCi0gICAgICAgICAtIEludGVnZXIsIENoYXIsIFZhcmNoYXIsIERhdGUsIERhdGVUaW1lLCBUaW1lc3RhbXAsIC4uLgotIAotIAotNC4yIER5bmFtaWMgTW9kZSAgCQkgICAgICAgICAgICAgICAgKnNxbC1jb21wbGV0aW9uLWR5bmFtaWMqCisJIC0gSW50ZWdlciwgQ2hhciwgVmFyY2hhciwgRGF0ZSwgRGF0ZVRpbWUsIFRpbWVzdGFtcCwgLi4uCisKKworNC4yIER5bmFtaWMgTW9kZQkJCQkqc3FsLWNvbXBsZXRpb24tZHluYW1pYyoKIC0tLS0tLS0tLS0tLS0tLS0KIER5bmFtaWMgbW9kZSBwb3B1bGF0ZXMgdGhlIHBvcHVwcyB3aXRoIGRhdGEgZGlyZWN0bHkgZnJvbSBhIGRhdGFiYXNlLiAgSW4KIG9yZGVyIGZvciB0aGUgZHluYW1pYyBmZWF0dXJlIHRvIGJlIGVuYWJsZWQgeW91IG11c3QgaGF2ZSB0aGUgZGJleHQudmltCiBwbHVnaW4gaW5zdGFsbGVkLCAoaHR0cDovL3ZpbS5zb3VyY2Vmb3JnZS5uZXQvc2NyaXB0LnBocD9zY3JpcHRfaWQ9MzU2KS4KIAotRHluYW1pYyBtb2RlIGlzIHVzZWQgYnkgc2V2ZXJhbCBmZWF0dXJlcyBvZiB0aGUgU1FMIGNvbXBsZXRpb24gcGx1Z2luLiAgCitEeW5hbWljIG1vZGUgaXMgdXNlZCBieSBzZXZlcmFsIGZlYXR1cmVzIG9mIHRoZSBTUUwgY29tcGxldGlvbiBwbHVnaW4uCiBBZnRlciBpbnN0YWxsaW5nIHRoZSBkYmV4dCBwbHVnaW4gc2VlIHRoZSBkYmV4dC10dXRvcmlhbCBmb3IgYWRkaXRpb25hbAogY29uZmlndXJhdGlvbiBhbmQgdXNhZ2UuICBUaGUgZGJleHQgcGx1Z2luIGFsbG93cyB0aGUgU1FMIGNvbXBsZXRpb24gcGx1Z2luCiB0byBkaXNwbGF5IGEgbGlzdCBvZiB0YWJsZXMsIHByb2NlZHVyZXMsIHZpZXdzIGFuZCBjb2x1bW5zLiA+CiAgICAgIFRhYmxlIExpc3QKLSAgICAgICAgIC0gQWxsIHRhYmxlcyBmb3IgYWxsIHNjaGVtYSBvd25lcnMKKwkgLSBBbGwgdGFibGVzIGZvciBhbGwgc2NoZW1hIG93bmVycwogICAgICBQcm9jZWR1cmUgTGlzdAotICAgICAgICAgLSBBbGwgc3RvcmVkIHByb2NlZHVyZXMgZm9yIGFsbCBzY2hlbWEgb3duZXJzCisJIC0gQWxsIHN0b3JlZCBwcm9jZWR1cmVzIGZvciBhbGwgc2NoZW1hIG93bmVycwogICAgICBWaWV3IExpc3QKLSAgICAgICAgIC0gQWxsIHN0b3JlZCBwcm9jZWR1cmVzIGZvciBhbGwgc2NoZW1hIG93bmVycworCSAtIEFsbCBzdG9yZWQgcHJvY2VkdXJlcyBmb3IgYWxsIHNjaGVtYSBvd25lcnMKICAgICAgQ29sdW1uIExpc3QKLSAgICAgICAgIC0gRm9yIHRoZSBzZWxlY3RlZCB0YWJsZSwgdGhlIGNvbHVtbnMgdGhhdCBhcmUgcGFydCBvZiB0aGUgdGFibGUKLSAKKwkgLSBGb3IgdGhlIHNlbGVjdGVkIHRhYmxlLCB0aGUgY29sdW1ucyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSB0YWJsZQorCiBUbyBlbmFibGUgdGhlIHBvcHVwLCB3aGlsZSBpbiBJTlNFUlQgbW9kZSwgdXNlIHRoZSBmb2xsb3dpbmcga2V5IGNvbWJpbmF0aW9ucwotZm9yIGVhY2ggZ3JvdXAgKHdoZXJlIDxDLUM+IG1lYW5zIGhvbGQgdGhlIENUUkwga2V5IGRvd24gd2hpbGUgcHJlc3NpbmcgCitmb3IgZWFjaCBncm91cCAod2hlcmUgPEMtQz4gbWVhbnMgaG9sZCB0aGUgQ1RSTCBrZXkgZG93biB3aGlsZSBwcmVzc2luZwogdGhlIHNwYWNlIGJhcik6Ci0gICAgIFRhYmxlIExpc3QgICAgICAgICAgICAgLSA8Qy1DPnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIDxDLVg+PEMtTz4gKHRoZSBkZWZhdWx0IG1hcCBhc3N1bWVzIHRhYmxlcykKKyAgICAgVGFibGUgTGlzdAkJICAgIC0gPEMtQz50CisJCQkgICAgLSA8Qy1YPjxDLU8+ICh0aGUgZGVmYXVsdCBtYXAgYXNzdW1lcyB0YWJsZXMpCiAgICAgIFN0b3JlZCBQcm9jZWR1cmUgTGlzdCAgLSA8Qy1DPnAKLSAgICAgVmlldyBMaXN0ICAgICAgICAgICAgICAtIDxDLUM+dgotICAgICBDb2x1bW4gTGlzdCAgICAgICAgICAgIC0gPEMtQz5jCisgICAgIFZpZXcgTGlzdAkJICAgIC0gPEMtQz52CisgICAgIENvbHVtbiBMaXN0CSAgICAtIDxDLUM+YwogCiAgICAgIFdpbmRvd3MgcGxhdGZvcm0gb25seSAgLSBXaGVuIHZpZXdpbmcgYSBwb3B1cCB3aW5kb3cgZGlzcGxheWluZyB0aGUgbGlzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGFibGVzLCB5b3UgY2FuIHByZXNzIDxDLVJpZ2h0PiwgdGhpcyB3aWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlIHRoZSB0YWJsZSBjdXJyZW50bHkgaGlnaGxpZ2h0ZWQgd2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbHVtbiBsaXN0IGZvciB0aGF0IHRhYmxlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gV2hlbiB2aWV3aW5nIGEgcG9wdXAgd2luZG93IGRpc3BsYXlpbmcgdGhlIGxpc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGNvbHVtbnMsIHlvdSBjYW4gcHJlc3MgPEMtTGVmdD4sIHRoaXMgd2lsbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZSB0aGUgY29sdW1uIGxpc3Qgd2l0aCB0aGUgbGlzdCBvZiB0YWJsZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIGFsbG93cyB5b3UgdG8gcXVpY2tseSBkcmlsbCBkb3duIGludG8gYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUgdG8gdmlldyBpdCdzIGNvbHVtbnMgYW5kIGJhY2sgYWdhaW4uCi0gCisJCQkgICAgICBvZiB0YWJsZXMsIHlvdSBjYW4gcHJlc3MgPEMtUmlnaHQ+LCB0aGlzIHdpbGwKKwkJCSAgICAgIHJlcGxhY2UgdGhlIHRhYmxlIGN1cnJlbnRseSBoaWdobGlnaHRlZCB3aXRoCisJCQkgICAgICB0aGUgY29sdW1uIGxpc3QgZm9yIHRoYXQgdGFibGUuCisJCQkgICAgLSBXaGVuIHZpZXdpbmcgYSBwb3B1cCB3aW5kb3cgZGlzcGxheWluZyB0aGUgbGlzdAorCQkJICAgICAgb2YgY29sdW1ucywgeW91IGNhbiBwcmVzcyA8Qy1MZWZ0PiwgdGhpcyB3aWxsCisJCQkgICAgICByZXBsYWNlIHRoZSBjb2x1bW4gbGlzdCB3aXRoIHRoZSBsaXN0IG9mIHRhYmxlcy4KKwkJCSAgICAtIFRoaXMgYWxsb3dzIHlvdSB0byBxdWlja2x5IGRyaWxsIGRvd24gaW50byBhCisJCQkgICAgICB0YWJsZSB0byB2aWV3IGl0J3MgY29sdW1ucyBhbmQgYmFjayBhZ2Fpbi4KKwogVGhlIFNRTCBjb21wbGV0aW9uIHBsdWdpbiBjYWNoZXMgdmFyaW91cyBsaXN0cyB0aGF0IGFyZSBkaXNwbGF5ZWQgaW4KIHRoZSBwb3B1cCB3aW5kb3cuICBUaGlzIG1ha2VzIHRoZSByZS1kaXNwbGF5aW5nIG9mIHRoZXNlIGxpc3RzIHZlcnkKLWZhc3QuICBJZiBuZXcgdGFibGVzIG9yIGNvbHVtbnMgYXJlIGFkZGVkIHRvIHRoZSBkYXRhYmFzZSBpdCBtYXkgYmVjb21lIAorZmFzdC4gIElmIG5ldyB0YWJsZXMgb3IgY29sdW1ucyBhcmUgYWRkZWQgdG8gdGhlIGRhdGFiYXNlIGl0IG1heSBiZWNvbWUKIG5lY2Vzc2FyeSB0byBjbGVhciB0aGUgcGx1Z2lucyBjYWNoZS4gIFRoZSBkZWZhdWx0IG1hcCBmb3IgdGhpcyBpczogPgogICAgIGltYXAgPGJ1ZmZlcj4gPEMtQz5SIDxDLVw+PEMtTz46Y2FsbCBzcWxjb21wbGV0ZSNNYXAoJ1Jlc2V0Q2FjaGUnKTxDUj48Qy1YPjxDLU8+Ci0gCi0gCisKKwogNC4zIFNRTCBUdXRvcmlhbAkJCQkqc3FsLWNvbXBsZXRpb24tdHV0b3JpYWwqCiAtLS0tLS0tLS0tLS0tLS0tCi0gCisKIFRoaXMgdHV0b3JpYWwgaXMgZGVzaWduZWQgdG8gdGFrZSB5b3UgdGhyb3VnaCB0aGUgY29tbW9uIGZlYXR1cmVzIG9mIHRoZSBTUUwKIGNvbXBsZXRpb24gcGx1Z2luIHNvIHRoYXQ6ID4KICAgICAgYSkgWW91IGdhaW4gZmFtaWxpYXJpdHkgd2l0aCB0aGUgcGx1Z2luCiAgICAgIGIpIFlvdSBhcmUgaW50cm9kdWNlZCB0byBzb21lIG9mIHRoZSBtb3JlIGNvbW1vbiBmZWF0dXJlcwogICAgICBjKSBTaG93IGhvdyB0byBjdXN0b21pemUgaXQgdG8geW91ciBwcmVmZXJlbmNlcwogICAgICBkKSBEZW1vbnN0cmF0ZSAiQmVzdCBvZiBVc2UiIG9mIHRoZSBwbHVnaW4gKGVhc2llc3Qgd2F5IHRvIGNvbmZpZ3VyZSkuCi0gCisKIEZpcnN0LCBjcmVhdGUgYSBuZXcgYnVmZmVyOiA+CiAgICAgIDplIHR1dG9yaWFsLnNxbAotIAorCiAKIFN0YXRpYyBmZWF0dXJlcwogLS0tLS0tLS0tLS0tLS0tCkBAIC00NTAsOCArNDUwLDggQEAKIEF0IHRoaXMgcG9pbnQsIHlvdSBjYW4gcGFnZSBkb3duIHRocm91Z2ggdGhlIGxpc3QgdW50aWwgeW91IGZpbmQgInNlbGVjdCIuCiBJZiB5b3UgYXJlIGZhbWlsaWFyIHdpdGggdGhlIGl0ZW0geW91IGFyZSBsb29raW5nIGZvciwgZm9yIGV4YW1wbGUgeW91IGtub3cKIHRoZSBzdGF0ZW1lbnQgYmVnaW5zIHdpdGggdGhlIGxldHRlciAicyIuICBZb3UgY2FuIHR5cGUgYWhlYWQgKHdpdGhvdXQgdGhlCi1xdW90ZXMpICJzZSIgdGhlbiBwcmVzczogCi0gICAgPEMtU3BhY3Q+dCAKK3F1b3RlcykgInNlIiB0aGVuIHByZXNzOgorICAgIDxDLVNwYWNlPnQKIEFzc3VtaW5nICJzZWxlY3QiIGlzIGhpZ2hsaWdodGVkIGluIHRoZSBwb3B1cCBsaXN0IHByZXNzIDxFbnRlcj4gdG8gY2hvb3NlCiB0aGUgZW50cnkuICBOb3cgdHlwZToKICAgICAqIGZyPEMtQz5hIChzaG93IGFsbCBzeW50YXggaXRlbXMpCkBAIC00NjIsMTIgKzQ2MiwxMiBAQAogZGVwZW5kaW5nIG9uIHRoZSBzeW50YXggZmlsZSB5b3UgYXJlIHVzaW5nLiAgVGhlIFNRTCBBbnl3aGVyZSBzeW50YXggZmlsZQogKHNxbGFueXdoZXJlLnZpbSkgaGFzIHN1cHBvcnQgZm9yIHRoaXM6ID4KICAgICAgQkVHSU4KLSAgICAgICAgREVDTEFSRSBjdXN0b21lcl9pZCA8Qy1DPlQgPC0tIENob29zZSBhIHR5cGUgZnJvbSB0aGUgbGlzdAotICAKKwlERUNMQVJFIGN1c3RvbWVyX2lkIDxDLUM+VCA8LS0gQ2hvb3NlIGEgdHlwZSBmcm9tIHRoZSBsaXN0CisKIAogRHluYW1pYyBmZWF0dXJlcwogLS0tLS0tLS0tLS0tLS0tLQotVG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGR5bmFtaWMgZmVhdHVyZXMgeW91IG11c3QgZmlyc3QgaW5zdGFsbCB0aGUgCitUbyB0YWtlIGFkdmFudGFnZSBvZiB0aGUgZHluYW1pYyBmZWF0dXJlcyB5b3UgbXVzdCBmaXJzdCBpbnN0YWxsIHRoZQogZGJleHQudmltIHBsdWdpbiAoaHR0cDovL3ZpbS5zb3VyY2Vmb3JnZS5uZXQvc2NyaXB0LnBocD9zY3JpcHRfaWQ9MzU2KS4gIEl0CiBhbHNvIGNvbWVzIHdpdGggYSB0dXRvcmlhbC4gIEZyb20gdGhlIFNRTCBjb21wbGV0aW9uIHBsdWdpbidzIHBlcnNwZWN0aXZlLAogdGhlIG1haW4gZmVhdHVyZSBkYmV4dCBwcm92aWRlcyBpcyBhIGNvbm5lY3Rpb24gdG8gYSBkYXRhYmFzZS4gIGRiZXh0CkBAIC00NzcsMjQgKzQ3NywyNCBAQAogCiBXaGF0IGZvbGxvd3MgYXNzdW1lcyBkYmV4dC52aW0gaGFzIGJlZW4gY29ycmVjdGx5IGNvbmZpZ3VyZWQsIGEgc2ltcGxlIHRlc3QKIGlzIHRvIHJ1biB0aGUgY29tbWFuZCwgOkRCTGlzdFRhYmxlLiAgSWYgYSBsaXN0IG9mIHRhYmxlcyBpcyBzaG93biwgeW91IGtub3cKLWRiZXh0LnZpbSBpcyB3b3JraW5nIGFzIGV4cGVjdGVkLiAgSWYgbm90LCBwbGVhc2UgY29uc3VsdCB0aGUgZGJleHQudHh0IAorZGJleHQudmltIGlzIHdvcmtpbmcgYXMgZXhwZWN0ZWQuICBJZiBub3QsIHBsZWFzZSBjb25zdWx0IHRoZSBkYmV4dC50eHQKIGRvY3VtZW50YXRpb24uCiAKIEFzc3VtaW5nIHlvdSBoYXZlIGZvbGxvd2VkIHRoZSBkYmV4dC10dXRvcmlhbCB5b3UgY2FuIHByZXNzIDxDLUM+dCB0bwogZGlzcGxheSBhIGxpc3Qgb2YgdGFibGVzLiAgVGhlcmUgaXMgYSBkZWxheSB3aGlsZSBkYmV4dCBpcyBjcmVhdGluZyB0aGUgdGFibGUKLWxpc3QuICBBZnRlciB0aGUgbGlzdCBpcyBkaXNwbGF5ZWQgcHJlc3MgPEMtVz4uICBUaGlzIHdpbGwgcmVtb3ZlIGJvdGggdGhlIAorbGlzdC4gIEFmdGVyIHRoZSBsaXN0IGlzIGRpc3BsYXllZCBwcmVzcyA8Qy1XPi4gIFRoaXMgd2lsbCByZW1vdmUgYm90aCB0aGUKIHBvcHVwIHdpbmRvdyBhbmQgdGhlIHRhYmxlIG5hbWUgYWxyZWFkeSBjaG9zZW4gd2hlbiB0aGUgbGlzdCBiZWNhbWUgYWN0aXZlLiA+Ci0gCisKICA0LjMuMSBUYWJsZSBDb21wbGV0aW9uOgkJCSpzcWwtY29tcGxldGlvbi10YWJsZXMqCi0gCisKIFByZXNzIDxDLUM+dCB0byBkaXNwbGF5IGEgbGlzdCBvZiB0YWJsZXMgZnJvbSB3aXRoaW4gdGhlIGRhdGFiYXNlIHlvdQotaGF2ZSBjb25uZWN0ZWQgdmlhIHRoZSBkYmV4dCBwbHVnaW4uICAKK2hhdmUgY29ubmVjdGVkIHZpYSB0aGUgZGJleHQgcGx1Z2luLgogTk9URTogQWxsIG9mIHRoZSBTUUwgY29tcGxldGlvbiBwb3B1cHMgc3VwcG9ydCB0eXBpbmcgYSBwcmVmaXggYmVmb3JlIHByZXNzaW5nCiB0aGUga2V5IG1hcC4gIFRoaXMgd2lsbCBsaW1pdCB0aGUgY29udGVudHMgb2YgdGhlIHBvcHVwIHdpbmRvdyB0byBqdXN0IGl0ZW1zCiBiZWdpbm5pbmcgd2l0aCB0aG9zZSBjaGFyYWN0ZXJzLiAgPgotIAorCiAgNC4zLjIgQ29sdW1uIENvbXBsZXRpb246CQkJKnNxbC1jb21wbGV0aW9uLWNvbHVtbnMqCi0gCisKIFRoZSBTUUwgY29tcGxldGlvbiBwbHVnaW4gY2FuIGFsc28gZGlzcGxheSBhIGxpc3Qgb2YgY29sdW1ucyBmb3IgcGFydGljdWxhcgogdGFibGVzLiAgVGhlIGNvbHVtbiBjb21wbGV0aW9uIGlzIHRyaWdnZXIgdmlhIDxDLUM+Yy4KIApAQCAtNTA2LDY0ICs1MDYsNjQgQEAKIGRldGFpbHMgb24gd2hlcmUgdG8gY3JlYXRlIHRoaXMgaW1hcCk6ID4KICAgICBpbWFwIDxidWZmZXI+IDx5b3VyX2tleXN0cm9rZT4gPEMtUj49c3FsY29tcGxldGUjRHJpbGxJbnRvVGFibGUoKTxDUj4KICAgICBpbWFwIDxidWZmZXI+IDx5b3VyX2tleXN0cm9rZT4gPEMtWT48Qy1cPjxDLU8+OmNhbGwgc3FsY29tcGxldGUjTWFwKCdjb2x1bW4nKTxDUj48Qy1YPjxDLU8+Ci0gCisKIEV4YW1wbGUgb2YgdXNpbmcgY29sdW1uIGNvbXBsZXRpb246Ci0gICAgIC0gUHJlc3MgPEMtQz50IGFnYWluIHRvIGRpc3BsYXkgdGhlIGxpc3Qgb2YgdGFibGVzLiAgCisgICAgIC0gUHJlc3MgPEMtQz50IGFnYWluIHRvIGRpc3BsYXkgdGhlIGxpc3Qgb2YgdGFibGVzLgogICAgICAtIFdoZW4gdGhlIGxpc3QgaXMgZGlzcGxheWVkIGluIHRoZSBjb21wbGV0aW9uIHdpbmRvdywgcHJlc3MgPEMtUmlnaHQ+LAogICAgICAgIHRoaXMgd2lsbCByZXBsYWNlIHRoZSBsaXN0IG9mIHRhYmxlcywgd2l0aCBhIGxpc3Qgb2YgY29sdW1ucyBmb3IgdGhlCi0gICAgICAgdGFibGUgaGlnaGxpZ2h0ZWQgKGFmdGVyIHRoZSBzYW1lIHNob3J0IGRlbGF5KS4gIAorICAgICAgIHRhYmxlIGhpZ2hsaWdodGVkIChhZnRlciB0aGUgc2FtZSBzaG9ydCBkZWxheSkuCiAgICAgIC0gSWYgeW91IHByZXNzIDxDLUxlZnQ+LCB0aGlzIHdpbGwgYWdhaW4gcmVwbGFjZSB0aGUgY29sdW1uIGxpc3Qgd2l0aCB0aGUKICAgICAgICBsaXN0IG9mIHRhYmxlcy4gIFRoaXMgYWxsb3dzIHlvdSB0byBkcmlsbCBpbnRvIHRhYmxlcyBhbmQgY29sdW1uIGxpc3RzCi0gICAgICAgdmVyeSBxdWlja2x5LiAgCisgICAgICAgdmVyeSBxdWlja2x5LgogICAgICAtIFByZXNzIDxDLVJpZ2h0PiBhZ2FpbiB3aGlsZSB0aGUgc2FtZSB0YWJsZSBpcyBoaWdobGlnaHRlZC4gIFlvdSB3aWxsCiAgICAgICAgbm90aWNlIHRoZXJlIGlzIG5vIGRlbGF5IHNpbmNlIHRoZSBjb2x1bW4gbGlzdCBoYXMgYmVlbiBjYWNoZWQuICBJZiB5b3UKICAgICAgICBjaGFuZ2UgdGhlIHNjaGVtYSBvZiBhIGNhY2hlZCB0YWJsZSB5b3UgY2FuIHByZXNzIDxDLUM+Uiwgd2hpY2gKLSAgICAgICBjbGVhcnMgdGhlIFNRTCBjb21wbGV0aW9uIGNhY2hlLiAgCisgICAgICAgY2xlYXJzIHRoZSBTUUwgY29tcGxldGlvbiBjYWNoZS4KICAgICAgLSBOT1RFOiA8Qy1SaWdodD4gYW5kIDxDLUxlZnQ+IGhhdmUgYmVlbiBkZXNpZ25lZCB0byB3b3JrIHdoaWxlIHRoZQotICAgICAgIGNvbXBsZXRpb24gd2luZG93IGlzIGFjdGl2ZS4gIElmIHRoZSBjb21wbGV0aW9uIHBvcHVwIHdpbmRvdyBpcyAKKyAgICAgICBjb21wbGV0aW9uIHdpbmRvdyBpcyBhY3RpdmUuICBJZiB0aGUgY29tcGxldGlvbiBwb3B1cCB3aW5kb3cgaXMKICAgICAgICBub3QgYWN0aXZlLCBhIG5vcm1hbCA8Qy1SaWdodD4gb3IgPEMtTGVmdD4gd2lsbCBiZSBleGVjdXRlZC4KLSAKKwogTGV0cyBsb29rIGhvdyB3ZSBjYW4gYnVpbGQgYSBTUUwgc3RhdGVtZW50IGR5bmFtaWNhbGx5LiAgQSBzZWxlY3Qgc3RhdGVtZW50CiByZXF1aXJlcyBhIGxpc3Qgb2YgY29sdW1ucy4gIFRoZXJlIGFyZSB0d28gd2F5cyB0byBidWlsZCBhIGNvbHVtbiBsaXN0IHVzaW5nCiB0aGUgU1FMIGNvbXBsZXRpb24gcGx1Z2luLiA+CiAgICAgT25lIGNvbHVtbiBhdCBhIHRpbWU6CiA8ICAgICAgIDEuIEFmdGVyIHR5cGluZyBTRUxFQ1QgcHJlc3MgPEMtQz50IHRvIGRpc3BsYXkgYSBsaXN0IG9mIHRhYmxlcy4KLSAgICAgICAgMi4gQ2hvb3NlIGEgdGFibGUgZnJvbSB0aGUgbGlzdC4KLSAgICAgICAgMy4gUHJlc3MgPEMtUmlnaHQ+IHRvIGRpc3BsYXkgYSBsaXN0IG9mIGNvbHVtbnMuCi0gICAgICAgIDQuIENob29zZSB0aGUgY29sdW1uIGZyb20gdGhlIGxpc3QgYW5kIHByZXNzIGVudGVyLgotICAgICAgICA1LiBFbnRlciBhICIsIiBhbmQgcHJlc3MgPEMtQz5jLiAgR2VuZXJhdGluZyBhIGNvbHVtbiBsaXN0Ci0gICAgICAgICAgIGdlbmVyYWxseSByZXF1aXJlcyBoYXZpbmcgdGhlIGN1cnNvciBvbiBhIHRhYmxlIG5hbWUuICBUaGUgcGx1Z2luCi0gICAgICAgICAgIHVzZXMgdGhpcyBuYW1lIHRvIGRldGVybWluZSB3aGF0IHRhYmxlIHRvIHJldHJpZXZlIHRoZSBjb2x1bW4gbGlzdC4gIAotICAgICAgICAgICBJbiB0aGlzIHN0ZXAsIHNpbmNlIHdlIGFyZSBwcmVzc2luZyA8Qy1DPmMgd2l0aG91dCB0aGUgY3Vyc29yIAotICAgICAgICAgICBvbiBhIHRhYmxlIG5hbWUgdGhlIGNvbHVtbiBsaXN0IGRpc3BsYXllZCB3aWxsIGJlIGZvciB0aGUgcHJldmlvdXMgCi0gICAgICAgICAgIHRhYmxlLiAgQ2hvb3NlIGEgZGlmZmVyZW50IGNvbHVtbiBhbmQgbW92ZSBvbi4gCi0gICAgICAgIDYuIFJlcGVhdCBzdGVwIDUgYXMgb2Z0ZW4gYXMgbmVjZXNzYXJ5LiA+Ci0gICAgQWxsIGNvbHVtbnMgZm9yIGEgdGFibGU6IAotPCAgICAgICAxLiBBZnRlciB0eXBpbmcgU0VMRUNUIHByZXNzIDxDLUM+dCB0byBkaXNwbGF5IGEgbGlzdCBvZiB0YWJsZXMuCi0gICAgICAgIDIuIEhpZ2hsaWdodCB0aGUgdGFibGUgeW91IG5lZWQgdGhlIGNvbHVtbiBsaXN0IGZvci4KLSAgICAgICAgMy4gUHJlc3MgPEVudGVyPiB0byBjaG9vc2UgdGhlIHRhYmxlIGZyb20gdGhlIGxpc3QuCi0gICAgICAgIDQuIFByZXNzIDxDLUM+bCB0byByZXF1ZXN0IGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgYWxsIGNvbHVtbnMKLSAgICAgICAgICAgZm9yIHRoaXMgdGFibGUuCi0gICAgICAgIDUuIEJhc2VkIG9uIHRoZSB0YWJsZSBuYW1lIGNob3NlbiBpbiBzdGVwIDMsIHRoZSBwbHVnaW4gYXR0ZW1wdHMgdG8KLSAgICAgICAgICAgZGVjaWRlIG9uIGEgcmVhc29uYWJsZSB0YWJsZSBhbGlhcy4gIFlvdSBhcmUgdGhlbiBwcm9tcHRlZCB0bwotICAgICAgICAgICBlaXRoZXIgYWNjZXB0IG9mIGNoYW5nZSB0aGUgYWxpYXMuICBQcmVzcyBPSy4KLSAgICAgICAgNi4gVGhlIHRhYmxlIG5hbWUgaXMgcmVwbGFjZWQgd2l0aCB0aGUgY29sdW1uIGxpc3Qgb2YgdGhlIHRhYmxlIGlzCi0gICAgICAgICAgIHJlcGxhY2VkIHdpdGggdGhlIGNvbW1hIHNlcGFyYXRlIGxpc3Qgb2YgY29sdW1ucyB3aXRoIHRoZSBhbGlhcwotICAgICAgICAgICBwcmVwZW5kZWQgdG8gZWFjaCBvZiB0aGUgY29sdW1ucy4KLSAgICAgICAgNy4gU3RlcCAzIGFuZCA0IGNhbiBiZSByZXBsYWNlZCBieSBwcmVzc2luZyA8Qy1DPkwsIHdoaWNoIGhhcwotICAgICAgICAgICBhIDxDLVk+IGVtYmVkZGVkIGluIHRoZSBtYXAgdG8gY2hvb3NlIHRoZSBjdXJyZW50bHkgaGlnaGxpZ2h0ZWQgCi0gICAgICAgICAgIHRhYmxlIGluIHRoZSBsaXN0LgorCTIuIENob29zZSBhIHRhYmxlIGZyb20gdGhlIGxpc3QuCisJMy4gUHJlc3MgPEMtUmlnaHQ+IHRvIGRpc3BsYXkgYSBsaXN0IG9mIGNvbHVtbnMuCisJNC4gQ2hvb3NlIHRoZSBjb2x1bW4gZnJvbSB0aGUgbGlzdCBhbmQgcHJlc3MgZW50ZXIuCisJNS4gRW50ZXIgYSAiLCIgYW5kIHByZXNzIDxDLUM+Yy4gIEdlbmVyYXRpbmcgYSBjb2x1bW4gbGlzdAorCSAgIGdlbmVyYWxseSByZXF1aXJlcyBoYXZpbmcgdGhlIGN1cnNvciBvbiBhIHRhYmxlIG5hbWUuICBUaGUgcGx1Z2luCisJICAgdXNlcyB0aGlzIG5hbWUgdG8gZGV0ZXJtaW5lIHdoYXQgdGFibGUgdG8gcmV0cmlldmUgdGhlIGNvbHVtbiBsaXN0LgorCSAgIEluIHRoaXMgc3RlcCwgc2luY2Ugd2UgYXJlIHByZXNzaW5nIDxDLUM+YyB3aXRob3V0IHRoZSBjdXJzb3IKKwkgICBvbiBhIHRhYmxlIG5hbWUgdGhlIGNvbHVtbiBsaXN0IGRpc3BsYXllZCB3aWxsIGJlIGZvciB0aGUgcHJldmlvdXMKKwkgICB0YWJsZS4gIENob29zZSBhIGRpZmZlcmVudCBjb2x1bW4gYW5kIG1vdmUgb24uCisJNi4gUmVwZWF0IHN0ZXAgNSBhcyBvZnRlbiBhcyBuZWNlc3NhcnkuID4KKyAgICBBbGwgY29sdW1ucyBmb3IgYSB0YWJsZToKKzwJMS4gQWZ0ZXIgdHlwaW5nIFNFTEVDVCBwcmVzcyA8Qy1DPnQgdG8gZGlzcGxheSBhIGxpc3Qgb2YgdGFibGVzLgorCTIuIEhpZ2hsaWdodCB0aGUgdGFibGUgeW91IG5lZWQgdGhlIGNvbHVtbiBsaXN0IGZvci4KKwkzLiBQcmVzcyA8RW50ZXI+IHRvIGNob29zZSB0aGUgdGFibGUgZnJvbSB0aGUgbGlzdC4KKwk0LiBQcmVzcyA8Qy1DPmwgdG8gcmVxdWVzdCBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGFsbCBjb2x1bW5zCisJICAgZm9yIHRoaXMgdGFibGUuCisJNS4gQmFzZWQgb24gdGhlIHRhYmxlIG5hbWUgY2hvc2VuIGluIHN0ZXAgMywgdGhlIHBsdWdpbiBhdHRlbXB0cyB0bworCSAgIGRlY2lkZSBvbiBhIHJlYXNvbmFibGUgdGFibGUgYWxpYXMuCVlvdSBhcmUgdGhlbiBwcm9tcHRlZCB0bworCSAgIGVpdGhlciBhY2NlcHQgb2YgY2hhbmdlIHRoZSBhbGlhcy4gIFByZXNzIE9LLgorCTYuIFRoZSB0YWJsZSBuYW1lIGlzIHJlcGxhY2VkIHdpdGggdGhlIGNvbHVtbiBsaXN0IG9mIHRoZSB0YWJsZSBpcworCSAgIHJlcGxhY2VkIHdpdGggdGhlIGNvbW1hIHNlcGFyYXRlIGxpc3Qgb2YgY29sdW1ucyB3aXRoIHRoZSBhbGlhcworCSAgIHByZXBlbmRlZCB0byBlYWNoIG9mIHRoZSBjb2x1bW5zLgorCTcuIFN0ZXAgMyBhbmQgNCBjYW4gYmUgcmVwbGFjZWQgYnkgcHJlc3NpbmcgPEMtQz5MLCB3aGljaCBoYXMKKwkgICBhIDxDLVk+IGVtYmVkZGVkIGluIHRoZSBtYXAgdG8gY2hvb3NlIHRoZSBjdXJyZW50bHkgaGlnaGxpZ2h0ZWQKKwkgICB0YWJsZSBpbiB0aGUgbGlzdC4KIAogVGhlcmUgaXMgYSBzcGVjaWFsIHByb3Zpc2lvbiB3aGVuIHdyaXRpbmcgc2VsZWN0IHN0YXRlbWVudHMuICBDb25zaWRlciB0aGUKIGZvbGxvd2luZyBzdGF0ZW1lbnQ6ID4KLSAgICAgc2VsZWN0ICogCisgICAgIHNlbGVjdCAqCiAgICAgICAgZnJvbSBjdXN0b21lciBjLAotICAgICAgICAgICAgY29udGFjdCBjbiwKLSAgICAgICAgICAgIGRlcGFydG1lbnQgYXMgZHAsCi0gICAgICAgICAgICBlbXBsb3llZSBlLAotICAgICAgICAgICAgc2l0ZV9vcHRpb25zIHNvCisJICAgIGNvbnRhY3QgY24sCisJICAgIGRlcGFydG1lbnQgYXMgZHAsCisJICAgIGVtcGxveWVlIGUsCisJICAgIHNpdGVfb3B0aW9ucyBzbwogICAgICAgd2hlcmUgYy4KLSAKKwogSW4gSU5TRVJUIG1vZGUgYWZ0ZXIgdHlwaW5nIHRoZSBmaW5hbCAiYy4iIHdoaWNoIGlzIGFuIGFsaWFzIGZvciB0aGUKICJjdXN0b21lciIgdGFibGUsIHlvdSBjYW4gcHJlc3MgZWl0aGVyIDxDLUM+YyBvciA8Qy1YPjxDLU8+LiAgVGhpcyB3aWxsCiBwb3B1cCBhIGxpc3Qgb2YgY29sdW1ucyBmb3IgdGhlIGN1c3RvbWVyIHRhYmxlLiAgSXQgZG9lcyB0aGlzIGJ5IGxvb2tpbmcgYmFjawpAQCAtNTcxLDE5ICs1NzEsMTkgQEAKIHNwZWNpZmllZCBpbiB0aGUgRlJPTSBjbGF1c2UuICBJbiB0aGlzIGNhc2UgaXQgbm90ZXMgdGhhdCBpbiB0aGUgc3RyaW5nCiAiY3VzdG9tZXIgYyIsICJjIiBpcyBhbiBhbGlhcyBmb3IgdGhlIGN1c3RvbWVyIHRhYmxlLiAgVGhlIG9wdGlvbmFsICJBUyIKIGtleXdvcmQgaXMgYWxzbyBzdXBwb3J0ZWQsICJjdXN0b21lciBBUyBjIi4gPgotIAotIAorCisKICA0LjMuMyBQcm9jZWR1cmUgQ29tcGxldGlvbjoJCQkqc3FsLWNvbXBsZXRpb24tcHJvY2VkdXJlcyoKLSAKKwogU2ltaWxhciB0byB0aGUgdGFibGUgbGlzdCwgPEMtQz5wLCB3aWxsIGRpc3BsYXkgYSBsaXN0IG9mIHN0b3JlZAogcHJvY2VkdXJlcyBzdG9yZWQgd2l0aGluIHRoZSBkYXRhYmFzZS4gPgotIAorCiAgNC4zLjQgVmlldyBDb21wbGV0aW9uOgkJCQkqc3FsLWNvbXBsZXRpb24tdmlld3MqCi0gCisKIFNpbWlsYXIgdG8gdGhlIHRhYmxlIGxpc3QsIDxDLUM+diwgd2lsbCBkaXNwbGF5IGEgbGlzdCBvZiB2aWV3cyBpbiB0aGUKIGRhdGFiYXNlLgogCi0gCisKIDQuNCBDb21wbGV0aW9uIEN1c3RvbWl6YXRpb24JCQkqc3FsLWNvbXBsZXRpb24tY3VzdG9taXphdGlvbioKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtNTkxLDYwICs1OTEsNjAgQEAKIHlvdXIgfHZpbXJjfDogPgogICAgIG9tbmlfc3FsX25vX2RlZmF1bHRfbWFwcwogPCAgICAgICAtIERlZmF1bHQ6IFRoaXMgdmFyaWFibGUgaXMgbm90IGRlZmluZWQKLSAgICAgICAgLSBJZiB0aGlzIHZhcmlhYmxlIGlzIGRlZmluZWQsIG5vIG1hcHMgYXJlIGNyZWF0ZWQgZm9yIE9NTkkKLSAgICAgICAgICBjb21wbGV0aW9uLiAgU2VlIHxzcWwtY29tcGxldGlvbi1tYXBzfCBmb3IgZnVydGhlciBkaXNjdXNzaW9uLgorCS0gSWYgdGhpcyB2YXJpYWJsZSBpcyBkZWZpbmVkLCBubyBtYXBzIGFyZSBjcmVhdGVkIGZvciBPTU5JCisJICBjb21wbGV0aW9uLiAgU2VlIHxzcWwtY29tcGxldGlvbi1tYXBzfCBmb3IgZnVydGhlciBkaXNjdXNzaW9uLgogPgogICAgIG9tbmlfc3FsX3VzZV90YmxfYWxpYXMKLTwgICAgICAgLSBEZWZhdWx0OiBhCi0gICAgICAgIC0gVGhpcyBzZXR0aW5nIGlzIG9ubHkgdXNlZCB3aGVuIGdlbmVyYXRpbmcgYSBjb21tYSBzZXBhcmF0ZWQKLSAgICAgICAgICBjb2x1bW4gbGlzdC4gIEJ5IGRlZmF1bHQgdGhlIG1hcCBpcyA8Qy1DPmwuICBXaGVuIGdlbmVyYXRpbmcKLSAgICAgICAgICBhIGNvbHVtbiBsaXN0LCBhbiBhbGlhcyBjYW4gYmUgcHJlcGVuZGVkIHRvIHRoZSBiZWdpbm5pbmcgb2YgZWFjaAotICAgICAgICAgIGNvbHVtbiwgZm9yIGV4YW1wbGU6ICBlLmVtcF9pZCwgZS5lbXBfbmFtZS4gIFRoaXMgb3B0aW9uIGhhcyB0aHJlZSAKLSAgICAgICAgICBzZXR0aW5nczogPgotICAgICAgICAgICAgICAgIG4gLSBkbyBub3QgdXNlIGFuIGFsaWFzCi0gICAgICAgICAgICAgICAgZCAtIHVzZSB0aGUgZGVmYXVsdCAoY2FsY3VsYXRlZCkgYWxpYXMKLSAgICAgICAgICAgICAgICBhIC0gYXNrIHRvIGNvbmZpcm0gdGhlIGFsaWFzIG5hbWUKKzwJLSBEZWZhdWx0OiBhCisJLSBUaGlzIHNldHRpbmcgaXMgb25seSB1c2VkIHdoZW4gZ2VuZXJhdGluZyBhIGNvbW1hIHNlcGFyYXRlZAorCSAgY29sdW1uIGxpc3QuCUJ5IGRlZmF1bHQgdGhlIG1hcCBpcyA8Qy1DPmwuICBXaGVuIGdlbmVyYXRpbmcKKwkgIGEgY29sdW1uIGxpc3QsIGFuIGFsaWFzIGNhbiBiZSBwcmVwZW5kZWQgdG8gdGhlIGJlZ2lubmluZyBvZiBlYWNoCisJICBjb2x1bW4sIGZvciBleGFtcGxlOgllLmVtcF9pZCwgZS5lbXBfbmFtZS4gIFRoaXMgb3B0aW9uIGhhcyB0aHJlZQorCSAgc2V0dGluZ3M6ID4KKwkJbiAtIGRvIG5vdCB1c2UgYW4gYWxpYXMKKwkJZCAtIHVzZSB0aGUgZGVmYXVsdCAoY2FsY3VsYXRlZCkgYWxpYXMKKwkJYSAtIGFzayB0byBjb25maXJtIHRoZSBhbGlhcyBuYW1lCiA8Ci0gICAgICAgICAgQW4gYWxpYXMgaXMgZGV0ZXJtaW5lZCBmb2xsb3dpbmcgYSBmZXcgcnVsZXM6Ci0gICAgICAgICAgICAgICAxLiAgSWYgdGhlIHRhYmxlIG5hbWUgaGFzIGFuICdfJywgdGhlbiB1c2UgaXQgYXMgYSBzZXBhcmF0b3I6ID4KLSAgICAgICAgICAgICAgICAgICBNWV9UQUJMRV9OQU1FIC0tPiBNVE4KLSAgICAgICAgICAgICAgICAgICBteV90YWJsZV9uYW1lIC0tPiBtdG4KLSAgICAgICAgICAgICAgICAgICBNeV90YWJsZV9OQU1FIC0tPiBNdE4KLTwgICAgICAgICAgICAgIDIuICBJZiB0aGUgdGFibGUgbmFtZSBkb2VzIE5PVCBjb250YWluIGFuICdfJywgYnV0IERPRVMgdXNlCi0gICAgICAgICAgICAgICAgICAgbWl4ZWQgY2FzZSB0aGVuIHRoZSBjYXNlIGlzIHVzZWQgYXMgYSBzZXBhcmF0b3I6ID4KLSAgICAgICAgICAgICAgICAgICBNeVRhYmxlTmFtZSAtLT4gTVROCi08ICAgICAgICAgICAgICAzLiAgSWYgdGhlIHRhYmxlIG5hbWUgZG9lcyBOT1QgY29udGFpbiBhbiAnXycsIGFuZCBkb2VzIE5PVCAKLSAgICAgICAgICAgICAgICAgICB1c2UgbWl4ZWQgY2FzZSB0aGVuIHRoZSBmaXJzdCBsZXR0ZXIgb2YgdGhlIHRhYmxlIGlzIHVzZWQ6ID4KLSAgICAgICAgICAgICAgICAgICBteXRhYmxlbmFtZSAtLT4gbQotICAgICAgICAgICAgICAgICAgIE1ZVEFCTEVOQU1FIC0tPiBNCi0gCisJICBBbiBhbGlhcyBpcyBkZXRlcm1pbmVkIGZvbGxvd2luZyBhIGZldyBydWxlczoKKwkgICAgICAgMS4gIElmIHRoZSB0YWJsZSBuYW1lIGhhcyBhbiAnXycsIHRoZW4gdXNlIGl0IGFzIGEgc2VwYXJhdG9yOiA+CisJCSAgIE1ZX1RBQkxFX05BTUUgLS0+IE1UTgorCQkgICBteV90YWJsZV9uYW1lIC0tPiBtdG4KKwkJICAgTXlfdGFibGVfTkFNRSAtLT4gTXROCis8CSAgICAgICAyLiAgSWYgdGhlIHRhYmxlIG5hbWUgZG9lcyBOT1QgY29udGFpbiBhbiAnXycsIGJ1dCBET0VTIHVzZQorCQkgICBtaXhlZCBjYXNlIHRoZW4gdGhlIGNhc2UgaXMgdXNlZCBhcyBhIHNlcGFyYXRvcjogPgorCQkgICBNeVRhYmxlTmFtZSAtLT4gTVROCis8CSAgICAgICAzLiAgSWYgdGhlIHRhYmxlIG5hbWUgZG9lcyBOT1QgY29udGFpbiBhbiAnXycsIGFuZCBkb2VzIE5PVAorCQkgICB1c2UgbWl4ZWQgY2FzZSB0aGVuIHRoZSBmaXJzdCBsZXR0ZXIgb2YgdGhlIHRhYmxlIGlzIHVzZWQ6ID4KKwkJICAgbXl0YWJsZW5hbWUgLS0+IG0KKwkJICAgTVlUQUJMRU5BTUUgLS0+IE0KKwogICAgIG9tbmlfc3FsX2lnbm9yZWNhc2UKLTwgICAgICAgLSBEZWZhdWx0OiBDdXJyZW50IHNldHRpbmcgZm9yfGlnbm9yZWNhc2V8Ci0gICAgICAgIC0gVmFsaWQgc2V0dGluZ3MgYXJlIDAgb3IgMS4gIAotICAgICAgICAtIFdoZW4gZW50ZXJpbmcgYSBmZXcgbGV0dGVycyBiZWZvcmUgaW5pdGlhdGluZyBjb21wbGV0aW9uLCB0aGUgbGlzdAotICAgICAgICAgIHdpbGwgYmUgZmlsdGVyZWQgdG8gZGlzcGxheSBvbmx5IHRoZSBlbnRyaWVzIHdoaWNoIGJlZ2luIHdpdGggdGhlCi0gICAgICAgICAgbGlzdCBvZiBjaGFyYWN0ZXJzLiAgV2hlbiB0aGlzIG9wdGlvbiBpcyBzZXQgdG8gMCwgdGhlIGxpc3Qgd2lsbCBiZQotICAgICAgICAgIGZpbHRlcmVkIHVzaW5nIGNhc2Ugc2Vuc2l0aXZpdHkuID4KLSAKKzwJLSBEZWZhdWx0OiBDdXJyZW50IHNldHRpbmcgZm9yfGlnbm9yZWNhc2V8CisJLSBWYWxpZCBzZXR0aW5ncyBhcmUgMCBvciAxLgorCS0gV2hlbiBlbnRlcmluZyBhIGZldyBsZXR0ZXJzIGJlZm9yZSBpbml0aWF0aW5nIGNvbXBsZXRpb24sIHRoZSBsaXN0CisJICB3aWxsIGJlIGZpbHRlcmVkIHRvIGRpc3BsYXkgb25seSB0aGUgZW50cmllcyB3aGljaCBiZWdpbiB3aXRoIHRoZQorCSAgbGlzdCBvZiBjaGFyYWN0ZXJzLiAgV2hlbiB0aGlzIG9wdGlvbiBpcyBzZXQgdG8gMCwgdGhlIGxpc3Qgd2lsbCBiZQorCSAgZmlsdGVyZWQgdXNpbmcgY2FzZSBzZW5zaXRpdml0eS4gPgorCiAgICAgb21uaV9zcWxfaW5jbHVkZV9vd25lcgotPCAgICAgICAtIERlZmF1bHQ6IDAsIHVubGVzcyBkYmV4dC52aW0gMy4wMCBoYXMgYmVlbiBpbnN0YWxsZWQKLSAgICAgICAgLSBWYWxpZCBzZXR0aW5ncyBhcmUgMCBvciAxLiAgCi0gICAgICAgIC0gV2hlbiBjb21wbGV0aW5nIHRhYmxlcywgcHJvY2VkdXJlIG9yIHZpZXdzIGFuZCB1c2luZyBkYmV4dC52aW0gMy4wMCAKLSAgICAgICAgICBvciBoaWdoZXIgdGhlIGxpc3Qgb2Ygb2JqZWN0cyB3aWxsIGFsc28gaW5jbHVkZSB0aGUgb3duZXIgbmFtZS4KLSAgICAgICAgICBXaGVuIGNvbXBsZXRpbmcgdGhlc2Ugb2JqZWN0cyBhbmQgb21uaV9zcWxfaW5jbHVkZV9vd25lciBpcyBlbmFibGVkCi0gICAgICAgICAgdGhlIG93bmVyIG5hbWUgd2lsbCBiZSBiZSByZXBsYWNlZC4gPgotIAorPAktIERlZmF1bHQ6IDAsIHVubGVzcyBkYmV4dC52aW0gMy4wMCBoYXMgYmVlbiBpbnN0YWxsZWQKKwktIFZhbGlkIHNldHRpbmdzIGFyZSAwIG9yIDEuCisJLSBXaGVuIGNvbXBsZXRpbmcgdGFibGVzLCBwcm9jZWR1cmUgb3Igdmlld3MgYW5kIHVzaW5nIGRiZXh0LnZpbSAzLjAwCisJICBvciBoaWdoZXIgdGhlIGxpc3Qgb2Ygb2JqZWN0cyB3aWxsIGFsc28gaW5jbHVkZSB0aGUgb3duZXIgbmFtZS4KKwkgIFdoZW4gY29tcGxldGluZyB0aGVzZSBvYmplY3RzIGFuZCBvbW5pX3NxbF9pbmNsdWRlX293bmVyIGlzIGVuYWJsZWQKKwkgIHRoZSBvd25lciBuYW1lIHdpbGwgYmUgYmUgcmVwbGFjZWQuID4KKwogICAgIG9tbmlfc3FsX3ByZWNhY2hlX3N5bnRheF9ncm91cHMKLTwgICAgICAgLSBEZWZhdWx0OiAKLSAgICAgICAgICBbJ3N5bnRheCcsJ3NxbEtleXdvcmQnLCdzcWxGdW5jdGlvbicsJ3NxbE9wdGlvbicsJ3NxbFR5cGUnLCdzcWxTdGF0ZW1lbnQnXQotICAgICAgICAtIHNxbGNvbXBsZXRlIGNhbiBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggb3RoZXIgY29tcGxldGlvbgotICAgICAgICAgIHBsdWdpbnMuICBUaGlzIGlzIG91dGxpbmVkIGF0IHxzcWwtY29tcGxldGlvbi1maWxldHlwZXN8LiAgV2hlbiB0aGUgCi0gICAgICAgICAgZmlsZXR5cGUgaXMgY2hhbmdlZCB0ZW1wb3JhcmlseSB0byBTUUwsIHRoZSBzcWxjb21wbGV0aW9uIHBsdWdpbgotICAgICAgICAgIHdpbGwgY2FjaGUgdGhlIHN5bnRheCBncm91cHMgbGlzdGVkIGluIHRoZSBMaXN0IHNwZWNpZmllZCBpbiB0aGlzCi0gICAgICAgICAgb3B0aW9uLgorPAktIERlZmF1bHQ6CisJICBbJ3N5bnRheCcsJ3NxbEtleXdvcmQnLCdzcWxGdW5jdGlvbicsJ3NxbE9wdGlvbicsJ3NxbFR5cGUnLCdzcWxTdGF0ZW1lbnQnXQorCS0gc3FsY29tcGxldGUgY2FuIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBjb21wbGV0aW9uCisJICBwbHVnaW5zLiAgVGhpcyBpcyBvdXRsaW5lZCBhdCB8c3FsLWNvbXBsZXRpb24tZmlsZXR5cGVzfC4gIFdoZW4gdGhlCisJICBmaWxldHlwZSBpcyBjaGFuZ2VkIHRlbXBvcmFyaWx5IHRvIFNRTCwgdGhlIHNxbGNvbXBsZXRpb24gcGx1Z2luCisJICB3aWxsIGNhY2hlIHRoZSBzeW50YXggZ3JvdXBzIGxpc3RlZCBpbiB0aGUgTGlzdCBzcGVjaWZpZWQgaW4gdGhpcworCSAgb3B0aW9uLgogPgotIAotNC41IFNRTCBNYXBzCSAgICAgICAgCQkJKnNxbC1jb21wbGV0aW9uLW1hcHMqCisKKzQuNSBTUUwgTWFwcwkJCQkJKnNxbC1jb21wbGV0aW9uLW1hcHMqCiAtLS0tLS0tLS0tLS0KIAogVGhlIGRlZmF1bHQgU1FMIG1hcHMgaGF2ZSBiZWVuIGRlc2NyaWJlZCBpbiBvdGhlciBzZWN0aW9ucyBvZiB0aGlzIGRvY3VtZW50IGluCkBAIC02NTYsOSArNjU2LDkgQEAKIGhpZ2hsaWdodGluZyBydWxlcy4gPgogICAgIDxDLUM+YQogPCAgICAgICAtIERpc3BsYXlzIGFsbCBTUUwgc3ludGF4IGl0ZW1zLiA+Ci0gICAgPEMtQz5rIAorICAgIDxDLUM+awogPCAgICAgICAtIERpc3BsYXlzIGFsbCBTUUwgc3ludGF4IGl0ZW1zIGRlZmluZWQgYXMgJ3NxbEtleXdvcmQnLiA+Ci0gICAgPEMtQz5mIAorICAgIDxDLUM+ZgogPCAgICAgICAtIERpc3BsYXlzIGFsbCBTUUwgc3ludGF4IGl0ZW1zIGRlZmluZWQgYXMgJ3NxbEZ1bmN0aW9uLiA+CiAgICAgPEMtQz5vCiA8ICAgICAgIC0gRGlzcGxheXMgYWxsIFNRTCBzeW50YXggaXRlbXMgZGVmaW5lZCBhcyAnc3FsT3B0aW9uJy4gPgpAQCAtNjcxLDcgKzY3MSw3IEBACiAtLS0tLS0tLS0tLS0KIFRoZXNlIGFyZSBtYXBzIHdoaWNoIHVzZSBwb3B1bGF0ZSB0aGUgY29tcGxldGlvbiBsaXN0IHVzaW5nIHRoZSBkYmV4dC52aW0KIHBsdWdpbi4gPgotICAgIDxDLUM+dCAgCisgICAgPEMtQz50CiA8ICAgICAgIC0gRGlzcGxheXMgYSBsaXN0IG9mIHRhYmxlcy4gPgogICAgIDxDLUM+cAogPCAgICAgICAtIERpc3BsYXlzIGEgbGlzdCBvZiBwcm9jZWR1cmVzLiA+CkBAIC02ODMsMzMgKzY4MywzMyBAQAogPCAgICAgICAtIERpc3BsYXlzIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgY29sdW1ucyBmb3IgYSBzcGVjaWZpYyB0YWJsZS4gPgogICAgIDxDLUM+TAogPCAgICAgICAtIERpc3BsYXlzIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgY29sdW1ucyBmb3IgYSBzcGVjaWZpYyB0YWJsZS4KLSAgICAgICAgICBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgY29tcGxldGlvbiB3aW5kb3cgaXMgYWN0aXZlLiA+CisJICBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgY29tcGxldGlvbiB3aW5kb3cgaXMgYWN0aXZlLiA+CiAgICAgPEMtUmlnaHQ+Ci08ICAgICAgIC0gRGlzcGxheXMgYSBsaXN0IG9mIGNvbHVtbnMgZm9yIHRoZSB0YWJsZSBjdXJyZW50bHkgaGlnaGxpZ2h0ZWQgaW4KLSAgICAgICAgICB0aGUgY29tcGxldGlvbiB3aW5kb3cuICA8Qy1SaWdodD4gaXMgbm90IHJlY29nbml6ZWQgb24gbW9zdCBVbml4Ci0gICAgICAgICAgc3lzdGVtcywgc28gdGhpcyBtYXBzIGlzIG9ubHkgY3JlYXRlZCBvbiB0aGUgV2luZG93cyBwbGF0Zm9ybS4KLSAgICAgICAgICBJZiB5b3Ugd291bGQgbGlrZSB0aGUgc2FtZSBmZWF0dXJlIG9uIFVuaXgsIGNob29zZSBhIGRpZmZlcmVudCBrZXkKLSAgICAgICAgICBhbmQgbWFrZSB0aGUgc2FtZSBtYXAgaW4geW91ciB2aW1yYy4gPgorPAktIERpc3BsYXlzIGEgbGlzdCBvZiBjb2x1bW5zIGZvciB0aGUgdGFibGUgY3VycmVudGx5IGhpZ2hsaWdodGVkIGluCisJICB0aGUgY29tcGxldGlvbiB3aW5kb3cuICA8Qy1SaWdodD4gaXMgbm90IHJlY29nbml6ZWQgb24gbW9zdCBVbml4CisJICBzeXN0ZW1zLCBzbyB0aGlzIG1hcHMgaXMgb25seSBjcmVhdGVkIG9uIHRoZSBXaW5kb3dzIHBsYXRmb3JtLgorCSAgSWYgeW91IHdvdWxkIGxpa2UgdGhlIHNhbWUgZmVhdHVyZSBvbiBVbml4LCBjaG9vc2UgYSBkaWZmZXJlbnQga2V5CisJICBhbmQgbWFrZSB0aGUgc2FtZSBtYXAgaW4geW91ciB2aW1yYy4gPgogICAgIDxDLUxlZnQ+Ci08ICAgICAgIC0gRGlzcGxheXMgdGhlIGxpc3Qgb2YgdGFibGVzLgotICAgICAgICAgIDxDLUxlZnQ+IGlzIG5vdCByZWNvZ25pemVkIG9uIG1vc3QgVW5peCBzeXN0ZW1zLCBzbyB0aGlzIG1hcHMgaXMKLSAgICAgICAgICBvbmx5IGNyZWF0ZWQgb24gdGhlIFdpbmRvd3MgcGxhdGZvcm0uICBJZiB5b3Ugd291bGQgbGlrZSB0aGUgc2FtZQotICAgICAgICAgIGZlYXR1cmUgb24gVW5peCwgY2hvb3NlIGEgZGlmZmVyZW50IGtleSBhbmQgbWFrZSB0aGUgc2FtZSBtYXAgaW4KLSAgICAgICAgICB5b3VyIHZpbXJjLiA+Cis8CS0gRGlzcGxheXMgdGhlIGxpc3Qgb2YgdGFibGVzLgorCSAgPEMtTGVmdD4gaXMgbm90IHJlY29nbml6ZWQgb24gbW9zdCBVbml4IHN5c3RlbXMsIHNvIHRoaXMgbWFwcyBpcworCSAgb25seSBjcmVhdGVkIG9uIHRoZSBXaW5kb3dzIHBsYXRmb3JtLiAgSWYgeW91IHdvdWxkIGxpa2UgdGhlIHNhbWUKKwkgIGZlYXR1cmUgb24gVW5peCwgY2hvb3NlIGEgZGlmZmVyZW50IGtleSBhbmQgbWFrZSB0aGUgc2FtZSBtYXAgaW4KKwkgIHlvdXIgdmltcmMuID4KICAgICA8Qy1DPlIKLTwgICAgICAgLSBUaGlzIG1hcHMgcmVtb3ZlcyBhbGwgY2FjaGVkIGl0ZW1zIGFuZCBmb3JjZXMgdGhlIFNRTCBjb21wbGV0aW9uIAotICAgICAgICAgIHRvIHJlZ2VuZXJhdGUgdGhlIGxpc3Qgb2YgaXRlbXMuCis8CS0gVGhpcyBtYXBzIHJlbW92ZXMgYWxsIGNhY2hlZCBpdGVtcyBhbmQgZm9yY2VzIHRoZSBTUUwgY29tcGxldGlvbgorCSAgdG8gcmVnZW5lcmF0ZSB0aGUgbGlzdCBvZiBpdGVtcy4KIAogQ3VzdG9taXppbmcgTWFwcwogLS0tLS0tLS0tLS0tLS0tLQogWW91IGNhbiBjcmVhdGUgYXMgbWFueSBhZGRpdGlvbmFsIGtleSBtYXBzIGFzIHlvdSBsaWtlLiAgR2VuZXJhbGx5LCB0aGUgbWFwcwotd2lsbCBiZSBzcGVjaWZ5aW5nIGRpZmZlcmVudCBzeW50YXggaGlnaGxpZ2h0IGdyb3Vwcy4gIAord2lsbCBiZSBzcGVjaWZ5aW5nIGRpZmZlcmVudCBzeW50YXggaGlnaGxpZ2h0IGdyb3Vwcy4KIAogSWYgeW91IGRvIG5vdCB3aXNoIHRoZSBkZWZhdWx0IG1hcHMgY3JlYXRlZCBvciB0aGUga2V5IGNob2ljZXMgZG8gbm90IHdvcmsgb24KIHlvdXIgcGxhdGZvcm0gKG9mdGVuIGEgY2FzZSBvbiAqbml4KSB5b3UgZGVmaW5lIHRoZSBmb2xsb3dpbmcgdmFyaWFibGUgaW4KIHlvdXIgfHZpbXJjfDogPgogICAgIGxldCBnOm9tbmlfc3FsX25vX2RlZmF1bHRfbWFwcyA9IDEKLSAgCisKIERvIG5vIGVkaXQgZnRwbHVnaW4vc3FsLnZpbSBkaXJlY3RseSEgIElmIHlvdSBjaGFuZ2UgdGhpcyBmaWxlIHlvdXIgY2hhbmdlcwogd2lsbCBiZSBvdmVyIHdyaXR0ZW4gb24gZnV0dXJlIHVwZGF0ZXMuICBWaW0gaGFzIGEgc3BlY2lhbCBkaXJlY3Rvcnkgc3RydWN0dXJlCiB3aGljaCBhbGxvd3MgeW91IHRvIG1ha2UgY3VzdG9taXphdGlvbnMgd2l0aG91dCBjaGFuZ2luZyB0aGUgZmlsZXMgdGhhdCBhcmUKQEAgLTcxOCw5ICs3MTgsOSBAQAogbWFwcyBmcm9tIHRoZSBmdHBsdWdpbi9zcWwudmltIGluIGl0IHVzaW5nIHlvdXIgb3duIGtleSBzdHJva2VzLiAgPEMtQz4gd2FzCiBjaG9zZW4gc2luY2UgaXQgd2lsbCB3b3JrIG9uIGJvdGggV2luZG93cyBhbmQgKm5peCBwbGF0Zm9ybXMuICBPbiB0aGUgd2luZG93cwogcGxhdGZvcm0geW91IGNhbiBhbHNvIHVzZSA8Qy1TcGFjZT4gb3IgQUxUIGtleXMuCi0gCiAKLTQuNiBVc2luZyB3aXRoIG90aGVyIGZpbGV0eXBlcwkJICAgICAgICAqc3FsLWNvbXBsZXRpb24tZmlsZXR5cGVzKgorCis0LjYgVXNpbmcgd2l0aCBvdGhlciBmaWxldHlwZXMJCQkqc3FsLWNvbXBsZXRpb24tZmlsZXR5cGVzKgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIE1hbnkgdGltZXMgU1FMIGNhbiBiZSB1c2VkIHdpdGggZGlmZmVyZW50IGZpbGV0eXBlcy4gIEZvciBleGFtcGxlIFBlcmwsIEphdmEsCkBAIC03NTgsNiArNzU4LDYgQEAKIC0tLS0tLQogU2V0dGluZyB0aGUgZmlsZXR5cGUgYmFjayB0byBQZXJsIHNldHMgYWxsIHRoZSB1c3VhbCAicGVybCIgcmVsYXRlZCBpdGVtcyBiYWNrCiBhcyB0aGV5IHdlcmUuCi0gICAgIAorCiAKIHZpbTp0dz03ODp0cz04OmZ0PWhlbHA6bm9ybDoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3N0YXJ0aW5nLnR4dCBiL3J1bnRpbWUvZG9jL3N0YXJ0aW5nLnR4dAppbmRleCA3N2NhYmFhLi5lNzk5ZDQ3IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9zdGFydGluZy50eHQKKysrIGIvcnVudGltZS9kb2Mvc3RhcnRpbmcudHh0CkBAIC0xLDQgKzEsNCBAQAotKnN0YXJ0aW5nLnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI1Cisqc3RhcnRpbmcudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjUKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3N5bnRheC50eHQgYi9ydW50aW1lL2RvYy9zeW50YXgudHh0CmluZGV4IGNmZWVlYzYuLjFlMDk5OTIgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3N5bnRheC50eHQKKysrIGIvcnVudGltZS9kb2Mvc3ludGF4LnR4dApAQCAtMSw0ICsxLDQgQEAKLSpzeW50YXgudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNworKnN5bnRheC50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTYxMCw3ICs2MTAsNyBAQAogCTpsZXQgZzpmaWxldHlwZV9hc3AgPSAiYXNwdmJzIgogCiAKLUJBQU4gCQkJCQkJICAgICpiYWFuLnZpbSogKmJhYW4tc3ludGF4KgorQkFBTgkJCQkJCSAgICAqYmFhbi52aW0qICpiYWFuLXN5bnRheCoKIAogVGhlIGJhYW4udmltIGdpdmVzIHN5bnRheCBzdXBwb3J0IGZvciBCYWFuQyBvZiByZWxlYXNlIEJhYW5JViB1cHRvIFNTQSBFUlAgTE4KIGZvciBib3RoIDMgR0wgYW5kIDQgR0wgcHJvZ3JhbW1pbmcuIExhcmdlIG51bWJlciBvZiBzdGFuZGFyZCBkZWZpbmVzL2NvbnN0YW50cwpAQCAtNjMzLDEwICs2MzMsMTAgQEAKIGNvbnNpZGVyZWQgZXF1YWwgdG8gYSB0YWIpLiA+CiAJbGV0IGJhYW5fZm9sZF9ibG9jaz0xCiBGb2xkaW5nIGNhbiBiZSBlbmFibGVkIGZvciBlbWJlZGRlZCBTUUwgYmxvY2tzIGFzIFNFTEVDVCwgU0VMRUNURE8sCi1TRUxFQ1RFTVBUWSwgLi4uIFRoZSBpbmRlbnRhdGlvbiBwcmVjZWRpbmcgdGhlIGJlZ2luL2VuZCBrZXl3b3JkcyBoYXMgdG8gCitTRUxFQ1RFTVBUWSwgLi4uIFRoZSBpbmRlbnRhdGlvbiBwcmVjZWRpbmcgdGhlIGJlZ2luL2VuZCBrZXl3b3JkcyBoYXMgdG8KIG1hdGNoIChzcGFjZXMgYXJlIG5vdCBjb25zaWRlcmVkIGVxdWFsIHRvIGEgdGFiKS4gPgogCWxldCBiYWFuX2ZvbGRfc3FsPTEKLU5vdGU6IEJsb2NrIGZvbGRpbmcgY2FuIHJlc3VsdCBpbiBtYW55IHNtYWxsIGZvbGRzLiBJdCBpcyBzdWdnZXN0ZWQgdG8gfDpzZXR8IAorTm90ZTogQmxvY2sgZm9sZGluZyBjYW4gcmVzdWx0IGluIG1hbnkgc21hbGwgZm9sZHMuIEl0IGlzIHN1Z2dlc3RlZCB0byB8OnNldHwKIHRoZSBvcHRpb25zICdmb2xkbWlubGluZXMnIGFuZCAnZm9sZG5lc3RtYXgnIGluIHwudmltcmN8IG9yIHVzZSB8OnNldGxvY2FsfCBpbgogLi4uL2FmdGVyL3N5bnRheC9iYWFuLnZpbSAoc2VlIHxhZnRlci1kaXJlY3Rvcnl8KS4gRWc6ID4KIAlzZXQgZm9sZG1pbmxpbmVzPTUKQEAgLTkyNyw3ICs5MjcsNyBAQAogCQkJCQljb2xvdXIgaGlnaGxpZ2h0aW5nLgogCiBkb3h5Z2VuX2VuZF9wdW5jdHVhdGlvbgkJJ1suXScJU2V0IHRvIHJlZ2V4cCBtYXRjaCBmb3IgdGhlIGVuZGluZwotCQkJCQlwdW5jdHVhdGlvbiBvZiBicmllZiAKKwkJCQkJcHVuY3R1YXRpb24gb2YgYnJpZWYKIAogVGhlcmUgYXJlIGFsc28gc29tZSBoaWxpZ2h0IGdyb3VwcyB3b3J0aCBtZW50aW9uaW5nIGFzIHRoZXkgY2FuIGJlIHVzZWZ1bCBpbgogY29uZmlndXJhdGlvbi4KQEAgLTIwMDIsOCArMjAwMiw4IEBACiBUbyBhdm9pZCBmb2xkaW5nIHBhY2thZ2VzIG9yIHN1YnMgd2hlbiBwZXJsX2ZvbGQgaXMgbGV0LCBsZXQgdGhlIGFwcHJvcHJpYXRlCiB2YXJpYWJsZShzKTogPgogCi0gCTp1bmxldCBwZXJsX25vZm9sZF9wYWNrYWdlcwotIAk6dW5sZXQgcGVybF9ub2ZvbGRfc3VicworCTp1bmxldCBwZXJsX25vZm9sZF9wYWNrYWdlcworCTp1bmxldCBwZXJsX25vZm9sZF9zdWJzCiAKIAogCkBAIC0yMDY0LDcgKzIwNjQsNyBAQAogCiBUZVggaXMgYSB0eXBlc2V0dGluZyBsYW5ndWFnZSwgYW5kIHBsYWludGV4IGlzIHRoZSBmaWxlIHR5cGUgZm9yIHRoZSAicGxhaW4iCiB2YXJpYW50IG9mIFRlWC4gIElmIHlvdSBuZXZlciB3YW50IHlvdXIgKi50ZXggZmlsZXMgcmVjb2duaXplZCBhcyBwbGFpbiBUZVgsCi1zZWUgfGZ0LXRleC1wbHVnaW58LiAgCitzZWUgfGZ0LXRleC1wbHVnaW58LgogCiBUaGlzIHN5bnRheCBmaWxlIGhhcyB0aGUgb3B0aW9uID4KIApAQCAtMjMyOCw3ICsyMzI4LDcgQEAKIAogTXpTY2hlbWUtc3BlY2lmaWMgc3R1ZmYgd2lsbCBiZSB1c2VkIGlmIGI6aXNfbXpzY2hlbWUgb3IgZzppc19tenNjaGVtZQogdmFyaWFibGVzIGFyZSBkZWZpbmVkLgotIAorCiBBbHNvIHNjaGVtZS52aW0gc3VwcG9ydHMga2V5d29yZHMgb2YgdGhlIENoaWNrZW4gU2NoZW1lLT5DIGNvbXBpbGVyLiAgRGVmaW5lCiBiOmlzX2NoaWNrZW4gb3IgZzppc19jaGlja2VuLCBpZiB5b3UgbmVlZCB0aGVtLgogCkBAIC0zNzQ1LDcgKzM3NDUsNyBAQAogCVdpdGhvdXQgYSAiZ3JvdXB0aGVyZSIgYXJndW1lbnQuICBEZWZpbmUgYSByZWdpb24gb3IgbWF0Y2ggdGhhdCBpcwogCXNraXBwZWQgd2hpbGUgc2VhcmNoaW5nIGZvciBhIHN5bmMgcG9pbnQuCiAKLSAgICAJCQkJCQkqc3luLXN5bmMtbGluZWNvbnQqCisJCQkJCQkqc3luLXN5bmMtbGluZWNvbnQqCiAgICAgOnN5bnRheCBzeW5jIGxpbmVjb250IHtwYXR0ZXJufQogCiAJV2hlbiB7cGF0dGVybn0gbWF0Y2hlcyBpbiBhIGxpbmUsIGl0IGlzIGNvbnNpZGVyZWQgdG8gY29udGludWUgaW4KQEAgLTM4NTEsMTIgKzM4NTEsMTIgQEAKIHJlc3VsdCBpcyBsaWtlIHRoaXMgc2luZ2xlIGNvbW1hbmQgaGFzIGJlZW4gdXNlZDogPgogICAgOmhpIENvbW1lbnQJdGVybT1ib2xkIGN0ZXJtZmc9Q3lhbiBndWlmZz0jODBhMGZmIGd1aT1ib2xkCiA8Ci0JCQkJCQkgICAgCSo6aGlnaGxpZ2h0LXZlcmJvc2UqCisJCQkJCQkJKjpoaWdobGlnaHQtdmVyYm9zZSoKIFdoZW4gbGlzdGluZyBhIGhpZ2hsaWdodCBncm91cCBhbmQgJ3ZlcmJvc2UnIGlzIG5vbi16ZXJvLCB0aGUgbGlzdGluZyB3aWxsCiBhbHNvIHRlbGwgd2hlcmUgaXQgd2FzIGxhc3Qgc2V0LiAgRXhhbXBsZTogPgogCTp2ZXJib3NlIGhpIENvbW1lbnQKIDwJQ29tbWVudCAgICAgICAgeHh4IHRlcm09Ym9sZCBjdGVybWZnPTQgZ3VpZmc9Qmx1ZSB+Ci0gICAgICAgICAgIExhc3Qgc2V0IGZyb20gL2hvbWUvbW9vbC92aW0vdmltNy9ydW50aW1lL3N5bnRheC9zeW5jb2xvci52aW0gfgorCSAgIExhc3Qgc2V0IGZyb20gL2hvbWUvbW9vbC92aW0vdmltNy9ydW50aW1lL3N5bnRheC9zeW5jb2xvci52aW0gfgogCiBXaGVuICI6aGkgY2xlYXIiIGlzIHVzZWQgdGhlbiB0aGUgc2NyaXB0IHdoZXJlIHRoaXMgY29tbWFuZCBpcyB1c2VkIHdpbGwgYmUKIG1lbnRpb25lZCBmb3IgdGhlIGRlZmF1bHQgdmFsdWVzLiBTZWUgfDp2ZXJib3NlLWNtZHwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90YWJwYWdlLnR4dCBiL3J1bnRpbWUvZG9jL3RhYnBhZ2UudHh0CmluZGV4IGRmNzMwNTUuLjFjYjA1NzYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3RhYnBhZ2UudHh0CisrKyBiL3J1bnRpbWUvZG9jL3RhYnBhZ2UudHh0CkBAIC0xLDQgKzEsNCBAQAotKnRhYnBhZ2UudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI2CisqdGFicGFnZS50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjYKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3RhZ3NyY2gudHh0IGIvcnVudGltZS9kb2MvdGFnc3JjaC50eHQKaW5kZXggYjA5ZGFlNC4uMmYzYmY1OSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdGFnc3JjaC50eHQKKysrIGIvcnVudGltZS9kb2MvdGFnc3JjaC50eHQKQEAgLTEsNCArMSw0IEBACi0qdGFnc3JjaC50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKKyp0YWdzcmNoLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdGVybS50eHQgYi9ydW50aW1lL2RvYy90ZXJtLnR4dAppbmRleCBkNWEyMGYzLi45OGE3ZTExIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy90ZXJtLnR4dAorKysgYi9ydW50aW1lL2RvYy90ZXJtLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp0ZXJtLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyOQorKnRlcm0udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0yODksOCArMjg5LDggQEAKIAl0X0lFCXNldCBpY29uIHRleHQgZW5kCQkJCSp0X0lFKiAqJ3RfSUUnKgogCXRfV1AJc2V0IHdpbmRvdyBwb3NpdGlvbiAoWSwgWCkgaW4gcGl4ZWxzCQkqdF9XUCogKid0X1dQJyoKIAl0X1dTCXNldCB3aW5kb3cgc2l6ZSAoaGVpZ2h0LCB3aWR0aCkgaW4gY2hhcmFjdGVycwkqdF9XUyogKid0X1dTJyoKLQl0X1NJICAgIHN0YXJ0IGluc2VydCBtb2RlIChiYXIgY3Vyc29yIHNoYXBlKSAgICAgICAgICAgICp0X1NJKiAqJ3RfU0knKgotCXRfRUkgICAgZW5kIGluc2VydCBtb2RlIChibG9jayBjdXJzb3Igc2hhcGUpICAgICAgICAgICAgKnRfRUkqICondF9FSScqCisJdF9TSQlzdGFydCBpbnNlcnQgbW9kZSAoYmFyIGN1cnNvciBzaGFwZSkJCSp0X1NJKiAqJ3RfU0knKgorCXRfRUkJZW5kIGluc2VydCBtb2RlIChibG9jayBjdXJzb3Igc2hhcGUpCQkqdF9FSSogKid0X0VJJyoKIAkJfHRlcm1jYXAtY3Vyc29yLXNoYXBlfAogCXRfUlYJcmVxdWVzdCB0ZXJtaW5hbCB2ZXJzaW9uIHN0cmluZyAoZm9yIHh0ZXJtKQkqdF9SViogKid0X1JWJyoKIAkJfHh0ZXJtLThiaXR8IHx2OnRlcm1yZXNwb25zZXwgfCd0dHltb3VzZSd8IHx4dGVybS1jb2Rlc3wKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3RpcHMudHh0IGIvcnVudGltZS9kb2MvdGlwcy50eHQKaW5kZXggZGNlY2MyOS4uZDFkNDE1YyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdGlwcy50eHQKKysrIGIvcnVudGltZS9kb2MvdGlwcy50eHQKQEAgLTEsNCArMSw0IEBACi0qdGlwcy50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKKyp0aXBzLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAzMAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtNDg5LDggKzQ4OSw4IEBACiAJICAgIGxldCBjMiA9ICdcXScKIAkgIGVuZGlmCiAJICBsZXQgc19za2lwID0nc3luSURhdHRyKHN5bklEKGxpbmUoIi4iKSwgY29sKCIuIiksIDApLCAibmFtZSIpICcgLgotIAkgIAlcICc9fj8gICJzdHJpbmdcXHxjb21tZW50IicKLSAJICBleGVjdXRlICdpZicgc19za2lwICd8IGxldCBzX3NraXAgPSAwIHwgZW5kaWYnCisJCVwgJz1+Pwkic3RyaW5nXFx8Y29tbWVudCInCisJICBleGVjdXRlICdpZicgc19za2lwICd8IGxldCBzX3NraXAgPSAwIHwgZW5kaWYnCiAKIAkgIGxldCBbbV9sbnVtLCBtX2NvbF0gPSBzZWFyY2hwYWlycG9zKGMsICcnLCBjMiwgc19mbGFncywgc19za2lwKQogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90b2RvLnR4dCBiL3J1bnRpbWUvZG9jL3RvZG8udHh0CmluZGV4IGE1NWM5ZmIuLmZlMDQ1ZjUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3RvZG8udHh0CisrKyBiL3J1bnRpbWUvZG9jL3RvZG8udHh0CkBAIC0xLDQgKzEsNCBAQAotKnRvZG8udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI5CisqdG9kby50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMzAKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwJICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMzAsMTAgKzMwLDYgQEAKIAkJCQkJCQkqa25vd24tYnVncyoKIC0tLS0tLS0tLS0tLS0tLS0tLS0tIEtub3duIGJ1Z3MgYW5kIGN1cnJlbnQgd29yayAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1EYXJyZW4gSGllYmVydCBpcyBpbmNsdWRpbmcgdGhlIHBhdGNoIGZvciBvbW5pIGNvbXBsZXRpb24gaW4gY3RhZ3MuICBBIG5ldwotdmVyc2lvbiBzdGlsbCBpc24ndCBhdmFpbGFibGUgZm9yIGRvd25sb2FkLgotCi0KIEF3YWl0aW5nIHVwZGF0ZWQgcGF0Y2hlczoKIDkgICBNYWMgdW5pY29kZSBwYXRjaCAoRGEgV29vbiBKdW5nLCBFY2tlaGFyZCBCZXJucyk6CiAgICAgOCAgIEFkZCBwYXRjaCBmcm9tIE11cmFva2EgVGFybyAoTWFyIDE2KSB0byBzdXBwb3J0IGlucHV0IG1ldGhvZCBvbiBNYWM/CkBAIC00OCw4ICs0NCw3IEBACiAgICAgYmUgdXNlZCBpbnN0ZWFkPwogOCAgIFdpbjMyOiBBZGQgbWluaWR1bXAgZ2VuZXJhdGlvbi4gKEdlb3JnZSBSZWlsbHksIDIwMDYgQXByIDI0KQogOCAgIEFkZCAiOm4iIHRvIGZuYW1lbW9kaWZ5KCk6IG5vcm1hbGl6ZSBwYXRoLCByZW1vdmUgIi4uLyIgd2hlbiBwb3NzaWJsZS4KLSAgICBBcmljIEJsdW1lciBoYXMgYSBwYXRjaCBmb3IgdGhpcy4KLSAgICBIZSB3aWxsIHVwZGF0ZSB0aGUgcGF0Y2ggZm9yIDYuMy4KKyAgICBBcmljIEJsdW1lciBoYXMgYSBwYXRjaCBmb3IgdGhpcy4gIEhlIHdpbGwgdXBkYXRlIHRoZSBwYXRjaCBmb3IgNi4zLgogNyAgIENvbXBsZXRpb24gb2YgbmV0d29yayBzaGFyZXMsIHBhdGNoIGJ5IFlhc3VoaXJvIE1hdHN1bW90by4KICAgICBVcGRhdGUgMjAwNCBTZXAgNi4KICAgICBIb3cgZG9lcyB0aGlzIHdvcms/ICBNaXNzaW5nIGNvbW1lbnRzLgpAQCAtNjk3LDYgKzY5Miw4IEBACiA4ICAgVGhlIHNjcmlwdCBJRCB0aGF0IGlzIHN0b3JlZCB3aXRoIGFuIG9wdGlvbiBhbmQgZGlzcGxheWVkIHdpdGggIjp2ZXJib3NlCiAgICAgc2V0IiBpc24ndCByZXNldCB3aGVuIHRoZSBvcHRpb24gaXMgc2V0IGludGVybmFsbHkuICBGb3IgZXhhbXBsZSB3aGVuCiAgICAgJ2ZvbGRsZXZlbCcgaXMgc2V0IGZyb20gJ2ZvbGRsZXZlbHN0YXJ0Jy4KKzggICBBbHNvIHN0b3JlIHRoZSBsaW5lIG51bWJlciB3aXRoIHRoZSBzY3JpcHQgSUQgYW5kIHVzZSBpdCBmb3IgIjp2ZXJib3NlIiwKKyAgICBzbyB0aGF0ICJzZXQgbm9jb21wYXRpYmxlIiBpcyBmb3VuZCB3aGVuIGl0IGNoYW5nZXMgb3RoZXIgb3B0aW9uIHZhbHVlcy4KIDggICBJbiB0aGUgZmlsZWZvcm1hdCBkaWFsb2csICJDYW5jZWwiIGlzbid0IHRyYW5zbGF0ZWQuICBBZGQgYSBnbG9iYWwKICAgICB2YXJpYWJsZSBmb3IgdGhpcy4gKEVkdWFyZG8gRmVybmFuZGV6KQogOSAgIFdoZW4gZWRpdGluZyBhIGZpbGUgd2l0aCAncmVhZG9ubHknIHNldCwgdGhlcmUgaXMgbm8gY2hlY2sgZm9yIGFuIGV4aXN0aW5nCkBAIC0yNzk0LDcgKzI3OTEsNyBAQAogNyAgIFdpdGggIjpta3Nlc3Npb24iIGFsc28gc3RvcmUgdGhlIHRhZyBzdGFjayBhbmQganVtcCBoaXN0b3J5LiAoTWljaGFsCiAgICAgTWFsZWNraSkKIDcgICBQZXJzaXN0ZW50IHZhcmlhYmxlczogInA6dmFyIjsgc3RvcmVkIGluIHZpbWluZm8gZmlsZSBhbmQgc2Vzc2lvbnMgZmlsZXMuCi0gCisKIAogT3B0aW9uczoKIDcgICAiOndpdGggb3B0aW9uPXZhbHVlIHwgY29tbWFuZCI6IHRlbXBvcmFyaWx5IHNldCBhbiBvcHRpb24gdmFsdWUgYW5kCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy91Z2FuZGEubnNpcy50eHQgYi9ydW50aW1lL2RvYy91Z2FuZGEubnNpcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ4MDI0YwotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUvZG9jL3VnYW5kYS5uc2lzLnR4dApAQCAtMCwwICsxLDI5MiBAQAorICAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisKKwkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgorCitTVU1NQVJZCisKK1ZpbSBpcyBDaGFyaXR5d2FyZS4gIFlvdSBjYW4gdXNlIGFuZCBjb3B5IGl0IGFzIG11Y2ggYXMgeW91IGxpa2UsIGJ1dCB5b3UgYXJlCitlbmNvdXJhZ2VkIHRvIG1ha2UgYSBkb25hdGlvbiBmb3IgbmVlZHkgY2hpbGRyZW4gaW4gVWdhbmRhLiAgUGxlYXNlIHNlZSB8a2NjfAorYmVsb3cgb3IgdmlzaXQgdGhlIElDQ0Ygd2ViIHNpdGUsIGF2YWlsYWJsZSBhdCB0aGVzZSBVUkxzOgorCisJaHR0cDovL2ljY2YtaG9sbGFuZC5vcmcvCisJaHR0cDovL3d3dy52aW0ub3JnL2ljY2YvCisKK1lvdSBjYW4gYWxzbyBzcG9uc29yIHRoZSBkZXZlbG9wbWVudCBvZiBWaW0uICBWaW0gc3BvbnNvcnMgY2FuIHZvdGUgZm9yCitmZWF0dXJlcy4gIFNlZSB8c3BvbnNvcnwuICBUaGUgbW9uZXkgZ29lcyB0byBVZ2FuZGEgYW55d2F5LgorCitUaGUgT3BlbiBQdWJsaWNhdGlvbiBMaWNlbnNlIGFwcGxpZXMgdG8gdGhlIFZpbSBkb2N1bWVudGF0aW9uLCBzZWUKK3xtYW51YWwtY29weXJpZ2h0fC4KKworPT09IGJlZ2luIG9mIGxpY2Vuc2UgPT09CisKK1ZJTSBMSUNFTlNFCisKK0kpICBUaGVyZSBhcmUgbm8gcmVzdHJpY3Rpb25zIG9uIGRpc3RyaWJ1dGluZyB1bm1vZGlmaWVkIGNvcGllcyBvZiBWaW0gZXhjZXB0CisgICAgdGhhdCB0aGV5IG11c3QgaW5jbHVkZSB0aGlzIGxpY2Vuc2UgdGV4dC4gIFlvdSBjYW4gYWxzbyBkaXN0cmlidXRlCisgICAgdW5tb2RpZmllZCBwYXJ0cyBvZiBWaW0sIGxpa2V3aXNlIHVucmVzdHJpY3RlZCBleGNlcHQgdGhhdCB0aGV5IG11c3QKKyAgICBpbmNsdWRlIHRoaXMgbGljZW5zZSB0ZXh0LiAgWW91IGFyZSBhbHNvIGFsbG93ZWQgdG8gaW5jbHVkZSBleGVjdXRhYmxlcworICAgIHRoYXQgeW91IG1hZGUgZnJvbSB0aGUgdW5tb2RpZmllZCBWaW0gc291cmNlcywgcGx1cyB5b3VyIG93biB1c2FnZQorICAgIGV4YW1wbGVzIGFuZCBWaW0gc2NyaXB0cy4KKworSUkpIEl0IGlzIGFsbG93ZWQgdG8gZGlzdHJpYnV0ZSBhIG1vZGlmaWVkIChvciBleHRlbmRlZCkgdmVyc2lvbiBvZiBWaW0sCisgICAgaW5jbHVkaW5nIGV4ZWN1dGFibGVzIGFuZC9vciBzb3VyY2UgY29kZSwgd2hlbiB0aGUgZm9sbG93aW5nIGZvdXIKKyAgICBjb25kaXRpb25zIGFyZSBtZXQ6CisgICAgMSkgVGhpcyBsaWNlbnNlIHRleHQgbXVzdCBiZSBpbmNsdWRlZCB1bm1vZGlmaWVkLgorICAgIDIpIFRoZSBtb2RpZmllZCBWaW0gbXVzdCBiZSBkaXN0cmlidXRlZCBpbiBvbmUgb2YgdGhlIGZvbGxvd2luZyBmaXZlIHdheXM6CisgICAgICAgYSkgSWYgeW91IG1ha2UgY2hhbmdlcyB0byBWaW0geW91cnNlbGYsIHlvdSBtdXN0IGNsZWFybHkgZGVzY3JpYmUgaW4KKwkgIHRoZSBkaXN0cmlidXRpb24gaG93IHRvIGNvbnRhY3QgeW91LiAgV2hlbiB0aGUgbWFpbnRhaW5lciBhc2tzIHlvdQorCSAgKGluIGFueSB3YXkpIGZvciBhIGNvcHkgb2YgdGhlIG1vZGlmaWVkIFZpbSB5b3UgZGlzdHJpYnV0ZWQsIHlvdQorCSAgbXVzdCBtYWtlIHlvdXIgY2hhbmdlcywgaW5jbHVkaW5nIHNvdXJjZSBjb2RlLCBhdmFpbGFibGUgdG8gdGhlCisJICBtYWludGFpbmVyIHdpdGhvdXQgZmVlLiAgVGhlIG1haW50YWluZXIgcmVzZXJ2ZXMgdGhlIHJpZ2h0IHRvCisJICBpbmNsdWRlIHlvdXIgY2hhbmdlcyBpbiB0aGUgb2ZmaWNpYWwgdmVyc2lvbiBvZiBWaW0uICBXaGF0IHRoZQorCSAgbWFpbnRhaW5lciB3aWxsIGRvIHdpdGggeW91ciBjaGFuZ2VzIGFuZCB1bmRlciB3aGF0IGxpY2Vuc2UgdGhleQorCSAgd2lsbCBiZSBkaXN0cmlidXRlZCBpcyBuZWdvdGlhYmxlLiAgSWYgdGhlcmUgaGFzIGJlZW4gbm8gbmVnb3RpYXRpb24KKwkgIHRoZW4gdGhpcyBsaWNlbnNlLCBvciBhIGxhdGVyIHZlcnNpb24sIGFsc28gYXBwbGllcyB0byB5b3VyIGNoYW5nZXMuCisJICBUaGUgY3VycmVudCBtYWludGFpbmVyIGlzIEJyYW0gTW9vbGVuYWFyIDxCcmFtQHZpbS5vcmc+LiAgSWYgdGhpcworCSAgY2hhbmdlcyBpdCB3aWxsIGJlIGFubm91bmNlZCBpbiBhcHByb3ByaWF0ZSBwbGFjZXMgKG1vc3QgbGlrZWx5CisJICB2aW0uc2YubmV0LCB3d3cudmltLm9yZyBhbmQvb3IgY29tcC5lZGl0b3JzKS4gIFdoZW4gaXQgaXMgY29tcGxldGVseQorCSAgaW1wb3NzaWJsZSB0byBjb250YWN0IHRoZSBtYWludGFpbmVyLCB0aGUgb2JsaWdhdGlvbiB0byBzZW5kIGhpbQorCSAgeW91ciBjaGFuZ2VzIGNlYXNlcy4gIE9uY2UgdGhlIG1haW50YWluZXIgaGFzIGNvbmZpcm1lZCB0aGF0IGhlIGhhcworCSAgcmVjZWl2ZWQgeW91ciBjaGFuZ2VzIHRoZXkgd2lsbCBub3QgaGF2ZSB0byBiZSBzZW50IGFnYWluLgorICAgICAgIGIpIElmIHlvdSBoYXZlIHJlY2VpdmVkIGEgbW9kaWZpZWQgVmltIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIGFzCisJICBtZW50aW9uZWQgdW5kZXIgYSkgeW91IGFyZSBhbGxvd2VkIHRvIGZ1cnRoZXIgZGlzdHJpYnV0ZSBpdAorCSAgdW5tb2RpZmllZCwgYXMgbWVudGlvbmVkIGF0IEkpLiAgSWYgeW91IG1ha2UgYWRkaXRpb25hbCBjaGFuZ2VzIHRoZQorCSAgdGV4dCB1bmRlciBhKSBhcHBsaWVzIHRvIHRob3NlIGNoYW5nZXMuCisgICAgICAgYykgUHJvdmlkZSBhbGwgdGhlIGNoYW5nZXMsIGluY2x1ZGluZyBzb3VyY2UgY29kZSwgd2l0aCBldmVyeSBjb3B5IG9mCisJICB0aGUgbW9kaWZpZWQgVmltIHlvdSBkaXN0cmlidXRlLiAgVGhpcyBtYXkgYmUgZG9uZSBpbiB0aGUgZm9ybSBvZiBhCisJICBjb250ZXh0IGRpZmYuICBZb3UgY2FuIGNob29zZSB3aGF0IGxpY2Vuc2UgdG8gdXNlIGZvciBuZXcgY29kZSB5b3UKKwkgIGFkZC4gIFRoZSBjaGFuZ2VzIGFuZCB0aGVpciBsaWNlbnNlIG11c3Qgbm90IHJlc3RyaWN0IG90aGVycyBmcm9tCisJICBtYWtpbmcgdGhlaXIgb3duIGNoYW5nZXMgdG8gdGhlIG9mZmljaWFsIHZlcnNpb24gb2YgVmltLgorICAgICAgIGQpIFdoZW4geW91IGhhdmUgYSBtb2RpZmllZCBWaW0gd2hpY2ggaW5jbHVkZXMgY2hhbmdlcyBhcyBtZW50aW9uZWQKKwkgIHVuZGVyIGMpLCB5b3UgY2FuIGRpc3RyaWJ1dGUgaXQgd2l0aG91dCB0aGUgc291cmNlIGNvZGUgZm9yIHRoZQorCSAgY2hhbmdlcyBpZiB0aGUgZm9sbG93aW5nIHRocmVlIGNvbmRpdGlvbnMgYXJlIG1ldDoKKwkgIC0gVGhlIGxpY2Vuc2UgdGhhdCBhcHBsaWVzIHRvIHRoZSBjaGFuZ2VzIHBlcm1pdHMgeW91IHRvIGRpc3RyaWJ1dGUKKwkgICAgdGhlIGNoYW5nZXMgdG8gdGhlIFZpbSBtYWludGFpbmVyIHdpdGhvdXQgZmVlIG9yIHJlc3RyaWN0aW9uLCBhbmQKKwkgICAgcGVybWl0cyB0aGUgVmltIG1haW50YWluZXIgdG8gaW5jbHVkZSB0aGUgY2hhbmdlcyBpbiB0aGUgb2ZmaWNpYWwKKwkgICAgdmVyc2lvbiBvZiBWaW0gd2l0aG91dCBmZWUgb3IgcmVzdHJpY3Rpb24uCisJICAtIFlvdSBrZWVwIHRoZSBjaGFuZ2VzIGZvciBhdCBsZWFzdCB0aHJlZSB5ZWFycyBhZnRlciBsYXN0CisJICAgIGRpc3RyaWJ1dGluZyB0aGUgY29ycmVzcG9uZGluZyBtb2RpZmllZCBWaW0uICBXaGVuIHRoZSBtYWludGFpbmVyCisJICAgIG9yIHNvbWVvbmUgd2hvIHlvdSBkaXN0cmlidXRlZCB0aGUgbW9kaWZpZWQgVmltIHRvIGFza3MgeW91IChpbgorCSAgICBhbnkgd2F5KSBmb3IgdGhlIGNoYW5nZXMgd2l0aGluIHRoaXMgcGVyaW9kLCB5b3UgbXVzdCBtYWtlIHRoZW0KKwkgICAgYXZhaWxhYmxlIHRvIGhpbS4KKwkgIC0gWW91IGNsZWFybHkgZGVzY3JpYmUgaW4gdGhlIGRpc3RyaWJ1dGlvbiBob3cgdG8gY29udGFjdCB5b3UuICBUaGlzCisJICAgIGNvbnRhY3QgaW5mb3JtYXRpb24gbXVzdCByZW1haW4gdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlIHllYXJzCisJICAgIGFmdGVyIGxhc3QgZGlzdHJpYnV0aW5nIHRoZSBjb3JyZXNwb25kaW5nIG1vZGlmaWVkIFZpbSwgb3IgYXMgbG9uZworCSAgICBhcyBwb3NzaWJsZS4KKyAgICAgICBlKSBXaGVuIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBhcHBsaWVzIHRvIHRoZSBjaGFuZ2VzLAorCSAgeW91IGNhbiBkaXN0cmlidXRlIHRoZSBtb2RpZmllZCBWaW0gdW5kZXIgdGhlIEdOVSBHUEwgdmVyc2lvbiAyIG9yCisJICBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgICAzKSBBIG1lc3NhZ2UgbXVzdCBiZSBhZGRlZCwgYXQgbGVhc3QgaW4gdGhlIG91dHB1dCBvZiB0aGUgIjp2ZXJzaW9uIgorICAgICAgIGNvbW1hbmQgYW5kIGluIHRoZSBpbnRybyBzY3JlZW4sIHN1Y2ggdGhhdCB0aGUgdXNlciBvZiB0aGUgbW9kaWZpZWQgVmltCisgICAgICAgaXMgYWJsZSB0byBzZWUgdGhhdCBpdCB3YXMgbW9kaWZpZWQuICBXaGVuIGRpc3RyaWJ1dGluZyBhcyBtZW50aW9uZWQKKyAgICAgICB1bmRlciAyKWUpIGFkZGluZyB0aGUgbWVzc2FnZSBpcyBvbmx5IHJlcXVpcmVkIGZvciBhcyBmYXIgYXMgdGhpcyBkb2VzCisgICAgICAgbm90IGNvbmZsaWN0IHdpdGggdGhlIGxpY2Vuc2UgdXNlZCBmb3IgdGhlIGNoYW5nZXMuCisgICAgNCkgVGhlIGNvbnRhY3QgaW5mb3JtYXRpb24gYXMgcmVxdWlyZWQgdW5kZXIgMilhKSBhbmQgMilkKSBtdXN0IG5vdCBiZQorICAgICAgIHJlbW92ZWQgb3IgY2hhbmdlZCwgZXhjZXB0IHRoYXQgdGhlIHBlcnNvbiBoaW1zZWxmIGNhbiBtYWtlCisgICAgICAgY29ycmVjdGlvbnMuCisKK0lJSSkgSWYgeW91IGRpc3RyaWJ1dGUgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIFZpbSwgeW91IGFyZSBlbmNvdXJhZ2VkIHRvIHVzZQorICAgICB0aGUgVmltIGxpY2Vuc2UgZm9yIHlvdXIgY2hhbmdlcyBhbmQgbWFrZSB0aGVtIGF2YWlsYWJsZSB0byB0aGUKKyAgICAgbWFpbnRhaW5lciwgaW5jbHVkaW5nIHRoZSBzb3VyY2UgY29kZS4gIFRoZSBwcmVmZXJyZWQgd2F5IHRvIGRvIHRoaXMgaXMKKyAgICAgYnkgZS1tYWlsIG9yIGJ5IHVwbG9hZGluZyB0aGUgZmlsZXMgdG8gYSBzZXJ2ZXIgYW5kIGUtbWFpbGluZyB0aGUgVVJMLgorICAgICBJZiB0aGUgbnVtYmVyIG9mIGNoYW5nZXMgaXMgc21hbGwgKGUuZy4sIGEgbW9kaWZpZWQgTWFrZWZpbGUpIGUtbWFpbGluZyBhCisgICAgIGNvbnRleHQgZGlmZiB3aWxsIGRvLiAgVGhlIGUtbWFpbCBhZGRyZXNzIHRvIGJlIHVzZWQgaXMKKyAgICAgPG1haW50YWluZXJAdmltLm9yZz4KKworSVYpICBJdCBpcyBub3QgYWxsb3dlZCB0byByZW1vdmUgdGhpcyBsaWNlbnNlIGZyb20gdGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgVmltCisgICAgIHNvdXJjZXMsIHBhcnRzIG9mIGl0IG9yIGZyb20gYSBtb2RpZmllZCB2ZXJzaW9uLiAgWW91IG1heSB1c2UgdGhpcworICAgICBsaWNlbnNlIGZvciBwcmV2aW91cyBWaW0gcmVsZWFzZXMgaW5zdGVhZCBvZiB0aGUgbGljZW5zZSB0aGF0IHRoZXkgY2FtZQorICAgICB3aXRoLCBhdCB5b3VyIG9wdGlvbi4KKworPT09IGVuZCBvZiBsaWNlbnNlID09PQorCitOb3RlOgorCistIElmIHlvdSBhcmUgaGFwcHkgd2l0aCBWaW0sIHBsZWFzZSBleHByZXNzIHRoYXQgYnkgcmVhZGluZyB0aGUgcmVzdCBvZiB0aGlzCisgIGZpbGUgYW5kIGNvbnNpZGVyIGhlbHBpbmcgbmVlZHkgY2hpbGRyZW4gaW4gVWdhbmRhLgorCistIElmIHlvdSB3YW50IHRvIHN1cHBvcnQgZnVydGhlciBWaW0gZGV2ZWxvcG1lbnQgY29uc2lkZXIgYmVjb21pbmcgYQorICB8c3BvbnNvcnwuICBUaGUgbW9uZXkgZ29lcyB0byBVZ2FuZGEgYW55d2F5LgorCistIEFjY29yZGluZyB0byBSaWNoYXJkIFN0YWxsbWFuIHRoZSBWaW0gbGljZW5zZSBpcyBHTlUgR1BMIGNvbXBhdGlibGUuCisgIEEgZmV3IG1pbm9yIGNoYW5nZXMgaGF2ZSBiZWVuIG1hZGUgc2luY2UgaGUgY2hlY2tlZCBpdCwgYnV0IHRoYXQgc2hvdWxkIG5vdAorICBtYWtlIGEgZGlmZmVyZW5jZS4KKworLSBJZiB5b3UgbGluayBWaW0gd2l0aCBhIGxpYnJhcnkgdGhhdCBnb2VzIHVuZGVyIHRoZSBHTlUgR1BMLCB0aGlzIGxpbWl0cworICBmdXJ0aGVyIGRpc3RyaWJ1dGlvbiB0byB0aGUgR05VIEdQTC4gIEFsc28gd2hlbiB5b3UgZGlkbid0IGFjdHVhbGx5IGNoYW5nZQorICBhbnl0aGluZyBpbiBWaW0uCisKKy0gT25jZSBhIGNoYW5nZSBpcyBpbmNsdWRlZCB0aGF0IGdvZXMgdW5kZXIgdGhlIEdOVSBHUEwsIHRoaXMgZm9yY2VzIGFsbAorICBmdXJ0aGVyIGNoYW5nZXMgdG8gYWxzbyBiZSBtYWRlIHVuZGVyIHRoZSBHTlUgR1BMIG9yIGEgY29tcGF0aWJsZSBsaWNlbnNlLgorCistIElmIHlvdSBkaXN0cmlidXRlIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiBWaW0sIHlvdSBjYW4gaW5jbHVkZSB5b3VyIG5hbWUgYW5kCisgIGNvbnRhY3QgaW5mb3JtYXRpb24gd2l0aCB0aGUgIi0td2l0aC1tb2RpZmllZC1ieSIgY29uZmlndXJlIGFyZ3VtZW50IG9yIHRoZQorICBNT0RJRklFRF9CWSBkZWZpbmUuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorS2liYWFsZSBDaGlsZHJlbidzIENlbnRyZQorCitLaWJhYWxlIENoaWxkcmVuJ3MgQ2VudHJlIChLQ0MpIGlzIGxvY2F0ZWQgaW4gS2liYWFsZSwgYSBzbWFsbCB0b3duIGluIHRoZQorc291dGggb2YgVWdhbmRhLCBuZWFyIFRhbnphbmlhLCBpbiBFYXN0IEFmcmljYS4gIFRoZSBhcmVhIGlzIGtub3duIGFzIFJha2FpCitEaXN0cmljdC4gIFRoZSBwb3B1bGF0aW9uIGlzIG1vc3RseSBmYXJtZXJzLiAgQWx0aG91Z2ggcGVvcGxlIGFyZSBwb29yLCB0aGVyZQoraXMgZW5vdWdoIGZvb2QuICBCdXQgdGhpcyBkaXN0cmljdCBpcyBzdWZmZXJpbmcgZnJvbSBBSURTIG1vcmUgdGhhbiBhbnkgb3RoZXIKK3BhcnQgb2YgdGhlIHdvcmxkLiAgU29tZSBzYXkgdGhhdCBpdCBzdGFydGVkIHRoZXJlLiAgRXN0aW1hdGlvbnMgYXJlIHRoYXQgMTAKK3RvIDMwJSBvZiB0aGUgVWdhbmRhbnMgYXJlIGluZmVjdGVkIHdpdGggSElWLiAgQmVjYXVzZSBwYXJlbnRzIGRpZSwgdGhlcmUgYXJlCittYW55IG9ycGhhbnMuICBJbiB0aGlzIGRpc3RyaWN0IGFib3V0IDYwLDAwMCBjaGlsZHJlbiBoYXZlIGxvc3Qgb25lIG9yIGJvdGgKK3BhcmVudHMsIG91dCBvZiBhIHBvcHVsYXRpb24gb2YgMzUwLDAwMC4gIEFuZCB0aGlzIGlzIHN0aWxsIGNvbnRpbnVpbmcuCisKK1RoZSBjaGlsZHJlbiBuZWVkIGEgbG90IG9mIGhlbHAuICBUaGUgS0NDIGlzIHdvcmtpbmcgaGFyZCB0byBwcm92aWRlIHRoZSBuZWVkeQord2l0aCBmb29kLCBtZWRpY2FsIGNhcmUgYW5kIGVkdWNhdGlvbi4gIEZvb2QgYW5kIG1lZGljYWwgY2FyZSB0byBrZWVwIHRoZW0KK2hlYWx0aHkgbm93LCBhbmQgZWR1Y2F0aW9uIHNvIHRoYXQgdGhleSBjYW4gdGFrZSBjYXJlIG9mIHRoZW1zZWx2ZXMgaW4gdGhlCitmdXR1cmUuICBLQ0Mgd29ya3Mgb24gYSBDaHJpc3RpYW4gYmFzZSwgYnV0IGhlbHAgaXMgZ2l2ZW4gdG8gY2hpbGRyZW4gb2YgYW55CityZWxpZ2lvbi4KKworVGhlIGtleSB0byBzb2x2aW5nIHRoZSBwcm9ibGVtcyBpbiB0aGlzIGFyZWEgaXMgZWR1Y2F0aW9uLiAgVGhpcyBoYXMgYmVlbgorbmVnbGVjdGVkIGluIHRoZSBwYXN0IHllYXJzIHdpdGggcHJlc2lkZW50IElkaSBBbWluIGFuZCB0aGUgZm9sbG93aW5nIGNpdmlsCit3YXJzLiAgTm93IHRoYXQgdGhlIGdvdmVybm1lbnQgaXMgc3RhYmxlIGFnYWluLCB0aGUgY2hpbGRyZW4gYW5kIHBhcmVudHMgaGF2ZQordG8gbGVhcm4gaG93IHRvIHRha2UgY2FyZSBvZiB0aGVtc2VsdmVzIGFuZCBob3cgdG8gYXZvaWQgaW5mZWN0aW9ucy4gIFRoZXJlIGlzCithbHNvIGhlbHAgZm9yIHBlb3BsZSB3aG8gYXJlIGlsbCBhbmQgaHVuZ3J5LCBidXQgdGhlIHByaW1hcnkgZ29hbCBpcyB0bworcHJldmVudCBwZW9wbGUgZnJvbSBnZXR0aW5nIGlsbCBhbmQgdG8gdGVhY2ggdGhlbSBob3cgdG8gZ3JvdyBoZWFsdGh5IGZvb2QuCisKK01vc3Qgb2YgdGhlIG9ycGhhbnMgYXJlIGxpdmluZyBpbiBhbiBleHRlbmRlZCBmYW1pbHkuICBBbiB1bmNsZSBvciBvbGRlcgorc2lzdGVyIGlzIHRha2luZyBjYXJlIG9mIHRoZW0uICBCZWNhdXNlIHRoZXNlIGZhbWlsaWVzIGFyZSBiaWcgYW5kIHRoZSBpbmNvbWUKKyhpZiBhbnkpIGlzIGxvdywgYSBjaGlsZCBpcyBsdWNreSBpZiBpdCBnZXRzIGhlYWx0aHkgZm9vZC4gIENsb3RoZXMsIG1lZGljYWwKK2NhcmUgYW5kIHNjaG9vbGluZyBpcyBiZXlvbmQgaXRzIHJlYWNoLiAgVG8gaGVscCB0aGVzZSBuZWVkeSBjaGlsZHJlbiwgYQorc3BvbnNvcnNoaXAgcHJvZ3JhbSB3YXMgcHV0IGludG8gcGxhY2UuICBBIGNoaWxkIGNhbiBiZSBmaW5hbmNpYWxseSBhZG9wdGVkLgorRm9yIGEgZmV3IGRvbGxhcnMgYSBtb250aCBLQ0Mgc2VlcyB0byBpdCB0aGF0IHRoZSBjaGlsZCBnZXRzIGluZGlzcGVuc2FibGUKK2l0ZW1zLCBpcyBoZWFsdGh5LCBnb2VzIHRvIHNjaG9vbCBhbmQgS0NDIHRha2VzIGNhcmUgb2YgYW55dGhpbmcgZWxzZSB0aGF0CituZWVkcyB0byBiZSBkb25lIGZvciB0aGUgY2hpbGQgYW5kIHRoZSBmYW1pbHkgdGhhdCBzdXBwb3J0cyBpdC4KKworQmVzaWRlcyBoZWxwaW5nIHRoZSBjaGlsZCBkaXJlY3RseSwgdGhlIGVudmlyb25tZW50IHdoZXJlIHRoZSBjaGlsZCBncm93cyB1cAorbmVlZHMgdG8gYmUgaW1wcm92ZWQuICBLQ0MgaGVscHMgc2Nob29scyB0byBpbXByb3ZlIHRoZWlyIHRlYWNoaW5nIG1ldGhvZHMuCitUaGVyZSBpcyBhIGRlbW9uc3RyYXRpb24gc2Nob29sIGF0IHRoZSBjZW50cmUgYW5kIHRlYWNoZXIgdHJhaW5pbmdzIGFyZSBnaXZlbi4KK0hlYWx0aCB3b3JrZXJzIGFyZSBiZWluZyB0cmFpbmVkLCBoeWdpZW5lIGVkdWNhdGlvbiBpcyBjYXJyaWVkIG91dCBhbmQKK2hvdXNlaG9sZHMgYXJlIHN0aW11bGF0ZWQgdG8gYnVpbGQgYSBwcm9wZXIgbGF0cmluZS4gIEkgaGVscGVkIHNldHRpbmcgdXAgYQorcHJvZHVjdGlvbiBzaXRlIGZvciBjZW1lbnQgc2xhYnMuICBUaGVzZSBhcmUgdXNlZCB0byBidWlsZCBhIGdvb2QgbGF0cmluZS4KK1RoZXkgYXJlIHNvbGQgYmVsb3cgY29zdCBwcmljZS4KKworVGhlcmUgaXMgYSBzbWFsbCBjbGluaWMgYXQgdGhlIHByb2plY3QsIHdoaWNoIHByb3ZpZGVzIGNoaWxkcmVuIGFuZCB0aGVpcgorZmFtaWx5IHdpdGggbWVkaWNhbCBoZWxwLiAgV2hlbiBuZWVkZWQsIHRyYW5zcG9ydCB0byBhIGhvc3BpdGFsIGlzIG9mZmVyZWQuCitJbW11bml6YXRpb24gcHJvZ3JhbXMgYXJlIGNhcnJpZWQgb3V0IGFuZCBoZWxwIGlzIHByb3ZpZGVkIHdoZW4gYW4gZXBpZGVtaWMgaXMKK2JyZWFraW5nIG91dCAobWVhc2xlcyBhbmQgY2hvbGVyYSBoYXZlIGJlZW4gYSBwcm9ibGVtKS4KKworU3VtbWVyIDE5OTQgdG8gc3VtbWVyIDE5OTUgSSBzcGVudCBhIHdob2xlIHllYXIgYXQgdGhlIGNlbnRyZSwgd29ya2luZyBhcyBhCit2b2x1bnRlZXIuICBJIGhhdmUgaGVscGVkIHRvIGV4cGFuZCB0aGUgY2VudHJlIGFuZCB3b3JrZWQgaW4gdGhlIGFyZWEgb2Ygd2F0ZXIKK2FuZCBzYW5pdGF0aW9uLiAgSSBsZWFybmVkIHRoYXQgdGhlIGhlbHAgdGhhdCB0aGUgS0NDIHByb3ZpZGVzIHJlYWxseSBoZWxwcy4KK05vdyB0aGF0IEknbSBiYWNrIGluIEhvbGxhbmQsIEkgd291bGQgbGlrZSB0byBjb250aW51ZSBzdXBwb3J0aW5nIEtDQy4gIFRvIGRvCit0aGlzIEknbSByYWlzaW5nIGZ1bmRzIGFuZCBvcmdhbml6aW5nIHRoZSBzcG9uc29yc2hpcCBwcm9ncmFtLiAgUGxlYXNlCitjb25zaWRlciBvbmUgb2YgdGhlc2UgcG9zc2liaWxpdGllczoKKworMS4gIFNwb25zb3IgYSBjaGlsZCBpbiBwcmltYXJ5IHNjaG9vbDogMTcgZXVybyBhIG1vbnRoIChvciBtb3JlKS4KKzIuICBTcG9uc29yIGEgY2hpbGQgaW4gc2Vjb25kYXJ5IHNjaG9vbDogMjUgZXVybyBhIG1vbnRoIChvciBtb3JlKS4KKzMuICBTcG9uc29yIHRoZSBjbGluaWM6IEFueSBhbW91bnQgYSBtb250aCBvciBxdWFydGVyCis0LiAgQSBvbmUtdGltZSBkb25hdGlvbgorCitDb21wYXJlZCB3aXRoIG90aGVyIG9yZ2FuaXphdGlvbnMgdGhhdCBkbyBjaGlsZCBzcG9uc29yc2hpcCB0aGUgYW1vdW50cyBhcmUKK3ZlcnkgbG93LiAgVGhpcyBpcyBiZWNhdXNlIHRoZSBtb25leSBnb2VzIGRpcmVjdGx5IHRvIHRoZSBjZW50cmUuICBMZXNzIHRoYW4KKzUlIGlzIHVzZWQgZm9yIGFkbWluaXN0cmF0aW9uLiAgVGhpcyBpcyBwb3NzaWJsZSBiZWNhdXNlIHRoaXMgaXMgYSBzbWFsbAorb3JnYW5pemF0aW9uIHRoYXQgd29ya3Mgd2l0aCB2b2x1bnRlZXJzLiAgSWYgeW91IHdvdWxkIGxpa2UgdG8gc3BvbnNvciBhCitjaGlsZCwgeW91IHNob3VsZCBoYXZlIHRoZSBpbnRlbnRpb24gdG8gZG8gdGhpcyBmb3IgYXQgbGVhc3Qgb25lIHllYXIuCisKK0hvdyBkbyB5b3Uga25vdyB0aGF0IHRoZSBtb25leSB3aWxsIGJlIHNwZW50IHJpZ2h0PyAgRmlyc3Qgb2YgYWxsIHlvdSBoYXZlIG15CitwZXJzb25hbCBndWFyYW50ZWUgYXMgdGhlIGF1dGhvciBvZiBWaW0uICBJIHRydXN0IHRoZSBwZW9wbGUgdGhhdCBhcmUgd29ya2luZworYXQgdGhlIGNlbnRyZSwgSSBrbm93IHRoZW0gcGVyc29uYWxseS4gIEZ1cnRoZXIgbW9yZSwgdGhlIGNlbnRyZSBpcworY28tc3BvbnNvcmVkIGFuZCBpbnNwZWN0ZWQgYnkgV29ybGQgVmlzaW9uLCBTYXZlIHRoZSBDaGlsZHJlbiBGdW5kIGFuZAorSW50ZXJuYXRpb25hbCBDaGlsZCBDYXJlIEZ1bmQuICBUaGUgY2VudHJlIGlzIHZpc2l0ZWQgYWJvdXQgb25jZSBhIHllYXIgdG8KK2NoZWNrIHRoZSBwcm9ncmVzcyAoYXQgb3VyIG93biBjb3N0KS4gIEkgaGF2ZSB2aXNpdGVkIHRoZSBjZW50cmUgbXlzZWxmIGluCisxOTk2LCAxOTk4LCAyMDAwLCAyMDAxIGFuZCAyMDAzLiAgVGhlIHZpc2l0IHJlcG9ydHMgYXJlIG9uIHRoZSBJQ0NGIHdlYiBzaXRlLgorCitJZiB5b3UgaGF2ZSBhbnkgZnVydGhlciBxdWVzdGlvbnMsIHNlbmQgbWUgZS1tYWlsOiA8QnJhbUB2aW0ub3JnPi4KKworVGhlIGFkZHJlc3Mgb2YgdGhlIGNlbnRyZSBpczoKKwkJCUtpYmFhbGUgQ2hpbGRyZW4ncyBDZW50cmUKKwkJCXAuby4gYm94IDE2NTgKKwkJCU1hc2FrYSwgVWdhbmRhLCBFYXN0IEFmcmljYQorCitTZW5kaW5nIG1vbmV5OgorCitDaGVjayB0aGUgSUNDRiB3ZWIgc2l0ZSBmb3IgdGhlIGxhdGVzdCBpbmZvcm1hdGlvbiEgIFNlZSB8aWNjZnwgZm9yIHRoZSBVUkwuCisKK1VTQToJCVRoZSBtZXRob2RzIG1lbnRpb25lZCBiZWxvdyBjYW4gYmUgdXNlZC4gIEFsdGVybmF0aXZlbHksIHlvdQorCQljYW4gc2VuZCBhIGNoZWNrIHRvIHRoZSBOZWhlbWlhaCBHcm91cCBPdXRyZWFjaCBTb2NpZXR5CisJCShOR09TKS4gIFRoaXMgd2lsbCByZWR1Y2UgYmFua2luZyBjb3N0cyBhbmQgeW91IGNhbiBnZXQgYW4gSVJTCisJCXRheCByZWNlaXB0LiAgVGhlIE5HT1MgZm9yd2FyZHMgdGhlIGZ1bmRzIGRpcmVjdGx5IHRvIHRoZQorCQlLaWJhYWxlIHByb2plY3QgaW4gVWdhbmRhLiAgQ2hlY2tzIG11c3QgYmUgbWFkZSBwYXlhYmxlIHRvCisJCU5HT1MgYnV0IHBsZWFzZSBub3RlIG9uIHRoZSBjaGVjayAiZG9uYXRpb24gS2liYWFsZSIuICBNYWlsCisJCWNoZWNrcyB0bzoKKwkJCU5HT1MKKwkJCVAuTy4gQm94IDUwODYyCisJCQlJbmRpYW5hcG9saXMsIElOIDQ1MjUwCisJCVF1ZXN0aW9ucyByZWdhcmRpbmcgdGhlIE5laGVtaWFoIEdyb3VwIE91dHJlYWNoIFNvY2lldHkgKE5HT1MpCisJCXNob3VsZCBiZSBkaXJlY3RlZCB0bzogUm9zcyBkZU1lcmNoYW50LCBFeGVjdXRpdmUgRGlyZWN0b3IgLQorCQlyLmRlbWVyY2hhbnQgQVQgc2JjZ2xvYmFsIERPVCBuZXQuCisJCUZvciBzcG9uc29yaW5nIGEgY2hpbGQgY29udGFjdCBLQ0YgaW4gQ2FuYWRhIChzZWUgYmVsb3cpIGFuZAorCQlzZW5kIHRoZSBjaGVjayB0byBOR09TIGluIEluZGlhbmFwb2xpcy4KKworQ2FuYWRhOgkJQ29udGFjdCBLaWJhYWxlIENoaWxkcmVuJ3MgRnVuZCAoS0NGKSBpbiBTdXJyZXksIENhbmFkYS4gIFRoZXkKKwkJdGFrZSBjYXJlIG9mIHRoZSBDYW5hZGlhbiBzcG9uc29ycyBmb3IgdGhlIGNoaWxkcmVuIGluCisJCUtpYmFhbGUuICBLQ0YgZm9yd2FyZHMgMTAwJSBvZiB0aGUgbW9uZXkgdG8gdGhlIHByb2plY3QgaW4KKwkJVWdhbmRhLiAgWW91IGNhbiBzZW5kIHRoZW0gYSBvbmUgdGltZSBkb25hdGlvbiBkaXJlY3RseS4KKwkJUGxlYXNlIHNlbmQgbWUgYSBub3RlIHNvIHRoYXQgSSBrbm93IHdoYXQgaGFzIGJlZW4gZG9uYXRlZAorCQliZWNhdXNlIG9mIFZpbS4gIEFzayBLQ0YgZm9yIGluZm9ybWF0aW9uIGFib3V0IHNwb25zb3JzaGlwLgorCQkJS2liYWFsZSBDaGlsZHJlbidzIEZ1bmQgYy9vIFBhY2lmaWMgQWNhZGVteQorCQkJMTAyMzgtMTY4IFN0cmVldAorCQkJU3VycmV5LCBCLkMuIFY0TiAxWjQKKwkJCUNhbmFkYQorCQkJUGhvbmU6IDYwNC01ODEtNTM1MworCQlJZiB5b3UgbWFrZSBhIGRvbmF0aW9uIHRvIEtpYmFhbGUgQ2hpbGRyZW4ncyBGdW5kIChLQ0YpIHlvdQorCQl3aWxsIHJlY2VpdmUgYSB0YXggcmVjZWlwdCB3aGljaCBjYW4gYmUgc3VibWl0dGVkIHdpdGggeW91cgorCQl0YXggcmV0dXJuLgorCitIb2xsYW5kOglUcmFuc2ZlciB0byB0aGUgYWNjb3VudCBvZiAiU3RpY2h0aW5nIElDQ0YgSG9sbGFuZCIgaW4gVmVubG8uCisJCVRoaXMgd2lsbCBhbGxvdyBmb3IgdGF4IGRlZHVjdGlvbiBpZiB5b3UgbGl2ZSBpbiBIb2xsYW5kLgorCQkJUG9zdGJhbmssIG5yLiA0NTQ4Nzc0CisKK0dlcm1hbnk6CUl0IGlzIHBvc3NpYmxlIHRvIG1ha2UgZG9uYXRpb25zIHRoYXQgYWxsb3cgZm9yIGEgdGF4IHJldHVybi4KKwkJQ2hlY2sgdGhlIElDQ0Ygd2ViIHNpdGUgZm9yIHRoZSBsYXRlc3QgaW5mb3JtYXRpb246CisJCQlodHRwOi8vaWNjZi1ob2xsYW5kLm9yZy9nZXJtYW55Lmh0bWwKKworV29ybGQ6CQlVc2UgYSBwb3N0YWwgbW9uZXkgb3JkZXIuICBUaGF0IHNob3VsZCBiZSBwb3NzaWJsZSBmcm9tIGFueQorCQljb3VudHJ5LCBtb3N0bHkgZnJvbSB0aGUgcG9zdCBvZmZpY2UuICBVc2UgdGhpcyBuYW1lICh3aGljaCBpcworCQlpbiBteSBwYXNzcG9ydCk6ICJBYnJhaGFtIE1vb2xlbmFhciIuICBVc2UgRXVybyBmb3IgdGhlCisJCWN1cnJlbmN5IGlmIHBvc3NpYmxlLgorCitFdXJvcGU6CQlVc2UgYSBiYW5rIHRyYW5zZmVyIGlmIHBvc3NpYmxlLiAgWW91ciBiYW5rIHNob3VsZCBoYXZlIGEgZm9ybQorCQl0aGF0IHlvdSBjYW4gdXNlIGZvciB0aGlzLiAgU2VlICJPdGhlcnMiIGJlbG93IGZvciB0aGUgc3dpZnQKKwkJY29kZSBhbmQgSUJBTiBudW1iZXIuCisJCUFueSBvdGhlciBtZXRob2Qgc2hvdWxkIHdvcmsuICBBc2sgZm9yIGluZm9ybWF0aW9uIGFib3V0CisJCXNwb25zb3JzaGlwLgorCitDcmVkaXQgQ2FyZDoJWW91IGNhbiB1c2UgUGF5UGFsIHRvIHNlbmQgbW9uZXkgd2l0aCBhIENyZWRpdCBjYXJkLiAgVGhpcyBpcworCQl0aGUgbW9zdCB3aWRlbHkgdXNlZCBJbnRlcm5ldCBiYXNlZCBwYXltZW50IHN5c3RlbS4gIEl0J3MKKwkJcmVhbGx5IHNpbXBsZSB0byB1c2UuICBVc2UgdGhpcyBsaW5rIHRvIGZpbmQgbW9yZSBpbmZvOgorCQkgICAgaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9hZmZpbC9wYWw9QnJhbSU0MGljY2YtaG9sbGFuZC5vcmcKKwkJVGhlIGUtbWFpbCBhZGRyZXNzIGZvciBzZW5kaW5nIHRoZSBtb25leSB0byBpczoKKwkJICAgIEJyYW1AaWNjZi1ob2xsYW5kLm9yZworCQlGb3IgYW1vdW50cyBhYm92ZSA0MDAgRXVybyAoJDUwMCkgc2VuZGluZyBhIGNoZWNrIGlzCisJCXByZWZlcnJlZC4KKworT3RoZXJzOgkJVHJhbnNmZXIgdG8gb25lIG9mIHRoZXNlIGFjY291bnRzIGlmIHBvc3NpYmxlOgorCQkgICAgUG9zdGJhbmssIGFjY291bnQgNDU0ODc3NAorCQkJCVN3aWZ0IGNvZGU6IElOR0IgTkwgMkEKKwkJCQlJQkFOOiBOTDQ3IFBTVEIgMDAwNCA1NDg3IDc0CisJCQl1bmRlciB0aGUgbmFtZSAic3RpY2h0aW5nIElDQ0YgSG9sbGFuZCIsIFZlbmxvCisJCSAgICBJZiB0aGF0IGRvZXNuJ3Qgd29yazoKKwkJICAgIFJhYm9iYW5rIFZlbmxvLCBhY2NvdW50IDM3NjUuMDUuMTE3CisJCQkJU3dpZnQgY29kZTogUkFCTyBOTCAyVQorCQkJdW5kZXIgdGhlIG5hbWUgIkJyYW0gTW9vbGVuYWFyIiwgVmVubG8KKwkJT3RoZXJ3aXNlLCBzZW5kIGEgY2hlY2sgaW4gZXVybyBvciBVUyBkb2xsYXJzIHRvIHRoZSBhZGRyZXNzCisJCWJlbG93LiAgTWluaW1hbCBhbW91bnQ6ICQ3MCAobXkgYmFuayBkb2VzIG5vdCBhY2NlcHQgc21hbGxlcgorCQlhbW91bnRzIGZvciBmb3JlaWduIGNoZWNrLCBzb3JyeSkKKworQWRkcmVzcyB0byBzZW5kIGNoZWNrcyB0bzoKKwkJCXN0aWNodGluZyBJQ0NGIEhvbGxhbmQKKwkJCUJyYW0gTW9vbGVuYWFyCisJCQlNb2xlbnN0cmFhdCAyCisJCQkyMTYxIEhQIExpc3NlCisJCQlUaGUgTmV0aGVybGFuZHMKKworVGhpcyBhZGRyZXNzIGlzIGV4cGVjdGVkIHRvIGJlIHZhbGlkIGZvciBhIGxvbmcgdGltZS4gIFRoZSBhZGRyZXNzIGluIFZlbmxvCit3aWxsIG5vdCBiZSB2YWxpZCBhZnRlciBKdW5lIDIwMDYuCisKKyB0cz04OmZ0PWhlbHA6bm9ybDoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3VnYW5kYS50eHQgYi9ydW50aW1lL2RvYy91Z2FuZGEudHh0CmluZGV4IGRhYmNlOTMuLmMwYTUwYzggMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3VnYW5kYS50eHQKKysrIGIvcnVudGltZS9kb2MvdWdhbmRhLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1Z2FuZGEudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnVnYW5kYS50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy91bmRvLnR4dCBiL3J1bnRpbWUvZG9jL3VuZG8udHh0CmluZGV4IDEwYjMyOGQuLjhjN2RhOWIgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3VuZG8udHh0CisrKyBiL3J1bnRpbWUvZG9jL3VuZG8udHh0CkBAIC0xLDQgKzEsNCBAQAotKnVuZG8udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisqdW5kby50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMzAKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTExOSw4ICsxMTksOCBAQAogCQkJCQkJCSo6dW5kb2wqICo6dW5kb2xpc3QqCiA6dW5kb2xbaXN0XQkJTGlzdCB0aGUgbGVhZnMgaW4gdGhlIHRyZWUgb2YgY2hhbmdlcy4gIEV4YW1wbGU6CiAJCQkJbnVtYmVyIGNoYW5nZXMgICB0aW1lIH4KLQkJCQk0ICAgICAgMTAgICAgICAgIDEwOjM0OjExCi0JCQkJMTggICAgIDQgICAgICAgICAxMTowMTo0NgorCQkJCTQgICAgICAxMAkgMTA6MzQ6MTEKKwkJCQkxOCAgICAgNAkgMTE6MDE6NDYKIAogCQkJVGhlICJudW1iZXIiIGNvbHVtbiBpcyB0aGUgY2hhbmdlIG51bWJlci4gIFRoaXMgbnVtYmVyCiAJCQljb250aW51b3VzbHkgaW5jcmVhc2VzIGFuZCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSBhCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy91c3JfMDEudHh0IGIvcnVudGltZS9kb2MvdXNyXzAxLnR4dAppbmRleCA4YjQ4NDMwLi44OTg3NDJkIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy91c3JfMDEudHh0CisrKyBiL3J1bnRpbWUvZG9jL3Vzcl8wMS50eHQKQEAgLTEsNCArMSw0IEBACi0qdXNyXzAxLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKKyp1c3JfMDEudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAogCiAJCSAgICAgVklNIFVTRVIgTUFOVUFMIC0gYnkgQnJhbSBNb29sZW5hYXIKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdXNyXzAyLnR4dCBiL3J1bnRpbWUvZG9jL3Vzcl8wMi50eHQKaW5kZXggNjA3NGViZi4uMTU1OWMwYiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdXNyXzAyLnR4dAorKysgYi9ydW50aW1lL2RvYy91c3JfMDIudHh0CkBAIC0xLDQgKzEsNCBAQAotKnVzcl8wMi50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisqdXNyXzAyLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Vzcl8wMy50eHQgYi9ydW50aW1lL2RvYy91c3JfMDMudHh0CmluZGV4IGEwYmNkNjAuLjUzZWYwNTYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Vzcl8wMy50eHQKKysrIGIvcnVudGltZS9kb2MvdXNyXzAzLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1c3JfMDMudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnVzcl8wMy50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CiAKIAkJICAgICBWSU0gVVNFUiBNQU5VQUwgLSBieSBCcmFtIE1vb2xlbmFhcgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy91c3JfMDQudHh0IGIvcnVudGltZS9kb2MvdXNyXzA0LnR4dAppbmRleCAyZDJmYTM5Li5kYmEzYjVlIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy91c3JfMDQudHh0CisrKyBiL3J1bnRpbWUvZG9jL3Vzcl8wNC50eHQKQEAgLTEsNCArMSw0IEBACi0qdXNyXzA0LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKKyp1c3JfMDQudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAogCiAJCSAgICAgVklNIFVTRVIgTUFOVUFMIC0gYnkgQnJhbSBNb29sZW5hYXIKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdXNyXzA1LnR4dCBiL3J1bnRpbWUvZG9jL3Vzcl8wNS50eHQKaW5kZXggMDJkODI4OS4uZDRlMTg5YyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdXNyXzA1LnR4dAorKysgYi9ydW50aW1lL2RvYy91c3JfMDUudHh0CkBAIC0xLDQgKzEsNCBAQAotKnVzcl8wNS50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisqdXNyXzA1LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Vzcl8wNi50eHQgYi9ydW50aW1lL2RvYy91c3JfMDYudHh0CmluZGV4IGU4MzRmOGQuLmRjOTExZmYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Vzcl8wNi50eHQKKysrIGIvcnVudGltZS9kb2MvdXNyXzA2LnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1c3JfMDYudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnVzcl8wNi50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CiAKIAkJICAgICBWSU0gVVNFUiBNQU5VQUwgLSBieSBCcmFtIE1vb2xlbmFhcgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy91c3JfMDcudHh0IGIvcnVudGltZS9kb2MvdXNyXzA3LnR4dAppbmRleCAyOTYxYzdjLi4yZGZmNDI3IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy91c3JfMDcudHh0CisrKyBiL3J1bnRpbWUvZG9jL3Vzcl8wNy50eHQKQEAgLTEsNCArMSw0IEBACi0qdXNyXzA3LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKKyp1c3JfMDcudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAogCiAJCSAgICAgVklNIFVTRVIgTUFOVUFMIC0gYnkgQnJhbSBNb29sZW5hYXIKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdXNyXzA4LnR4dCBiL3J1bnRpbWUvZG9jL3Vzcl8wOC50eHQKaW5kZXggN2FhYjAzMC4uMzAzOGMwZCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdXNyXzA4LnR4dAorKysgYi9ydW50aW1lL2RvYy91c3JfMDgudHh0CkBAIC0xLDQgKzEsNCBAQAotKnVzcl8wOC50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisqdXNyXzA4LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMzAKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKQEAgLTUyMSwxMiArNTIxLDEyIEBACiAKIAkrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAl8IHRoaXNmaWxlIHwgL3RoYXRmaWxlLyBfX19fX19fX19fWHwgICAgKHRoYXRmaWxlIGlzIGJvbGQpCi0JfC8qIHRoYXRmaWxlICovICAJCSAgIHwKKwl8LyogdGhhdGZpbGUgKi8JCQkgICB8CiAJfHRoYXQJCQkJICAgfAogCXx0aGF0CQkJCSAgIHwKLQl8fiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQl8fiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQl8fiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKwl8fgkJCQkgICB8CisJfH4JCQkJICAgfAorCXx+CQkJCSAgIHwKIAl8CQkJCSAgIHwKIAkrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIApAQCAtNTM4LDEyICs1MzgsMTIgQEAKIAogCSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCXwgL3RoaXNmaWxlLyB8IHRoYXRmaWxlIF9fX19fX19fX19YfCAgICAodGhpc2ZpbGUgaXMgYm9sZCkKLQl8LyogdGhpc2ZpbGUgKi8gIAkJICAgfAorCXwvKiB0aGlzZmlsZSAqLwkJCSAgIHwKIAl8dGhpcwkJCQkgICB8CiAJfHRoaXMJCQkJICAgfAotCXx+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCXx+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCXx+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCXx+CQkJCSAgIHwKKwl8fgkJCQkgICB8CisJfH4JCQkJICAgfAogCXwJCQkJICAgfAogCSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCkBAIC01NjAsMTIgKzU2MCwxMiBAQAogCiAJKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAJfCB0aGlzZmlsZSB8IC90aGlzZmlsZS8gfCB0aGF0ZmlsZSBfX1h8ICAgKHRoaXNmaWxlIGlzIGJvbGQpCi0JfC8qIHRoaXNmaWxlICovICAJCSAgICAgIHwKKwl8LyogdGhpc2ZpbGUgKi8JCQkgICAgICB8CiAJfHRoaXMJCQkJICAgICAgfAogCXx0aGlzCQkJCSAgICAgIHwKLQl8fiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQl8fiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQl8fiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKwl8fgkJCQkgICAgICB8CisJfH4JCQkJICAgICAgfAorCXx+CQkJCSAgICAgIHwKIAl8CQkJCSAgICAgIHwKIAkrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIApAQCAtNTc5LDE3ICs1NzksMTcgQEAKIEEgZmV3IG1vcmUgdGhpbmdzIHlvdSBjYW4gZG8gd2l0aCB0YWIgcGFnZXM6CiAKIC0gY2xpY2sgd2l0aCB0aGUgbW91c2UgaW4gdGhlIHNwYWNlIGFmdGVyIHRoZSBsYXN0IGxhYmVsCi0gIAlUaGUgbmV4dCB0YWIgcGFnZSB3aWxsIGJlIHNlbGVjdGVkLCBsaWtlIHdpdGggImd0Ii4KKwlUaGUgbmV4dCB0YWIgcGFnZSB3aWxsIGJlIHNlbGVjdGVkLCBsaWtlIHdpdGggImd0Ii4KIAogLSBjbGljayB3aXRoIHRoZSBtb3VzZSBvbiB0aGUgIlgiIGluIHRoZSB0b3AgcmlnaHQgY29ybmVyCi0gIAlUaGUgY3VycmVudCB0YWIgcGFnZSB3aWxsIGJlIGNsb3NlZC4gIFVubGVzcyB0aGVyZSBhcmUgdW5zYXZlZAorCVRoZSBjdXJyZW50IHRhYiBwYWdlIHdpbGwgYmUgY2xvc2VkLiAgVW5sZXNzIHRoZXJlIGFyZSB1bnNhdmVkCiAJY2hhbmdlcyBpbiB0aGUgY3VycmVudCB0YWIgcGFnZS4KIAogLSBkb3VibGUgY2xpY2sgd2l0aCB0aGUgbW91c2UgaW4gdGhlIHRvcCBsaW5lCi0gIAlBIG5ldyB0YWIgcGFnZSB3aWxsIGJlIGNyZWF0ZWQuCisJQSBuZXcgdGFiIHBhZ2Ugd2lsbCBiZSBjcmVhdGVkLgogCiAtIHRoZSAidGFib25seSIgY29tbWFuZAotICAJQ2xvc2VzIGFsbCB0YWIgcGFnZXMgZXhjZXB0IHRoZSBjdXJyZW50IG9uZS4gIFVubGVzcyB0aGVyZSBhcmUgdW5zYXZlZAorCUNsb3NlcyBhbGwgdGFiIHBhZ2VzIGV4Y2VwdCB0aGUgY3VycmVudCBvbmUuICBVbmxlc3MgdGhlcmUgYXJlIHVuc2F2ZWQKIAljaGFuZ2VzIGluIG90aGVyIHRhYiBwYWdlcy4KIAogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGFiIHBhZ2VzIHNlZSB8dGFiLXBhZ2V8LgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdXNyXzA5LnR4dCBiL3J1bnRpbWUvZG9jL3Vzcl8wOS50eHQKaW5kZXggZmE5MDI0Mi4uZDE1Zjg5ZSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdXNyXzA5LnR4dAorKysgYi9ydW50aW1lL2RvYy91c3JfMDkudHh0CkBAIC0xLDQgKzEsNCBAQAotKnVzcl8wOS50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisqdXNyXzA5LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Vzcl8xMC50eHQgYi9ydW50aW1lL2RvYy91c3JfMTAudHh0CmluZGV4IGVjODdiZWUuLjJjMDQ2NzMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Vzcl8xMC50eHQKKysrIGIvcnVudGltZS9kb2MvdXNyXzEwLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1c3JfMTAudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnVzcl8xMC50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CiAKIAkJICAgICBWSU0gVVNFUiBNQU5VQUwgLSBieSBCcmFtIE1vb2xlbmFhcgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy91c3JfMTEudHh0IGIvcnVudGltZS9kb2MvdXNyXzExLnR4dAppbmRleCA0NzljZGIxLi40MTIwNWVjIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy91c3JfMTEudHh0CisrKyBiL3J1bnRpbWUvZG9jL3Vzcl8xMS50eHQKQEAgLTEsNCArMSw0IEBACi0qdXNyXzExLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKKyp1c3JfMTEudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAogCiAJCSAgICAgVklNIFVTRVIgTUFOVUFMIC0gYnkgQnJhbSBNb29sZW5hYXIKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdXNyXzEyLnR4dCBiL3J1bnRpbWUvZG9jL3Vzcl8xMi50eHQKaW5kZXggYjU5YjNlYy4uMDQ0NTQ5ZSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdXNyXzEyLnR4dAorKysgYi9ydW50aW1lL2RvYy91c3JfMTIudHh0CkBAIC0xLDQgKzEsNCBAQAotKnVzcl8xMi50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisqdXNyXzEyLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Vzcl8yMC50eHQgYi9ydW50aW1lL2RvYy91c3JfMjAudHh0CmluZGV4IDJjYmQ0MjguLmRlMjZhYWIgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Vzcl8yMC50eHQKKysrIGIvcnVudGltZS9kb2MvdXNyXzIwLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1c3JfMjAudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnVzcl8yMC50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CiAKIAkJICAgICBWSU0gVVNFUiBNQU5VQUwgLSBieSBCcmFtIE1vb2xlbmFhcgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy91c3JfMjEudHh0IGIvcnVudGltZS9kb2MvdXNyXzIxLnR4dAppbmRleCBhNDNmMDI0Li5mOTllODExIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy91c3JfMjEudHh0CisrKyBiL3J1bnRpbWUvZG9jL3Vzcl8yMS50eHQKQEAgLTEsNCArMSw0IEBACi0qdXNyXzIxLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjUKKyp1c3JfMjEudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNQogCiAJCSAgICAgVklNIFVTRVIgTUFOVUFMIC0gYnkgQnJhbSBNb29sZW5hYXIKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdXNyXzIyLnR4dCBiL3J1bnRpbWUvZG9jL3Vzcl8yMi50eHQKaW5kZXggMzFlNWQzOC4uOTBlMmIwOCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdXNyXzIyLnR4dAorKysgYi9ydW50aW1lL2RvYy91c3JfMjIudHh0CkBAIC0xLDQgKzEsNCBAQAotKnVzcl8yMi50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisqdXNyXzIyLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Vzcl8yMy50eHQgYi9ydW50aW1lL2RvYy91c3JfMjMudHh0CmluZGV4IDFjZjc1OTUuLmUxNjhhYmMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Vzcl8yMy50eHQKKysrIGIvcnVudGltZS9kb2MvdXNyXzIzLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1c3JfMjMudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnVzcl8yMy50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CiAKIAkJICAgICBWSU0gVVNFUiBNQU5VQUwgLSBieSBCcmFtIE1vb2xlbmFhcgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy91c3JfMjQudHh0IGIvcnVudGltZS9kb2MvdXNyXzI0LnR4dAppbmRleCA5OGMyYTI1Li4xNzVkMDlmIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy91c3JfMjQudHh0CisrKyBiL3J1bnRpbWUvZG9jL3Vzcl8yNC50eHQKQEAgLTEsNCArMSw0IEBACi0qdXNyXzI0LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKKyp1c3JfMjQudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAogCiAJCSAgICAgVklNIFVTRVIgTUFOVUFMIC0gYnkgQnJhbSBNb29sZW5hYXIKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdXNyXzI1LnR4dCBiL3J1bnRpbWUvZG9jL3Vzcl8yNS50eHQKaW5kZXggYTAzM2FmYi4uNDk2MjVlMSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdXNyXzI1LnR4dAorKysgYi9ydW50aW1lL2RvYy91c3JfMjUudHh0CkBAIC0xLDQgKzEsNCBAQAotKnVzcl8yNS50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisqdXNyXzI1LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Vzcl8yNi50eHQgYi9ydW50aW1lL2RvYy91c3JfMjYudHh0CmluZGV4IDFhMjFlNjYuLmMwODRhZmQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Vzcl8yNi50eHQKKysrIGIvcnVudGltZS9kb2MvdXNyXzI2LnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1c3JfMjYudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnVzcl8yNi50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CiAKIAkJICAgICBWSU0gVVNFUiBNQU5VQUwgLSBieSBCcmFtIE1vb2xlbmFhcgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy91c3JfMjcudHh0IGIvcnVudGltZS9kb2MvdXNyXzI3LnR4dAppbmRleCA3NmI1NzIxLi40MGU1MDkwIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy91c3JfMjcudHh0CisrKyBiL3J1bnRpbWUvZG9jL3Vzcl8yNy50eHQKQEAgLTEsNCArMSw0IEBACi0qdXNyXzI3LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKKyp1c3JfMjcudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAogCiAJCSAgICAgVklNIFVTRVIgTUFOVUFMIC0gYnkgQnJhbSBNb29sZW5hYXIKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdXNyXzI4LnR4dCBiL3J1bnRpbWUvZG9jL3Vzcl8yOC50eHQKaW5kZXggN2M1ZWJiZi4uYTY5MDgxZiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdXNyXzI4LnR4dAorKysgYi9ydW50aW1lL2RvYy91c3JfMjgudHh0CkBAIC0xLDQgKzEsNCBAQAotKnVzcl8yOC50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisqdXNyXzI4LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Vzcl8yOS50eHQgYi9ydW50aW1lL2RvYy91c3JfMjkudHh0CmluZGV4IDI1NTY3ZjAuLjEwOTQ4NzMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Vzcl8yOS50eHQKKysrIGIvcnVudGltZS9kb2MvdXNyXzI5LnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1c3JfMjkudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnVzcl8yOS50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CiAKIAkJICAgICBWSU0gVVNFUiBNQU5VQUwgLSBieSBCcmFtIE1vb2xlbmFhcgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy91c3JfMzAudHh0IGIvcnVudGltZS9kb2MvdXNyXzMwLnR4dAppbmRleCAxMzQ0OWEwLi45ZTFjZWQyIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy91c3JfMzAudHh0CisrKyBiL3J1bnRpbWUvZG9jL3Vzcl8zMC50eHQKQEAgLTEsNCArMSw0IEBACi0qdXNyXzMwLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKKyp1c3JfMzAudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAogCiAJCSAgICAgVklNIFVTRVIgTUFOVUFMIC0gYnkgQnJhbSBNb29sZW5hYXIKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdXNyXzMxLnR4dCBiL3J1bnRpbWUvZG9jL3Vzcl8zMS50eHQKaW5kZXggYzk0ZDNjYS4uMmI2ZjhlOSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdXNyXzMxLnR4dAorKysgYi9ydW50aW1lL2RvYy91c3JfMzEudHh0CkBAIC0xLDQgKzEsNCBAQAotKnVzcl8zMS50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisqdXNyXzMxLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Vzcl8zMi50eHQgYi9ydW50aW1lL2RvYy91c3JfMzIudHh0CmluZGV4IDlmYWIxODYuLjVlNjAwZDMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Vzcl8zMi50eHQKKysrIGIvcnVudGltZS9kb2MvdXNyXzMyLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1c3JfMzIudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnVzcl8zMi50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDMwCiAKIAkJICAgICBWSU0gVVNFUiBNQU5VQUwgLSBieSBCcmFtIE1vb2xlbmFhcgogCkBAIC0zMSwxMSArMzEsMTEgQEAKIAkJb25lIH4KIAkJIHwKIAkgICAgICBjaGFuZ2UgMQotCSAgICAgICAgIHwKKwkJIHwKIAkgICAgICBvbmUgdG9vIH4KLQkgICAgICAgICB8CisJCSB8CiAJICAgICAgY2hhbmdlIDIKLQkgICAgICAgICB8CisJCSB8CiAJICAgICAgb25lIHR3byB+CiAKIElmIHdlIG5vdyB1bmRvIG9uZSBjaGFuZ2UsIGJhY2sgdG8gIm9uZSB0b28iLCBhbmQgY2hhbmdlICJvbmUiIHRvICJtZSIgd2UKQEAgLTQ0LDEyICs0NCwxMiBAQAogCQlvbmUgfgogCQkgfAogCSAgICAgIGNoYW5nZSAxCi0JICAgICAgICAgfAorCQkgfAogCSAgICAgIG9uZSB0b28gfgogCSAgICAgIC8gICAgIFwKLSAgICAgICAgIGNoYW5nZSAyICBjaGFuZ2UgMwotICAgICAgICAgICAgfCAgICAgICAgIHwKLSAgICAgICAgIG9uZSB0d28gICAgbWUgdG9vIH4KKwkgY2hhbmdlIDIgIGNoYW5nZSAzCisJICAgIHwJICAgICAgfAorCSBvbmUgdHdvICAgIG1lIHRvbyB+CiAKIFlvdSBjYW4gbm93IHVzZSB0aGUgfHV8IGNvbW1hbmQgdG8gdW5kby4gIElmIHlvdSBkbyB0aGlzIHR3aWNlIHlvdSBnZXQgdG8KICJvbmUiLiAgVXNlIHxDVFJMLVJ8IHRvIHJlZG8sIGFuZCB5b3Ugd2lsbCBnbyB0byAib25lIHRvbyIuICBPbmUgbW9yZSB8Q1RSTC1SfApAQCAtODAsMTIgKzgwLDEyIEBACiAJCW9uZSB+CiAJCSB8CiAJICAgICAgY2hhbmdlIDEKLQkgICAgICAgICB8CisJCSB8CiAJICAgICAgb25lIHRvbyB+CiAJICAgICAgLyAgICAgXAotICAgICAgICAgY2hhbmdlIDIgIGNoYW5nZSAzCi0gICAgICAgICAgICB8ICAgICAgICAgfAotICAgICAgICAgb25lIHR3byAgICBtZSB0b28gfgorCSBjaGFuZ2UgMiAgY2hhbmdlIDMKKwkgICAgfAkgICAgICB8CisJIG9uZSB0d28gICAgbWUgdG9vIH4KIAkgICAgfAogCSBjaGFuZ2UgNAogCSAgICB8CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy91c3JfNDAudHh0IGIvcnVudGltZS9kb2MvdXNyXzQwLnR4dAppbmRleCBmZmYyOGFlLi5iNDZhZTViIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy91c3JfNDAudHh0CisrKyBiL3J1bnRpbWUvZG9jL3Vzcl80MC50eHQKQEAgLTEsNCArMSw0IEBACi0qdXNyXzQwLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKKyp1c3JfNDAudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAogCiAJCSAgICAgVklNIFVTRVIgTUFOVUFMIC0gYnkgQnJhbSBNb29sZW5hYXIKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdXNyXzQxLnR4dCBiL3J1bnRpbWUvZG9jL3Vzcl80MS50eHQKaW5kZXggODExY2M5Zi4uOWIwNGE2NyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdXNyXzQxLnR4dAorKysgYi9ydW50aW1lL2RvYy91c3JfNDEudHh0CkBAIC0xLDQgKzEsNCBAQAotKnVzcl80MS50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisqdXNyXzQxLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMzAKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKQEAgLTIwOSw3ICsyMDksNyBAQAogYmVjb21lcyBmYWxzZS4gIFdoZW4gaXQgd2FzIGZhbHNlLCBpdCBiZWNvbWVzIHRydWUuICBZb3UgY2FuIHJlYWQgaXQgYXMgIm5vdCIuCiBUaHVzICJpZiAhZXhpc3RzKCkiIGNhbiBiZSByZWFkIGFzICJpZiBub3QgZXhpc3RzKCkiLgogICAgV2hhdCBWaW0gY2FsbHMgdHJ1ZSBpcyBhbnl0aGluZyB0aGF0IGlzIG5vdCB6ZXJvLiAgWmVybyBpcyBmYWxzZS4KLSAgIAlOb3RlOgorCU5vdGU6CiAJVmltIGF1dG9tYXRpY2FsbHkgY29udmVydHMgYSBzdHJpbmcgdG8gYSBudW1iZXIgd2hlbiBpdCBpcyBsb29raW5nIGZvcgogCWEgbnVtYmVyLiAgV2hlbiB1c2luZyBhIHN0cmluZyB0aGF0IGRvZXNuJ3Qgc3RhcnQgd2l0aCBhIGRpZ2l0IHRoZQogCXJlc3VsdGluZyBudW1iZXIgaXMgemVyby4gIFRodXMgbG9vayBvdXQgZm9yIHRoaXM6ID4KQEAgLTEwNzYsMTYgKzEwNzYsMTYgQEAKIHRodXMgeW91IGNhbiBtYWtlIGEgTGlzdCBvZiBudW1iZXJzLCBhIExpc3Qgb2YgTGlzdHMgYW5kIGV2ZW4gYSBMaXN0IG9mIG1peGVkCiBpdGVtcy4gIFRvIGNyZWF0ZSBhIExpc3Qgd2l0aCB0aHJlZSBzdHJpbmdzOiA+CiAKLSAgIAk6bGV0IGFsaXN0ID0gWydhYXAnLCAnbWllcycsICdub290J10KKwk6bGV0IGFsaXN0ID0gWydhYXAnLCAnbWllcycsICdub290J10KIAogVGhlIExpc3QgaXRlbXMgYXJlIGVuY2xvc2VkIGluIHNxdWFyZSBicmFja2V0cyBhbmQgc2VwYXJhdGVkIGJ5IGNvbW1hcy4gIFRvCiBjcmVhdGUgYW4gZW1wdHkgTGlzdDogPgogCi0gICAJOmxldCBhbGlzdCA9IFtdCisJOmxldCBhbGlzdCA9IFtdCiAKIFlvdSBjYW4gYWRkIGl0ZW1zIHRvIGEgTGlzdCB3aXRoIHRoZSBhZGQoKSBmdW5jdGlvbjogPgogCi0gICAJOmxldCBhbGlzdCA9IFtdCisJOmxldCBhbGlzdCA9IFtdCiAJOmNhbGwgYWRkKGFsaXN0LCAnZm9vJykKIAk6Y2FsbCBhZGQoYWxpc3QsICdiYXInKQogCTplY2hvIGFsaXN0CkBAIC0xMDk4LDE0ICsxMDk4LDE0IEBACiAKIE9yLCBpZiB5b3Ugd2FudCB0byBleHRlbmQgYSBMaXN0IGRpcmVjdGx5OiA+CiAKLSAgIAk6bGV0IGFsaXN0ID0gWydvbmUnXQorCTpsZXQgYWxpc3QgPSBbJ29uZSddCiAJOmNhbGwgZXh0ZW5kKGFsaXN0LCBbJ3R3bycsICd0aHJlZSddKQogCTplY2hvIGFsaXN0CiA8CVsnb25lJywgJ3R3bycsICd0aHJlZSddIH4KIAogTm90aWNlIHRoYXQgdXNpbmcgYWRkKCkgd2lsbCBoYXZlIGEgZGlmZmVyZW50IGVmZmVjdDogPgogCi0gICAJOmxldCBhbGlzdCA9IFsnb25lJ10KKwk6bGV0IGFsaXN0ID0gWydvbmUnXQogCTpjYWxsIGFkZChhbGlzdCwgWyd0d28nLCAndGhyZWUnXSkKIAk6ZWNobyBhbGlzdAogPAlbJ29uZScsIFsndHdvJywgJ3RocmVlJ11dIH4KQEAgLTExNTUsMTEgKzExNTUsMTEgQEAKIAogQSBtb3JlIHVzZWZ1bCBleGFtcGxlLCBsb29waW5nIG92ZXIgbGluZXMgaW4gdGhlIGJ1ZmZlcjogPgogCi0gICAgICAgIDpmb3IgbGluZSBpbiBnZXRsaW5lKDEsIDIwKQotICAgICAgICA6ICBpZiBsaW5lID1+ICJEYXRlOiAiCi0gICAgICAgIDogICAgZWNobyBtYXRjaHN0cihsaW5lLCAnRGF0ZTogXHpzLionKQotICAgICAgICA6ICBlbmRpZgotICAgICAgICA6ZW5kZm9yCisJOmZvciBsaW5lIGluIGdldGxpbmUoMSwgMjApCisJOiAgaWYgbGluZSA9fiAiRGF0ZTogIgorCTogICAgZWNobyBtYXRjaHN0cihsaW5lLCAnRGF0ZTogXHpzLionKQorCTogIGVuZGlmCisJOmVuZGZvcgogCiBUaGlzIGxvb2tzIGludG8gbGluZXMgMSB0byAyMCAoaW5jbHVzaXZlKSBhbmQgZWNob2VzIGFueSBkYXRlIGZvdW5kIGluIHRoZXJlLgogCkBAIC0xMTY4LDcgKzExNjgsNyBAQAogCiBBIERpY3Rpb25hcnkgc3RvcmVzIGtleS12YWx1ZSBwYWlycy4gIFlvdSBjYW4gcXVpY2tseSBsb29rdXAgYSB2YWx1ZSBpZiB5b3UKIGtub3cgdGhlIGtleS4gIEEgRGljdGlvbmFyeSBpcyBjcmVhdGVkIHdpdGggY3VybHkgYnJhY2VzOiA+Ci0gICAJCisKIAk6bGV0IHVrMm5sID0geydvbmUnOiAnZWVuJywgJ3R3byc6ICd0d2VlJywgJ3RocmVlJzogJ2RyaWUnfQogCiBOb3cgeW91IGNhbiBsb29rdXAgd29yZHMgYnkgcHV0dGluZyB0aGUga2V5IGluIHNxdWFyZSBicmFja2V0czogPgpAQCAtMjI3NCw3ICsyMjc0LDcgQEAKIAogMi4gVGhlIHVzZXIgdHlwZXMgdGhlIEJOUmVhZCBjb21tYW5kIG9yIHByZXNzZXMgdGhlIDxGMTk+IGtleS4gIFRoZQogICAgQnVmTmV0UmVhZCgpIG9yIEJ1Zk5ldFdyaXRlKCkgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQuCi0gICAKKwogMy4gVmltIGNhbid0IGZpbmQgdGhlIGZ1bmN0aW9uIGFuZCB0cmlnZ2VycyB0aGUgfEZ1bmNVbmRlZmluZWR8IGF1dG9jb21tYW5kCiAgICBldmVudC4gIFNpbmNlIHRoZSBwYXR0ZXJuICJCdWZOZXQqIiBtYXRjaGVzIHRoZSBpbnZva2VkIGZ1bmN0aW9uLCB0aGUKICAgIGNvbW1hbmQgInNvdXJjZSBmbmFtZSIgd2lsbCBiZSBleGVjdXRlZC4gICJmbmFtZSIgd2lsbCBiZSBlcXVhbCB0byB0aGUgbmFtZQpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdXNyXzQyLnR4dCBiL3J1bnRpbWUvZG9jL3Vzcl80Mi50eHQKaW5kZXggMzdlMWYzOC4uOGI3MGQ5ZCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdXNyXzQyLnR4dAorKysgYi9ydW50aW1lL2RvYy91c3JfNDIudHh0CkBAIC0xLDQgKzEsNCBAQAotKnVzcl80Mi50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisqdXNyXzQyLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Vzcl80My50eHQgYi9ydW50aW1lL2RvYy91c3JfNDMudHh0CmluZGV4IGNkZGJmNTQuLjRkZTI5OGYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Vzcl80My50eHQKKysrIGIvcnVudGltZS9kb2MvdXNyXzQzLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1c3JfNDMudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnVzcl80My50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CiAKIAkJICAgICBWSU0gVVNFUiBNQU5VQUwgLSBieSBCcmFtIE1vb2xlbmFhcgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy91c3JfNDQudHh0IGIvcnVudGltZS9kb2MvdXNyXzQ0LnR4dAppbmRleCA4NDVjYTNjLi4yMTg3M2YxIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy91c3JfNDQudHh0CisrKyBiL3J1bnRpbWUvZG9jL3Vzcl80NC50eHQKQEAgLTEsNCArMSw0IEBACi0qdXNyXzQ0LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKKyp1c3JfNDQudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAogCiAJCSAgICAgVklNIFVTRVIgTUFOVUFMIC0gYnkgQnJhbSBNb29sZW5hYXIKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdXNyXzQ1LnR4dCBiL3J1bnRpbWUvZG9jL3Vzcl80NS50eHQKaW5kZXggMTY5ZDJlNy4uYmQ2OWFkOSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdXNyXzQ1LnR4dAorKysgYi9ydW50aW1lL2RvYy91c3JfNDUudHh0CkBAIC0xLDQgKzEsNCBAQAotKnVzcl80NS50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisqdXNyXzQ1LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Vzcl85MC50eHQgYi9ydW50aW1lL2RvYy91c3JfOTAudHh0CmluZGV4IDI4ZWQxODAuLjU0MDllZDEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Vzcl85MC50eHQKKysrIGIvcnVudGltZS9kb2MvdXNyXzkwLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1c3JfOTAudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnVzcl85MC50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CiAKIAkJICAgICBWSU0gVVNFUiBNQU5VQUwgLSBieSBCcmFtIE1vb2xlbmFhcgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy91c3JfdG9jLnR4dCBiL3J1bnRpbWUvZG9jL3Vzcl90b2MudHh0CmluZGV4IDg2NDhmN2UuLjg5YzlhMmMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Vzcl90b2MudHh0CisrKyBiL3J1bnRpbWUvZG9jL3Vzcl90b2MudHh0CkBAIC0xLDQgKzEsNCBAQAotKnVzcl90b2MudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnVzcl90b2MudHh0KglGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAogCiAJCSAgICAgVklNIFVTRVIgTUFOVUFMIC0gYnkgQnJhbSBNb29sZW5hYXIKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdmFyaW91cy50eHQgYi9ydW50aW1lL2RvYy92YXJpb3VzLnR4dAppbmRleCA2MDFmMTdiLi44YWFmYWI3IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy92YXJpb3VzLnR4dAorKysgYi9ydW50aW1lL2RvYy92YXJpb3VzLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp2YXJpb3VzLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNQorKnZhcmlvdXMudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI1CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy92ZXJzaW9uNC50eHQgYi9ydW50aW1lL2RvYy92ZXJzaW9uNC50eHQKaW5kZXggYzFmOTQ2ZC4uM2NlZWU1MyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdmVyc2lvbjQudHh0CisrKyBiL3J1bnRpbWUvZG9jL3ZlcnNpb240LnR4dApAQCAtMSw0ICsxLDQgQEAKLSp2ZXJzaW9uNC50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnZlcnNpb240LnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy92ZXJzaW9uNS50eHQgYi9ydW50aW1lL2RvYy92ZXJzaW9uNS50eHQKaW5kZXggNmU5NDI0NS4uOTIyOTdkMiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdmVyc2lvbjUudHh0CisrKyBiL3J1bnRpbWUvZG9jL3ZlcnNpb241LnR4dApAQCAtMSw0ICsxLDQgQEAKLSp2ZXJzaW9uNS50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnZlcnNpb241LnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy92ZXJzaW9uNi50eHQgYi9ydW50aW1lL2RvYy92ZXJzaW9uNi50eHQKaW5kZXggZGU5ZGNjYi4uYTQ2NTE0MyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdmVyc2lvbjYudHh0CisrKyBiL3J1bnRpbWUvZG9jL3ZlcnNpb242LnR4dApAQCAtMSw0ICsxLDQgQEAKLSp2ZXJzaW9uNi50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnZlcnNpb242LnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xNDEzNSw3ICsxNDEzNSw3IEBACiBGaWxlczoJICAgIHNyYy9ub3JtYWwuYwogCiBQYXRjaCA2LjMuMDM0Ci1Qcm9ibGVtOiAgICBWTVM6IGNyYXNoIHdoZW4gdXNpbmcgIjpoZWxwIi4gCitQcm9ibGVtOiAgICBWTVM6IGNyYXNoIHdoZW4gdXNpbmcgIjpoZWxwIi4KIFNvbHV0aW9uOiAgIEF2b2lkIHVzaW5nICJ0YWdzLT8/Iiwgc29tZSBPcGVuIFZNUyBzeXN0ZW1zIGNhbid0IGhhbmRsZSB0aGUgIj8iCiAJICAgIHdpbGRjYXJkLiAgKFpvbHRhbiBBcnBhZGZmeSkKIEZpbGVzOgkgICAgc3JjL3RhZy5jCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy92ZXJzaW9uNy50eHQgYi9ydW50aW1lL2RvYy92ZXJzaW9uNy50eHQKaW5kZXggYTg3NGNmOC4uODBiZmY3NyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdmVyc2lvbjcudHh0CisrKyBiL3J1bnRpbWUvZG9jL3ZlcnNpb243LnR4dApAQCAtMSw0ICsxLDQgQEAKLSp2ZXJzaW9uNy50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyOQorKnZlcnNpb243LnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDMwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC02NCw5ICs2NCw5IEBACiBuYW1lLiAgVGhpcyBjYXVzZWQgYSBkaWZmZXJlbmNlIGJldHdlZW4gIjplZGl0IiBhbmQgIjpuZXh0IiBmb3IgZXNjYXBpbmcKIGRvdWJsZSBxdW90ZXMgYW5kIGl0IGlzIGluY29tcGF0aWJsZSB3aXRoIHNvbWUgdmVyc2lvbnMgb2YgVmkuCiAJQ29tbWFuZAkJCVZpbSA2LngJZmlsZSBuYW1lCVZpbSA3LnggZmlsZSBuYW1lIH4KLQk6ZWRpdCBmb29cIjg4OCAgICAgICAgICBmb28iODg4ICAgICAgICAgCWZvbyI4ODgKLQk6bmV4dCBmb29cIjg4OCAgICAgICAgICBmb284ODggICAgICAgICAgCWZvbyI4ODgKLQk6bmV4dCBhXCJiIGNcImQgICAgICAgICBhYiBjZCAgICAgICAgICAgCWEiYiAgYW5kICBjImQKKwk6ZWRpdCBmb29cIjg4OAkJZm9vIjg4OAkJCWZvbyI4ODgKKwk6bmV4dCBmb29cIjg4OAkJZm9vODg4CQkJZm9vIjg4OAorCTpuZXh0IGFcImIgY1wiZAkJYWIgY2QJCQlhImIgIGFuZCAgYyJkCiAKIEluIGEgfGxpdGVyYWwtc3RyaW5nfCBhIHNpbmdsZSBxdW90ZSBjYW4gYmUgZG91YmxlZCB0byBnZXQgb25lLgogIjplY2hvICdhJydiJyIgd291bGQgcmVzdWx0IGluICJhIGIiLCBidXQgbm93IHRoYXQgdHdvIHF1b3RlcyBzdGFuZCBmb3Igb25lIGl0CkBAIC0xMDYsNyArMTA2LDcgQEAKIGxvb2tzIGxpa2UgaXRzIGRpc3BsYXllZCwgd2l0aCB0aGUgc2FtZSBmb2xkcyBvcGVuIGFuZCBjbG9zZWQuICBVc2UgInpSIiwgb3IKICJsZXQgaHRtbF9pZ25vcmVfZm9sZGluZz0xIiwgaWYgbm8gZm9sZHMgc2hvdWxkIGFwcGVhciBpbiB0aGUgSFRNTC4gKHBhcnRseSBieQogQ2FybCBPc3Rlcndpc2NoKQotRGlmZiBtb2RlIG5vdyBpcyBhbHNvIGNvbnZlcnRlZCB0byBIVE1MIGFzIGl0IGlzIGRpc3BsYXllZC4KK0RpZmYgbW9kZSBpcyBub3cgYWxzbyBjb252ZXJ0ZWQgdG8gSFRNTCBhcyBpdCBpcyBkaXNwbGF5ZWQuCiAKIFdpbjMyOiBUaGUgZWZmZWN0IG9mIHRoZSA8RjEwPiBrZXkgZGVwZW5kZWQgb24gJ3dpbmFsdGtleXMnLiAgTm93IGl0IGRlcGVuZHMKIG9uIHdoZXRoZXIgPEYxMD4gaGFzIGJlZW4gbWFwcGVkIG9yIG5vdC4gIFRoaXMgYWxsb3dzIG1hcHBpbmcgPEYxMD4gd2l0aG91dApAQCAtMjE2LDcgKzIxNiw3IEBACiAKIFRoZSB8W3N8IGFuZCB8XXN8IGNvbW1hbmRzIGNhbiBiZSB1c2VkIHRvIG1vdmUgdG8gdGhlIG5leHQgb3IgcHJldmlvdXMgZXJyb3IKIFRoZSB8emd8IGFuZCB8end8IGNvbW1hbmRzIGNhbiBiZSB1c2VkIHRvIGFkZCBnb29kIGFuZCB3cm9uZyB3b3JkcwotVGhlIHx6PXwgICAgICAgICAgY29tbWFuZCBjYW4gYmUgdXNlZCB0byBsaXN0IHN1Z2dlc3Rpb25zIGFuZCBjb3JyZWN0IHRoZSB3b3JkCitUaGUgfHo9fAkgIGNvbW1hbmQgY2FuIGJlIHVzZWQgdG8gbGlzdCBzdWdnZXN0aW9ucyBhbmQgY29ycmVjdCB0aGUgd29yZAogVGhlIHw6bWtzcGVsbHwgICAgY29tbWFuZCBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgVmltIHNwZWxsIGZpbGUgZnJvbSB3b3JkIGxpc3RzCiAKIFRoZSAidW5kZXJjdXJsIiBoaWdobGlnaHRpbmcgYXR0cmlidXRlIHdhcyBhZGRlZCB0byBuaWNlbHkgcG9pbnQgb3V0IHNwZWxsaW5nCkBAIC0zMjQsNyArMzI0LDcgQEAKIAogVG8gYmUgYWJsZSB0byBuYXZpZ2F0ZSB0aGUgdW5kbyBicmFuY2hlcyBlYWNoIGNoYW5nZSBpcyBudW1iZXJlZCBzZXF1ZW50aWFsbHkuCiBUaGUgY29tbWFuZHMgfGctfCBhbmQgfDplYXJsaWVyfCBnbyBiYWNrIGluIHRpbWUsIHRvIG9sZGVyIGNoYW5nZXMuICBUaGUKLWNvbW1hbmRzIHxnK3wgYW5kIHw6bGF0ZXJ8IGdvIGZvcndhcmQgaW4gdGltZSwgdG8gbmV3ZXIgY2hhbmdlcy4gIAorY29tbWFuZHMgfGcrfCBhbmQgfDpsYXRlcnwgZ28gZm9yd2FyZCBpbiB0aW1lLCB0byBuZXdlciBjaGFuZ2VzLgogCiBUaGUgY2hhbmdlcyBhcmUgYWxzbyB0aW1lc3RhbXBlZC4gIFVzZSAiOmVhcmxpZXIgMTBtIiB0byBnbyB0byB0aGUgdGV4dCBhcyBpdAogd2FzIGFib3V0IHRlbiBtaW51dGVzIGVhcmxpZXIuCkBAIC03NDgsNyArNzQ4LDcgQEAKIHw6c3BlbGx1bmRvfAkJUmVtb3ZlIGEgd29yZCBmcm9tIGxpc3Qgb2YgZ29vZCBhbmQgYmFkIHdvcmRzLgogCiB8Om16c2NoZW1lfAkJRXhlY3V0ZSBNelNjaGVtZSBjb21tYW5kcy4KLXw6bXpmaWxlfCAgIAkJRXhlY3V0ZSBhbiBNelNjaGVtZSBzY3JpcHQgZmlsZS4KK3w6bXpmaWxlfAkJRXhlY3V0ZSBhbiBNelNjaGVtZSBzY3JpcHQgZmlsZS4KIAogfDpuYmtleXwJCVBhc3MgYSBrZXkgdG8gTmV0QmVhbnMgZm9yIHByb2Nlc3NpbmcuCiAKQEAgLTgxNiw3ICs4MTYsNyBAQAogfGFyZ3YoKXwJCXdpdGhvdXQgYW4gYXJndW1lbnQgcmV0dXJuIHRoZSB3aG9sZSBhcmd1bWVudCBsaXN0CiB8YnJvd3NlZGlyKCl8CQlkaWFsb2cgdG8gc2VsZWN0IGEgZGlyZWN0b3J5CiB8YnVmbnIoKXwJCXRha2VzIGFuIGV4dHJhIGFyZ3VtZW50OiBjcmVhdGUgYnVmZmVyCi18Ynl0ZWlkeCgpfCAJCWluZGV4IG9mIGEgY2hhcmFjdGVyIChJbHlhIFNoZXIpCit8Ynl0ZWlkeCgpfAkJaW5kZXggb2YgYSBjaGFyYWN0ZXIgKElseWEgU2hlcikKIHxjYWxsKCl8CQljYWxsIGEgZnVuY3Rpb24gd2l0aCBMaXN0IGFzIGFyZ3VtZW50cwogfGNoYW5nZW5yKCl8CQludW1iZXIgb2YgY3VycmVudCBjaGFuZ2UKIHxjb21wbGV0ZSgpfAkJc2V0IG1hdGNoZXMgZm9yIEluc2VydCBtb2RlIGNvbXBsZXRpb24KQEAgLTgzNyw3ICs4MzcsNyBAQAogfGZpbHRlcigpfAkJcmVtb3ZlIHNlbGVjdGVkIGl0ZW1zIGZyb20gYSBMaXN0IG9yIERpY3Rpb25hcnkKIHxmaW5kZGlyKCl8CQlmaW5kIGEgZGlyZWN0b3J5IGluICdwYXRoJwogfGZpbmRmaWxlKCl8CQlmaW5kIGEgZmlsZSBpbiAncGF0aCcgKEpvaGFubmVzIFplbGxuZXIpCi18Zm9sZHRleHRyZXN1bHQoKXwgIAl0aGUgdGV4dCBkaXNwbGF5ZWQgZm9yIGEgY2xvc2VkIGZvbGQgYXQgbGluZSAibG51bSIKK3xmb2xkdGV4dHJlc3VsdCgpfAl0aGUgdGV4dCBkaXNwbGF5ZWQgZm9yIGEgY2xvc2VkIGZvbGQgYXQgbGluZSAibG51bSIKIHxmdW5jdGlvbigpfAkJbWFrZSBhIEZ1bmNyZWYgb3V0IG9mIGEgZnVuY3Rpb24gbmFtZQogfGdhcmJhZ2Vjb2xsZWN0KCl8CWNsZWFudXAgdW51c2VkIHxMaXN0c3wgYW5kIHxEaWN0aW9uYXJpZXN8IHdpdGggY2lyY3VsYXIKIAkJCXJlZmVyZW5jZXMKQEAgLTg0Niw3ICs4NDYsNyBAQAogCQkJKFllZ2FwcGFuIExha3NobWFuYW4pCiB8Z2V0Y21kdHlwZSgpfAkJcmV0dXJuIHRoZSBjdXJyZW50IGNvbW1hbmQtbGluZSB0eXBlCiAJCQkoWWVnYXBwYW4gTGFrc2htYW5hbikKLXxnZXRmb250bmFtZSgpfCAJZ2V0IGFjdHVhbCBmb250IG5hbWUgYmVpbmcgdXNlZAorfGdldGZvbnRuYW1lKCl8CQlnZXQgYWN0dWFsIGZvbnQgbmFtZSBiZWluZyB1c2VkCiB8Z2V0ZnBlcm0oKXwJCWdldCBmaWxlIHBlcm1pc3Npb24gc3RyaW5nIChOaWtvbGFpIFdlaWJ1bGwpCiB8Z2V0ZnR5cGUoKXwJCWdldCB0eXBlIG9mIGZpbGUgKE5pa29sYWkgV2VpYnVsbCkKIHxnZXRsaW5lKCl8CQl3aXRoIHNlY29uZCBhcmd1bWVudDogZ2V0IExpc3Qgd2l0aCBidWZmZXIgbGluZXMKQEAgLTg4NSwxMyArODg1LDEzIEBACiB8cmVsdGltZSgpfAkJZ2V0IHRpbWUgdmFsdWUsIHBvc3NpYmx5IHJlbGF0aXZlCiB8cmVsdGltZXN0cigpfAkJdHVybiBhIHRpbWUgdmFsdWUgaW50byBhIHN0cmluZwogfHJlbW92ZSgpfAkJcmVtb3ZlIG9uZSBvciBtb3JlIGl0ZW1zIGZyb20gYSBMaXN0IG9yIERpY3Rpb25hcnkKLXxyZXBlYXQoKXwgCQlyZXBlYXQgImV4cHIiICJjb3VudCIgdGltZXMgKENocmlzdG9waGUgUG91Y2V0KQorfHJlcGVhdCgpfAkJcmVwZWF0ICJleHByIiAiY291bnQiIHRpbWVzIChDaHJpc3RvcGhlIFBvdWNldCkKIHxyZXZlcnNlKCl8CQlyZXZlcnNlIHRoZSBvcmRlciBvZiBhIExpc3QKIHxzZWFyY2goKXwJCWV4dHJhIGFyZ3VtZW50OgogfHNlYXJjaGRlY2woKXwJCXNlYXJjaCBmb3IgZGVjbGFyYXRpb24gb2YgdmFyaWFibGUKIHxzZWFyY2hwYWlyKCl8CQlleHRyYSBhcmd1bWVudDogbGluZSB0byBzdG9wIHNlYXJjaGluZwogfHNlYXJjaHBhaXJwb3MoKXwJcmV0dXJuIGEgTGlzdCB3aXRoIHRoZSBwb3NpdGlvbiBvZiB0aGUgbWF0Y2gKLXxzZWFyY2hwb3MoKXwJICAgICAgICByZXR1cm4gYSBMaXN0IHdpdGggdGhlIHBvc2l0aW9uIG9mIHRoZSBtYXRjaAorfHNlYXJjaHBvcygpfAkJcmV0dXJuIGEgTGlzdCB3aXRoIHRoZSBwb3NpdGlvbiBvZiB0aGUgbWF0Y2gKIHxzZXRsb2NsaXN0KCl8CQltb2RpZnkgYSBsb2NhdGlvbiBsaXN0IChZZWdhcHBhbiBMYWtzaG1hbmFuKQogfHNldHBvcygpfAkJc2V0IGN1cnNvciBvciBtYXJrIHRvIGEgcG9zaXRpb24KIHxzZXRxZmxpc3QoKXwJCW1vZGlmeSBhIHF1aWNrZml4IGxpc3QgKFllZ2FwcGFuIExha3NobWFuYW4pCkBAIC05MjgsOCArOTI4LDggQEAKIHx2OnZhbHwJCQlpdGVtIHZhbHVlIGluIGEgfG1hcCgpfCBvciB8ZmlsdGVyKCl8IGZ1bmN0aW9uCiB8djprZXl8CQkJaXRlbSBrZXkgaW4gYSB8bWFwKCl8IG9yIHxmaWx0ZXIoKXwgZnVuY3Rpb24KIHx2OnByb2ZpbGluZ3wJCW5vbi16ZXJvIGFmdGVyIGEgIjpwcm9maWxlIHN0YXJ0IiBjb21tYW5kCi18djpmY3NfcmVhc29ufCAJCXRoZSByZWFzb24gd2h5IHxGaWxlQ2hhbmdlZFNoZWxsfCB3YXMgdHJpZ2dlcmVkCi18djpmY3NfY2hvaWNlfCAJCXdoYXQgc2hvdWxkIGhhcHBlbiBhZnRlciB8RmlsZUNoYW5nZWRTaGVsbHwKK3x2OmZjc19yZWFzb258CQl0aGUgcmVhc29uIHdoeSB8RmlsZUNoYW5nZWRTaGVsbHwgd2FzIHRyaWdnZXJlZAorfHY6ZmNzX2Nob2ljZXwJCXdoYXQgc2hvdWxkIGhhcHBlbiBhZnRlciB8RmlsZUNoYW5nZWRTaGVsbHwKIHx2OmJldmFsX2J1Zm5yfAkJYnVmZmVyIG51bWJlciBmb3IgJ2JhbGxvb25leHByJwogfHY6YmV2YWxfd2lubnJ8CQl3aW5kb3cgbnVtYmVyIGZvciAnYmFsbG9vbmV4cHInCiB8djpiZXZhbF9sbnVtfAkJbGluZSBudW1iZXIgZm9yICdiYWxsb29uZXhwcicKQEAgLTI4MjIsNSArMjgyMiwxMyBAQAogY3Vyc29yIGxlZnQgd2hlbiBpdCB3YXMgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgbGluZSwgZXZlbiB0aG91Z2ggaXQncyBhbGxvd2VkIHRvCiBiZSB0aGVyZS4KIAorQWRkZWQgdGVzdCBmb3IgdXNpbmcgdGFiIHBhZ2VzLgorCit0b3d1cHBlcigpIGFuZCB0b3dsb3dlcigpIHdlcmUgbm90IHVzZWQsIGJlY2F1c2Ugb2YgY2hlY2tpbmcgZm9yCitfX1NURENfX0lTT18xMDY0Nl9fIGluc3RlYWQgb2YgX19TVERDX0lTT18xMDY0Nl9fLiAoc2VydGFjeWlsZGl6KQorCitGb3IgIjptYXAgPGV4cHI+IiBmb3JiaWQgY2hhbmdpbmcgdGhlIHRleHQsIGp1bXBpbmcgdG8gYW5vdGhlciBidWZmZXIgYW5kCit1c2luZyAiOm5vcm1hbCIgdG8gYXZvaWQgbmFzdHkgc2lkZSBlZmZlY3RzLgorCiAKICB2aW06dHc9Nzg6dHM9ODpmdD1oZWxwOm5vcmw6CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy92aV9kaWZmLnR4dCBiL3J1bnRpbWUvZG9jL3ZpX2RpZmYudHh0CmluZGV4IGNiNDJkYjEuLjA0OGI4M2YgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3ZpX2RpZmYudHh0CisrKyBiL3J1bnRpbWUvZG9jL3ZpX2RpZmYudHh0CkBAIC0xLDQgKzEsNCBAQAotKnZpX2RpZmYudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBmLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisqdmlfZGlmZi50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGcuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3ZpbS1mci4xIGIvcnVudGltZS9kb2MvdmltLWZyLjEKaW5kZXggODIwOTg1Ny4uMzc1M2EzYiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdmltLWZyLjEKKysrIGIvcnVudGltZS9kb2MvdmltLWZyLjEKQEAgLTQ0LDcgKzQ0LDcgQEAKIHBsdXNpZXVycyBuaXZlYXV4LCBmZW7qdHJlcyBldCB0YW1wb25zIG11bHRpcGxlcywgY29sb3JhdGlvbiBzeW50YXhpcXVlLAog6WRpdGlvbiBlbiBsaWduZSBkZSBjb21tYW5kZSwgY29tcGzodGVtZW50IGRlcyBub21zIGRlIGZpY2hpZXJzLCBhaWRlIGVuCiBsaWduZSwgc+lsZWN0aW9uIHZpc3VlbGxlLCBldGMuCi1Wb2lyICI6aGVscCB2aV9kaWZmLnR4dCIgcG91ciB1biBy6XN1bekgZGVzIGRpZmbpcmVuY2VzIGVudHJlIAorVm9pciAiOmhlbHAgdmlfZGlmZi50eHQiIHBvdXIgdW4gculzdW3pIGRlcyBkaWZm6XJlbmNlcyBlbnRyZQogLkIgVmltCiBldCBWaS4KIC5QUApAQCAtOTYsNyArOTYsNyBAQAogXC1xIFtmaWNoaWVyZXJyZXVyc10KIETpbWFycmUgZW4gbW9kZSBNaXNlLWF1LXBvaW50IChRdWlja0ZpeCkuCiBMZSBmaWNoaWVyIFtmaWNoaWVyZXJyZXVyc10gZXN0IGx1IGV0IGxhIHByZW1p6HJlIGVycmV1ciBlc3QgYWZmaWNo6WUuCi1TaSBbZmljaGllcmVycmV1cnNdIGVzdCBvbWlzLCBsZSBub20gZHUgZmljaGllciBlc3QgbHUgZGFucyAKK1NpIFtmaWNoaWVyZXJyZXVyc10gZXN0IG9taXMsIGxlIG5vbSBkdSBmaWNoaWVyIGVzdCBsdSBkYW5zCiBsJ29wdGlvbiAnZXJyb3JmaWxlJyAoIkF6dGVjQy5FcnIiIHBhciBk6WZhdXQgc3VyIEFtaWdhLCAiZXJyb3JzLmVyciIgc3VyIGxlcwogYXV0cmVzIHN5c3TobWVzKS4KIExhIGNvbW1hbmRlICI6Y24iIHBlcm1ldCBkZSBzYXV0ZXIgYXV4IGVycmV1cnMgc3VpdmFudGVzLgpAQCAtMjU5LDcgKzI1OSw3IEBACiAuVFAKIFwtaAogRG9ubmUgdW5lIGFpZGUgc3VjY2ludGUgc3VyIGxlcyBhcmd1bWVudHMgZXQgbGVzIG9wdGlvbnMgZGUgbGEgbGlnbmUgZGUKLWNvbW1hbmRlLiBBcHLocyBjZWxhLCAKK2NvbW1hbmRlLiBBcHLocyBjZWxhLAogLkIgVmltCiBxdWl0dGUuCiAuVFAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3ZpbS1mci5VVEYtOC4xIGIvcnVudGltZS9kb2MvdmltLWZyLlVURi04LjEKaW5kZXggYTIxYWQwNi4uNzIwMDlmMiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdmltLWZyLlVURi04LjEKKysrIGIvcnVudGltZS9kb2MvdmltLWZyLlVURi04LjEKQEAgLTQ0LDcgKzQ0LDcgQEAKIHBsdXNpZXVycyBuaXZlYXV4LCBmZW7DqnRyZXMgZXQgdGFtcG9ucyBtdWx0aXBsZXMsIGNvbG9yYXRpb24gc3ludGF4aXF1ZSwKIMOpZGl0aW9uIGVuIGxpZ25lIGRlIGNvbW1hbmRlLCBjb21wbMOodGVtZW50IGRlcyBub21zIGRlIGZpY2hpZXJzLCBhaWRlIGVuCiBsaWduZSwgc8OpbGVjdGlvbiB2aXN1ZWxsZSwgZXRjLgotVm9pciAiOmhlbHAgdmlfZGlmZi50eHQiIHBvdXIgdW4gcsOpc3Vtw6kgZGVzIGRpZmbDqXJlbmNlcyBlbnRyZSAKK1ZvaXIgIjpoZWxwIHZpX2RpZmYudHh0IiBwb3VyIHVuIHLDqXN1bcOpIGRlcyBkaWZmw6lyZW5jZXMgZW50cmUKIC5CIFZpbQogZXQgVmkuCiAuUFAKQEAgLTk2LDcgKzk2LDcgQEAKIFwtcSBbZmljaGllcmVycmV1cnNdCiBEw6ltYXJyZSBlbiBtb2RlIE1pc2UtYXUtcG9pbnQgKFF1aWNrRml4KS4KIExlIGZpY2hpZXIgW2ZpY2hpZXJlcnJldXJzXSBlc3QgbHUgZXQgbGEgcHJlbWnDqHJlIGVycmV1ciBlc3QgYWZmaWNow6llLgotU2kgW2ZpY2hpZXJlcnJldXJzXSBlc3Qgb21pcywgbGUgbm9tIGR1IGZpY2hpZXIgZXN0IGx1IGRhbnMgCitTaSBbZmljaGllcmVycmV1cnNdIGVzdCBvbWlzLCBsZSBub20gZHUgZmljaGllciBlc3QgbHUgZGFucwogbCdvcHRpb24gJ2Vycm9yZmlsZScgKCJBenRlY0MuRXJyIiBwYXIgZMOpZmF1dCBzdXIgQW1pZ2EsICJlcnJvcnMuZXJyIiBzdXIgbGVzCiBhdXRyZXMgc3lzdMOobWVzKS4KIExhIGNvbW1hbmRlICI6Y24iIHBlcm1ldCBkZSBzYXV0ZXIgYXV4IGVycmV1cnMgc3VpdmFudGVzLgpAQCAtMjU5LDcgKzI1OSw3IEBACiAuVFAKIFwtaAogRG9ubmUgdW5lIGFpZGUgc3VjY2ludGUgc3VyIGxlcyBhcmd1bWVudHMgZXQgbGVzIG9wdGlvbnMgZGUgbGEgbGlnbmUgZGUKLWNvbW1hbmRlLiBBcHLDqHMgY2VsYSwgCitjb21tYW5kZS4gQXByw6hzIGNlbGEsCiAuQiBWaW0KIHF1aXR0ZS4KIC5UUApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdmltLWl0LjEgYi9ydW50aW1lL2RvYy92aW0taXQuMQppbmRleCBiN2U5ZGFiLi5kNzEyYWY0IDEwMDc1NQotLS0gYS9ydW50aW1lL2RvYy92aW0taXQuMQorKysgYi9ydW50aW1lL2RvYy92aW0taXQuMQpAQCAtMzYzLDE0ICszNjMsMTQgQEAKIFVzYSBpIGNvbWFuZGkgbmVsIGZpbGUge3ZpbXJjfSBwZXIgaW5pemlhbGl6emF6aW9uaS4KIFR1dHRlIGxlIGFsdHJlIGluaXppYWxpenphemlvbmkgbm9uIHNvbm8gZXNlZ3VpdGUuCiBVc2F0ZSBxdWVzdGEgb3B6aW9uZSBwZXIgZWRpdGFyZSBxdWFsY2hlIGZpbGUgZGkgdGlwbyBzcGVjaWFsZS4KLVB18iBhbmNoZSBlc3NlcmUgdXNhdG8gcGVyIG5vbiBmYXJlIGFsY3VuYSBpbml6aWFsaXp6YXppb25lIGRhbmRvIAorUHXyIGFuY2hlIGVzc2VyZSB1c2F0byBwZXIgbm9uIGZhcmUgYWxjdW5hIGluaXppYWxpenphemlvbmUgZGFuZG8KIGNvbWUgbm9tZSAiTk9ORSIuCiBWZWRlcmUgIjpoZWxwIGluaXRpYWxpemF0aW9uIiBkYSB2aW0gcGVyIHVsdGVyaW9yaSBkZXR0YWdsaS4KIC5UUAogXC1VIHtndmltcmN9CiBVc2EgaSBjb21hbmRpIG5lbCBmaWxlIHtndmltcmN9IHBlciBpbml6aWFsaXp6YXppb25pIEdVSS4KIFR1dHRlIGxlIGFsdHJlIGluaXppYWxpenphemlvbmkgR1VJIG5vbiBzb25vIGVzZWd1aXRlLgotUHXyIGFuY2hlIGVzc2VyZSB1c2F0YSBwZXIgbm9uIGZhcmUgYWxjdW5hIGluaXppYWxpenphemlvbmUgR1VJIGRhbmRvIAorUHXyIGFuY2hlIGVzc2VyZSB1c2F0YSBwZXIgbm9uIGZhcmUgYWxjdW5hIGluaXppYWxpenphemlvbmUgR1VJIGRhbmRvCiBjb21lIG5vbWUgIk5PTkUiLgogVmVkZXJlICI6aGVscCBndWktaW5pdCIgZGEgdmltIHBlciB1bHRlcmlvcmkgZGV0dGFnbGkuCiAuVFAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3ZpbS1pdC5VVEYtOC4xIGIvcnVudGltZS9kb2MvdmltLWl0LlVURi04LjEKaW5kZXggNDdkNjY4OC4uZjQxNjkxZCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdmltLWl0LlVURi04LjEKKysrIGIvcnVudGltZS9kb2MvdmltLWl0LlVURi04LjEKQEAgLTM2MywxNCArMzYzLDE0IEBACiBVc2EgaSBjb21hbmRpIG5lbCBmaWxlIHt2aW1yY30gcGVyIGluaXppYWxpenphemlvbmkuCiBUdXR0ZSBsZSBhbHRyZSBpbml6aWFsaXp6YXppb25pIG5vbiBzb25vIGVzZWd1aXRlLgogVXNhdGUgcXVlc3RhIG9wemlvbmUgcGVyIGVkaXRhcmUgcXVhbGNoZSBmaWxlIGRpIHRpcG8gc3BlY2lhbGUuCi1QdcOyIGFuY2hlIGVzc2VyZSB1c2F0byBwZXIgbm9uIGZhcmUgYWxjdW5hIGluaXppYWxpenphemlvbmUgZGFuZG8gCitQdcOyIGFuY2hlIGVzc2VyZSB1c2F0byBwZXIgbm9uIGZhcmUgYWxjdW5hIGluaXppYWxpenphemlvbmUgZGFuZG8KIGNvbWUgbm9tZSAiTk9ORSIuCiBWZWRlcmUgIjpoZWxwIGluaXRpYWxpemF0aW9uIiBkYSB2aW0gcGVyIHVsdGVyaW9yaSBkZXR0YWdsaS4KIC5UUAogXC1VIHtndmltcmN9CiBVc2EgaSBjb21hbmRpIG5lbCBmaWxlIHtndmltcmN9IHBlciBpbml6aWFsaXp6YXppb25pIEdVSS4KIFR1dHRlIGxlIGFsdHJlIGluaXppYWxpenphemlvbmkgR1VJIG5vbiBzb25vIGVzZWd1aXRlLgotUHXDsiBhbmNoZSBlc3NlcmUgdXNhdGEgcGVyIG5vbiBmYXJlIGFsY3VuYSBpbml6aWFsaXp6YXppb25lIEdVSSBkYW5kbyAKK1B1w7IgYW5jaGUgZXNzZXJlIHVzYXRhIHBlciBub24gZmFyZSBhbGN1bmEgaW5pemlhbGl6emF6aW9uZSBHVUkgZGFuZG8KIGNvbWUgbm9tZSAiTk9ORSIuCiBWZWRlcmUgIjpoZWxwIGd1aS1pbml0IiBkYSB2aW0gcGVyIHVsdGVyaW9yaSBkZXR0YWdsaS4KIC5UUApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdmltdHV0b3ItZnIuMSBiL3J1bnRpbWUvZG9jL3ZpbXR1dG9yLWZyLjEKaW5kZXggZTZhZTY0OC4uYWI1ZDI5OCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdmltdHV0b3ItZnIuMQorKysgYi9ydW50aW1lL2RvYy92aW10dXRvci1mci4xCkBAIC0yOCwxMiArMjgsMTIgQEAKIC5TSCBGSUNISUVSUwogLlRQIDE1CiAvdXNyL2xvY2FsL2xpYi92aW0vdHV0b3IvdHV0b3JbLmxhbmd1ZV0KLUxlcyBmaWNoaWVycyB0ZXh0ZXMgZGUgCitMZXMgZmljaGllcnMgdGV4dGVzIGRlCiAuQiBWaW10dXRvcgogXC4KIC5UUCAxNQogL3Vzci9sb2NhbC9saWIvdmltL3R1dG9yL3R1dG9yLnZpbQotTGUgc2NyaXB0IFZpbSB1dGlsaXPpIHBvdXIgY29waWVyIGxlcyBmaWNoaWVycyB0ZXh0ZSBkZSAKK0xlIHNjcmlwdCBWaW0gdXRpbGlz6SBwb3VyIGNvcGllciBsZXMgZmljaGllcnMgdGV4dGUgZGUKIC5CIFZpbXR1dG9yCiBcLgogLlNIIEFVVEVVUgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdmltdHV0b3ItZnIuVVRGLTguMSBiL3J1bnRpbWUvZG9jL3ZpbXR1dG9yLWZyLlVURi04LjEKaW5kZXggZTM2YzM0ZC4uYTQxZTE2MyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdmltdHV0b3ItZnIuVVRGLTguMQorKysgYi9ydW50aW1lL2RvYy92aW10dXRvci1mci5VVEYtOC4xCkBAIC0yOCwxMiArMjgsMTIgQEAKIC5TSCBGSUNISUVSUwogLlRQIDE1CiAvdXNyL2xvY2FsL2xpYi92aW0vdHV0b3IvdHV0b3JbLmxhbmd1ZV0KLUxlcyBmaWNoaWVycyB0ZXh0ZXMgZGUgCitMZXMgZmljaGllcnMgdGV4dGVzIGRlCiAuQiBWaW10dXRvcgogXC4KIC5UUCAxNQogL3Vzci9sb2NhbC9saWIvdmltL3R1dG9yL3R1dG9yLnZpbQotTGUgc2NyaXB0IFZpbSB1dGlsaXPDqSBwb3VyIGNvcGllciBsZXMgZmljaGllcnMgdGV4dGUgZGUgCitMZSBzY3JpcHQgVmltIHV0aWxpc8OpIHBvdXIgY29waWVyIGxlcyBmaWNoaWVycyB0ZXh0ZSBkZQogLkIgVmltdHV0b3IKIFwuCiAuU0ggQVVURVVSCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy92aXN1YWwudHh0IGIvcnVudGltZS9kb2MvdmlzdWFsLnR4dAppbmRleCBhNjMwZGY4Li5lOWZiYzcyIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy92aXN1YWwudHh0CisrKyBiL3J1bnRpbWUvZG9jL3Zpc3VhbC50eHQKQEAgLTEsNCArMSw0IEBACi0qdmlzdWFsLnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGYuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKKyp2aXN1YWwudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wZy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvd2luZG93cy50eHQgYi9ydW50aW1lL2RvYy93aW5kb3dzLnR4dAppbmRleCAxMGZmOWRlLi42NWQ1Y2YyIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy93aW5kb3dzLnR4dAorKysgYi9ydW50aW1lL2RvYy93aW5kb3dzLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp3aW5kb3dzLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKndpbmRvd3MudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy93b3Jrc2hvcC50eHQgYi9ydW50aW1lL2RvYy93b3Jrc2hvcC50eHQKaW5kZXggZDU4ZWYyOC4uNjk5OGI0YyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2Mvd29ya3Nob3AudHh0CisrKyBiL3J1bnRpbWUvZG9jL3dvcmtzaG9wLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp3b3Jrc2hvcC50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wZi4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKndvcmtzaG9wLnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBnLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEdvcmRvbiBQcmlldXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3h4ZC1mci4xIGIvcnVudGltZS9kb2MveHhkLWZyLjEKaW5kZXggYjAwMjUxYy4uZGZiYzI5MSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MveHhkLWZyLjEKKysrIGIvcnVudGltZS9kb2MveHhkLWZyLjEKQEAgLTExOCw3ICsxMTgsNyBAQAogT3DpcmF0aW9uIGludmVyc2UgOiBjb252ZXJ0aXQgdW4gZmljaGllciBoZXhhZOljaW1hbCBlbiB1biBmaWNoaWVyIGJpbmFpcmUgKG91CiBhcHBsaXF1ZSB1bmUgcnVzdGluZSDgIHVuIGZpY2hpZXIgYmluYWlyZSkuCiBTaSBsJ+ljcml0dXJlIG4nYSBwYXMgbGlldSBzdXIgbGEgc29ydGllIHN0YW5kYXJkLCB4eGQg6WNyaXQgZGFucyBsZSBmaWNoaWVyCi1xdSdpbCBwcm9kdWl0IHNhbnMgbGUgdHJvbnF1ZXIuIFV0aWxpc2V6IGxhIGNvbWJpbmFpc29uIAorcXUnaWwgcHJvZHVpdCBzYW5zIGxlIHRyb25xdWVyLiBVdGlsaXNleiBsYSBjb21iaW5haXNvbgogLkkgXC1yIFwtcAogcG91ciBsaXJlIGRlIGwnaGV4YWTpY2ltYWwgYnJ1dCBzYW5zIGluZm9ybWF0aW9uIHN1ciBsZSBudW3pcm8gZGVzIGxpZ25lcyBldAogc2FucyBmb3JtYXQgZGUgY29sb25uZXMgcGFydGljdWxpZXIuIERlcyBlc3BhY2VzIGJsYW5jcyBldCBjb3VwdXJlcyBkZSBsaWduZXMKQEAgLTE4MCw3ICsxODAsNyBAQAogXGZJJSB4eGQgXC1pIDwgZmljaGllclxmUgogLlBQCiAuSSB4eGQgXC1zIFwrc2VlawotcGV1dCBkaWZm6XJlciBkZSAKK3BldXQgZGlmZulyZXIgZGUKIC5JUiAieHhkIFwtcyBzZWVrIiAsCiBjYXIgbHNlZWsoMikgZXN0IHV0aWxpc+kgcG91ciCrIHJldmVuaXIgZW4gYXJyaehyZSC7LiBMZSAnKycgZmFpdCB1bmUKIGRpZmbpcmVuY2UgcXVhbmQgbGEgc291cmNlIGRlcyBkb25u6WVzIGVzdCBsJ2VudHLpZSBzdGFuZGFyZCBldCBzaSBsYSBwb3NpdGlvbgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MveHhkLWZyLlVURi04LjEgYi9ydW50aW1lL2RvYy94eGQtZnIuVVRGLTguMQppbmRleCBiYWI1NzJjLi43YmRiNjU1IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy94eGQtZnIuVVRGLTguMQorKysgYi9ydW50aW1lL2RvYy94eGQtZnIuVVRGLTguMQpAQCAtMTE4LDcgKzExOCw3IEBACiBPcMOpcmF0aW9uIGludmVyc2UgOiBjb252ZXJ0aXQgdW4gZmljaGllciBoZXhhZMOpY2ltYWwgZW4gdW4gZmljaGllciBiaW5haXJlIChvdQogYXBwbGlxdWUgdW5lIHJ1c3RpbmUgw6AgdW4gZmljaGllciBiaW5haXJlKS4KIFNpIGwnw6ljcml0dXJlIG4nYSBwYXMgbGlldSBzdXIgbGEgc29ydGllIHN0YW5kYXJkLCB4eGQgw6ljcml0IGRhbnMgbGUgZmljaGllcgotcXUnaWwgcHJvZHVpdCBzYW5zIGxlIHRyb25xdWVyLiBVdGlsaXNleiBsYSBjb21iaW5haXNvbiAKK3F1J2lsIHByb2R1aXQgc2FucyBsZSB0cm9ucXVlci4gVXRpbGlzZXogbGEgY29tYmluYWlzb24KIC5JIFwtciBcLXAKIHBvdXIgbGlyZSBkZSBsJ2hleGFkw6ljaW1hbCBicnV0IHNhbnMgaW5mb3JtYXRpb24gc3VyIGxlIG51bcOpcm8gZGVzIGxpZ25lcyBldAogc2FucyBmb3JtYXQgZGUgY29sb25uZXMgcGFydGljdWxpZXIuIERlcyBlc3BhY2VzIGJsYW5jcyBldCBjb3VwdXJlcyBkZSBsaWduZXMKQEAgLTE4MCw3ICsxODAsNyBAQAogXGZJJSB4eGQgXC1pIDwgZmljaGllclxmUgogLlBQCiAuSSB4eGQgXC1zIFwrc2VlawotcGV1dCBkaWZmw6lyZXIgZGUgCitwZXV0IGRpZmbDqXJlciBkZQogLklSICJ4eGQgXC1zIHNlZWsiICwKIGNhciBsc2VlaygyKSBlc3QgdXRpbGlzw6kgcG91ciDCqyByZXZlbmlyIGVuIGFycmnDqHJlIMK7LiBMZSAnKycgZmFpdCB1bmUKIGRpZmbDqXJlbmNlIHF1YW5kIGxhIHNvdXJjZSBkZXMgZG9ubsOpZXMgZXN0IGwnZW50csOpZSBzdGFuZGFyZCBldCBzaSBsYSBwb3NpdGlvbgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MveHhkLWl0LlVURi04LjEgYi9ydW50aW1lL2RvYy94eGQtaXQuVVRGLTguMQppbmRleCBmOTE5YTE4Li45ZTM3NDJkIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy94eGQtaXQuVVRGLTguMQorKysgYi9ydW50aW1lL2RvYy94eGQtaXQuVVRGLTguMQpAQCAtMTY5LDcgKzE2OSw3IEBACiBkYXRpIGVzYWRlY2ltYWxpICh2ZWRlcmUgb3B6aW9uZSBcLWMpLiBDacOyIGltcGxpY2EgcHVyZSBjaGUgbGUgbW9kaWZpY2hlIGFsbGUKIGNvbG9ubmUgZGkgY2FyYXR0ZXJpIHN0YW1wYWJpbGkgYXNjaWkgKG8gZWJjZGljKSBzb25vIHNlbXByZSBpZ25vcmF0ZS4KIExhIHJpY29zdHJ1emlvbmUgZGEgdW4gZmlsZSBpbW1hZ2luZSBlc2FkZWNpbWFsZSBpbiBzdGlsZSBzZW1wbGljZQotKHBvc3RzY3JpcHQpIGNvbiB4eGQgXC1yIFwtcCBub24gZGlwZW5kZSBkYWwgbnVtZXJvIGNvcnJyZXR0byBkaSBjb2xvbm5lLiAKKyhwb3N0c2NyaXB0KSBjb24geHhkIFwtciBcLXAgbm9uIGRpcGVuZGUgZGFsIG51bWVybyBjb3JycmV0dG8gZGkgY29sb25uZS4KIElOIHF1ZXN0byBjYXNvLCBxdWFsc2lhc2kgY29zYSBhc3NvbWlnbGkgYSB1bmEgY29wcGlhIGRpIGNpZnJlIGVzYWRlY2ltYWxpCiDDqCBpbnRlcnByZXRhdGEgW2UgdXRpbGl6emF0YV0uCiAuUFAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZmlsZXR5cGUudmltIGIvcnVudGltZS9maWxldHlwZS52aW0KaW5kZXggZmRlYjVmZC4uNzFhNDg1ZSAxMDA2NDQKLS0tIGEvcnVudGltZS9maWxldHlwZS52aW0KKysrIGIvcnVudGltZS9maWxldHlwZS52aW0KQEAgLTEsNyArMSw3IEBACiAiIFZpbSBzdXBwb3J0IGZpbGUgdG8gZGV0ZWN0IGZpbGUgdHlwZXMKICIKICIgTWFpbnRhaW5lcjoJQnJhbSBNb29sZW5hYXIgPEJyYW1AdmltLm9yZz4KLSIgTGFzdCBDaGFuZ2U6CTIwMDYgQXByIDI4CisiIExhc3QgQ2hhbmdlOgkyMDA2IEFwciAzMAogCiAiIExpc3RlbiB2ZXJ5IGNhcmVmdWxseSwgSSB3aWxsIHNheSB0aGlzIG9ubHkgb25jZQogaWYgZXhpc3RzKCJkaWRfbG9hZF9maWxldHlwZXMiKQpAQCAtMjA0OSw3ICsyMDQ5LDcgQEAKICIgbGlrZSBhcmUgdXNlZC4KIAogIiBBc3RlcmlzayBjb25maWcgZmlsZQotYXUgQnVmTmV3RmlsZSxCdWZSZWFkICphc3Rlcmlzay8qLmNvbmYqICAgICAgICAgY2FsbCBzOlN0YXJTZXRmKCdhc3RlcmlzaycpCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKmFzdGVyaXNrLyouY29uZioJCWNhbGwgczpTdGFyU2V0ZignYXN0ZXJpc2snKQogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICphc3RlcmlzayovKnZvaWNlbWFpbC5jb25mKiBjYWxsIHM6U3RhclNldGYoJ2FzdGVyaXNrdm0nKQogCiAiIEJJTkQgem9uZQpkaWZmIC0tZ2l0IGEvcnVudGltZS9mdHBsdWdpbi52aW0gYi9ydW50aW1lL2Z0cGx1Z2luLnZpbQppbmRleCA2NDI5NGNhLi5hNDM0YjkzIDEwMDY0NAotLS0gYS9ydW50aW1lL2Z0cGx1Z2luLnZpbQorKysgYi9ydW50aW1lL2Z0cGx1Z2luLnZpbQpAQCAtMSw3ICsxLDcgQEAKICIgVmltIHN1cHBvcnQgZmlsZSB0byBzd2l0Y2ggb24gbG9hZGluZyBwbHVnaW5zIGZvciBmaWxlIHR5cGVzCiAiCiAiIE1haW50YWluZXI6CUJyYW0gTW9vbGVuYWFyIDxCcmFtQHZpbS5vcmc+Ci0iIExhc3QgY2hhbmdlOgkyMDA2IE1hciAxOAorIiBMYXN0IGNoYW5nZToJMjAwNiBBcHIgMzAKIAogaWYgZXhpc3RzKCJkaWRfbG9hZF9mdHBsdWdpbiIpCiAgIGZpbmlzaApAQCAtMTAsMTMgKzEwLDEzIEBACiAKIGF1Z3JvdXAgZmlsZXR5cGVwbHVnaW4KICAgYXUgRmlsZVR5cGUgKiBjYWxsIHM6TG9hZEZUUGx1Z2luKCkKLSAKKwogICBmdW5jISBzOkxvYWRGVFBsdWdpbigpCiAgICAgaWYgZXhpc3RzKCJiOnVuZG9fZnRwbHVnaW4iKQogICAgICAgZXhlIGI6dW5kb19mdHBsdWdpbgogICAgICAgdW5sZXQhIGI6dW5kb19mdHBsdWdpbiBiOmRpZF9mdHBsdWdpbgogICAgIGVuZGlmCi0gICAKKwogICAgIGxldCBzID0gZXhwYW5kKCI8YW1hdGNoPiIpCiAgICAgaWYgcyAhPSAiIgogICAgICAgaWYgJmNwbyA9fiMgIlMiICYmIGV4aXN0cygiYjpkaWRfZnRwbHVnaW4iKQpkaWZmIC0tZ2l0IGEvcnVudGltZS9mdHBsdWdpbi9mbGV4d2lraS52aW0gYi9ydW50aW1lL2Z0cGx1Z2luL2ZsZXh3aWtpLnZpbQppbmRleCAxZTc0OWY2Li43NTEzZTY2IDEwMDY0NAotLS0gYS9ydW50aW1lL2Z0cGx1Z2luL2ZsZXh3aWtpLnZpbQorKysgYi9ydW50aW1lL2Z0cGx1Z2luL2ZsZXh3aWtpLnZpbQpAQCAtNTUsNSArNTUsNSBAQAogICBpZiB2OnZlcnNpb24gPj0gNzAwCiAgICAgICBpbWFwIDxidWZmZXI+IDxEb3duPiAgIDxDLW8+Z2oKICAgICAgIGltYXAgPGJ1ZmZlcj4gPFVwPiAgICAgPEMtbz5nawotICBlbmRpZiAKKyAgZW5kaWYKIGVuZGlmCmRpZmYgLS1naXQgYS9ydW50aW1lL2Z0cGx1Z2luL21hdGxhYi52aW0gYi9ydW50aW1lL2Z0cGx1Z2luL21hdGxhYi52aW0KaW5kZXggYzc1MzI2Ni4uMTgwMGRjOCAxMDA2NDQKLS0tIGEvcnVudGltZS9mdHBsdWdpbi9tYXRsYWIudmltCisrKyBiL3J1bnRpbWUvZnRwbHVnaW4vbWF0bGFiLnZpbQpAQCAtMyw4ICszLDggQEAKICIgTWFpbnRhaW5lcjoJSmFrZSBXYXNzZXJtYW4gPGp3YXNzZXJtYW4gYXQgZ21haWwgZG90IGNvbT4KICIgTGFzdCBDaGFuZ2VkOiAyMDA2IEphbiAxMgogCi1pZiBleGlzdHMoImI6ZGlkX2Z0cGx1Z2luIikgCi0JZmluaXNoIAoraWYgZXhpc3RzKCJiOmRpZF9mdHBsdWdpbiIpCisJZmluaXNoCiBlbmRpZgogbGV0IGI6ZGlkX2Z0cGx1Z2luID0gMQogCkBAIC0xMyw3ICsxMyw3IEBACiAKIGlmIGV4aXN0cygibG9hZGVkX21hdGNoaXQiKQogCWxldCBzOmNvbmRpdGlvbmFsRW5kID0gJ1woKFteKCldKlwpXEAhXDxlbmRcPlwoW14oKV0qKVwpXEAhJwotCWxldCBiOm1hdGNoX3dvcmRzID0gJ1w8aWZcPlx8XDx3aGlsZVw+XHxcPGZvclw+XHxcPHN3aXRjaFw+OicgLiAKKwlsZXQgYjptYXRjaF93b3JkcyA9ICdcPGlmXD5cfFw8d2hpbGVcPlx8XDxmb3JcPlx8XDxzd2l0Y2hcPjonIC4KIAkJXCBzOmNvbmRpdGlvbmFsRW5kIC4gJyxcPGlmXD46XDxlbHNlaWZcPjpcPGVsc2VcPjonIC4KIAkJXCBzOmNvbmRpdGlvbmFsRW5kCiBlbmRpZgpkaWZmIC0tZ2l0IGEvcnVudGltZS9mdHBsdWdpbi9zY2hlbWUudmltIGIvcnVudGltZS9mdHBsdWdpbi9zY2hlbWUudmltCmluZGV4IDAyMWMyM2EuLmY0Y2VlMGMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZnRwbHVnaW4vc2NoZW1lLnZpbQorKysgYi9ydW50aW1lL2Z0cGx1Z2luL3NjaGVtZS52aW0KQEAgLTEsNyArMSw3IEBACiAiIFZpbSBmaWxldHlwZSBwbHVnaW4KICIgTGFuZ3VhZ2U6ICAgICAgU2NoZW1lCiAiIE1haW50YWluZXI6ICAgIFNlcmdleSBLaG9yZXYgPHNlcmdleS5raG9yZXZAZ21haWwuY29tPgotIiBVUkw6CQkgaHR0cDovL2lhbXBoZXQubm0ucnUvdmltIAorIiBVUkw6CQkgaHR0cDovL2lhbXBoZXQubm0ucnUvdmltCiAiIE9yaWdpbmFsIGF1dGhvcjogICAgRG9yYWkgU2l0YXJhbSA8ZHMyNkBndGUuY29tPgogIiBPcmlnaW5hbCBVUkw6CQkgaHR0cDovL3d3dy5jY3MubmV1LmVkdS9+ZG9yYWkvdmltcGx1Z2lucy92aW1wbHVnaW5zLmh0bWwKICIgTGFzdCBDaGFuZ2U6ICAgTm92IDIyLCAyMDA0CmRpZmYgLS1naXQgYS9ydW50aW1lL2luZGVudC9HZW5lcmljSW5kZW50LnZpbSBiL3J1bnRpbWUvaW5kZW50L0dlbmVyaWNJbmRlbnQudmltCmluZGV4IDgzNTIzZGYuLjY3YWZkNzAgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvaW5kZW50L0dlbmVyaWNJbmRlbnQudmltCisrKyBiL3J1bnRpbWUvaW5kZW50L0dlbmVyaWNJbmRlbnQudmltCkBAIC0zMTksNCArMzE5LDQgQEAKICIKICIgQlVHUzogIFlvdSB0ZWxsIG1lISAgUHJvYmFibHkuICBJIGp1c3QgaGF2ZW4ndCBmb3VuZCBvbmUgeWV0IG9yIGhhdmVuJ3QgYmVlbgogIiAgICAgICAgdG9sZCBhYm91dCBvbmUuCi0iICAgICAgICAKKyIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvaW5kZW50L2FkYS52aW0gYi9ydW50aW1lL2luZGVudC9hZGEudmltCmluZGV4IDk2MDExODEuLjhjZjkxNWQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvaW5kZW50L2FkYS52aW0KKysrIGIvcnVudGltZS9pbmRlbnQvYWRhLnZpbQpAQCAtMSw3ICsxLDcgQEAKICIgVmltIGluZGVudCBmaWxlCiAiIExhbmd1YWdlOglBZGEKICIgTWFpbnRhaW5lcjoJTmVpbCBCaXJkIDxuZWlsQGZueHdlYi5jb20+Ci0iIExhc3QgQ2hhbmdlOgkyMDA0IE5vdiAyMworIiBMYXN0IENoYW5nZToJMjAwNiBBcHIgMzAKICIgVmVyc2lvbjoJJElkJAogIiBMb29rIGZvciB0aGUgbGF0ZXN0IHZlcnNpb24gYXQgaHR0cDovL3ZpbS5zb3VyY2Vmb3JnZS5uZXQvCiAiCkBAIC00NCwyNSArNDQsMjUgQEAKICAgIGxldCBsaW5lID0gc3Vic3RpdHV0ZSggZ2V0bGluZShsbnVtKSwgczpBZGFDb21tZW50LCAnJywgJycgKQogICAgd2hpbGUgbG51bSA+IDEKICAgICAgIGlmIGE6c3RvcF9hdCAhPSAnJyAgJiYgIGxpbmUgPX4gJ15ccyonIC4gYTpzdG9wX2F0ICAmJiAgaW5kZW50KGxudW0pIDwgYTpwcmV2X2luZGVudAotICAgICAgICAgcmV0dXJuIGE6cHJldl9pbmRlbnQKKwkgcmV0dXJuIGE6cHJldl9pbmRlbnQKICAgICAgIGVsc2VpZiBsaW5lID1+ICdeXHMqJyAuIGE6YmxvY2tzdGFydAotICAgICAgICAgbGV0IGluZCA9IGluZGVudChsbnVtKQotICAgICAgICAgaWYgaW5kIDwgYTpwcmV2X2luZGVudAotICAgICAgICAgICAgcmV0dXJuIGluZAotICAgICAgICAgZW5kaWYKKwkgbGV0IGluZCA9IGluZGVudChsbnVtKQorCSBpZiBpbmQgPCBhOnByZXZfaW5kZW50CisJICAgIHJldHVybiBpbmQKKwkgZW5kaWYKICAgICAgIGVuZGlmCiAKICAgICAgIGxldCBsbnVtID0gcHJldm5vbmJsYW5rKGxudW0gLSAxKQogICAgICAgIiBHZXQgcHJldmlvdXMgbm9uLWJsYW5rL25vbi1jb21tZW50LW9ubHkgbGluZQogICAgICAgd2hpbGUgMQotICAgICAgICAgbGV0IGxpbmUgPSBzdWJzdGl0dXRlKCBnZXRsaW5lKGxudW0pLCBzOkFkYUNvbW1lbnQsICcnLCAnJyApCi0gICAgICAgICBpZiBsaW5lICF+ICdeXHMqJCcgJiYgbGluZSAhfiAnXlxzKiMnCi0gICAgICAgICAgICBicmVhawotICAgICAgICAgZW5kaWYKLSAgICAgICAgIGxldCBsbnVtID0gcHJldm5vbmJsYW5rKGxudW0gLSAxKQotICAgICAgICAgaWYgbG51bSA8PSAwCi0gICAgICAgICAgICByZXR1cm4gYTpwcmV2X2luZGVudAotICAgICAgICAgZW5kaWYKKwkgbGV0IGxpbmUgPSBzdWJzdGl0dXRlKCBnZXRsaW5lKGxudW0pLCBzOkFkYUNvbW1lbnQsICcnLCAnJyApCisJIGlmIGxpbmUgIX4gJ15ccyokJyAmJiBsaW5lICF+ICdeXHMqIycKKwkgICAgYnJlYWsKKwkgZW5kaWYKKwkgbGV0IGxudW0gPSBwcmV2bm9uYmxhbmsobG51bSAtIDEpCisJIGlmIGxudW0gPD0gMAorCSAgICByZXR1cm4gYTpwcmV2X2luZGVudAorCSBlbmRpZgogICAgICAgZW5kd2hpbGUKICAgIGVuZHdoaWxlCiAgICAiIEZhbGxiYWNrIC0ganVzdCBtb3ZlIGJhY2sgb25lCkBAIC04MiwxNSArODIsMTUgQEAKICAgIHdoaWxlIGxudW0gPiAxCiAgICAgICBpZiBnZXRsaW5lKGxudW0pID1+ICdeXHMqJyAuIGE6YmxvY2tzdGFydAogCSBsZXQgaW5kID0gaW5kZW50KGxudW0pCi0gICAgICAgICBpZiBlbmRzIDw9IDAKLSAgICAgICAgICAgIGlmIGluZCA8IGE6cHJldl9pbmRlbnQKKwkgaWYgZW5kcyA8PSAwCisJICAgIGlmIGluZCA8IGE6cHJldl9pbmRlbnQKIAkgICAgICAgcmV0dXJuIGluZAotICAgICAgICAgICAgZW5kaWYKLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxldCBlbmRzID0gZW5kcyAtIDEKKwkgICAgZW5kaWYKKwkgZWxzZQorCSAgICBsZXQgZW5kcyA9IGVuZHMgLSAxCiAJIGVuZGlmCiAgICAgICBlbHNlaWYgZ2V0bGluZShsbnVtKSA9fiAnXlxzKicgLiBhOmJsb2NrZW5kCi0gICAgICAgICBsZXQgZW5kcyA9IGVuZHMgKyAxCisJIGxldCBlbmRzID0gZW5kcyArIDEKICAgICAgIGVuZGlmCiAKICAgICAgIGxldCBsbnVtID0gcHJldm5vbmJsYW5rKGxudW0gLSAxKQpAQCAtMTIyLDI1ICsxMjIsMjUgQEAKICAgICAgIGxldCBsbnVtID0gcHJldm5vbmJsYW5rKGxudW0gLSAxKQogICAgICAgIiBHZXQgcHJldmlvdXMgbm9uLWJsYW5rL25vbi1jb21tZW50LW9ubHkgbGluZQogICAgICAgd2hpbGUgMQotICAgICAgICAgbGV0IGxpbmUgPSBzdWJzdGl0dXRlKCBnZXRsaW5lKGxudW0pLCBzOkFkYUNvbW1lbnQsICcnLCAnJyApCi0gICAgICAgICBpZiBsaW5lICF+ICdeXHMqJCcgJiYgbGluZSAhfiAnXlxzKiMnCi0gICAgICAgICAgICBicmVhawotICAgICAgICAgZW5kaWYKLSAgICAgICAgIGxldCBsbnVtID0gcHJldm5vbmJsYW5rKGxudW0gLSAxKQotICAgICAgICAgaWYgbG51bSA8PSAwCi0gICAgICAgICAgICByZXR1cm4gYTpjdXJyZW50X2luZGVudAotICAgICAgICAgZW5kaWYKKwkgbGV0IGxpbmUgPSBzdWJzdGl0dXRlKCBnZXRsaW5lKGxudW0pLCBzOkFkYUNvbW1lbnQsICcnLCAnJyApCisJIGlmIGxpbmUgIX4gJ15ccyokJyAmJiBsaW5lICF+ICdeXHMqIycKKwkgICAgYnJlYWsKKwkgZW5kaWYKKwkgbGV0IGxudW0gPSBwcmV2bm9uYmxhbmsobG51bSAtIDEpCisJIGlmIGxudW0gPD0gMAorCSAgICByZXR1cm4gYTpjdXJyZW50X2luZGVudAorCSBlbmRpZgogICAgICAgZW5kd2hpbGUKICAgICAgICIgTGVhdmUgaW5kZW50IGFsb25lIGlmIG91ciAnOycgbGluZSBpcyBwYXJ0IG9mIGEgJzsnLWRlbGluZWF0ZWQKICAgICAgICIgYWdncmVnYXRlIChlLmcuLCBwcm9jZWR1cmUgYXJncy4pIG9yIGZpcnN0IGxpbmUgYWZ0ZXIgYSBibG9jayBzdGFydC4KICAgICAgIGlmIGxpbmUgPX4gczpBZGFCbG9ja1N0YXJ0IHx8IGxpbmUgPX4gJyhccyokJwotICAgICAgICAgcmV0dXJuIGE6Y3VycmVudF9pbmRlbnQKKwkgcmV0dXJuIGE6Y3VycmVudF9pbmRlbnQKICAgICAgIGVuZGlmCiAgICAgICBpZiBsaW5lICF+ICdbLj0oXVxzKiQnCi0gICAgICAgICBsZXQgaW5kID0gaW5kZW50KHByZXZfbG51bSkKLSAgICAgICAgIGlmIGluZCA8IGE6Y3VycmVudF9pbmRlbnQKLSAgICAgICAgICAgIHJldHVybiBpbmQKLSAgICAgICAgIGVuZGlmCisJIGxldCBpbmQgPSBpbmRlbnQocHJldl9sbnVtKQorCSBpZiBpbmQgPCBhOmN1cnJlbnRfaW5kZW50CisJICAgIHJldHVybiBpbmQKKwkgZW5kaWYKICAgICAgIGVuZGlmCiAgICBlbmR3aGlsZQogICAgIiBGYWxsYmFjayAtIGp1c3QgdXNlIGN1cnJlbnQgb25lCkBAIC0xNTksMTEgKzE1OSwxMSBAQAogICAgd2hpbGUgMQogICAgICAgbGV0IGxpbmUgPSBzdWJzdGl0dXRlKCBnZXRsaW5lKGxudW0pLCBzOkFkYUNvbW1lbnQsICcnLCAnJyApCiAgICAgICBpZiBsaW5lICF+ICdeXHMqJCcgJiYgbGluZSAhfiAnXlxzKiMnCi0gICAgICAgICBicmVhaworCSBicmVhawogICAgICAgZW5kaWYKICAgICAgIGxldCBsbnVtID0gcHJldm5vbmJsYW5rKGxudW0gLSAxKQogICAgICAgaWYgbG51bSA8PSAwCi0gICAgICAgICByZXR1cm4gaW5kCisJIHJldHVybiBpbmQKICAgICAgIGVuZGlmCiAgICBlbmR3aGlsZQogCkBAIC0xNzYsMTUgKzE3NiwxNSBAQAogICAgICAgIiBDaGVjayBmb3IgZmFsc2UgbWF0Y2hlcyB0byBBZGFCbG9ja1N0YXJ0CiAgICAgICBsZXQgZmFsc2VfbWF0Y2ggPSAwCiAgICAgICBpZiBsaW5lID1+ICdeXHMqXChwcm9jZWR1cmVcfGZ1bmN0aW9uXHxwYWNrYWdlXClcPi4qXDxpc1xzKm5ld1w+JwotICAgICAgICAgIiBHZW5lcmljIGluc3RhbnRpYXRpb24KLSAgICAgICAgIGxldCBmYWxzZV9tYXRjaCA9IDEKKwkgIiBHZW5lcmljIGluc3RhbnRpYXRpb24KKwkgbGV0IGZhbHNlX21hdGNoID0gMQogICAgICAgZWxzZWlmIGxpbmUgPX4gJylccyo7XHMqJCcgIHx8ICBsaW5lID1+ICdeXChbXihdKihbXildKilcKSpbXihdKjtccyokJwotICAgICAgICAgIiBmb3J3YXJkIGRlY2xhcmF0aW9uCi0gICAgICAgICBsZXQgZmFsc2VfbWF0Y2ggPSAxCisJICIgZm9yd2FyZCBkZWNsYXJhdGlvbgorCSBsZXQgZmFsc2VfbWF0Y2ggPSAxCiAgICAgICBlbmRpZgogICAgICAgIiBNb3ZlIGluZGVudCBpbgogICAgICAgaWYgISBmYWxzZV9tYXRjaAotICAgICAgICAgbGV0IGluZCA9IGluZCArICZzdworCSBsZXQgaW5kID0gaW5kICsgJnN3CiAgICAgICBlbmRpZgogICAgZWxzZWlmIGxpbmUgPX4gJ15ccypcKGNhc2VcfGV4Y2VwdGlvblwpXD4nCiAgICAgICAiIE1vdmUgaW5kZW50IGluIHR3aWNlIChuZXh0ICd3aGVuJyB3aWxsIG1vdmUgYmFjaykKQEAgLTE5OCwxMCArMTk4LDEwIEBACiAgICAgICBleGUgbG51bQogICAgICAgZXhlICdub3JtYWwhICRGKSUnCiAgICAgICBpZiBnZXRsaW5lKCcuJykgPX4gJ15ccyooJwotICAgICAgICAgIiBEaXJlIGxheW91dCAtIHVzZSBwcmV2aW91cyBpbmRlbnQgKGNvdWxkIGNoZWNrIGZvciBBZGFDb21tZW50IGhlcmUpCi0gICAgICAgICBsZXQgaW5kID0gaW5kZW50KCBwcmV2bm9uYmxhbmsoIGxpbmUoJy4nKS0xICkgKQorCSAiIERpcmUgbGF5b3V0IC0gdXNlIHByZXZpb3VzIGluZGVudCAoY291bGQgY2hlY2sgZm9yIEFkYUNvbW1lbnQgaGVyZSkKKwkgbGV0IGluZCA9IGluZGVudCggcHJldm5vbmJsYW5rKCBsaW5lKCcuJyktMSApICkKICAgICAgIGVsc2UKLSAgICAgICAgIGxldCBpbmQgPSBpbmRlbnQoJy4nKQorCSBsZXQgaW5kID0gaW5kZW50KCcuJykKICAgICAgIGVuZGlmCiAgICAgICBleGUgdjpsbnVtCiAgICBlbHNlaWYgbGluZSA9fiAnWy49KF1ccyokJwpAQCAtMjI3LDcgKzIyNyw3IEBACiAgICBlbHNlaWYgY29udGludWF0aW9uICYmIGxpbmUgPX4gJ15ccyooJwogICAgICAgIiBEb24ndCBkbyB0aGlzIGlmIHdlJ3ZlIGFscmVhZHkgaW5kZW50ZWQgZHVlIHRvIHRoZSBwcmV2aW91cyBsaW5lCiAgICAgICBpZiBpbmQgPT0gaW5pdGluZAotICAgICAgICAgbGV0IGluZCA9IGluZCArICZzdworCSBsZXQgaW5kID0gaW5kICsgJnN3CiAgICAgICBlbmRpZgogICAgZWxzZWlmIGxpbmUgPX4gJ15ccypcKGJlZ2luXHxpc1wpXD4nCiAgICAgICBsZXQgaW5kID0gczpNYWluQmxvY2tJbmRlbnQoIGluZCwgbG51bSwgJ1wocHJvY2VkdXJlXHxmdW5jdGlvblx8ZGVjbGFyZVx8cGFja2FnZVx8dGFza1wpXD4nLCAnYmVnaW5cPicgKQpkaWZmIC0tZ2l0IGEvcnVudGltZS9pbmRlbnQvYXV0b21ha2UudmltIGIvcnVudGltZS9pbmRlbnQvYXV0b21ha2UudmltCmluZGV4IDI4ZDc3YTguLjVmYmMyMjIgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvaW5kZW50L2F1dG9tYWtlLnZpbQorKysgYi9ydW50aW1lL2luZGVudC9hdXRvbWFrZS52aW0KQEAgLTEsNSArMSw1IEBACiAiIFZpbSBpbmRlbnQgZmlsZQotIiBMYW5ndWFnZTogICAgICAgICBhdXRvbWFrZQorIiBMYW5ndWFnZToJICAgIGF1dG9tYWtlCiAiIE1haW50YWluZXI6ICAgICAgIE5pa29sYWkgV2VpYnVsbCA8bm93QGJpdHdpLnNlPgogIiBMYXRlc3QgUmV2aXNpb246ICAyMDA2LTA0LTE5CiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvaW5kZW50L2NoLnZpbSBiL3J1bnRpbWUvaW5kZW50L2NoLnZpbQppbmRleCAxMmQ1ODNkLi5lMWJkOGEzIDEwMDY0NAotLS0gYS9ydW50aW1lL2luZGVudC9jaC52aW0KKysrIGIvcnVudGltZS9pbmRlbnQvY2gudmltCkBAIC0xLDkgKzEsOSBAQAogIiBWaW0gaW5kZW50IGZpbGUKICIgTGFuZ3VhZ2U6CUNoCi0iIE1haW50YWluZXI6ICAgU29mdEludGVncmF0aW9uLCBJbmMuIDxpbmZvQHNvZnRpbnRlZ3JhdGlvbi5jb20+Ci0iIFVSTDogICAgICAgICAgaHR0cDovL3d3dy5zb2Z0aW50ZWdyYXRpb24uY29tL2Rvd25sb2FkL3ZpbS9pbmRlbnQvY2gudmltCi0iIExhc3QgY2hhbmdlOiAgMjAwMyBBdWcgMDUKLSIgICAgICAgICAgICAgICBDcmVhdGVkIGJhc2VkIG9uIGNwcC52aW0KKyIgTWFpbnRhaW5lcjoJU29mdEludGVncmF0aW9uLCBJbmMuIDxpbmZvQHNvZnRpbnRlZ3JhdGlvbi5jb20+CisiIFVSTDoJCWh0dHA6Ly93d3cuc29mdGludGVncmF0aW9uLmNvbS9kb3dubG9hZC92aW0vaW5kZW50L2NoLnZpbQorIiBMYXN0IGNoYW5nZToJMjAwNiBBcHIgMzAKKyIJCUNyZWF0ZWQgYmFzZWQgb24gY3BwLnZpbQogIgogIiBDaCBpcyBhIEMvQysrIGludGVycHJldGVyIHdpdGggbWFueSBoaWdoIGxldmVsIGV4dGVuc2lvbnMKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9pbmRlbnQvY21ha2UudmltIGIvcnVudGltZS9pbmRlbnQvY21ha2UudmltCmluZGV4IGExYWQ4MzIuLjQ2MTg0YzYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvaW5kZW50L2NtYWtlLnZpbQorKysgYi9ydW50aW1lL2luZGVudC9jbWFrZS52aW0KQEAgLTEsMTEgKzEsMTEgQEAKICIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSIgCisiCiAiICAgUHJvZ3JhbTogICBDTWFrZSAtIENyb3NzLVBsYXRmb3JtIE1ha2VmaWxlIEdlbmVyYXRvcgogIiAgIE1vZHVsZTogICAgJFJDU2ZpbGUkCiAiICAgTGFuZ3VhZ2U6ICBWSU0KICIgICBEYXRlOiAgICAgICREYXRlJAogIiAgIFZlcnNpb246ICAgJFJldmlzaW9uJAotIiAKKyIKICIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogIiBWaW0gaW5kZW50IGZpbGUKZGlmZiAtLWdpdCBhL3J1bnRpbWUvaW5kZW50L2NvbmZpZy52aW0gYi9ydW50aW1lL2luZGVudC9jb25maWcudmltCmluZGV4IGQ3NjNkYjAuLjc3YjRlYmYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvaW5kZW50L2NvbmZpZy52aW0KKysrIGIvcnVudGltZS9pbmRlbnQvY29uZmlnLnZpbQpAQCAtMSwxNiArMSwxNiBAQAogIiBWaW0gaW5kZW50IGZpbGUKLSIgTGFuZ3VhZ2U6ICAgICAgICAgQXV0b2NvbmYgY29uZmlndXJlLnthYyxpbn0gZmlsZQotIiBNYWludGFpbmVyOiAgICAgICBOaWtvbGFpIFdlaWJ1bGwgPG5vd0BiaXR3aS5zZT4KKyIgTGFuZ3VhZ2U6CSAgICBBdXRvY29uZiBjb25maWd1cmUue2FjLGlufSBmaWxlCisiIE1haW50YWluZXI6CSAgICBOaWtvbGFpIFdlaWJ1bGwgPG5vd0BiaXR3aS5zZT4KICIgTGF0ZXN0IFJldmlzaW9uOiAgMjAwNi0wNC0xOQotIiBUT0RPOiAgICAgICAgICAgICBob3cgYWJvdXQgbmVzdGVkIFsoKV0ncyBpbiBvbmUgbGluZQotIiAgICAgICAgICAgICAgICAgICB3aGF0J3Mgd3Jvbmcgd2l0aCAnXFxcQCEnPworIiBUT0RPOgkJICAgIGhvdyBhYm91dCBuZXN0ZWQgWygpXSdzIGluIG9uZSBsaW5lCisiCQkgICAgd2hhdCdzIHdyb25nIHdpdGggJ1xcXEAhJz8KIAogIiBPbmx5IGxvYWQgdGhpcyBpbmRlbnQgZmlsZSB3aGVuIG5vIG90aGVyIHdhcyBsb2FkZWQuCiBpZiBleGlzdHMoImI6ZGlkX2luZGVudCIpCiAgIGZpbmlzaAogZW5kaWYKIAotcnVudGltZSEgaW5kZW50L3NoLnZpbSAgICAgICAgICAiIHdpbGwgc2V0IGI6ZGlkX2luZGVudAorcnVudGltZSEgaW5kZW50L3NoLnZpbQkJIiB3aWxsIHNldCBiOmRpZF9pbmRlbnQKIAogc2V0bG9jYWwgaW5kZW50ZXhwcj1HZXRDb25maWdJbmRlbnQoKQogc2V0bG9jYWwgaW5kZW50a2V5cz0hXkYsbyxPLD10aGVuLD1kbyw9ZWxzZSw9ZWxpZiw9ZXNhYyw9ZmksPWZpbiw9ZmlsLD1kb25lCmRpZmYgLS1naXQgYS9ydW50aW1lL2luZGVudC9jc3MudmltIGIvcnVudGltZS9pbmRlbnQvY3NzLnZpbQppbmRleCA4YzZmMTE0Li5iZTFjNGQ3IDEwMDY0NAotLS0gYS9ydW50aW1lL2luZGVudC9jc3MudmltCisrKyBiL3J1bnRpbWUvaW5kZW50L2Nzcy52aW0KQEAgLTIyLDEyICsyMiwxMiBAQAogICAgIGxldCBsaW5lID0gZ2V0bGluZShsbnVtKQogICAgIGlmIGxpbmUgPX4gJ1wqLycKICAgICAgIHdoaWxlIGxudW0gPiAxICYmIGxpbmUgIX4gJy9cKicKLSAgICAgICAgbGV0IGxudW0gLT0gMQorCWxldCBsbnVtIC09IDEKICAgICAgIGVuZHdoaWxlCiAgICAgICBpZiBsaW5lID1+ICdeXHMqL1wqJwotICAgICAgICBsZXQgbG51bSAtPSAxCisJbGV0IGxudW0gLT0gMQogICAgICAgZWxzZQotICAgICAgICBicmVhaworCWJyZWFrCiAgICAgICBlbmRpZgogICAgIGVsc2UKICAgICAgIGJyZWFrCkBAIC00NSwxMyArNDUsMTMgQEAKICAgd2hpbGUgaSAhPSAtMQogICAgIGlmIHN5bklEYXR0cihzeW5JRChhOmxudW0sIGkgKyAxLCAwKSwgJ25hbWUnKSAhfiAnY3NzXCUoQ29tbWVudFx8U3RyaW5nUVx7MSwyfVwpJwogICAgICAgaWYgbGluZVtpXSA9PSAneycKLSAgICAgICAgbGV0IG5fb3BlbiArPSAxCisJbGV0IG5fb3BlbiArPSAxCiAgICAgICBlbHNlaWYgbGluZVtpXSA9PSAnfScKLSAgICAgICAgaWYgbl9vcGVuID4gMAotICAgICAgICAgIGxldCBuX29wZW4gLT0gMQotICAgICAgICBlbHNlCi0gICAgICAgICAgbGV0IG5fY2xvc2UgKz0gMQotICAgICAgICBlbmRpZgorCWlmIG5fb3BlbiA+IDAKKwkgIGxldCBuX29wZW4gLT0gMQorCWVsc2UKKwkgIGxldCBuX2Nsb3NlICs9IDEKKwllbmRpZgogICAgICAgZW5kaWYKICAgICBlbmRpZgogICAgIGxldCBpID0gbWF0Y2gobGluZSwgcGF0dGVybiwgaSArIDEpCmRpZmYgLS1naXQgYS9ydW50aW1lL2luZGVudC9kb2Niay52aW0gYi9ydW50aW1lL2luZGVudC9kb2Niay52aW0KaW5kZXggYjhhZjVmMi4uM2ZkZTJhMSAxMDA2NDQKLS0tIGEvcnVudGltZS9pbmRlbnQvZG9jYmsudmltCisrKyBiL3J1bnRpbWUvaW5kZW50L2RvY2JrLnZpbQpAQCAtMSw1ICsxLDUgQEAKICIgVmltIGluZGVudCBmaWxlCi0iIExhbmd1YWdlOiAgICAgICAgIERvY0Jvb2sgRG9jdW1lbnRhdGlvbiBGb3JtYXQKKyIgTGFuZ3VhZ2U6CSAgICBEb2NCb29rIERvY3VtZW50YXRpb24gRm9ybWF0CiAiIE1haW50YWluZXI6ICAgICAgIE5pa29sYWkgV2VpYnVsbCA8bm93QGJpdHdpLnNlPgogIiBMYXRlc3QgUmV2aXNpb246ICAyMDA2LTA0LTE5CiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvaW5kZW50L2V0ZXJtLnZpbSBiL3J1bnRpbWUvaW5kZW50L2V0ZXJtLnZpbQppbmRleCA3MzA5MjQwLi43NDI0ZDkxIDEwMDY0NAotLS0gYS9ydW50aW1lL2luZGVudC9ldGVybS52aW0KKysrIGIvcnVudGltZS9pbmRlbnQvZXRlcm0udmltCkBAIC0xLDUgKzEsNSBAQAogIiBWaW0gaW5kZW50IGZpbGUKLSIgTGFuZ3VhZ2U6ICAgICAgICAgRXRlcm0gY29uZmlndXJhdGlvbiBmaWxlCisiIExhbmd1YWdlOgkgICAgRXRlcm0gY29uZmlndXJhdGlvbiBmaWxlCiAiIE1haW50YWluZXI6ICAgICAgIE5pa29sYWkgV2VpYnVsbCA8bm93QGJpdHdpLnNlPgogIiBMYXRlc3QgUmV2aXNpb246ICAyMDA2LTA0LTE5CiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvaW5kZW50L2h0bWwudmltIGIvcnVudGltZS9pbmRlbnQvaHRtbC52aW0KaW5kZXggNmMyZDQ5OS4uY2ZlYTdkOCAxMDA2NDQKLS0tIGEvcnVudGltZS9pbmRlbnQvaHRtbC52aW0KKysrIGIvcnVudGltZS9pbmRlbnQvaHRtbC52aW0KQEAgLTEsNyArMSw3IEBACiAiIERlc2NyaXB0aW9uOglodG1sIGluZGVudGVyCiAiIEF1dGhvcjoJSm9oYW5uZXMgWmVsbG5lciA8am9oYW5uZXNAemVsbG5lci5vcmc+CiAiIExhc3QgQ2hhbmdlOglUdWUsIDI3IEFwciAyMDA0IDEwOjI4OjM5IENFU1QKLSIgR2xvYmFsczoJZzpodG1sX2luZGVudF90YWdzICAgICAgICAgLS0gaW5kZW50aW5nIHRhZ3MKKyIgR2xvYmFsczoJZzpodG1sX2luZGVudF90YWdzCSAgIC0tIGluZGVudGluZyB0YWdzCiAiCQlnOmh0bWxfaW5kZW50X3N0cmljdCAgICAgICAtLSBpbmhpYml0ICdPIE8nIGVsZW1lbnRzCiAiCQlnOmh0bWxfaW5kZW50X3N0cmljdF90YWJsZSAtLSBpbmhpYml0ICdPIC0nIGVsZW1lbnRzCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvaW5kZW50L21ha2UudmltIGIvcnVudGltZS9pbmRlbnQvbWFrZS52aW0KaW5kZXggNjU2NzA1Ni4uM2ZlNWE0OSAxMDA2NDQKLS0tIGEvcnVudGltZS9pbmRlbnQvbWFrZS52aW0KKysrIGIvcnVudGltZS9pbmRlbnQvbWFrZS52aW0KQEAgLTEsNiArMSw2IEBACiAiIFZpbSBpbmRlbnQgZmlsZQotIiBMYW5ndWFnZTogICAgICAgICBNYWtlZmlsZQotIiBNYWludGFpbmVyOiAgICAgICBOaWtvbGFpIFdlaWJ1bGwgPG5vd0BiaXR3aS5zZT4KKyIgTGFuZ3VhZ2U6CSAgICBNYWtlZmlsZQorIiBNYWludGFpbmVyOgkgICAgTmlrb2xhaSBXZWlidWxsIDxub3dAYml0d2kuc2U+CiAiIExhdGVzdCBSZXZpc2lvbjogIDIwMDYtMDQtMjYKIAogaWYgZXhpc3RzKCJiOmRpZF9pbmRlbnQiKQpAQCAtMjIsNyArMjIsNyBAQAogCiAiIFRPRE86IERlYWwgd2l0aCBjb21tZW50cywgc3RyaW5nLCBhbmQgYWxsIGtpbmRzIG9mIG90aGVyIGNyYXAsIGUuZy4sIGRlZmluZXMuCiAiIFRPRE86IFVud3JhcCB0aGUgd2hvbGUgbG9naWMgb2YgdGhpcyBmdW5jdGlvbiBpbnRvIHNvbWV0aGluZyB0aGF0IHJlcXVpcmVzIGEKLSIgbG90IGxlc3Mg4oCccmV0dXJu4oCdcy4KKyIgbG90IGxlc3MgJ3JldHVybidzLgogZnVuY3Rpb24gR2V0TWFrZUluZGVudCgpCiAgIGxldCBsbnVtID0gdjpsbnVtIC0gMQogICBpZiBsbnVtID09IDAKQEAgLTMwLDkyICszMCw5MiBAQAogICBlbmRpZgogCiAgICIgRmlndXJlIG91dCBpZiB0aGUgcHJldmlvdXMgbGluZSBpcyBwYXJ0IG9mIGEgcnVsZSBvciBub3QuICBJZiBpdCBpcywgdGhlbgotICAiIHdlIG1vcmUgb3IgbGVzcyBqdXN0IGluZGVudCBieSBhIOKAmHRhYnN0b3DigJksIHRoZSBwcmV2aW91c+KAmSBsaW5lcyBpbmRlbnQsIG9yCisgICIgd2UgbW9yZSBvciBsZXNzIGp1c3QgaW5kZW50IGJ5IGEgJ3RhYnN0b3AnLCB0aGUgcHJldmlvdXMnIGxpbmVzIGluZGVudCwgb3IKICAgIiByZW1vdmUgYWxsIGluZGVudCBpZiB0aGUgY3VycmVudCBsaW5lIGlzIGl0c2VsZiBhIHJ1bGUuICBBbHNvLCBpZiB0aGUgbGluZQogICAiIGluIHF1ZXN0aW9uIGlzIHBhcnQgb2YgYSBjb250aW51YXRpb24tbGluZSBzZXQgY29uc3RpdHV0aW5nIHRoZSBydWxlIGxpbmUKLSAgIiBpdHNlbGYsIHdlIGluZGVudCBieSBlaXRoZXIgYSDigJhzaGlmdHdpZHRo4oCZLCBpZiB0aGUgbGluZSBpcyB0aGUgZmlyc3QgaW4gdGhlCisgICIgaXRzZWxmLCB3ZSBpbmRlbnQgYnkgZWl0aGVyIGEgJ3NoaWZ0d2lkdGgnLCBpZiB0aGUgbGluZSBpcyB0aGUgZmlyc3QgaW4gdGhlCiAgICIgY29udGludWF0aW9uLCBvciB1c2UgdGhlIGluZGVudCBvZiB0aGUgcHJldmlvdXMgbGluZSwgaWYgbm90LgogICB3aGlsZSBsbnVtID4gMAogICAgIGxldCBsaW5lID0gZ2V0bGluZShsbnVtKQogICAgIGlmIGxpbmVbMF0gIT0gIlx0IgotICAgICAgIiBXZSBmb3VuZCBhIG5vbi1zaGVsbC1jb21tYW5kIGxpbmUsIGkuZS4sIG9uZSB0aGF0IGRvZXNu4oCZdCBoYXZlIGEKKyAgICAgICIgV2UgZm91bmQgYSBub24tc2hlbGwtY29tbWFuZCBsaW5lLCBpLmUuLCBvbmUgdGhhdCBkb2Vzbid0IGhhdmUgYQogICAgICAgIiBsZWFkaW5nIHRhYi4KICAgICAgIGlmIGxpbmUgPX4gczpydWxlX3J4Ci0gICAgICAgICIgVGhlIGxpbmUgbG9va3MgbGlrZSBhIHJ1bGUgbGluZSwgc28gd2UgbXVzdCB0aGVyZWZvcmUgZWl0aGVyIGJlIGluc2lkZSBhCi0gICAgICAgICIgcnVsZSBvciB3ZSBhcmUgYSBjb250aW51YXRpb24gbGluZSB0byB0aGF0IHJ1bGUgbGluZS4KLSAgICAgICAgaWYgbGluZSA9fiBzOmNvbnRpbnVhdGlvbl9yeAotICAgICAgICAgICIgQWgsIHRoZSBydWxlIGxpbmUgd2FzIGNvbnRpbnVlZCwgc28gbG9vayB1cCB0aGUgbGFzdCBjb250aW51YXRpb24KLSAgICAgICAgICAiIGxpbmUgdGhhdOKAmXMgYWJvdmUgdGhlIGN1cnJlbnQgbGluZS4KLSAgICAgICAgICB3aGlsZSBsaW5lID1+IHM6Y29udGludWF0aW9uX3J4ICYmIGxudW0gPCB2OmxudW0KLSAgICAgICAgICAgIGxldCBsbnVtICs9IDEKLSAgICAgICAgICAgIGxldCBsaW5lID0gZ2V0bGluZShsbnVtKQotICAgICAgICAgIGVuZHdoaWxlCi0gICAgICAgICAgbGV0IGxudW0gLT0gMQotICAgICAgICAgIGxldCBsaW5lID0gZ2V0bGluZShsbnVtKQotICAgICAgICBlbmRpZgorCSIgVGhlIGxpbmUgbG9va3MgbGlrZSBhIHJ1bGUgbGluZSwgc28gd2UgbXVzdCB0aGVyZWZvcmUgZWl0aGVyIGJlIGluc2lkZSBhCisJIiBydWxlIG9yIHdlIGFyZSBhIGNvbnRpbnVhdGlvbiBsaW5lIHRvIHRoYXQgcnVsZSBsaW5lLgorCWlmIGxpbmUgPX4gczpjb250aW51YXRpb25fcngKKwkgICIgQWgsIHRoZSBydWxlIGxpbmUgd2FzIGNvbnRpbnVlZCwgc28gbG9vayB1cCB0aGUgbGFzdCBjb250aW51YXRpb24KKwkgICIgbGluZSB0aGF0J3MgYWJvdmUgdGhlIGN1cnJlbnQgbGluZS4KKwkgIHdoaWxlIGxpbmUgPX4gczpjb250aW51YXRpb25fcnggJiYgbG51bSA8IHY6bG51bQorCSAgICBsZXQgbG51bSArPSAxCisJICAgIGxldCBsaW5lID0gZ2V0bGluZShsbnVtKQorCSAgZW5kd2hpbGUKKwkgIGxldCBsbnVtIC09IDEKKwkgIGxldCBsaW5lID0gZ2V0bGluZShsbnVtKQorCWVuZGlmCiAKLSAgICAgICAgIiBJZiB0aGUgbGluZSB0aGF0IHdl4oCZdmUgZm91bmQgaXMgcmlnaHQgYWJvdmUgdGhlIGN1cnJlbnQgbGluZSwgZGVhbAotICAgICAgICAiIHdpdGggaXQgc3BlY2lmaWNhbGx5LgotICAgICAgICBpZiBsbnVtID09IHY6bG51bSAtIDEKLSAgICAgICAgICAiIElmIGl0IHdhcyBjb250aW51ZWQsIGluZGVudCB0aGUgY3VycmVudCBsaW5lIGJ5IGEgc2hpZnR3aWR0aCwgYXMgaXQKLSAgICAgICAgICAiIGlzIHRoZSBmaXJzdCB0byBmb2xsb3cgaXQuICBPdGhlcndpc2UsIGRlcGVuZGluZyBvbiBpZiB0aGUgY3VycmVudAotICAgICAgICAgICIgbGluZSBpcyBhIHJ1bGUgbGluZSwgaS5lLCBhIHJ1bGUgbGluZSBmb2xsb3dpbmcgYW5vdGhlciBydWxlIGxpbmUsCi0gICAgICAgICAgIiB0aGVuIGluZGVudCB0byB0aGUgbGVmdCBtYXJnaW4uICBPdGhlcndpc2UsIHRoZSBjdXJyZW50IGxpbmUgaXMgdGhlCi0gICAgICAgICAgIiBmaXJzdCBzaGVsbC1jb21tYW5kIGxpbmUgaW4gdGhlIHJ1bGUsIHNvIGluZGVudCBieSBhIOKAmHRhYnN0b3DigJkKLSAgICAgICAgICBpZiBsaW5lID1+IHM6Y29udGludWF0aW9uX3J4Ci0gICAgICAgICAgICByZXR1cm4gJnN3Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIGdldGxpbmUodjpsbnVtKSA9fiBzOnJ1bGVfcnggPyAwIDogJnRzCi0gICAgICAgICAgZW5kaWYKLSAgICAgICAgZWxzZQotICAgICAgICAgICIgSWYgdGhlIHByZXZpb3VzIGxpbmUgd2FzIGEgY29udGludWF0aW9uIGxpbmUsIHRoZW4gdW5sZXNzIGl0IHdhcwotICAgICAgICAgICIgaXRzZWxmIGEgcGFydCBvZiBhIGNvbnRpbnVhdGlvbiBsaW5lLCBhZGQgYSDigJhzaGlmdHdpZHRo4oCZ4oCZcyB3b3J0aCBvZgotICAgICAgICAgICIgaW5kZW50LiAgT3RoZXJ3aXNlLCBqdXN0IHVzZSB0aGUgaW5kZW50IG9mIHRoZSBwcmV2aW91cyBsaW5lLgotICAgICAgICAgICIgT3RoZXJ3aXNlLCBpZiB0aGUgcHJldmlvdXMgbGluZSB3YXNu4oCZdCBhIGNvbnRpbnVhdGlvbiBsaW5lLCBjaGVjawotICAgICAgICAgICIgaWYgdGhlIG9uZSBhYm92ZSBpdCB3YXMuICBJZiBpdCB3YXMgdGhlbiBpbmRlbnQgdG8gd2hhdGV2ZXIgbGV2ZWwKLSAgICAgICAgICAiIHRoZSDigJxvd25pbmfigJ0gbGluZSBoYWQuICBPdGhlcndpc2UsIGluZGVudCB0byB0aGUgcHJldmlvdXMgbGluZeKAmXMKLSAgICAgICAgICAiIGxldmVsLgotICAgICAgICAgIGxldCBsbnVtID0gdjpsbnVtIC0gMQotICAgICAgICAgIGxldCBsaW5lID0gZ2V0bGluZShsbnVtKQotICAgICAgICAgIGlmIGxpbmUgPX4gczpjb250aW51YXRpb25fcngKLSAgICAgICAgICAgIGxldCBwbnVtID0gdjpsbnVtIC0gMgotICAgICAgICAgICAgbGV0IHBpbmUgPSBnZXRsaW5lKHBudW0pCi0gICAgICAgICAgICBpZiBwaW5lID1+IHM6Y29udGludWF0aW9uX3J4Ci0gICAgICAgICAgICAgIHJldHVybiBpbmRlbnQobG51bSkKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgcmV0dXJuIGluZGVudChsbnVtKSArICZzdwotICAgICAgICAgICAgZW5kaWYKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBsZXQgbG51bSA9IHY6bG51bSAtIDIKLSAgICAgICAgICAgIGxldCBsaW5lID0gZ2V0bGluZShsbnVtKQotICAgICAgICAgICAgaWYgbGluZSA9fiBzOmNvbnRpbnVhdGlvbl9yeAotICAgICAgICAgICAgICB3aGlsZSBsbnVtID4gMAotICAgICAgICAgICAgICAgIGlmIGxpbmUgIX4gczpjb250aW51YXRpb25fcngKLSAgICAgICAgICAgICAgICAgIGxldCBsbnVtICs9IDEKLSAgICAgICAgICAgICAgICAgIGxldCBsaW5lID0gZ2V0bGluZShsbnVtKQotICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBlbmRpZgotICAgICAgICAgICAgICAgIGxldCBsbnVtIC09IDEKLSAgICAgICAgICAgICAgICBsZXQgbGluZSA9IGdldGxpbmUobG51bSkKLSAgICAgICAgICAgICAgZW5kd2hpbGUKLSAgICAgICAgICAgICAgIiBXZeKAmXZlIGZvdW5kIHRoZSBvd25pbmcgbGluZS4gIEluZGVudCB0byBpdOKAmXMgbGV2ZWwuCi0gICAgICAgICAgICAgIHJldHVybiBpbmRlbnQobG51bSkKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgcmV0dXJuIGluZGVudCh2OmxudW0gLSAxKQotICAgICAgICAgICAgZW5kaWYKLSAgICAgICAgICBlbmRpZgotICAgICAgICBlbmRpZgorCSIgSWYgdGhlIGxpbmUgdGhhdCB3ZSd2ZSBmb3VuZCBpcyByaWdodCBhYm92ZSB0aGUgY3VycmVudCBsaW5lLCBkZWFsCisJIiB3aXRoIGl0IHNwZWNpZmljYWxseS4KKwlpZiBsbnVtID09IHY6bG51bSAtIDEKKwkgICIgSWYgaXQgd2FzIGNvbnRpbnVlZCwgaW5kZW50IHRoZSBjdXJyZW50IGxpbmUgYnkgYSBzaGlmdHdpZHRoLCBhcyBpdAorCSAgIiBpcyB0aGUgZmlyc3QgdG8gZm9sbG93IGl0LiAgT3RoZXJ3aXNlLCBkZXBlbmRpbmcgb24gaWYgdGhlIGN1cnJlbnQKKwkgICIgbGluZSBpcyBhIHJ1bGUgbGluZSwgaS5lLCBhIHJ1bGUgbGluZSBmb2xsb3dpbmcgYW5vdGhlciBydWxlIGxpbmUsCisJICAiIHRoZW4gaW5kZW50IHRvIHRoZSBsZWZ0IG1hcmdpbi4gIE90aGVyd2lzZSwgdGhlIGN1cnJlbnQgbGluZSBpcyB0aGUKKwkgICIgZmlyc3Qgc2hlbGwtY29tbWFuZCBsaW5lIGluIHRoZSBydWxlLCBzbyBpbmRlbnQgYnkgYSAndGFic3RvcCcKKwkgIGlmIGxpbmUgPX4gczpjb250aW51YXRpb25fcngKKwkgICAgcmV0dXJuICZzdworCSAgZWxzZQorCSAgICByZXR1cm4gZ2V0bGluZSh2OmxudW0pID1+IHM6cnVsZV9yeCA/IDAgOiAmdHMKKwkgIGVuZGlmCisJZWxzZQorCSAgIiBJZiB0aGUgcHJldmlvdXMgbGluZSB3YXMgYSBjb250aW51YXRpb24gbGluZSwgdGhlbiB1bmxlc3MgaXQgd2FzCisJICAiIGl0c2VsZiBhIHBhcnQgb2YgYSBjb250aW51YXRpb24gbGluZSwgYWRkIGEgJ3NoaWZ0d2lkdGgnJ3Mgd29ydGggb2YKKwkgICIgaW5kZW50LiAgT3RoZXJ3aXNlLCBqdXN0IHVzZSB0aGUgaW5kZW50IG9mIHRoZSBwcmV2aW91cyBsaW5lLgorCSAgIiBPdGhlcndpc2UsIGlmIHRoZSBwcmV2aW91cyBsaW5lIHdhc24ndCBhIGNvbnRpbnVhdGlvbiBsaW5lLCBjaGVjaworCSAgIiBpZiB0aGUgb25lIGFib3ZlIGl0IHdhcy4gIElmIGl0IHdhcyB0aGVuIGluZGVudCB0byB3aGF0ZXZlciBsZXZlbAorCSAgIiB0aGUgJ293bmluZycgbGluZSBoYWQuICBPdGhlcndpc2UsIGluZGVudCB0byB0aGUgcHJldmlvdXMgbGluZSdzCisJICAiIGxldmVsLgorCSAgbGV0IGxudW0gPSB2OmxudW0gLSAxCisJICBsZXQgbGluZSA9IGdldGxpbmUobG51bSkKKwkgIGlmIGxpbmUgPX4gczpjb250aW51YXRpb25fcngKKwkgICAgbGV0IHBudW0gPSB2OmxudW0gLSAyCisJICAgIGxldCBwaW5lID0gZ2V0bGluZShwbnVtKQorCSAgICBpZiBwaW5lID1+IHM6Y29udGludWF0aW9uX3J4CisJICAgICAgcmV0dXJuIGluZGVudChsbnVtKQorCSAgICBlbHNlCisJICAgICAgcmV0dXJuIGluZGVudChsbnVtKSArICZzdworCSAgICBlbmRpZgorCSAgZWxzZQorCSAgICBsZXQgbG51bSA9IHY6bG51bSAtIDIKKwkgICAgbGV0IGxpbmUgPSBnZXRsaW5lKGxudW0pCisJICAgIGlmIGxpbmUgPX4gczpjb250aW51YXRpb25fcngKKwkgICAgICB3aGlsZSBsbnVtID4gMAorCQlpZiBsaW5lICF+IHM6Y29udGludWF0aW9uX3J4CisJCSAgbGV0IGxudW0gKz0gMQorCQkgIGxldCBsaW5lID0gZ2V0bGluZShsbnVtKQorCQkgIGJyZWFrCisJCWVuZGlmCisJCWxldCBsbnVtIC09IDEKKwkJbGV0IGxpbmUgPSBnZXRsaW5lKGxudW0pCisJICAgICAgZW5kd2hpbGUKKwkgICAgICAiIFdlJ3ZlIGZvdW5kIHRoZSBvd25pbmcgbGluZS4gIEluZGVudCB0byBpdCdzIGxldmVsLgorCSAgICAgIHJldHVybiBpbmRlbnQobG51bSkKKwkgICAgZWxzZQorCSAgICAgIHJldHVybiBpbmRlbnQodjpsbnVtIC0gMSkKKwkgICAgZW5kaWYKKwkgIGVuZGlmCisJZW5kaWYKICAgICAgIGVuZGlmCiAKLSAgICAgICIgVGhlIGxpbmUgd2FzbuKAmXQgYSBydWxlIGxpbmUsIHNvIHRoZSBjdXJyZW50IGxpbmUgaXMgcGFydCBvZiBhIHNlcmllcwotICAgICAgIiBvZiB0YWItaW5kZW50ZWQgbGluZXMgdGhhdCBkb27igJl0IGJlbG9uZyB0byBhbnkgcnVsZS4KKyAgICAgICIgVGhlIGxpbmUgd2Fzbid0IGEgcnVsZSBsaW5lLCBzbyB0aGUgY3VycmVudCBsaW5lIGlzIHBhcnQgb2YgYSBzZXJpZXMKKyAgICAgICIgb2YgdGFiLWluZGVudGVkIGxpbmVzIHRoYXQgZG9uJ3QgYmVsb25nIHRvIGFueSBydWxlLgogICAgICAgYnJlYWsKICAgICBlbmRpZgogICAgIGxldCBsbnVtIC09IDEKICAgZW5kd2hpbGUKIAogICAiIElmIHRoZSBsaW5lIGJlZm9yZSB0aGUgb25lIHdlIGFyZSBjdXJyZW50bHkgaW5kZW50aW5nIGVuZGVkIHdpdGggYQotICAiIGNvbnRpbnVhdGlvbiwgdGhlbiB0cnkgdG8gZmlndXJlIG91dCB3aGF0IOKAnG93bnPigJ0gdGhhdCBsaW5lIGFuZCBpbmRlbnQKKyAgIiBjb250aW51YXRpb24sIHRoZW4gdHJ5IHRvIGZpZ3VyZSBvdXQgd2hhdCAnb3ducycgdGhhdCBsaW5lIGFuZCBpbmRlbnQKICAgIiBhcHByb3ByaWF0ZWx5LgogICBsZXQgbG51bSA9IHY6bG51bSAtIDEKICAgbGV0IGxpbmUgPSBnZXRsaW5lKGxudW0pCkBAIC0xMjQsMzQgKzEyNCwzNCBAQAogICAgIGlmIGxpbmUgPX4gczphc3NpZ25tZW50X3J4CiAgICAgICAiIFRoZSBwcmV2aW91cyBsaW5lIGlzIGEgY29udGludWF0aW9uIGxpbmUgdGhhdCBiZWdpbnMgYSB2YXJpYWJsZS0KICAgICAgICIgYXNzaWdubWVudCBleHByZXNzaW9uLCBzbyBzZXQgdGhlIGluZGVudCB0byBqdXN0IGJleW9uZCB0aGUgd2hpdGVzcGFjZQotICAgICAgIiBmb2xsb3dpbmcgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IgKOKAmD3igJkpLgorICAgICAgIiBmb2xsb3dpbmcgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IgKCc9JykuCiAgICAgICBjYWxsIGN1cnNvcihsbnVtLCAxKQogICAgICAgaWYgc2VhcmNoKHM6YXNzaWdubWVudF9yeCwgJ1cnKSAhPSAwCi0gICAgICAgIGxldCBpbmRlbnQgPSB2aXJ0Y29sKCcuJykgLSAxCisJbGV0IGluZGVudCA9IHZpcnRjb2woJy4nKSAtIDEKICAgICAgIGVuZGlmCiAgICAgZW5kaWYKLSAgICAKLSAgICAiIFRoZSBwcmV2aW91cyBsaW5lIGRpZG7igJl0IGNvbnN0aXR1dGUgYW4gYXNzaWdubWVudCwgc28ganVzdCBpbmRlbnQgdG8KKworICAgICIgVGhlIHByZXZpb3VzIGxpbmUgZGlkbid0IGNvbnN0aXR1dGUgYW4gYXNzaWdubWVudCwgc28ganVzdCBpbmRlbnQgdG8KICAgICAiIHdoYXRldmVyIGxldmVsIGl0IGhhZC4KICAgICByZXR1cm4gaW5kZW50CiAgIGVuZGlmCiAKICAgIiBJZiB0aGUgbGluZSBhYm92ZSB0aGUgbGluZSBhYm92ZSB0aGUgY3VycmVudCBsaW5lIGVuZGVkIHdhcyBjb250aW51ZWQsCiAgICIgdGhlbiB0aGUgbGluZSBhYm92ZSB0aGUgY3VycmVudCBsaW5lIHdhcyBwYXJ0IG9mIGEgY29udGludWVkIGxpbmUuICBGaW5kCi0gICIgdGhlIOKAnG93bmluZ+KAnSBsaW5lIGFuZCBpbmRlbnQgdG8gaXRzIGxldmVsLgorICAiIHRoZSAnb3duaW5nJyBsaW5lIGFuZCBpbmRlbnQgdG8gaXRzIGxldmVsLgogICBsZXQgbG51bSA9IHY6bG51bSAtIDIKICAgbGV0IGxpbmUgPSBnZXRsaW5lKGxudW0pCiAgIGlmIGxpbmUgPX4gczpjb250aW51YXRpb25fcngKICAgICB3aGlsZSBsbnVtID4gMAogICAgICAgaWYgbGluZSAhfiBzOmNvbnRpbnVhdGlvbl9yeAotICAgICAgICBsZXQgbG51bSArPSAxCi0gICAgICAgIGxldCBsaW5lID0gZ2V0bGluZShsbnVtKQotICAgICAgICBicmVhaworCWxldCBsbnVtICs9IDEKKwlsZXQgbGluZSA9IGdldGxpbmUobG51bSkKKwlicmVhawogICAgICAgZW5kaWYKICAgICAgIGxldCBsbnVtIC09IDEKICAgICAgIGxldCBsaW5lID0gZ2V0bGluZShsbnVtKQogICAgIGVuZHdoaWxlCi0gICAgIiBXZeKAmXZlIGZvdW5kIHRoZSBvd25pbmcgbGluZS4gIEluZGVudCB0byBpdOKAmXMgbGV2ZWwuCisgICAgIiBXZSd2ZSBmb3VuZCB0aGUgb3duaW5nIGxpbmUuICBJbmRlbnQgdG8gaXQncyBsZXZlbC4KICAgICByZXR1cm4gaW5kZW50KGxudW0pCiAgIGVuZGlmCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvaW5kZW50L21tYS52aW0gYi9ydW50aW1lL2luZGVudC9tbWEudmltCmluZGV4IDcwM2U3ZGEuLjM1NmI4NzYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvaW5kZW50L21tYS52aW0KKysrIGIvcnVudGltZS9pbmRlbnQvbW1hLnZpbQpAQCAtMTIsNyArMTIsNyBAQAogIiAgICAgICBsZXQgZmlsZXR5cGVfbT0ibW1hIgogIgogIiBDcmVkaXRzOgotIiBvIHN0ZXZlIGhhY2tlZCB0aGlzIG91dCBvZiBhIHJhbmRvbSBpbmRlbnQgZmlsZSBpbiB0aGUgVmltIDYuMSAKKyIgbyBzdGV2ZSBoYWNrZWQgdGhpcyBvdXQgb2YgYSByYW5kb20gaW5kZW50IGZpbGUgaW4gdGhlIFZpbSA2LjEKICIgICBkaXN0cmlidXRpb24gdGhhdCBoZSBubyBsb25nZXIgcmVtZW1iZXJzLi4uc2gudmltPyAgVGhhbmtzIQogCiAiIE9ubHkgbG9hZCB0aGlzIGluZGVudCBmaWxlIHdoZW4gbm8gb3RoZXIgd2FzIGxvYWRlZC4KQEAgLTMwLDcgKzMwLDcgQEAKIGVuZGlmCiAKIGZ1bmN0aW9uIEdldE1tYUluZGVudCgpCi0gICAKKwogICAgICIgSGl0IHRoZSBzdGFydCBvZiB0aGUgZmlsZSwgdXNlIHplcm8gaW5kZW50LgogICAgIGlmIHY6bG51bSA9PSAwCiAgICAgICAgIHJldHVybiAwCkBAIC0zOCwyMSArMzgsMjEgQEAKIAogICAgICAiIEZpbmQgYSBub24tYmxhbmsgbGluZSBhYm92ZSB0aGUgY3VycmVudCBsaW5lLgogICAgIGxldCBsbnVtID0gcHJldm5vbmJsYW5rKHY6bG51bSAtIDEpCi0gICAKLSAgICAiIHVzZSBpbmRlbnRpbmcgYXMgYSBiYXNlIAorCisgICAgIiB1c2UgaW5kZW50aW5nIGFzIGEgYmFzZQogICAgIGxldCBpbmQgPSBpbmRlbnQodjpsbnVtKQogICAgIGxldCBsbnVtID0gdjpsbnVtCi0gICAgCisKICAgICAiIGlmIHByZXZpb3VzIGxpbmUgaGFzIGFuIHVubWF0Y2hlZCBicmFja2V0LCBvciAoIGluZGVudC4KICAgICAiIGRvZXNuJ3QgZG8gbXVsdGlwbGUgcGFyZW5zL2Jsb2Nrcy9ldGMuLi4KLSAgICAKKwogICAgICIgYWxzbywgaW5kZW50IG9ubHkgaWYgdGhpcyBsaW5lIGlmIHRoaXMgbGluZSBpc24ndCBzdGFydGluZyBhIG5ldwogICAgICIgYmxvY2suLi4gVE9ETyAtIGZpeCB0aGlzIHdpdGggaW5kZW50a2V5cz8KICAgICBpZiBnZXRsaW5lKHY6bG51bS0xKSA9fiAnXFxcQDwhXCUoXFtbXlxdXSpcfChbXildKlx8e1tefV0qXCkkJyAmJiBnZXRsaW5lKHY6bG51bSkgIX4gJ1xzXCtbXFsoe10nCiAgICAgICAgIGxldCBpbmQgPSBpbmQrJnN3CiAgICAgZW5kaWYKIAotICAgICIgaWYgdGhpcyBsaW5lIGhhZCB1bm1hdGNoZWQgY2xvc2luZyBibG9jaywgCisgICAgIiBpZiB0aGlzIGxpbmUgaGFkIHVubWF0Y2hlZCBjbG9zaW5nIGJsb2NrLAogICAgICIgaW5kZW50IHRvIHRoZSBtYXRjaGluZyBvcGVuaW5nIGJsb2NrCiAgICAgaWYgZ2V0bGluZSh2OmxudW0pID1+ICdbXltdKl1ccyokJwogICAgICAgICAiIG1vdmUgdG8gdGhlIGNsb3NpbmcgYnJhY2tldApkaWZmIC0tZ2l0IGEvcnVudGltZS9pbmRlbnQvbXVwYWQudmltIGIvcnVudGltZS9pbmRlbnQvbXVwYWQudmltCmluZGV4IGFlZWY1MjAuLjMwN2FhZjAgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvaW5kZW50L211cGFkLnZpbQorKysgYi9ydW50aW1lL2luZGVudC9tdXBhZC52aW0KQEAgLTMyLDQgKzMyLDQgQEAKICIKICIgQlVHUzogIFlvdSB0ZWxsIG1lISAgUHJvYmFibHkuICBJIGp1c3QgaGF2ZW4ndCBmb3VuZCBvbmUgeWV0IG9yIGhhdmVuJ3QgYmVlbgogIiAgICAgICAgdG9sZCBhYm91dCBvbmUuCi0iICAgICAgICAKKyIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvaW5kZW50L29jYW1sLnZpbSBiL3J1bnRpbWUvaW5kZW50L29jYW1sLnZpbQppbmRleCA4MThiMzFiLi4xODkzZDg0IDEwMDY0NAotLS0gYS9ydW50aW1lL2luZGVudC9vY2FtbC52aW0KKysrIGIvcnVudGltZS9pbmRlbnQvb2NhbWwudmltCkBAIC0xLDEyICsxLDEyIEBACiAiIFZpbSBpbmRlbnQgZmlsZQogIiBMYW5ndWFnZTogICAgIE9DYW1sCi0iIE1haW50YWluZXJzOiAgSmVhbi1GcmFuY29pcyBZdWVuICAgPGpmeXVlbkBoYXBweWNvZGVycy5vcmc+Ci0iICAgICAgICAgICAgICAgTWlrZSBMZWFyeSAgICAgICAgICAgPGxlYXJ5QG53bGluay5jb20+Ci0iICAgICAgICAgICAgICAgTWFya3VzIE1vdHRsICAgICAgICAgPG1hcmt1cy5tb3R0bEBnbWFpbC5jb20+Ci0iIFVSTDogICAgICAgICAgaHR0cDovL3d3dy5vY2FtbC5pbmZvL3ZpbS9pbmRlbnQvb2NhbWwudmltCi0iIExhc3QgQ2hhbmdlOiAgMjAwNSBKdW4gMjUgLSBGaXhlZCBtdWx0aXBsZSBidWdzIGR1ZSB0byAnZWxzZVxucmV0dXJuIGluZCcgd29ya2luZwotIiAgICAgICAgICAgICAgIDIwMDUgTWF5IDA5IC0gQWRkZWQgYW4gb3B0aW9uIHRvIG5vdCBpbmRlbnQgT0NhbWwtaW5kZW50cyBzcGVjaWFsbHkgKE1NKQotIiAgICAgICAgICAgICAgIDIwMDUgQXByIDExIC0gRml4ZWQgYW4gaW5kZW50YXRpb24gYnVnIGNvbmNlcm5pbmcgImxldCIgKE1NKQorIiBNYWludGFpbmVyczoJSmVhbi1GcmFuY29pcyBZdWVuICAgPGpmeXVlbkBoYXBweWNvZGVycy5vcmc+CisiCQlNaWtlIExlYXJ5CSAgICAgPGxlYXJ5QG53bGluay5jb20+CisiCQlNYXJrdXMgTW90dGwJICAgICA8bWFya3VzLm1vdHRsQGdtYWlsLmNvbT4KKyIgVVJMOgkJaHR0cDovL3d3dy5vY2FtbC5pbmZvL3ZpbS9pbmRlbnQvb2NhbWwudmltCisiIExhc3QgQ2hhbmdlOgkyMDA2IEFwciAzMAorIgkJMjAwNSBNYXkgMDkgLSBBZGRlZCBhbiBvcHRpb24gdG8gbm90IGluZGVudCBPQ2FtbC1pbmRlbnRzIHNwZWNpYWxseSAoTU0pCisiCQkyMDA1IEFwciAxMSAtIEZpeGVkIGFuIGluZGVudGF0aW9uIGJ1ZyBjb25jZXJuaW5nICJsZXQiIChNTSkKIAogIiBPbmx5IGxvYWQgdGhpcyBpbmRlbnQgZmlsZSB3aGVuIG5vIG90aGVyIHdhcyBsb2FkZWQuCiBpZiBleGlzdHMoImI6ZGlkX2luZGVudCIpCmRpZmYgLS1naXQgYS9ydW50aW1lL2luZGVudC9waHAudmltIGIvcnVudGltZS9pbmRlbnQvcGhwLnZpbQppbmRleCBkZTMxMzgxLi4wZjc5ZmQ5IDEwMDY0NAotLS0gYS9ydW50aW1lL2luZGVudC9waHAudmltCisrKyBiL3J1bnRpbWUvaW5kZW50L3BocC52aW0KQEAgLTIsNyArMiw3IEBACiAiIExhbmd1YWdlOglQSFAKICIgQXV0aG9yOglKb2huIFdlbGxlc3ogPEpvaG4ud2VsbGVzeiAoQVQpIHRlYXNlciAoRE9UKSBmcj4KICIgVVJMOgkJaHR0cDovL3d3dy4yMDcycHJvZHVjdGlvbnMuY29tL3ZpbS9pbmRlbnQvcGhwLnZpbQotIiBMYXN0IENoYW5nZTogIDIwMDYgSmFudWFyeSAxNXRoCisiIExhc3QgQ2hhbmdlOiAgMjAwNiBBcHIgMzAKICIgTmV3c2xldHRlcjogICBodHRwOi8vd3d3LjIwNzJwcm9kdWN0aW9ucy5jb20vP3RvPXBocC1pbmRlbnQtZm9yLXZpbS1uZXdzbGV0dGVyLnBocAogIiBWZXJzaW9uOgkxLjIzCiAiCkBAIC0xMCw3ICsxMCw3IEBACiAiCiAiICBGb3IgYSBjb21wbGV0ZSBjaGFuZ2UgbG9nIGFuZCBmdWxseSBjb21tZW50ZWQgY29kZSwgZG93bmxvYWQgdGhlIHNjcmlwdCBvbgogIiAgMjA3MnByb2R1Y3Rpb25zLmNvbSBhdCB0aGUgVVJJIHByb3ZpZGVkIGFib3ZlLgotIiAKKyIKICIgIElmIHlvdSBmaW5kIGEgYnVnLCBwbGVhc2UgZS1tYWlsIG1lIGF0IEpvaG4ud2VsbGVzeiAoQVQpIHRlYXNlciAoRE9UKSBmcgogIiAgd2l0aCBhbiBleGFtcGxlIG9mIGNvZGUgdGhhdCBicmVha3MgdGhlIGFsZ29yaXRobS4KICIKQEAgLTIzLDkgKzIzLDkgQEAKICIKICIKICIJSW4gdGhlIGNhc2UgeW91IGhhdmUgc3ludGF4IGVycm9ycyBpbiB5b3VyIHNjcmlwdCBzdWNoIGFzIGVuZCBvZiBIZXJlRG9jCi0iCXRhZ3Mgbm90IGF0IGNvbCAxIHlvdSdsbCBoYXZlIHRvIGluZGVudCB5b3VyIGZpbGUgMiB0aW1lcyAoVGhpcyBzY3JpcHQgCisiCXRhZ3Mgbm90IGF0IGNvbCAxIHlvdSdsbCBoYXZlIHRvIGluZGVudCB5b3VyIGZpbGUgMiB0aW1lcyAoVGhpcyBzY3JpcHQKICIJd2lsbCBhdXRvbWF0aWNhbGx5IHB1dCBIZXJlRG9jIGVuZCB0YWdzIGF0IGNvbCAxKS4KLSIgCisiCiAiCiAiIE5PVEU6IElmIHlvdSBhcmUgZWRpdGluZyBmaWxlIGluIFVuaXggZmlsZSBmb3JtYXQgYW5kIHRoYXQgKGJ5IGFjY2lkZW50KQogIiB0aGVyZSBhcmUgJ1xyJyBiZWZvcmUgbmV3IGxpbmVzLCB0aGlzIHNjcmlwdCB3b24ndCBiZSBhYmxlIHRvIHByb2NlZWQKQEAgLTQxLDcgKzQxLDcgQEAKIAogIiBPcHRpb25zOiBQSFBfYXV0b2Zvcm1hdGNvbW1lbnQgPSAwIHRvIG5vdCBlbmFibGUgYXV0b2Zvcm1hdGluZyBvZiBjb21tZW50IGJ5CiAiCQkgICAgZGVmYXVsdCwgaWYgc2V0IHRvIDAsIHRoaXMgc2NyaXB0IHdpbGwgbGV0IHRoZSAnZm9ybWF0b3B0aW9ucycgc2V0dGluZyBpbnRhY3QuCi0iIAorIgogIiBPcHRpb25zOiBQSFBfZGVmYXVsdF9pbmRlbnRpbmcgPSAjIG9mIHN3IChkZWZhdWx0IGlzIDApLCAjIG9mIHN3IHdpbGwgYmUKICIJCSAgIGFkZGVkIHRvIHRoZSBpbmRlbnQgb2YgZWFjaCBsaW5lIG9mIFBIUCBjb2RlLgogIgpAQCAtMTE2LDcgKzExNiw3IEBACiBsZXQgYjpvcHRpb25zc2V0ID0gMAogCiBzZXRsb2NhbCBub3NtYXJ0aW5kZW50Ci1zZXRsb2NhbCBub2F1dG9pbmRlbnQgCitzZXRsb2NhbCBub2F1dG9pbmRlbnQKIHNldGxvY2FsIG5vY2luZGVudAogc2V0bG9jYWwgbm9saXNwCiAKQEAgLTE0MSwxMyArMTQxLDEzIEBACiAKIAogZnVuY3Rpb24hIEdldExhc3RSZWFsQ29kZUxOdW0oc3RhcnRsaW5lKSAiIHt7ewotICAgIAorCiAgICAgbGV0IGxudW0gPSBhOnN0YXJ0bGluZQotICAgIAorCiAgICAgaWYgYjpHZXRMYXN0UmVhbENvZGVMTnVtX0FERCAmJiBiOkdldExhc3RSZWFsQ29kZUxOdW1fQUREID09IGxudW0gKyAxCiAJbGV0IGxudW0gPSBiOkdldExhc3RSZWFsQ29kZUxOdW1fQURECiAgICAgZW5kaWYKLSAgICAKKwogICAgIGxldCBvbGRfbG51bSA9IGxudW0KIAogICAgIHdoaWxlIGxudW0gPiAxCkBAIC0xOTQsNyArMTk0LDcgQEAKIAkJbGV0IGxudW0gPSBsbnVtIC0gMQogCSAgICBlbmR3aGlsZQogCWVsc2UKLQkgICAgYnJlYWsgCisJICAgIGJyZWFrCiAJZW5kaWYKICAgICBlbmR3aGlsZQogCkBAIC0zMTIsNyArMzEyLDcgQEAKIAlpZiBiOlBIUF9hdXRvZm9ybWF0Y29tbWVudAogCiAJICAgIHNldGxvY2FsIGNvbW1lbnRzPXMxOi8qLG1iOiosZXg6Ki8sOi8vLDojCi0JICAgIAorCiAJICAgIHNldGxvY2FsIGZvcm1hdG9wdGlvbnMtPXQKIAkgICAgc2V0bG9jYWwgZm9ybWF0b3B0aW9ucys9cQogCSAgICBzZXRsb2NhbCBmb3JtYXRvcHRpb25zKz1yCkBAIC0zNDEsNyArMzQxLDcgQEAKIAogICAgIGxldCBjbGluZSA9IGdldGxpbmUodjpsbnVtKQogCi0gICAgaWYgIWI6UEhQX2luZGVudGluZ2h1Z2UgJiYgYjpQSFBfbGFzdGluZGVudGVkID4gYjpQSFBfaW5kZW50YmVmb3JlbGFzdCAKKyAgICBpZiAhYjpQSFBfaW5kZW50aW5naHVnZSAmJiBiOlBIUF9sYXN0aW5kZW50ZWQgPiBiOlBIUF9pbmRlbnRiZWZvcmVsYXN0CiAJaWYgYjpQSFBfaW5kZW50YmVmb3JlbGFzdAogCSAgICBsZXQgYjpQSFBfaW5kZW50aW5naHVnZSA9IDEKIAkgICAgZWNob20gJ0xhcmdlIGluZGVudGluZyBkZXRlY3RlZCwgc3BlZWQgb3B0aW1pemF0aW9ucyBlbmdhZ2VkJwpAQCAtNDU2LDcgKzQ1Niw3IEBACiAJCWxldCBiOkluUEhQY29kZV9hbmRfc2NyaXB0ID0gMQogCSAgICBlbmRpZgogCi0JZWxzZWlmIGxhc3RfbGluZSA9fj8gJzw8PFxhXHcqJCcgCisJZWxzZWlmIGxhc3RfbGluZSA9fj8gJzw8PFxhXHcqJCcKIAkgICAgbGV0IGI6SW5QSFBjb2RlID0gMAogCSAgICBsZXQgYjpJblBIUGNvZGVfdG9maW5kID0gc3Vic3RpdHV0ZSggbGFzdF9saW5lLCAnXi4qPDw8XChcYVx3KlwpXGMnLCAnXlxccypcMTskJywgJycpCiAKQEAgLTQ3MCw3ICs0NzAsNyBAQAogCWVuZGlmCiAgICAgZW5kaWYgIiB9fX0KIAotICAgIAorCiAgICAgaWYgIWI6SW5QSFBjb2RlICYmICFiOkluUEhQY29kZV9hbmRfc2NyaXB0CiAJcmV0dXJuIC0xCiAgICAgZW5kaWYKQEAgLTUxMiw3ICs1MTIsNyBAQAogCXJldHVybiAwCiAgICAgZW5kaWYKIAotICAgIGlmICBjbGluZSA9fiAnXlxzKj8+JyAmJiBjbGluZSAhfiMgJzw/JyAgCisgICAgaWYgIGNsaW5lID1+ICdeXHMqPz4nICYmIGNsaW5lICF+IyAnPD8nCiAJcmV0dXJuIDAKICAgICBlbmRpZgogCkBAIC01NjEsNyArNTYxLDcgQEAKIAogICAgIGxldCBkZWZhdWx0T1JjYXNlID0gJ15ccypcJShkZWZhdWx0XHxjYXNlXCkuKjonCiAKLSAgICBpZiBsYXN0X2xpbmUgPX4gJ1s7fV0nLmVuZGxpbmUgJiYgbGFzdF9saW5lICF+IyBkZWZhdWx0T1JjYXNlIAorICAgIGlmIGxhc3RfbGluZSA9fiAnWzt9XScuZW5kbGluZSAmJiBsYXN0X2xpbmUgIX4jIGRlZmF1bHRPUmNhc2UKIAlpZiBpbmQ9PWI6UEhQX2RlZmF1bHRfaW5kZW50aW5nCiAJICAgIHJldHVybiBiOlBIUF9kZWZhdWx0X2luZGVudGluZwogCWVsc2VpZiBiOlBIUF9pbmRlbnRpbmdodWdlICYmIGluZD09YjpQSFBfQ3VycmVudEluZGVudExldmVsICYmIGNsaW5lICF+IyAnXlxzKlwlKGVsc2VcfFwlKGNhc2VcfGRlZmF1bHRcKS4qOlx8W30pXTtcPVwpJyAmJiBsYXN0X2xpbmUgIX4jICdeXHMqXCUoXCUofVxzKlwpXD1lbHNlXCknICYmIGdldGxpbmUoR2V0TGFzdFJlYWxDb2RlTE51bShsbnVtIC0gMSkpPX4nOycuZW5kbGluZQpAQCAtNTkyLDcgKzU5Miw3IEBACiAJCSAgICBsZXQgaW5kID0gaW5kICsgJnN3CiAJCWVuZGlmCiAKLQkJcmV0dXJuIGluZCAKKwkJcmV0dXJuIGluZAogCSAgICBlbmRpZgogCiAJICAgIGxldCBsYXN0X2xpbmVfbnVtID0gbGFzdF9saW5lX251bSAtIDEKQEAgLTY0NCw3ICs2NDQsNyBAQAogCQkgICAgYnJlYWsKIAkJZW5kaWYKIAotCQlpZiBvbmVfYWhlYWRfaW5kZW50ID09IHR3b19haGVhZF9pbmRlbnQgfHwgbGFzdF9saW5lX251bSA8IDEgCisJCWlmIG9uZV9haGVhZF9pbmRlbnQgPT0gdHdvX2FoZWFkX2luZGVudCB8fCBsYXN0X2xpbmVfbnVtIDwgMQogCQkgICAgaWYgcHJldmlvdXNfbGluZSA9fiMgJ1s7fV0nLmVuZGxpbmUgfHwgbGFzdF9saW5lX251bSA8IDEKIAkJCWJyZWFrCiAJCSAgICBlbmRpZgpkaWZmIC0tZ2l0IGEvcnVudGltZS9pbmRlbnQvcHl0aG9uLnZpbSBiL3J1bnRpbWUvaW5kZW50L3B5dGhvbi52aW0KaW5kZXggY2RhNmVjNy4uM2UxNGFmYyAxMDA2NDQKLS0tIGEvcnVudGltZS9pbmRlbnQvcHl0aG9uLnZpbQorKysgYi9ydW50aW1lL2luZGVudC9weXRob24udmltCkBAIC0yLDcgKzIsNyBAQAogIiBMYW5ndWFnZToJCVB5dGhvbgogIiBNYWludGFpbmVyOgkJQnJhbSBNb29sZW5hYXIgPEJyYW1AdmltLm9yZz4KICIgT3JpZ2luYWwgQXV0aG9yOglEYXZpZCBCdXN0b3MgPGJ1c3Rvc0BjYWx0ZWNoLmVkdT4KLSIgTGFzdCBDaGFuZ2U6CQkyMDA2IEFwciAyMgorIiBMYXN0IENoYW5nZToJCTIwMDYgQXByIDMwCiAKICIgT25seSBsb2FkIHRoaXMgaW5kZW50IGZpbGUgd2hlbiBubyBvdGhlciB3YXMgbG9hZGVkLgogaWYgZXhpc3RzKCJiOmRpZF9pbmRlbnQiKQpAQCAtMjcsNyArMjcsNyBAQAogbGV0IHM6bWF4b2ZmID0gNTAJIiBtYXhpbXVtIG51bWJlciBvZiBsaW5lcyB0byBsb29rIGJhY2t3YXJkcyBmb3IgKCkKIAogZnVuY3Rpb24gR2V0UHl0aG9uSW5kZW50KGxudW0pCi0gCisKICAgIiBJZiB0aGlzIGxpbmUgaXMgZXhwbGljaXRseSBqb2luZWQ6IElmIHRoZSBwcmV2aW91cyBsaW5lIHdhcyBhbHNvIGpvaW5lZCwKICAgIiBsaW5lIGl0IHVwIHdpdGggdGhhdCBvbmUsIG90aGVyd2lzZSBhZGQgdHdvICdzaGlmdHdpZHRoJwogICBpZiBnZXRsaW5lKGE6bG51bSAtIDEpID1+ICdcXCQnCmRpZmYgLS1naXQgYS9ydW50aW1lL2luZGVudC9yZWFkbGluZS52aW0gYi9ydW50aW1lL2luZGVudC9yZWFkbGluZS52aW0KaW5kZXggOTRlNGVhNC4uNDVjOGFiOSAxMDA2NDQKLS0tIGEvcnVudGltZS9pbmRlbnQvcmVhZGxpbmUudmltCisrKyBiL3J1bnRpbWUvaW5kZW50L3JlYWRsaW5lLnZpbQpAQCAtMSw1ICsxLDUgQEAKICIgVmltIGluZGVudCBmaWxlCi0iIExhbmd1YWdlOiAgICAgICAgIHJlYWRsaW5lIGNvbmZpZ3VyYXRpb24gZmlsZQorIiBMYW5ndWFnZToJICAgIHJlYWRsaW5lIGNvbmZpZ3VyYXRpb24gZmlsZQogIiBNYWludGFpbmVyOiAgICAgICBOaWtvbGFpIFdlaWJ1bGwgPG5vd0BiaXR3aS5zZT4KICIgTGF0ZXN0IFJldmlzaW9uOiAgMjAwNi0wNC0xOQogCmRpZmYgLS1naXQgYS9ydW50aW1lL2luZGVudC9yc3QudmltIGIvcnVudGltZS9pbmRlbnQvcnN0LnZpbQppbmRleCBhYzVlOWJiLi5lNmZlMmI1IDEwMDY0NAotLS0gYS9ydW50aW1lL2luZGVudC9yc3QudmltCisrKyBiL3J1bnRpbWUvaW5kZW50L3JzdC52aW0KQEAgLTEsNSArMSw1IEBACiAiIFZpbSBpbmRlbnQgZmlsZQotIiBMYW5ndWFnZTogICAgICAgICByZVN0cnVjdHVyZWRUZXh0IERvY3VtZW50YXRpb24gRm9ybWF0CisiIExhbmd1YWdlOgkgICAgcmVTdHJ1Y3R1cmVkVGV4dCBEb2N1bWVudGF0aW9uIEZvcm1hdAogIiBNYWludGFpbmVyOiAgICAgICBOaWtvbGFpIFdlaWJ1bGwgPG5vd0BiaXR3aS5zZT4KICIgTGF0ZXN0IFJldmlzaW9uOiAgMjAwNi0wNC0xOQogCkBAIC00MCw3ICs0MCw3IEBACiAgICAgICBsZXQgaW5kID0gaW5kIC0gMgogICAgIGVsc2VpZiBsaW5lID1+ICdeXHMqXGRcK1wuXHMnCiAgICAgICBsZXQgaW5kID0gaW5kIC0gbWF0Y2hlbmQoc3Vic3RpdHV0ZShsaW5lLCAnXlxzKicsICcnLCAnJyksCi0gICAgICAgICAgICBcICdcZFwrXC5cc1wrJykKKwkgICAgXCAnXGRcK1wuXHNcKycpCiAgICAgZWxzZWlmIGxpbmUgPX4gJ15ccypcLlwuJwogICAgICAgbGV0IGluZCA9IGluZCAtIDMKICAgICBlbHNlCmRpZmYgLS1naXQgYS9ydW50aW1lL2luZGVudC9zaC52aW0gYi9ydW50aW1lL2luZGVudC9zaC52aW0KaW5kZXggNzkxOWMwOS4uNDgzZTU0MyAxMDA2NDQKLS0tIGEvcnVudGltZS9pbmRlbnQvc2gudmltCisrKyBiL3J1bnRpbWUvaW5kZW50L3NoLnZpbQpAQCAtMSw1ICsxLDUgQEAKICIgVmltIGluZGVudCBmaWxlCi0iIExhbmd1YWdlOiAgICAgICAgIFNoZWxsIFNjcmlwdAorIiBMYW5ndWFnZToJICAgIFNoZWxsIFNjcmlwdAogIiBNYWludGFpbmVyOiAgICAgICBOaWtvbGFpIFdlaWJ1bGwgPG5vd0BiaXR3aS5zZT4KICIgTGF0ZXN0IFJldmlzaW9uOiAgMjAwNi0wNC0xOQogCkBAIC0zMCw4ICszMCw4IEBACiAgIGxldCBpbmQgPSBpbmRlbnQobG51bSkKICAgbGV0IGxpbmUgPSBnZXRsaW5lKGxudW0pCiAgIGlmIGxpbmUgPX4gJ15ccypcKGlmXHx0aGVuXHxkb1x8ZWxzZVx8ZWxpZlx8Y2FzZVx8d2hpbGVcfHVudGlsXHxmb3JcKVw+JwotICAgICAgICBcIHx8IGxpbmUgPX4gJ15ccypcPFxrXCtcPlxzKigpXHMqeycKLSAgICAgICAgXCB8fCBsaW5lID1+ICdeXHMqeycKKwlcIHx8IGxpbmUgPX4gJ15ccypcPFxrXCtcPlxzKigpXHMqeycKKwlcIHx8IGxpbmUgPX4gJ15ccyp7JwogICAgIGlmIGxpbmUgIX4gJ1woZXNhY1x8ZmlcfGRvbmVcKVw+XHMqJCcgJiYgbGluZSAhfiAnfVxzKiQnCiAgICAgICBsZXQgaW5kID0gaW5kICsgJnN3CiAgICAgZW5kaWYKQEAgLTQxLDcgKzQxLDcgQEAKICAgIiBSZXRhaW4gdGhlIGluZGVudGF0aW9uIGxldmVsIGlmIGxpbmUgbWF0Y2hlcyBmaW4gKGZvciBmaW5kKQogICBsZXQgbGluZSA9IGdldGxpbmUodjpsbnVtKQogICBpZiAobGluZSA9fiAnXlxzKlwodGhlblx8ZG9cfGVsc2VcfGVsaWZcfGVzYWNcfGZpXHxkb25lXClcPicgfHwgbGluZSA9fiAnXlxzKn0nKQotICAgICAgICBcICYmIGxpbmUgIX4gJ15ccypmaVtsbl1cPicKKwlcICYmIGxpbmUgIX4gJ15ccypmaVtsbl1cPicKICAgICBsZXQgaW5kID0gaW5kIC0gJnN3CiAgIGVuZGlmCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvaW5kZW50L3NxbC52aW0gYi9ydW50aW1lL2luZGVudC9zcWwudmltCmluZGV4IDQ5MGQ2NTIuLmY3Y2Y4MzQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvaW5kZW50L3NxbC52aW0KKysrIGIvcnVudGltZS9pbmRlbnQvc3FsLnZpbQpAQCAtMSwxMyArMSwxMyBAQAogIiBWaW0gaW5kZW50IGZpbGUgbG9hZGVyCi0iIExhbmd1YWdlOiAgICBTUUwgCisiIExhbmd1YWdlOiAgICBTUUwKICIgTWFpbnRhaW5lcjogIERhdmlkIEZpc2hidXJuIDxmaXNoYnVybiBhdCBpYW55d2hlcmUgZG90IGNvbT4KICIgTGFzdCBDaGFuZ2U6IFRodSBTZXAgMTUgMjAwNSAxMDoyNzo1MSBBTQogIiBWZXJzaW9uOiAgICAgMS4wCiAiIERvd25sb2FkOiAgICBodHRwOi8vdmltLnNvdXJjZWZvcmdlLm5ldC9zY3JpcHQucGhwP3NjcmlwdF9pZD00OTUKIAogIiBEZXNjcmlwdGlvbjogQ2hlY2tzIGZvciBhOgotIiAgICAgICAgICAgICAgICAgIGJ1ZmZlciBsb2NhbCB2YXJpYWJsZSwgCi0iICAgICAgICAgICAgICAgICAgZ2xvYmFsIHZhcmlhYmxlLCAKKyIgICAgICAgICAgICAgICAgICBidWZmZXIgbG9jYWwgdmFyaWFibGUsCisiICAgICAgICAgICAgICAgICAgZ2xvYmFsIHZhcmlhYmxlLAogIiAgICAgICAgICAgICAgSWYgdGhlIGFib3ZlIGV4aXN0LCBpdCB3aWxsIHNvdXJjZSB0aGUgdHlwZSBzcGVjaWZpZWQuCiAiICAgICAgICAgICAgICBJZiBub25lIGV4aXN0LCBpdCB3aWxsIHNvdXJjZSB0aGUgZGVmYXVsdCBzcWxhbnl3aGVyZS52aW0gZmlsZS4KIApkaWZmIC0tZ2l0IGEvcnVudGltZS9pbmRlbnQvc3FsYW55d2hlcmUudmltIGIvcnVudGltZS9pbmRlbnQvc3FsYW55d2hlcmUudmltCmluZGV4IDY1ZDcxMTMuLmMyZjUyN2UgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvaW5kZW50L3NxbGFueXdoZXJlLnZpbQorKysgYi9ydW50aW1lL2luZGVudC9zcWxhbnl3aGVyZS52aW0KQEAgLTEsNSArMSw1IEBACiAiIFZpbSBpbmRlbnQgZmlsZQotIiBMYW5ndWFnZTogICAgU1FMIAorIiBMYW5ndWFnZTogICAgU1FMCiAiIE1haW50YWluZXI6ICBEYXZpZCBGaXNoYnVybiA8ZmlzaGJ1cm4gYXQgaWFueXdoZXJlIGRvdCBjb20+CiAiIExhc3QgQ2hhbmdlOiBXZWQgU2VwIDE0IDIwMDUgMTA6MjE6MTUgUE0KICIgVmVyc2lvbjogICAgIDEuNApAQCAtMTAsNyArMTAsNyBAQAogIiAgICBBbnl3aGVyZSAoQVNBKS4gIFRlc3QgaW5kZW50aW5nIHdhcyBkb25lIHdpdGggQVNBIHN0b3JlZCBwcm9jZWR1cmVzIGFuZAogIiAgICBmdWN0aW9ucyBhbmQgT3JhY2xlIHBhY2thZ2VzIHdoaWNoIGNvbnRhaW4gc3RvcmVkIHByb2NlZHVyZXMgYW5kCiAiICAgIGZ1bmN0aW9ucy4KLSIgICAgVGhpcyBoYXMgbm90IGJlZW4gdGVzdGVkIGFnYWluc3QgTWljcm9zb2Z0IFNRTCBTZXJ2ZXIgb3IgCisiICAgIFRoaXMgaGFzIG5vdCBiZWVuIHRlc3RlZCBhZ2FpbnN0IE1pY3Jvc29mdCBTUUwgU2VydmVyIG9yCiAiICAgIFN5YmFzZSBBZGFwdGl2ZSBTZXJ2ZXIgRW50ZXJwcmlzZSAoQVNFKSB3aGljaCB1c2UgdGhlIFRyYW5zYWN0LVNRTAogIiAgICBzeW50YXguICBUaGF0IHN5bnRheCBkb2VzIG5vdCBoYXZlIGVuZCB0YWdzIGZvciBJRidzLCB3aGljaCBtYWtlcwogIiAgICBpbmRlbnRpbmcgbW9yZSBkaWZmaWN1bHQuCkBAIC0zMiw3ICszMiw3IEBACiBzZXRsb2NhbCBpbmRlbnRrZXlzLT0wIwogc2V0bG9jYWwgaW5kZW50a2V5cy09ZQogCi0iIFRoaXMgaW5kaWNhdGVzIGZvcm1hdHRpbmcgc2hvdWxkIHRha2UgcGxhY2Ugd2hlbiBvbmUgb2YgdGhlc2UgCisiIFRoaXMgaW5kaWNhdGVzIGZvcm1hdHRpbmcgc2hvdWxkIHRha2UgcGxhY2Ugd2hlbiBvbmUgb2YgdGhlc2UKICIgZXhwcmVzc2lvbnMgaXMgdXNlZC4gIFRoZXNlIGV4cHJlc3Npb25zIHdvdWxkIG5vcm1hbGx5IGJlIHNvbWV0aGluZwogIiB5b3Ugd291bGQgdHlwZSBhdCB0aGUgQkVHSU5OSU5HIG9mIGEgbGluZQogIiBTUUwgaXMgZ2VuZXJhbGx5IGNhc2UgaW5zZW5zaXRpdmUsIHNvIHRoaXMgZmlsZXMgYXNzdW1lcyB0aGF0CkBAIC00MCw3ICs0MCw3IEBACiAiIGFuIGluZGVudCByaWdodCwgc2luY2UgdGhlIFNRTEJsb2NrU3RhcnQgaXMgdXNlZCBmb3IgdGhvc2Uga2V5d29yZHMKIHNldGxvY2FsIGluZGVudGtleXMrPT1+ZW5kLD1+ZWxzZSw9fmVsc2VpZiw9fmVsc2lmLDA9fndoZW4sMD0pCiAKLSIgR2V0U1FMSW5kZW50IGlzIGV4ZWN1dGVkIHdoZW5ldmVyIG9uZSBvZiB0aGUgZXhwcmVzc2lvbnMgCisiIEdldFNRTEluZGVudCBpcyBleGVjdXRlZCB3aGVuZXZlciBvbmUgb2YgdGhlIGV4cHJlc3Npb25zCiAiIGluIHRoZSBpbmRlbnRrZXlzIGlzIHR5cGVkCiBzZXRsb2NhbCBpbmRlbnRleHByPUdldFNRTEluZGVudCgpCiAKQEAgLTUxLDcgKzUxLDcgQEAKIAogIiBMaXN0IG9mIGFsbCB0aGUgc3RhdGVtZW50cyB0aGF0IHN0YXJ0IGEgbmV3IGJsb2NrLgogIiBUaGVzZSBhcmUgdHlwaWNhbGx5IHdvcmRzIHRoYXQgc3RhcnQgYSBsaW5lLgotIiBJUyBpcyBleGNsdWRlZCwgc2luY2UgaXQgaXMgZGlmZmljdWx0IHRvIGRldGVybWluZSB3aGVuIHRoZSAKKyIgSVMgaXMgZXhjbHVkZWQsIHNpbmNlIGl0IGlzIGRpZmZpY3VsdCB0byBkZXRlcm1pbmUgd2hlbiB0aGUKICIgZW5kaW5nIGJsb2NrIGlzIChlc3BlY2lhbGx5IGZvciBwcm9jZWR1cmVzL2Z1bmN0aW9ucykuCiBsZXQgczpTUUxCbG9ja1N0YXJ0ID0gJ15ccypcJSgnLgogICAgICAgICAgICAgXCAnaWZcfGVsc2VcfGVsc2VpZlx8ZWxzaWZcfCcuCkBAIC0xMTQsNyArMTE0LDcgQEAKICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgIGVuZGlmCiAKLSAgICAgICAgaWYgbWF0Y2hpbmdfcGFyYW4gPT0gbG51bSAKKyAgICAgICAgaWYgbWF0Y2hpbmdfcGFyYW4gPT0gbG51bQogICAgICAgICAgICAgIiBUaGlzIHdhcyBub3QgYW4gdW5tYXRjaGVkIHBhcmFudGVuc2VzLCBzdGFydCB0aGUgc2VhcmNoIGFnYWluCiAgICAgICAgICAgICAiIGFnYWluIGFmdGVyIHRoaXMgY29sdW1uCiAgICAgICAgICAgICAiIGVjaG9tICdDVElSUCAtIHNhbWUgbGluZSBtYXRjaCwgaWdub3JpbmcnCkBAIC0xNzMsOSArMTczLDkgQEAKICAgICBlbHNlaWYgYTprZXl3b3JkID1+PyAnd2hlbicKICAgICAgICAgZXhlYyAnbm9ybWFsISBeJwogICAgICAgICBsZXQgbWF0Y2hpbmdfbG51bSA9IHNlYXJjaHBhaXIoCi0gICAgICAgICAgICAgICAgICAgIFwgJ1wlKFw8ZW5kXHNcK1wpXEA8IVw8Y2FzZVw+XHxcPGV4Y2VwdGlvblw+XHxcPG1lcmdlXD4nLCAKLSAgICAgICAgICAgICAgICAgICAgXCAnJywgCi0gICAgICAgICAgICAgICAgICAgIFwgJ1wlKFwlKFw8d2hlblxzXCtvdGhlcnNcPlwpXHxcJShcPGVuZFxzXCtjYXNlXD5cKVwpJywgCisgICAgICAgICAgICAgICAgICAgIFwgJ1wlKFw8ZW5kXHNcK1wpXEA8IVw8Y2FzZVw+XHxcPGV4Y2VwdGlvblw+XHxcPG1lcmdlXD4nLAorICAgICAgICAgICAgICAgICAgICBcICcnLAorICAgICAgICAgICAgICAgICAgICBcICdcJShcJShcPHdoZW5cc1wrb3RoZXJzXD5cKVx8XCUoXDxlbmRcc1wrY2FzZVw+XClcKScsCiAgICAgICAgICAgICAgICAgICAgIFwgJ2JXJywKICAgICAgICAgICAgICAgICAgICAgXCAnSXNDb2xDb21tZW50KGxpbmUoIi4iKSwgY29sKCIuIikpID09IDEnKQogICAgICAgICBleGVjICdub3JtYWwhICQnCkBAIC0xOTMsMTAgKzE5MywxMCBAQAogIiBDaGVjayBpZiB0aGUgbGluZSBpcyBhIGNvbW1lbnQKIGZ1bmN0aW9uIElzTGluZUNvbW1lbnQobG51bSkKICAgICBsZXQgcmMgPSBzeW5JRGF0dHIoCi0gICAgICAgICAgICAgICAgXCBzeW5JRChhOmxudW0sIAorICAgICAgICAgICAgICAgIFwgc3luSUQoYTpsbnVtLAogICAgICAgICAgICAgICAgIFwgICAgIG1hdGNoKGdldGxpbmUoYTpsbnVtKSwgJ1xTJykrMSwgMCkKLSAgICAgICAgICAgICAgICBcICwgIm5hbWUiKSAKLSAgICAgICAgICAgICAgICBcID1+PyAiY29tbWVudCIgCisgICAgICAgICAgICAgICAgXCAsICJuYW1lIikKKyAgICAgICAgICAgICAgICBcID1+PyAiY29tbWVudCIKIAogICAgIHJldHVybiByYwogZW5kZnVuY3Rpb24KQEAgLTIwNCw4ICsyMDQsOCBAQAogCiAiIENoZWNrIGlmIHRoZSBjb2x1bW4gaXMgYSBjb21tZW50CiBmdW5jdGlvbiBJc0NvbENvbW1lbnQobG51bSwgY251bSkKLSAgICBsZXQgcmMgPSBzeW5JRGF0dHIoc3luSUQoYTpsbnVtLCBhOmNudW0sIDApLCAibmFtZSIpIAotICAgICAgICAgICAgICAgIFwgICAgICAgICAgID1+PyAiY29tbWVudCIgCisgICAgbGV0IHJjID0gc3luSURhdHRyKHN5bklEKGE6bG51bSwgYTpjbnVtLCAwKSwgIm5hbWUiKQorICAgICAgICAgICAgICAgIFwgICAgICAgICAgID1+PyAiY29tbWVudCIKIAogICAgIHJldHVybiByYwogZW5kZnVuY3Rpb24KQEAgLTIxNCw3ICsyMTQsNyBAQAogIiBDaGVjayBpZiB0aGUgY29sdW1uIGlzIGEgY29tbWVudAogZnVuY3Rpb24gTW9kdWxvSW5kZW50KGluZCkKICAgICBsZXQgaW5kID0gYTppbmQKLSAgICAKKwogICAgIGlmIGluZCA+IDAKICAgICAgICAgbGV0IG1vZHVsbyA9IGluZCAlICZzaGlmdHdpZHRoCiAKQEAgLTIyOSw3ICsyMjksNyBAQAogCiAiIEZpbmQgY29ycmVjdCBpbmRlbnQgb2YgYSBuZXcgbGluZSBiYXNlZCB1cG9uIHRoZSBwcmV2aW91cyBsaW5lCiBmdW5jdGlvbiBHZXRTUUxJbmRlbnQoKQotICAgIGxldCBsbnVtID0gdjpsbnVtIAorICAgIGxldCBsbnVtID0gdjpsbnVtCiAgICAgbGV0IGluZCA9IGluZGVudChsbnVtKQogCiAgICAgIiBJZiB0aGUgY3VycmVudCBsaW5lIGlzIGEgY29tbWVudCwgbGVhdmUgdGhlIGluZGVudCBhcyBpcwpAQCAtMjQ2LDcgKzI0Niw3IEBACiAgICAgICAgICAgICByZXR1cm4gaW5kCiAgICAgICAgIGVuZGlmCiAKLSAgICAgICAgaWYgSXNMaW5lQ29tbWVudChwcmV2bG51bSkgPT0gMSAKKyAgICAgICAgaWYgSXNMaW5lQ29tbWVudChwcmV2bG51bSkgPT0gMQogICAgICAgICAgICAgaWYgZ2V0bGluZSh2OmxudW0pID1+ICdeXHMqXConCiAgICAgICAgICAgICAgICAgbGV0IGluZCA9IE1vZHVsb0luZGVudChpbmRlbnQocHJldmxudW0pKQogICAgICAgICAgICAgICAgIHJldHVybiBpbmQgKyAxCkBAIC0yNjksMTMgKzI2OSwxMyBAQAogICAgICIgICAgIGVuZGlmCiAgICAgIiBlbmR3aGlsZQogCi0gICAgIiBlY2hvbSAnUFJFVklPVVMgSU5ERU5UOiAnIC4gaW5kZW50KHByZXZsbnVtKSAuICcgIExJTkU6ICcgLiBnZXRsaW5lKHByZXZsbnVtKSAKKyAgICAiIGVjaG9tICdQUkVWSU9VUyBJTkRFTlQ6ICcgLiBpbmRlbnQocHJldmxudW0pIC4gJyAgTElORTogJyAuIGdldGxpbmUocHJldmxudW0pCiAKICAgICAiIFRoaXMgaXMgdGhlIGxpbmUgeW91IGp1c3QgaGl0IHJldHVybiBvbiwgaXQgaXMgbm90IHRoZSBjdXJyZW50IGxpbmUKICAgICAiIHdoaWNoIGlzIG5ldyBhbmQgZW1wdHkKICAgICAiIEJhc2VkIG9uIHRoaXMgbGluZSwgd2UgY2FuIGRldGVybWluZSBob3cgbXVjaCB0byBpbmRlbnQgdGhlIG5ldwogICAgICIgbGluZQotICAgIAorCiAgICAgIiBHZXQgZGVmYXVsdCBpbmRlbnQgKGZyb20gcHJldi4gbGluZSkKICAgICBsZXQgaW5kICAgICAgPSBpbmRlbnQocHJldmxudW0pCiAgICAgbGV0IHByZXZsaW5lID0gZ2V0bGluZShwcmV2bG51bSkKQEAgLTMwMCw3ICszMDAsNyBAQAogICAgICAgICAgICAgIiBsZXQgbnVtX3VubWF0Y2hlZF9yaWdodCAgPSBzOkNvdW50VW5iYWxhbmNlZFBhcmFuKCBwcmV2bGluZSwgJyknICkKICAgICAgICAgZW5kaWYKICAgICAgICAgaWYgbnVtX3VubWF0Y2hlZF9sZWZ0ID4gMAotICAgICAgICAgICAgIiBUaGVyZSBpcyBhIG9wZW4gbGVmdCBwYXJhbmV0aGVzaXMgCisgICAgICAgICAgICAiIFRoZXJlIGlzIGEgb3BlbiBsZWZ0IHBhcmFuZXRoZXNpcwogICAgICAgICAgICAgIiBpbmNyZWFzZSBpbmRlbnQKICAgICAgICAgICAgIGxldCBpbmQgPSBpbmQgKyAoICZzdyAqIG51bV91bm1hdGNoZWRfbGVmdCApCiAgICAgICAgIGVsc2VpZiBudW1fdW5tYXRjaGVkX3JpZ2h0ID4gMApAQCAtMzMxLDcgKzMzMSw3IEBACiAgICAgbGV0IGxpbmUgPSBnZXRsaW5lKHY6bG51bSkKIAogICAgIGlmIGxpbmUgPX4/ICdeXHMqZWxzJwotICAgICAgICAiIEFueSBsaW5lIHdoZW4geW91IHR5cGUgZWxzZSB3aWxsIGF1dG9tYXRpY2FsbHkgYmFjayB1cCBvbmUgCisgICAgICAgICIgQW55IGxpbmUgd2hlbiB5b3UgdHlwZSBlbHNlIHdpbGwgYXV0b21hdGljYWxseSBiYWNrIHVwIG9uZQogICAgICAgICAiIGlkZW50IGxldmVsICAoaWUgZWxzZSwgZWxzZWlmLCBlbHNpZikKICAgICAgICAgbGV0IGluZCA9IGluZCAtICZzdwogICAgICAgICAiIGVjaG9tICdjdXJyIC0gZWxzZSAtIGluZGVudCAnIC4gaW5kCkBAIC0zNTYsMTEgKzM1NiwxMSBAQAogICAgICAgICAiIElmIHRoZSBsaW5lIGVuZHMgaW4gYSApLCB0aGVuIHJlZHVjZSB0aGUgaW5kZW50CiAgICAgICAgICIgVGhpcyBjYXRjaGVzIGl0ZW1zIGxpa2U6CiAgICAgICAgICIgQ1JFQVRFIFRBQkxFIFQxKAotICAgICAgICAiICAgIGMxIGludCwgCisgICAgICAgICIgICAgYzEgaW50LAogICAgICAgICAiICAgIGMyIGludAogICAgICAgICAiICAgICk7CiAgICAgICAgICIgQnV0IHdlIGRvIG5vdCB3YW50IHRvIHVuaW5kZW50IGEgbGluZSBsaWtlOgotICAgICAgICAiIElGICggYzEgPSAxIAorICAgICAgICAiIElGICggYzEgPSAxCiAgICAgICAgICIgQU5EICBjMiA9IDMgKSBUSEVOCiAgICAgICAgICIgbGV0IG51bV91bm1hdGNoZWRfcmlnaHQgID0gczpDb3VudFVuYmFsYW5jZWRQYXJhbiggbGluZSwgJyknICkKICAgICAgICAgIiBpZiBudW1fdW5tYXRjaGVkX3JpZ2h0ID4gMApkaWZmIC0tZ2l0IGEvcnVudGltZS9pbmRlbnQvdGNsLnZpbSBiL3J1bnRpbWUvaW5kZW50L3RjbC52aW0KaW5kZXggMWIwY2MxNi4uNWE1YWExZCAxMDA2NDQKLS0tIGEvcnVudGltZS9pbmRlbnQvdGNsLnZpbQorKysgYi9ydW50aW1lL2luZGVudC90Y2wudmltCkBAIC0zNiwxMyArMzYsMTMgQEAKICAgd2hpbGUgaSAhPSAtMQogICAgIGlmIHN5bklEYXR0cihzeW5JRChhOmxudW0sIGkgKyAxLCAwKSwgJ25hbWUnKSAhfiAndGNsXCUoQ29tbWVudFx8U3RyaW5nXCknCiAgICAgICBpZiBsaW5lW2ldID09ICd7JwotICAgICAgICBsZXQgbl9vcGVuICs9IDEKKwlsZXQgbl9vcGVuICs9IDEKICAgICAgIGVsc2VpZiBsaW5lW2ldID09ICd9JwotICAgICAgICBpZiBuX29wZW4gPiAwCi0gICAgICAgICAgbGV0IG5fb3BlbiAtPSAxCi0gICAgICAgIGVsc2UKLSAgICAgICAgICBsZXQgbl9jbG9zZSArPSAxCi0gICAgICAgIGVuZGlmCisJaWYgbl9vcGVuID4gMAorCSAgbGV0IG5fb3BlbiAtPSAxCisJZWxzZQorCSAgbGV0IG5fY2xvc2UgKz0gMQorCWVuZGlmCiAgICAgICBlbmRpZgogICAgIGVuZGlmCiAgICAgbGV0IGkgPSBtYXRjaChsaW5lLCBwYXR0ZXJuLCBpICsgMSkKZGlmZiAtLWdpdCBhL3J1bnRpbWUvaW5kZW50L3hmODZjb25mLnZpbSBiL3J1bnRpbWUvaW5kZW50L3hmODZjb25mLnZpbQppbmRleCA1YjJiZTZkLi4wNGY1NGM5IDEwMDY0NAotLS0gYS9ydW50aW1lL2luZGVudC94Zjg2Y29uZi52aW0KKysrIGIvcnVudGltZS9pbmRlbnQveGY4NmNvbmYudmltCkBAIC0xLDUgKzEsNSBAQAogIiBWaW0gaW5kZW50IGZpbGUKLSIgTGFuZ3VhZ2U6ICAgICAgICAgWEZyZWU4NiBDb25maWd1cmF0aW9uIEZpbGUKKyIgTGFuZ3VhZ2U6CSAgICBYRnJlZTg2IENvbmZpZ3VyYXRpb24gRmlsZQogIiBNYWludGFpbmVyOiAgICAgICBOaWtvbGFpIFdlaWJ1bGwgPG5vd0BiaXR3aS5zZT4KICIgTGF0ZXN0IFJldmlzaW9uOiAgMjAwNi0wNC0xOQogCmRpZmYgLS1naXQgYS9ydW50aW1lL2luZGVudC95YWNjLnZpbSBiL3J1bnRpbWUvaW5kZW50L3lhY2MudmltCmluZGV4IGQxMDBjZWIuLjU5N2EyY2MgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvaW5kZW50L3lhY2MudmltCisrKyBiL3J1bnRpbWUvaW5kZW50L3lhY2MudmltCkBAIC0xLDUgKzEsNSBAQAogIiBWaW0gaW5kZW50IGZpbGUKLSIgTGFuZ3VhZ2U6ICAgICAgICAgWUFDQyBpbnB1dCBmaWxlCisiIExhbmd1YWdlOgkgICAgWUFDQyBpbnB1dCBmaWxlCiAiIE1haW50YWluZXI6ICAgICAgIE5pa29sYWkgV2VpYnVsbCA8bm93QGJpdHdpLnNlPgogIiBMYXRlc3QgUmV2aXNpb246ICAyMDA2LTA0LTE5CiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvaW5kZW50L3pzaC52aW0gYi9ydW50aW1lL2luZGVudC96c2gudmltCmluZGV4IDViZjIzMTUuLmM1NTgwYTEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvaW5kZW50L3pzaC52aW0KKysrIGIvcnVudGltZS9pbmRlbnQvenNoLnZpbQpAQCAtMSw1ICsxLDUgQEAKICIgVmltIGluZGVudCBmaWxlCi0iIExhbmd1YWdlOiAgICAgICAgIFpzaCBTaGVsbCBTY3JpcHQKKyIgTGFuZ3VhZ2U6CSAgICBac2ggU2hlbGwgU2NyaXB0CiAiIE1haW50YWluZXI6ICAgICAgIE5pa29sYWkgV2VpYnVsbCA8bm93QGJpdHdpLnNlPgogIiBMYXRlc3QgUmV2aXNpb246ICAyMDA2LTA0LTE5CiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUva2V5bWFwL2dyZWVrX2NwNzM3LnZpbSBiL3J1bnRpbWUva2V5bWFwL2dyZWVrX2NwNzM3LnZpbQppbmRleCBlNDExMTRlLi5kZDBiMzcyIDEwMDY0NAotLS0gYS9ydW50aW1lL2tleW1hcC9ncmVla19jcDczNy52aW0KKysrIGIvcnVudGltZS9rZXltYXAvZ3JlZWtfY3A3MzcudmltCkBAIC01LDcgKzUsNyBAQAogIiBUaGlzIGtleWJvYXJkIGxheW91dCBhbGxvd3MgYWxsIEdyZWVrIHN5bWJvbHMgdG8gYmUgdHlwZWQsCiAiIGluY2x1ZGluZyBhY2NlbnRlZCBjYXBpdGFscyBhbmQgZGlhZXJlc2lzLiBJdCBkb2VzIG5vdAogIiBpbmNsdWRlIGRpYWVyZXNpcyBhbmQgYWNjZW50IG9uIHRoZSBzYW1lIHZvd2VsLCBub3IKLSIgdGhlIGdyZWVrIHF1b3RlcywgYXMgdGhlc2Ugd2VyZSBub3QgaW5jbHVkZWQgaW4gdGhlIGNvZGVwYWdlLiAKKyIgdGhlIGdyZWVrIHF1b3RlcywgYXMgdGhlc2Ugd2VyZSBub3QgaW5jbHVkZWQgaW4gdGhlIGNvZGVwYWdlLgogIiBJdCBpbmNsdWRlcyB0aGUgR3JlZWsgc2VtaWNvbG9uIHNpZ24uCiAKICIKZGlmZiAtLWdpdCBhL3J1bnRpbWUva2V5bWFwL2dyZWVrX3V0Zi04LnZpbSBiL3J1bnRpbWUva2V5bWFwL2dyZWVrX3V0Zi04LnZpbQppbmRleCBkYzllMTBlLi4xNzU2NDU0IDEwMDY0NAotLS0gYS9ydW50aW1lL2tleW1hcC9ncmVla191dGYtOC52aW0KKysrIGIvcnVudGltZS9rZXltYXAvZ3JlZWtfdXRmLTgudmltCkBAIC0yLDcgKzIsNyBAQAogIiBNYWludGFpbmVyOiBQYW5hZ2lvdGlzIExvdXJpZGFzIDxsb3VyaWRhc0BhY20ub3JnPgogIiBMYXN0IFVwZGF0ZWQ6IFRodSBNYXIgMjMgMjM6NDU6MDIgRUVUIDIwMDYKIAotIiBUaGlzIGZpbGUgd2FzIGNvcnJlY3RlZCBmb3IgVmltIGFmdGVyIHRoZSB2ZXJzaW9uIGFkYXB0ZWQgZm9yIFZpbSA2IGZyb20gCisiIFRoaXMgZmlsZSB3YXMgY29ycmVjdGVkIGZvciBWaW0gYWZ0ZXIgdGhlIHZlcnNpb24gYWRhcHRlZCBmb3IgVmltIDYgZnJvbQogIiB0aGUgeXVkaXQgZGlzdHJpYnV0aW9uIGJ5IFJvYmVydCBHb3VsZGluZyA8Z291bGRpbmdAcHJpbmNldG9uLmVkdT4KICIKICIgVGhlIG1vbm90b25pYyBwYXJ0IG9mIHRoaXMga21hcCB3YXMgbWFkZSBieSBDb25zdGFudGluZSBTdGF0aG9wb3Vsb3MKZGlmZiAtLWdpdCBhL3J1bnRpbWUva2V5bWFwL2thbmEudmltIGIvcnVudGltZS9rZXltYXAva2FuYS52aW0KaW5kZXggNjQ0YjBhYi4uMjNiNWY4NyAxMDA2NDQKLS0tIGEvcnVudGltZS9rZXltYXAva2FuYS52aW0KKysrIGIvcnVudGltZS9rZXltYXAva2FuYS52aW0KQEAgLTMsMTAgKzMsMTAgQEAKICIKICIgTWFpbnRhaW5lcjogUm9yeSBNY0Nhbm4gPGViZWx1bGFyIGF0IGdtYWlsIGRvdCBjb20+CiAiIE1vZGlmaWVkIGJ5OiBFZHdhcmQgTC4gRm94IDxlZHlmb3ggYXQgZ21haWwgZG90IGNvbT4KLSIgTGFzdCBDaGFuZ2U6IDIwMDYtMDQtMjkgMTE6MTQ6MzIKKyIgTGFzdCBDaGFuZ2U6IDIwMDYgQXByIDMwCiAiCi0iIAotIiAgCisiCisiCiAiICBLYW5hLmttYXAgKEphcGFuZXNlIFBob25vZ3JhbXMpCiAiCiAiICBDb252ZXJ0ZWQgZnJvbSBHYXNwYXIgU2luYWkncyB5dWRpdCAyLjcuNgpAQCAtMjcsMTUgKzI3LDE1IEBACiAiCVN1bW1hcnk6CiAiCiAiCSgxKSBUbyB0cmFuc2xpdGVyYXRlIEphcGFuZXNlIGxhbmd1YWdlLCBUYWJsZSAxIHNob3VsZCBiZSB1c2VkCi0iICAgICAgICAgIHByaW1hcmlseS4KKyIJICAgcHJpbWFyaWx5LgogIgkoMikgVGFibGUgMiBtYXkgYmUgdXNlZCBvbmx5IHdoZW4gZXhpc3RpbmcgY29udmVudGlvbnMgc3VjaCBhcwotIiAgICAgICAgICBpbnRlcm5hdGlvbmFsIHJlbGF0aW9uc2hpcCBzaG91bGQgYmUgcmVzcGVjdGVkLgorIgkgICBpbnRlcm5hdGlvbmFsIHJlbGF0aW9uc2hpcCBzaG91bGQgYmUgcmVzcGVjdGVkLgogIgkoMykgT3RoZXIgdHJhbnNsaXRlcmF0aW9uIGlzIGFjY2VwdGFibGUgb25seSB3aGVuIG5laXRoZXIgVGFibGUgMQogIgkgICAgbm9yIFRhYmxlIDIgZ2l2ZXMgYW55IHNwZWNpZmljYXRpb24gb2YgdGhlIHNvdW5kIGluIHF1ZXN0aW9uCiAiCiAiCUZvciBkZXRhaWxzLCByZWZlciB0bwogIgotIgkgICAgaHR0cDovL3hlbWJoby50cmlwb2QuY29tL3NpcnlvL25haWtha3Vfa29rdXppLmh0bWwJICAgIAorIgkgICAgaHR0cDovL3hlbWJoby50cmlwb2QuY29tL3NpcnlvL25haWtha3Vfa29rdXppLmh0bWwKICIKICIgIDIuCVRoZSBzcGVjaWZpY2F0aW9uIGluc3RydWN0ZWQgYnkgdGhlIENhYmluZXQgTm90aWZpY2F0aW9uIGlzIHJhdGhlcgogIglpbmFkZXF1YXRlIGV2ZW4gZm9yIGRhaWx5IHVzZS4gIEF0IHRoZSBwcmVzZW50IHRpbWUgdGhlcmUgYXJlIHRodXMKZGlmZiAtLWdpdCBhL3J1bnRpbWUva2V5bWFwL3BvbGlzaC1zbGFzaC52aW0gYi9ydW50aW1lL2tleW1hcC9wb2xpc2gtc2xhc2gudmltCmluZGV4IGNjOTM3N2YuLmE0MzAwNzggMTAwNjQ0Ci0tLSBhL3J1bnRpbWUva2V5bWFwL3BvbGlzaC1zbGFzaC52aW0KKysrIGIvcnVudGltZS9rZXltYXAvcG9saXNoLXNsYXNoLnZpbQpAQCAtMiw3ICsyLDcgQEAKICIgTWFpbnRhaW5lcjogICBIUzZfMDYgPGhzNl8wNkBvMi5wbD4KICIgTGFzdCBjaGFuZ2VkOiAyMDA1IEphbiAxMgogIiBDdXJyZW50IHZlcnNpb246IDEuMC4yCi0iIEhpc3Rvcnk6IAorIiBIaXN0b3J5OgogIiAgMjAwNS4wMS4xMiAxLjAuMiBrZXltYXBfbmFtZSBzaG9ydGVuZWQsIGFkZGVkIEN1cnJlbnQgdmVyc2lvbiwgSGlzdG9yeQogIiAgMjAwNS4wMS4xMCAxLjAuMSB1bip4IGxpbmUgZW5kcyBmb3IgYWxsIGZpbGVzCiAiICAyMDA1LjAxLjA5IDEuMC4wIEluaXRpYWwgcmVsZWFzZQpkaWZmIC0tZ2l0IGEvcnVudGltZS9rZXltYXAvcG9saXNoLXNsYXNoX2NwMTI1MC52aW0gYi9ydW50aW1lL2tleW1hcC9wb2xpc2gtc2xhc2hfY3AxMjUwLnZpbQppbmRleCBkZjFmNjdhLi40ZWYyYjIyIDEwMDY0NAotLS0gYS9ydW50aW1lL2tleW1hcC9wb2xpc2gtc2xhc2hfY3AxMjUwLnZpbQorKysgYi9ydW50aW1lL2tleW1hcC9wb2xpc2gtc2xhc2hfY3AxMjUwLnZpbQpAQCAtNCw3ICs0LDcgQEAKICIgQ3VycmVudCB2ZXJzaW9uOiAxLjAuMgogIiBIaXN0b3J5OiBzZWUgcG9saXNoLXNsYXNoLnZpbQogCi0iIFRoaXMga2V5bWFwIGFkZHMgdGhlIHNwZWNpYWwgUG9saXNoIGxldHRlcnMgCisiIFRoaXMga2V5bWFwIGFkZHMgdGhlIHNwZWNpYWwgUG9saXNoIGxldHRlcnMKICIgdG8gYW4gZXhpc3RpbmcgTGF0aW4ga2V5Ym9hcmQuCiAiIEFsbCBjaGFycyBhcyB1c3VhbCBleGNlcHQ6CiAiIFBvbGlzaDoKZGlmZiAtLWdpdCBhL3J1bnRpbWUva2V5bWFwL3BvbGlzaC1zbGFzaF9jcDg1Mi52aW0gYi9ydW50aW1lL2tleW1hcC9wb2xpc2gtc2xhc2hfY3A4NTIudmltCmluZGV4IDg1YzNiNDAuLjIyYzE4MDkgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUva2V5bWFwL3BvbGlzaC1zbGFzaF9jcDg1Mi52aW0KKysrIGIvcnVudGltZS9rZXltYXAvcG9saXNoLXNsYXNoX2NwODUyLnZpbQpAQCAtNCw3ICs0LDcgQEAKICIgQ3VycmVudCB2ZXJzaW9uOiAxLjAuMgogIiBIaXN0b3J5OiBzZWUgcG9saXNoLXNsYXNoLnZpbQogCi0iIFRoaXMga2V5bWFwIGFkZHMgdGhlIHNwZWNpYWwgUG9saXNoIGxldHRlcnMgCisiIFRoaXMga2V5bWFwIGFkZHMgdGhlIHNwZWNpYWwgUG9saXNoIGxldHRlcnMKICIgdG8gYW4gZXhpc3RpbmcgTGF0aW4ga2V5Ym9hcmQuCiAiIEFsbCBjaGFycyBhcyB1c3VhbCBleGNlcHQ6CiAiIFBvbGlzaDoKZGlmZiAtLWdpdCBhL3J1bnRpbWUva2V5bWFwL3BvbGlzaC1zbGFzaF9pc28tODg1OS0yLnZpbSBiL3J1bnRpbWUva2V5bWFwL3BvbGlzaC1zbGFzaF9pc28tODg1OS0yLnZpbQppbmRleCA1MDE3OWNlLi4zYTEyMDNhIDEwMDY0NAotLS0gYS9ydW50aW1lL2tleW1hcC9wb2xpc2gtc2xhc2hfaXNvLTg4NTktMi52aW0KKysrIGIvcnVudGltZS9rZXltYXAvcG9saXNoLXNsYXNoX2lzby04ODU5LTIudmltCkBAIC00LDcgKzQsNyBAQAogIiBDdXJyZW50IHZlcnNpb246IDEuMC4yCiAiIEhpc3Rvcnk6IHBvbGlzaC1zbGFzaC52aW0KIAotIiBUaGlzIGtleW1hcCBhZGRzIHRoZSBzcGVjaWFsIFBvbGlzaCBsZXR0ZXJzIAorIiBUaGlzIGtleW1hcCBhZGRzIHRoZSBzcGVjaWFsIFBvbGlzaCBsZXR0ZXJzCiAiIHRvIGFuIGV4aXN0aW5nIExhdGluIGtleWJvYXJkLgogIiBBbGwgY2hhcnMgYXMgdXN1YWwgZXhjZXB0OgogIiBQb2xpc2g6CmRpZmYgLS1naXQgYS9ydW50aW1lL2tleW1hcC9wb2xpc2gtc2xhc2hfdXRmLTgudmltIGIvcnVudGltZS9rZXltYXAvcG9saXNoLXNsYXNoX3V0Zi04LnZpbQppbmRleCA0ZGE2NTZkLi4zYTRlYjcwIDEwMDY0NAotLS0gYS9ydW50aW1lL2tleW1hcC9wb2xpc2gtc2xhc2hfdXRmLTgudmltCisrKyBiL3J1bnRpbWUva2V5bWFwL3BvbGlzaC1zbGFzaF91dGYtOC52aW0KQEAgLTQsNyArNCw3IEBACiAiIEN1cnJlbnQgdmVyc2lvbjogMS4wLjIKICIgSGlzdG9yeTogc2VlIHBvbGlzaC1zbGFzaC52aW0KIAotIiBUaGlzIGtleW1hcCBhZGRzIHRoZSBzcGVjaWFsIFBvbGlzaCBsZXR0ZXJzIAorIiBUaGlzIGtleW1hcCBhZGRzIHRoZSBzcGVjaWFsIFBvbGlzaCBsZXR0ZXJzCiAiIHRvIGFuIGV4aXN0aW5nIExhdGluIGtleWJvYXJkLgogIiBBbGwgY2hhcnMgYXMgdXN1YWwgZXhjZXB0OgogIiBQb2xpc2g6CmRpZmYgLS1naXQgYS9ydW50aW1lL2tleW1hcC90YW1pbF90c2NpaS52aW0gYi9ydW50aW1lL2tleW1hcC90YW1pbF90c2NpaS52aW0KaW5kZXggZjJiYjZjYS4uOTJkYmRjOSAxMDA2NDQKLS0tIGEvcnVudGltZS9rZXltYXAvdGFtaWxfdHNjaWkudmltCisrKyBiL3J1bnRpbWUva2V5bWFwL3RhbWlsX3RzY2lpLnZpbQpAQCAtOSw3ICs5LDcgQEAKICIKICIgVmlzaXQgaHR0cDovL3d3dy50c2NpaS5vcmcgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIFRTQ0lJCiAiIGVuY29kaW5nLgotIiAKKyIKIGxldCBiOmtleW1hcF9uYW1lID0gInRhbWlsX3RzY2lpIgogCiBsb2Fka2V5bWFwCmRpZmYgLS1naXQgYS9ydW50aW1lL2xhbmcvbWVudV9kZV9kZS5sYXRpbjEudmltIGIvcnVudGltZS9sYW5nL21lbnVfZGVfZGUubGF0aW4xLnZpbQppbmRleCAzZDI4NTgxLi5mMzc0NDY1IDEwMDY0NAotLS0gYS9ydW50aW1lL2xhbmcvbWVudV9kZV9kZS5sYXRpbjEudmltCisrKyBiL3J1bnRpbWUvbGFuZy9tZW51X2RlX2RlLmxhdGluMS52aW0KQEAgLTU1LDcgKzU1LDcgQEAKICIgWFhYICZFIHdvdWxkIGNvbmZsaWN0IHdpdGggJ1N1Y2hlblwgdW5kXCAmRXJzZXR6ZW4nLCBzZWUgYWJvdmUKIG1lbnV0cmFucyBTZXR0aW5nc1wgJldpbmRvdwkJCQlFJmluc3RlbGx1bmdlblwuXC5cLgogbWVudXRyYW5zICZHbG9iYWxcIFNldHRpbmdzCQkJCSZHbG9iYWxlXCBFaW5zdGVsbHVuZ2VuCi1tZW51dHJhbnMgU3RhcnR1cFwgJlNldHRpbmdzICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTdGFydGVpbnN0ZWxsdW5nZW4KK21lbnV0cmFucyBTdGFydHVwXCAmU2V0dGluZ3MJCQkJJlN0YXJ0ZWluc3RlbGx1bmdlbgogCiBtZW51dHJhbnMgVG9nZ2xlXCBQYXR0ZXJuXCAmSGlnaGxpZ2h0PFRhYj46c2V0XCBobHMhCSZIZXJ2b3JoZWJ1bmdlblwgZWluLVwgdW5kXCBhdXNzY2hhbHRlbjxUYWI+OnNldFwgaGxzIQogbWVudXRyYW5zIFRvZ2dsZVwgJklnbm9yZS1jYXNlPFRhYj46c2V0XCBpYyEJCUdyb99zY2hyZWlidW5nXCAmaWdub3JpZXJlblwgb2RlclwgYmVudXR6ZW48VGFiPjpzZXRcIGljIQpAQCAtMjQ3LDggKzI0Nyw4IEBACiBtZW51dHJhbnMgJkRlbGV0ZQkJCSZM9nNjaGVuCiBtZW51dHJhbnMgU2VsZWN0XCBCbG9ja3dpc2UJCUF1c3dhaGxcIGJsb2NrYXJ0aWcKIG1lbnV0cmFucyBTZWxlY3RcICZXb3JkCQkJQXVzd2FobFwgZGVzXCAmV29ydGVzCi1tZW51dHJhbnMgU2VsZWN0XCAmU2VudGVuY2UgICAgICAgICAgICAgQXVzd2FobFwgZGVzXCBTYSZ0emVzCi1tZW51dHJhbnMgU2VsZWN0XCBQYSZyYWdyYXBoICAgICAgICAgICAgQXVzd2FobFwgZGVzXCBBYnNhdHplcworbWVudXRyYW5zIFNlbGVjdFwgJlNlbnRlbmNlCQlBdXN3YWhsXCBkZXNcIFNhJnR6ZXMKK21lbnV0cmFucyBTZWxlY3RcIFBhJnJhZ3JhcGgJCUF1c3dhaGxcIGRlc1wgQWJzYXR6ZXMKIG1lbnV0cmFucyBTZWxlY3RcICZMaW5lCQkJQXVzd2FobFwgZGVyXCAmWmVpbGUKIG1lbnV0cmFucyBTZWxlY3RcICZCbG9jawkJQXVzd2FobFwgZGVzXCAmQmxvY2tzCiBtZW51dHJhbnMgU2VsZWN0XCAmQWxsCQkJJkFsbGVzXCBBdXN35GhsZW4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvbGFuZy9tZW51X2ZyX2ZyLmxhdGluMS52aW0gYi9ydW50aW1lL2xhbmcvbWVudV9mcl9mci5sYXRpbjEudmltCmluZGV4IGU0YjFiYjguLmU4ODgxYmQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvbGFuZy9tZW51X2ZyX2ZyLmxhdGluMS52aW0KKysrIGIvcnVudGltZS9sYW5nL21lbnVfZnJfZnIubGF0aW4xLnZpbQpAQCAtMiw3ICsyLDcgQEAKICIgTWFpbnRhaW5lcjoJCUFkcmllbiBCZWF1IDx2ZXJzaW9uLmZyYW5jYWlzZUBmcmVlLmZyPgogIiBGaXJzdCBWZXJzaW9uOglGcmFuY29pcyBUaHVudXMgPHRodW51c0BzeXN0cmFuLmZyPgogIiBMYXN0IE1vZGlmaWNhdGlvbjogICAgRGF2aWQgQmxhbmNoZXQgPGRhdmlkLmJsYW5jaGV0QGZyZWUuZnI+Ci0iIExhc3QgQ2hhbmdlOgkJMjAwNiBBcHIgMTEKKyIgTGFzdCBDaGFuZ2U6CQkyMDA2IEFwciAzMAogCiAiIFF1aXQgd2hlbiBtZW51IHRyYW5zbGF0aW9ucyBoYXZlIGFscmVhZHkgYmVlbiBkb25lLgogaWYgZXhpc3RzKCJkaWRfbWVudV90cmFucyIpCkBAIC0xNTIsNyArMTUyLDcgQEAKIG1lbnV0cmFucyBTZXRcIGxhbmd1YWdlXCB0b1wgImVuX256IgkJQW5nbGFpc1wgKGVuX256KQogbWVudXRyYW5zIFNldFwgbGFuZ3VhZ2VcIHRvXCAiZW5fdXMiCQlBbmdsYWlzXCAoZW5fdXMpCiAKLW1lbnV0cmFucyAmRmluZFwgTW9yZVwgTGFuZ3VhZ2VzCQkmVHJvdXZlclwgZCdhdXRyZXNcIGxhbmd1ZXMgCittZW51dHJhbnMgJkZpbmRcIE1vcmVcIExhbmd1YWdlcwkJJlRyb3V2ZXJcIGQnYXV0cmVzXCBsYW5ndWVzCiAKIAogCmRpZmYgLS1naXQgYS9ydW50aW1lL2xhbmcvbWVudV9wbF9wbC51dGYtOC52aW0gYi9ydW50aW1lL2xhbmcvbWVudV9wbF9wbC51dGYtOC52aW0KaW5kZXggM2U5M2QxZS4uNTQwY2Q4NCAxMDA2NDQKLS0tIGEvcnVudGltZS9sYW5nL21lbnVfcGxfcGwudXRmLTgudmltCisrKyBiL3J1bnRpbWUvbGFuZy9tZW51X3BsX3BsLnV0Zi04LnZpbQpAQCAtNzUsNyArNzUsNyBAQAogbWVudXRyYW5zIGhlYnJld3AJCQloZWJyYWpza2lcIHAKIG1lbnV0cmFucyBydXNzaWFuLWpjdWtlbgkJcm9zeWpza2ktamN1a2VuCiBtZW51dHJhbnMgcnVzc2lhbi1qY3VrZW53aW4JCXJvc3lqc2tpLWpjdWtlbndpbgotbWVudXRyYW5zIHJ1c3NpYW4teWF3ZXJ0eSAgCQlyb3N5anNraS15YXdlcnR5CittZW51dHJhbnMgcnVzc2lhbi15YXdlcnR5CQlyb3N5anNraS15YXdlcnR5CiAKIG1lbnV0cmFucyBUb2dnbGVcIFBhdHRlcm5cICZIaWdobGlnaHQ8VGFiPjpzZXRcIGhscyEJUG9ka3JltmxhbmllXCAmd3pvcmPzdzxUYWI+OnNldFwgaGxzIQogCmRpZmYgLS1naXQgYS9ydW50aW1lL21hY21hcC52aW0gYi9ydW50aW1lL21hY21hcC52aW0KaW5kZXggMjhjNzI5YS4uMTcxN2Q5OSAxMDA2NDQKLS0tIGEvcnVudGltZS9tYWNtYXAudmltCisrKyBiL3J1bnRpbWUvbWFjbWFwLnZpbQpAQCAtMSw1ICsxLDUgQEAKICIgU3lzdGVtIGd2aW1yYyBmaWxlIGZvciBNYWMgT1MgWAotIiBBdXRob3I6ICAJQmVuamkgRmlzaGVyIDxiZW5qaUBtZW1iZXIuQU1TLm9yZz4KKyIgQXV0aG9yOglCZW5qaSBGaXNoZXIgPGJlbmppQG1lbWJlci5BTVMub3JnPgogIiBMYXN0IENoYW5nZTogVGh1IE1hciAwOSAwOTowMCBBTSAyMDA2IEVTVAogIgogIiBEZWZpbmUgTWFjLXN0YW5kYXJkIGtleWJvYXJkIHNob3J0Y3V0cy4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvbWFjcm9zL2VkaXRleGlzdGluZy52aW0gYi9ydW50aW1lL21hY3Jvcy9lZGl0ZXhpc3RpbmcudmltCmluZGV4IGIwNjJjNWIuLmYwZmVlZDAgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvbWFjcm9zL2VkaXRleGlzdGluZy52aW0KKysrIGIvcnVudGltZS9tYWNyb3MvZWRpdGV4aXN0aW5nLnZpbQpAQCAtMSw2ICsxLDYgQEAKLSIgVmltIFBsdWdpbjogCUVkaXQgdGhlIGZpbGUgd2l0aCBhbiBleGlzdGluZyBWaW0gaWYgcG9zc2libGUKKyIgVmltIFBsdWdpbjoJRWRpdCB0aGUgZmlsZSB3aXRoIGFuIGV4aXN0aW5nIFZpbSBpZiBwb3NzaWJsZQogIiBNYWludGFpbmVyOglCcmFtIE1vb2xlbmFhcgotIiBMYXN0IENoYW5nZToJMjAwNSBEZWMgMTUKKyIgTGFzdCBDaGFuZ2U6CTIwMDYgQXByIDMwCiAKICIgVGhpcyBpcyBhIHBsdWdpbiwgZHJvcCBpdCBpbiB5b3VyIChVbml4KSB+Ly52aW0vcGx1Z2luIG9yIChXaW4zMikKICIgJFZJTS92aW1maWxlcy9wbHVnaW4gZGlyZWN0b3J5LiAgT3IgbWFrZSBhIHN5bWJvbGljIGxpbmssIHNvIHRoYXQgeW91CkBAIC0zNSw3ICszNSw3IEBACiAgICAgaWYgc2VydmVybmFtZSA9PT8gdjpzZXJ2ZXJuYW1lCiAgICAgICBjb250aW51ZQogICAgIGVuZGlmCi0gICAKKwogICAgICIgQ2hlY2sgaWYgdGhpcyBzZXJ2ZXIgaXMgZWRpdGluZyBvdXIgZmlsZS4KICAgICBpZiByZW1vdGVfZXhwcihzZXJ2ZXJuYW1lLCAiYnVmbG9hZGVkKCciIC4gZm5hbWVfZXNjIC4gIicpIikKICAgICAgICIgWWVzLCBicmluZyBpdCB0byB0aGUgZm9yZWdyb3VuZC4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4LzJodG1sLnZpbSBiL3J1bnRpbWUvc3ludGF4LzJodG1sLnZpbQppbmRleCA4YzViNGNmLi45NTg5MTc3IDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC8yaHRtbC52aW0KKysrIGIvcnVudGltZS9zeW50YXgvMmh0bWwudmltCkBAIC0xLDYgKzEsNiBAQAogIiBWaW0gc3ludGF4IHN1cHBvcnQgZmlsZQogIiBNYWludGFpbmVyOiBCcmFtIE1vb2xlbmFhciA8QnJhbUB2aW0ub3JnPgotIiBMYXN0IENoYW5nZTogMjAwNiBBcHIgMTkKKyIgTGFzdCBDaGFuZ2U6IDIwMDYgQXByIDMwCiAiCSAgICAgICAobW9kaWZpZWQgYnkgRGF2aWQgTmVcdntjfWFzIChZZXRpKSA8eWV0aUBwaHlzaWNzLm11bmkuY3o+KQogIgkgICAgICAgKFhIVE1MIHN1cHBvcnQgYnkgUGFuYWdpb3RpcyBJc3NhcmlzIDx0YWtpc0BsdW11bWJhLmx1Yy5hYy5iZT4pCiAKQEAgLTExMSw5ICsxMTEsOSBAQAogCiAgICIgUmVwbGFjZSB0aGUgcmVzZXJ2ZWQgaHRtbCBjaGFyYWN0ZXJzCiAgIGxldCBmb3JtYXR0ZWQgPSBzdWJzdGl0dXRlKHN1YnN0aXR1dGUoc3Vic3RpdHV0ZShzdWJzdGl0dXRlKHN1YnN0aXR1dGUoZm9ybWF0dGVkLCAnJicsICdcJmFtcDsnLCAnZycpLCAnPCcsICdcJmx0OycsICdnJyksICc+JywgJ1wmZ3Q7JywgJ2cnKSwgJyInLCAnXCZxdW90OycsICdnJyksICJceDBjIiwgJzxociBjbGFzcz0iUEFHRS1CUkVBSyI+JywgJ2cnKQotICAKKwogICAiIFJlcGxhY2UgZG91YmxlIHNwYWNlcyBhbmQgbGVhZGluZyBzcGFjZXMKLSAgaWYgJyAnICE9IHM6SHRtbFNwYWNlIAorICBpZiAnICcgIT0gczpIdG1sU3BhY2UKICAgICBsZXQgZm9ybWF0dGVkID0gc3Vic3RpdHV0ZShmb3JtYXR0ZWQsICcgICcsIHM6SHRtbFNwYWNlIC4gczpIdG1sU3BhY2UsICdnJykKICAgICBsZXQgZm9ybWF0dGVkID0gc3Vic3RpdHV0ZShmb3JtYXR0ZWQsICdeICcsIHM6SHRtbFNwYWNlLCAnZycpCiAgIGVuZGlmCkBAIC0zMDYsMTAgKzMwNiwxMCBAQAogICAgIGxldCBzOm4gPSBzOmZpbGxlcgogICAgIHdoaWxlIHM6biA+IDAKICAgICAgIGlmIHM6bnVtYmxpbmVzCi0gICAgICAgICIgSW5kZW50IGlmIGxpbmUgbnVtYmVyaW5nIGlzIG9uCi0gICAgICAgIGxldCBzOm5ldyA9IHJlcGVhdChzOkxlYWRpbmdTcGFjZSwgc3RybGVuKHM6ZW5kKSArIDEpIC4gcmVwZWF0KHM6ZGlmZmZpbGxjaGFyLCAzKQorCSIgSW5kZW50IGlmIGxpbmUgbnVtYmVyaW5nIGlzIG9uCisJbGV0IHM6bmV3ID0gcmVwZWF0KHM6TGVhZGluZ1NwYWNlLCBzdHJsZW4oczplbmQpICsgMSkgLiByZXBlYXQoczpkaWZmZmlsbGNoYXIsIDMpCiAgICAgICBlbHNlCi0gICAgICAgIGxldCBzOm5ldyA9IHJlcGVhdChzOmRpZmZmaWxsY2hhciwgMykKKwlsZXQgczpuZXcgPSByZXBlYXQoczpkaWZmZmlsbGNoYXIsIDMpCiAgICAgICBlbmRpZgogCiAgICAgICBpZiBzOm4gPiAyICYmIHM6biA8IHM6ZmlsbGVyICYmICFleGlzdHMoImh0bWxfd2hvbGVfZmlsbGVyIikKQEAgLTMxOCw4ICszMTgsOCBAQAogICAgICAgZW5kaWYKIAogICAgICAgaWYgIWV4aXN0cygiaHRtbF9ub19wcmUiKQotICAgICAgICAiIEhUTUwgbGluZSB3cmFwcGluZyBpcyBvZmYtLWdvIGFoZWFkIGFuZCBmaWxsIHRvIHRoZSBtYXJnaW4KLSAgICAgICAgbGV0IHM6bmV3ID0gczpuZXcgLiByZXBlYXQoczpkaWZmZmlsbGNoYXIsICZjb2x1bW5zIC0gc3RybGVuKHM6bmV3KSkKKwkiIEhUTUwgbGluZSB3cmFwcGluZyBpcyBvZmYtLWdvIGFoZWFkIGFuZCBmaWxsIHRvIHRoZSBtYXJnaW4KKwlsZXQgczpuZXcgPSBzOm5ldyAuIHJlcGVhdChzOmRpZmZmaWxsY2hhciwgJmNvbHVtbnMgLSBzdHJsZW4oczpuZXcpKQogICAgICAgZW5kaWYKIAogICAgICAgbGV0IHM6bmV3ID0gczpIdG1sRm9ybWF0KHM6bmV3LCAiRGlmZkRlbGV0ZSIpCkBAIC0zNDksMTAgKzM0OSwxMCBAQAogICAgICAgIiBIVE1MIGxpbmUgd3JhcHBpbmcgaXMgb2ZmLS1nbyBhaGVhZCBhbmQgZmlsbCB0byB0aGUgbWFyZ2luCiAgICAgICBsZXQgczpuZXcgPSBzOm5ldyAuIHJlcGVhdChzOmZvbGRmaWxsY2hhciwgJmNvbHVtbnMgLSBzdHJsZW4oczpuZXcpKQogICAgIGVuZGlmCi0gICAgCisKICAgICBsZXQgczpuZXcgPSBzOkh0bWxGb3JtYXQoczpuZXcsICJGb2xkZWQiKQogCi0gICAgIiBTa2lwIHRvIHRoZSBlbmQgb2YgdGhlIGZvbGQgIAorICAgICIgU2tpcCB0byB0aGUgZW5kIG9mIHRoZSBmb2xkCiAgICAgbGV0IHM6bG51bSA9IGZvbGRjbG9zZWRlbmQoczpsbnVtKQogCiAgIGVsc2UKQEAgLTM4MCwxMSArMzgwLDExIEBACiAJIiBTcGVlZCBsb29wIChpdCdzIHNtYWxsIC0gdGhhdCdzIHRoZSB0cmljaykKIAkiIEdvIGFsb25nIHRpbGwgd2UgZmluZCBhIGNoYW5nZSBpbiBobElECiAJd2hpbGUgczpjb2wgPD0gczpsZW4gJiYgczppZCA9PSBkaWZmX2hsSUQoczpsbnVtLCBzOmNvbCkgfCBsZXQgczpjb2wgPSBzOmNvbCArIDEgfCBlbmR3aGlsZQotICAgICAgICBpZiBzOmxlbiA8ICZjb2x1bW5zICYmICFleGlzdHMoImh0bWxfbm9fcHJlIikKKwlpZiBzOmxlbiA8ICZjb2x1bW5zICYmICFleGlzdHMoImh0bWxfbm9fcHJlIikKIAkgICIgQWRkIHNwYWNlcyBhdCB0aGUgZW5kIHRvIG1hcmsgdGhlIGNoYW5nZWQgbGluZS4KLSAgICAgICAgICBsZXQgczpsaW5lID0gczpsaW5lIC4gcmVwZWF0KCcgJywgJmNvbHVtbnMgLSBzOmxlbikKLSAgICAgICAgICBsZXQgczpsZW4gPSAmY29sdW1ucwotICAgICAgICBlbmRpZgorCSAgbGV0IHM6bGluZSA9IHM6bGluZSAuIHJlcGVhdCgnICcsICZjb2x1bW5zIC0gczpsZW4pCisJICBsZXQgczpsZW4gPSAmY29sdW1ucworCWVuZGlmCiAgICAgICBlbHNlCiAJbGV0IHM6aWQgPSBzeW5JRChzOmxudW0sIHM6Y29sLCAxKQogCWxldCBzOmNvbCA9IHM6Y29sICsgMQpAQCAtMzk3LDkgKzM5Nyw5IEBACiAgICAgICBsZXQgczpleHBhbmRlZHRhYiA9IHN0cnBhcnQoczpsaW5lLCBzOnN0YXJ0Y29sIC0gMSwgczpjb2wgLSBzOnN0YXJ0Y29sKQogICAgICAgbGV0IGlkeCA9IHN0cmlkeChzOmV4cGFuZGVkdGFiLCAiXHQiKQogICAgICAgd2hpbGUgaWR4ID49IDAKLSAgICAgICAgbGV0IGkgPSAmdHMgLSAoKGlkeCArIHM6c3RhcnRjb2wgLSAxKSAlICZ0cykKLSAgICAgICAgbGV0IHM6ZXhwYW5kZWR0YWIgPSBzdWJzdGl0dXRlKHM6ZXhwYW5kZWR0YWIsICdcdCcsIHJlcGVhdCgnICcsIGkpLCAnJykKLSAgICAgICAgbGV0IGlkeCA9IHN0cmlkeChzOmV4cGFuZGVkdGFiLCAiXHQiKQorCWxldCBpID0gJnRzIC0gKChpZHggKyBzOnN0YXJ0Y29sIC0gMSkgJSAmdHMpCisJbGV0IHM6ZXhwYW5kZWR0YWIgPSBzdWJzdGl0dXRlKHM6ZXhwYW5kZWR0YWIsICdcdCcsIHJlcGVhdCgnICcsIGkpLCAnJykKKwlsZXQgaWR4ID0gc3RyaWR4KHM6ZXhwYW5kZWR0YWIsICJcdCIpCiAgICAgICBlbmR3aGlsZQogCiAgICAgICAiIE91dHB1dCB0aGUgdGV4dCB3aXRoIHRoZSBzYW1lIHN5bklELCB3aXRoIGNsYXNzIHNldCB0byB7czppZF9uYW1lfQpAQCAtNTEyLDcgKzUxMiw3IEBACiAgIGVuZGlmCiBlbmRpZgogCi1pZiBleGlzdHMoInVzZV94aHRtbCIpIAoraWYgZXhpc3RzKCJ1c2VfeGh0bWwiKQogICBleGUgIm5vcm1hbCEgZ2cvPGh0bWwvZVxuYSB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIlxlIgogZW5kaWYKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvY2hvcmRwcm8udmltIGIvcnVudGltZS9zeW50YXgvY2hvcmRwcm8udmltCmluZGV4IGEyNTFhNjkuLjVjY2VjMjYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L2Nob3JkcHJvLnZpbQorKysgYi9ydW50aW1lL3N5bnRheC9jaG9yZHByby52aW0KQEAgLTEsNyArMSw3IEBACiAiIFZpbSBzeW50YXggZmlsZQogIiBMYW5ndWFnZTogICAgIENob3JkUHJvICh2LiAzLjYuMikKICIgTWFpbnRhaW5lcjogICBOaWVscyBCbyBBbmRlcnNlbiA8bmllbHNAbmlib2FuLmRrPgotIiBMYXN0IENoYW5nZToJMjAwNiBBcHIgMjAgCisiIExhc3QgQ2hhbmdlOgkyMDA2IEFwciAzMAogIiBSZW1hcms6ICAgICAgIFJlcXVpcmVzIFZJTSB2ZXJzaW9uIDYuMDAgb3IgZ3JlYXRlcgogCiAiIFF1aXQgd2hlbiBhIHN5bnRheCBmaWxlIHdhcyBhbHJlYWR5IGxvYWRlZApkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvZC52aW0gYi9ydW50aW1lL3N5bnRheC9kLnZpbQppbmRleCBhYmQ3MjE3Li4yNDRlMDUzIDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC9kLnZpbQorKysgYi9ydW50aW1lL3N5bnRheC9kLnZpbQpAQCAtMSwxMCArMSwxMCBAQAogIiBWaW0gc3ludGF4IGZpbGUgZm9yIHRoZSBEIHByb2dyYW1taW5nIGxhbmd1YWdlICh2ZXJzaW9uIDAuMTQ5KS4KICIKICIgTGFuZ3VhZ2U6CUQKLSIgTWFpbnRhaW5lcjoJSmFzb24gTWlsbHM8am1pbGxzQGNzLm11bi5jYT4gCisiIE1haW50YWluZXI6CUphc29uIE1pbGxzPGptaWxsc0Bjcy5tdW4uY2E+CiAiICAgV2hlbiBlbWFpbGluZyBtZSwgcGxlYXNlIHB1dCB0aGUgd29yZCB2aW0gc29tZXdoZXJlIGluIHRoZSBzdWJqZWN0CiAiICAgdG8gZW5zdXJlIHRoZSBlbWFpbCBkb2VzIG5vdCBnZXQgbWFya2VkIGFzIHNwYW0uCi0iIExhc3QgQ2hhbmdlOgkyMDA2IE1hciAxMgorIiBMYXN0IENoYW5nZToJMjAwNiBBcHIgMzAKICIgVmVyc2lvbjoJMC4xNQogIgogIiBPcHRpb25zOgpkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvZXZpZXdzLnZpbSBiL3J1bnRpbWUvc3ludGF4L2V2aWV3cy52aW0KaW5kZXggOTExZTFiZS4uYWE2NWZkYSAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvZXZpZXdzLnZpbQorKysgYi9ydW50aW1lL3N5bnRheC9ldmlld3MudmltCkBAIC0xLDkgKzEsOSBAQAogIiBWaW0gc3ludGF4IGZpbGUKICIgTGFuZ3VhZ2U6CUV2aWV3cyAoaHR0cDovL3d3dy5ldmlld3MuY29tKQogIiBNYWludGFpbmVyOglWYWlkb3RhcyBaZW1seXMgPHplbWx5c0BnbWFpbC5jb20+Ci0iIExhc3QgQ2hhbmdlOiAgMjAwNiBKYW4gMTEKKyIgTGFzdCBDaGFuZ2U6ICAyMDA2IEFwciAzMAogIiBGaWxlbmFtZXM6CSoucHJnCi0iIFVSTDoJaHR0cDovL3Vvc2lzLm1pZi52dS5sdC9+emVtbHlzL3ZpbS1zeW50YXgvZXZpZXdzLnZpbQkKKyIgVVJMOglodHRwOi8vdW9zaXMubWlmLnZ1Lmx0L356ZW1seXMvdmltLXN5bnRheC9ldmlld3MudmltCiAiIEZvciB2ZXJzaW9uIDUueDogQ2xlYXIgYWxsIHN5bnRheCBpdGVtcwogIiBGb3IgdmVyc2lvbiA2Lng6IFF1aXQgd2hlbiBhIHN5bnRheCBmaWxlIHdhcyBhbHJlYWR5IGxvYWRlZAogaWYgdmVyc2lvbiA8IDYwMApkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvZ3JldGwudmltIGIvcnVudGltZS9zeW50YXgvZ3JldGwudmltCmluZGV4IDk5OTlmZjAuLjM3Mjk5YjggMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L2dyZXRsLnZpbQorKysgYi9ydW50aW1lL3N5bnRheC9ncmV0bC52aW0KQEAgLTEsOSArMSw5IEBACiAiIFZpbSBzeW50YXggZmlsZQotIiBMYW5ndWFnZToJZ3JldGwgKGh0dHA6Ly9ncmV0bC5zZi5uZXQpIAorIiBMYW5ndWFnZToJZ3JldGwgKGh0dHA6Ly9ncmV0bC5zZi5uZXQpCiAiIE1haW50YWluZXI6CVZhaWRvdGFzIFplbWx5cyA8emVtbHlzQGdtYWlsLmNvbT4KLSIgTGFzdCBDaGFuZ2U6ICAyMDA2IEphbiA2CisiIExhc3QgQ2hhbmdlOiAgMjAwNiBBcHIgMzAKICIgRmlsZW5hbWVzOgkqLmlucCAqLmdyZXRsCi0iIFVSTDoJaHR0cDovL3Vvc2lzLm1pZi52dS5sdC9+emVtbHlzL3ZpbS1zeW50YXgvZ3JldGwudmltCQorIiBVUkw6CWh0dHA6Ly91b3Npcy5taWYudnUubHQvfnplbWx5cy92aW0tc3ludGF4L2dyZXRsLnZpbQogIiBGb3IgdmVyc2lvbiA1Lng6IENsZWFyIGFsbCBzeW50YXggaXRlbXMKICIgRm9yIHZlcnNpb24gNi54OiBRdWl0IHdoZW4gYSBzeW50YXggZmlsZSB3YXMgYWxyZWFkeSBsb2FkZWQKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvamF2YS52aW0gYi9ydW50aW1lL3N5bnRheC9qYXZhLnZpbQppbmRleCAwYzI1MGM2Li44NWVhMDgxIDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC9qYXZhLnZpbQorKysgYi9ydW50aW1lL3N5bnRheC9qYXZhLnZpbQpAQCAtMiw3ICsyLDcgQEAKICIgTGFuZ3VhZ2U6ICAgICBKYXZhCiAiIE1haW50YWluZXI6ICAgQ2xhdWRpbyBGbGVpbmVyIDxjbGF1ZGlvQGZsZWluZXIuY29tPgogIiBVUkw6CQlodHRwOi8vd3d3LmZsZWluZXIuY29tL3ZpbS9zeW50YXgvamF2YS52aW0KLSIgTGFzdCBDaGFuZ2U6ICAyMDA2IEphbiAxNQorIiBMYXN0IENoYW5nZTogIDIwMDYgQXByIDMwCiAKICIgUGxlYXNlIGNoZWNrIDpoZWxwIGphdmEudmltIGZvciBjb21tZW50cyBvbiBzb21lIG9mIHRoZSBvcHRpb25zIGF2YWlsYWJsZS4KIApAQCAtMzcsNyArMzcsNyBAQAogCiAiIGtleXdvcmQgZGVmaW5pdGlvbnMKIHN5biBrZXl3b3JkIGphdmFFeHRlcm5hbAluYXRpdmUgcGFja2FnZQotc3luIG1hdGNoIGphdmFFeHRlcm5hbCAgICAgICAgICAiXDxpbXBvcnRcPlwoXHNcK3N0YXRpY1w+XClcPyIKK3N5biBtYXRjaCBqYXZhRXh0ZXJuYWwJCSJcPGltcG9ydFw+XChcc1wrc3RhdGljXD5cKVw/Igogc3luIGtleXdvcmQgamF2YUVycm9yCQlnb3RvIGNvbnN0CiBzeW4ga2V5d29yZCBqYXZhQ29uZGl0aW9uYWwJaWYgZWxzZSBzd2l0Y2gKIHN5biBrZXl3b3JkIGphdmFSZXBlYXQJCXdoaWxlIGZvciBkbwpAQCAtNjIsMTMgKzYyLDEzIEBACiBzeW4gbWF0Y2ggICBqYXZhQ2xhc3NEZWNsICAgICAgICJAaW50ZXJmYWNlXD4iCiBzeW4ga2V5d29yZCBqYXZhQnJhbmNoCQlicmVhayBjb250aW51ZSBuZXh0Z3JvdXA9amF2YVVzZXJMYWJlbFJlZiBza2lwd2hpdGUKIHN5biBtYXRjaCAgIGphdmFVc2VyTGFiZWxSZWYJIlxrXCsiIGNvbnRhaW5lZAotc3luIG1hdGNoICAgamF2YVZhckFyZyAgICAgICAgICAiXC5cLlwuIgorc3luIG1hdGNoICAgamF2YVZhckFyZwkJIlwuXC5cLiIKIHN5biBrZXl3b3JkIGphdmFTY29wZURlY2wJcHVibGljIHByb3RlY3RlZCBwcml2YXRlIGFic3RyYWN0CiAKIGlmIGV4aXN0cygiamF2YV9oaWdobGlnaHRfamF2YV9sYW5nX2lkcyIpCiAgIGxldCBqYXZhX2hpZ2hsaWdodF9hbGw9MQogZW5kaWYKLWlmIGV4aXN0cygiamF2YV9oaWdobGlnaHRfYWxsIikgIHx8IGV4aXN0cygiamF2YV9oaWdobGlnaHRfamF2YSIpICB8fCBleGlzdHMoImphdmFfaGlnaGxpZ2h0X2phdmFfbGFuZyIpIAoraWYgZXhpc3RzKCJqYXZhX2hpZ2hsaWdodF9hbGwiKSAgfHwgZXhpc3RzKCJqYXZhX2hpZ2hsaWdodF9qYXZhIikgIHx8IGV4aXN0cygiamF2YV9oaWdobGlnaHRfamF2YV9sYW5nIikKICAgIiBqYXZhLmxhbmcuKgogICBzeW4gbWF0Y2ggamF2YUxhbmdDbGFzcyAiXDxTeXN0ZW1cPiIKICAgc3luIGtleXdvcmQgamF2YVJfSmF2YUxhbmcgTmVnYXRpdmVBcnJheVNpemVFeGNlcHRpb24gQXJyYXlTdG9yZUV4Y2VwdGlvbiBJbGxlZ2FsU3RhdGVFeGNlcHRpb24gUnVudGltZUV4Y2VwdGlvbiBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBBcml0aG1ldGljRXhjZXB0aW9uIENsYXNzQ2FzdEV4Y2VwdGlvbiBFbnVtQ29uc3RhbnROb3RQcmVzZW50RXhjZXB0aW9uIFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIElsbGVnYWxNb25pdG9yU3RhdGVFeGNlcHRpb24gSWxsZWdhbFRocmVhZFN0YXRlRXhjZXB0aW9uIE51bWJlckZvcm1hdEV4Y2VwdGlvbiBOdWxsUG9pbnRlckV4Y2VwdGlvbiBUeXBlTm90UHJlc2VudEV4Y2VwdGlvbiBTZWN1cml0eUV4Y2VwdGlvbgpkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvbXVzaC52aW0gYi9ydW50aW1lL3N5bnRheC9tdXNoLnZpbQppbmRleCBkNDM3NDBiLi4wNjQ1ZjMzIDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC9tdXNoLnZpbQorKysgYi9ydW50aW1lL3N5bnRheC9tdXNoLnZpbQpAQCAtMSw1ICsxLDUgQEAKICIgTVVTSGNvZGUgc3ludGF4IGZpbGUKLSIgTWFpbnRhaW5lcjogUmljayBCaXJkIDxudmVpZEBudmVpZC5jb20+CQorIiBNYWludGFpbmVyOiBSaWNrIEJpcmQgPG52ZWlkQG52ZWlkLmNvbT4KICIgQmFzZWQgb24gdmltIFN5bnRheCBmaWxlIGJ5OiBCZWsgT2JlcmluIDxnb3NzYW1lckB0ZXJ0aXVzLm5ldC5hdT4KICIgTGFzdCBVcGRhdGVkOiBGcmkgTm92IDA0IDIwOjI4OjE1IDIwMDUKICIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L3IudmltIGIvcnVudGltZS9zeW50YXgvci52aW0KaW5kZXggODQzMmMyMC4uZjNlNzMwZSAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvci52aW0KKysrIGIvcnVudGltZS9zeW50YXgvci52aW0KQEAgLTEsNyArMSw3IEBACiAiIFZpbSBzeW50YXggZmlsZQogIiBMYW5ndWFnZToJUiAoR05VIFMpCiAiIE1haW50YWluZXI6CVZhaWRvdGFzIFplbWx5cyA8emVtbHlzQGdtYWlsLmNvbT4KLSIgTGFzdCBDaGFuZ2U6ICAyMDA2IEphbnVhcnkgMTIgCisiIExhc3QgQ2hhbmdlOiAgMjAwNiBBcHIgMzAKICIgRmlsZW5hbWVzOgkqLlIgKi5Sb3V0ICouciAqLlJoaXN0b3J5ICouUnQgKi5Sb3V0LnNhdmUgKi5Sb3V0LmZhaWwKICIgVVJMOgkJaHR0cDovL3Vvc2lzLm1pZi52dS5sdC9+emVtbHlzL3ZpbS1zeW50YXgvci52aW0KIApkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvc3FsLnZpbSBiL3J1bnRpbWUvc3ludGF4L3NxbC52aW0KaW5kZXggOTM1ZGVjNC4uMzExZDllZSAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvc3FsLnZpbQorKysgYi9ydW50aW1lL3N5bnRheC9zcWwudmltCkBAIC01LDggKzUsOCBAQAogIiBWZXJzaW9uOiAgICAgMS4wCiAKICIgRGVzY3JpcHRpb246IENoZWNrcyBmb3IgYToKLSIgICAgICAgICAgICAgICAgICBidWZmZXIgbG9jYWwgdmFyaWFibGUsIAotIiAgICAgICAgICAgICAgICAgIGdsb2JhbCB2YXJpYWJsZSwgCisiICAgICAgICAgICAgICAgICAgYnVmZmVyIGxvY2FsIHZhcmlhYmxlLAorIiAgICAgICAgICAgICAgICAgIGdsb2JhbCB2YXJpYWJsZSwKICIgICAgICAgICAgICAgIElmIHRoZSBhYm92ZSBleGlzdCwgaXQgd2lsbCBzb3VyY2UgdGhlIHR5cGUgc3BlY2lmaWVkLgogIiAgICAgICAgICAgICAgSWYgbm9uZSBleGlzdCwgaXQgd2lsbCBzb3VyY2UgdGhlIGRlZmF1bHQgc3FsLnZpbSBmaWxlLgogIgpkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvc3lubG9hZC52aW0gYi9ydW50aW1lL3N5bnRheC9zeW5sb2FkLnZpbQppbmRleCA1N2RlODEyLi41NGFlY2JiIDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC9zeW5sb2FkLnZpbQorKysgYi9ydW50aW1lL3N5bnRheC9zeW5sb2FkLnZpbQpAQCAtMSw2ICsxLDYgQEAKICIgVmltIHN5bnRheCBzdXBwb3J0IGZpbGUKICIgTWFpbnRhaW5lcjoJQnJhbSBNb29sZW5hYXIgPEJyYW1AdmltLm9yZz4KLSIgTGFzdCBDaGFuZ2U6CTIwMDYgTWFyIDE4CisiIExhc3QgQ2hhbmdlOgkyMDA2IEFwciAzMAogCiAiIFRoaXMgZmlsZSBzZXRzIHVwIGZvciBzeW50YXggaGlnaGxpZ2h0aW5nLgogIiBJdCBpcyBsb2FkZWQgZnJvbSAic3ludGF4LnZpbSIgYW5kICJtYW51YWwudmltIi4KQEAgLTU5LDEwICs1OSwxMCBAQAogCiAKICIgSGFuZGxlIGFkZGluZyBkb3h5Z2VuIHRvIG90aGVyIGxhbmd1YWdlcyAoQywgQysrLCBJREwpCi1hdSBTeW50YXggY3BwLGMsaWRsIAorYXUgU3ludGF4IGNwcCxjLGlkbAogCVwgaWYgKGV4aXN0cygnYjpsb2FkX2RveHlnZW5fc3ludGF4JykgJiYgYjpsb2FkX2RveHlnZW5fc3ludGF4KQogCVwJfHwgKGV4aXN0cygnZzpsb2FkX2RveHlnZW5fc3ludGF4JykgJiYgZzpsb2FkX2RveHlnZW5fc3ludGF4KQotCVwgICB8IHJ1bnRpbWUhIHN5bnRheC9kb3h5Z2VuLnZpbSAKKwlcICAgfCBydW50aW1lISBzeW50YXgvZG94eWdlbi52aW0KIAlcIHwgZW5kaWYKIAogCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC93c21sLnZpbSBiL3J1bnRpbWUvc3ludGF4L3dzbWwudmltCmluZGV4IDlkYzdmOTUuLjJhOTJhMGQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L3dzbWwudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L3dzbWwudmltCkBAIC0yLDcgKzIsNyBAQAogIiBMYW5ndWFnZTogICAgIFdTTUwKICIgTWFpbnRhaW5lcjogICBUaG9tYXMgSGFzZWx3YW50ZXIgPHRob21hcy5oYXNlbHdhbnRlckBkZXJpLm9yZz4KICIgVVJMOgkJbm9uZQotIiBMYXN0IENoYW5nZTogIDIwMDYgTWFyIDEzCisiIExhc3QgQ2hhbmdlOiAgMjAwNiBBcHIgMzAKIAogIiBRdWl0IHdoZW4gYSBzeW50YXggZmlsZSB3YXMgYWxyZWFkeSBsb2FkZWQKIGlmIHZlcnNpb24gPCA2MDAKQEAgLTEzLDkgKzEzLDkgQEAKIAogIiBXU01MCiBzeW4ga2V5d29yZCB3c21sSGVhZGVyCQl3c21sVmFyaWFudAotc3luIGtleXdvcmQgd3NtbE5hbWVzcGFjZQluYW1lc3BhY2UgCi1zeW4ga2V5d29yZCB3c21sVG9wTGV2ZWwJY29uY2VwdCBpbnN0YW5jZSByZWxhdGlvbkluc3RhbmNlIG9mVHlwZSB1c2VzTWVkaWF0b3IgdXNlc1NlcnZpY2UgcmVsYXRpb24gc2hhcmVkVmFyaWFibGVzIGltcG9ydHNPbnRvbG9neSAKLXN5biBrZXl3b3JkIHdzbWxPbnRvbG9neQloYXNWYWx1ZSBtZW1iZXJPZiBvZlR5cGUgaW1wbGllc1R5cGUgc3ViQ29uY2VwdE9mIAorc3luIGtleXdvcmQgd3NtbE5hbWVzcGFjZQluYW1lc3BhY2UKK3N5biBrZXl3b3JkIHdzbWxUb3BMZXZlbAljb25jZXB0IGluc3RhbmNlIHJlbGF0aW9uSW5zdGFuY2Ugb2ZUeXBlIHVzZXNNZWRpYXRvciB1c2VzU2VydmljZSByZWxhdGlvbiBzaGFyZWRWYXJpYWJsZXMgaW1wb3J0c09udG9sb2d5CitzeW4ga2V5d29yZCB3c21sT250b2xvZ3kJaGFzVmFsdWUgbWVtYmVyT2Ygb2ZUeXBlIGltcGxpZXNUeXBlIHN1YkNvbmNlcHRPZgogc3luIGtleXdvcmQgd3NtbEF4aW9tCQlheGlvbSBkZWZpbmVkQnkKIHN5biBrZXl3b3JkIHdzbWxTZXJ2aWNlCQlhc3N1bXB0aW9uIGVmZmVjdCBwb3N0Y29uZGl0aW9uIHByZWNvbmRpdGlvbiBjYXBhYmlsaXR5IGludGVyZmFjZQogc3luIGtleXdvcmQgd3NtbFRvcExldmVsCW9vTWVkaWF0b3Igd3dNZWRpYXRvciB3Z01lZGlhdG9yIGdnTWVkaWF0b3IKZGlmZiAtLWdpdCBhL3J1bnRpbWUvdHV0b3IvdHV0b3IucGwgYi9ydW50aW1lL3R1dG9yL3R1dG9yLnBsCmluZGV4IDRjYWRiOGMuLjdmMzlmMzggMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvdHV0b3IvdHV0b3IucGwKKysrIGIvcnVudGltZS90dXRvci90dXRvci5wbApAQCAtOCw4ICs4LDggQEAKICAgICAgdb95d2HmIFZpbWEgamFrbyBlZHl0b3JhIG9n82xuZWdvIHByemV6bmFjemVuaWEuCiAKICAgICAgQ3phcyBwb3RyemVibnkgbmEgdWtv8WN6ZW5pZSB0dXRvcmlhbGEgdG8gMjUgZG8gMzAgbWludXQgaSB6YWxlv3kKLSAgICAgb2QgdGVnbyBqYWsgd2llbGUgY3phc3Ugc3DqZHppc3ogbmEgZWtzcGVyeW1lbnRvd2FuaXUuICAKLQkgCisgICAgIG9kIHRlZ28gamFrIHdpZWxlIGN6YXN1IHNw6mR6aXN6IG5hIGVrc3BlcnltZW50b3dhbml1LgorCiAJIFVXQUdBOgogCSBQb2xlY2VuaWEgd3lrb255d2FuZSB3IGN6YXNpZSBsZWtjamkgem1vZHlmaWt1arEgdGVrc3QuIFpy82IKIAkgd2N6ZbZuaWVqIGtvcGnqIHRlZ28gcGxpa3UgZG8g5ndpY3pl8SAoamW2bGkgemFjerGzZbYga29tZW5ksQpAQCAtMTk5LDcgKzE5OSw3IEBACiAKICAgNC4gV3Bpc3ogICBkdyAgIGJ5IHVzdW6x5iB3eXJhei4KIAotICBVV0FHQTogTGl0ZXJhICBkICBwb2phd2kgc2nqIG5hIGRvbGUgZWtyYW51LiBWaW0gY3pla2EgbmEgd3Bpc2FuaWUgIHcgLiAKKyAgVVdBR0E6IExpdGVyYSAgZCAgcG9qYXdpIHNp6iBuYSBkb2xlIGVrcmFudS4gVmltIGN6ZWthIG5hIHdwaXNhbmllICB3IC4KIAkgSmW2bGkgem9iYWN6eXN6IGlubnkgem5hayBvem5hY3phIHRvLCC/ZSB3cGlzYbNltiBjb7YgvGxlLCB3Y2m2bmlqCiAJIDxFU0M+IGkgemFjem5paiBvZCBwb2N6sXRrdS4KIApAQCAtMzU5LDcgKzM1OSw3IEBACiAgIGdkemllOgogICAgb3BlcmF0b3IgIC0gdG8gY28gdHJ6ZWJhIHpyb2Jp5iAobnAuICBkICBkbGEgdXN1d2FuaWEpCiAgICBbbGljemJhXSAgLSBvcGNqb25hbG5lLCBpbGUgcmF6eSBwb3d083J6eeYgcnVjaAotICAgcnVjaCAgICAgIC0gcHJ6ZW5vc2kgbmFkIHRla3N0ZW0gZG8gb3Blcm93YW5pYSwgdGFraW0gamFrICB3ICh3eXJheiksIAorICAgcnVjaCAgICAgIC0gcHJ6ZW5vc2kgbmFkIHRla3N0ZW0gZG8gb3Blcm93YW5pYSwgdGFraW0gamFrICB3ICh3eXJheiksCiAJICAgICAgICQgIChkbyBrb/FjYSBsaW5paSksIGV0Yy4KIAogICA2LiBCeSBwcnplarbmIGRvIHBvY3qxdGt1IGxpbmlpIHW/eWogemVyYTogIDAKQEAgLTQ5Miw3ICs0OTIsNyBAQAogCiAgIFVXQUdBOiBQcnplY3p5dGFqIGNhs7EgbGVrY2rqIHphbmltIHd5a29uYXN6IGpha2lltiBwb2xlY2VuaWEhISEKIAotICAxLiBQcnp5dHJ6eW1haiBrbGF3aXN6IENUUkwgaSB3Y2m2bmlqICBnIC4gVb95d2FteSBub3RhY2ppIENUUkwtRy4gCisgIDEuIFByenl0cnp5bWFqIGtsYXdpc3ogQ1RSTCBpIHdjabZuaWogIGcgLiBVv3l3YW15IG5vdGFjamkgQ1RSTC1HLgogICAgICBOYSBkb2xlIHN0cm9ueSBwb2phd2kgc2nqIHBhc2VrIHN0YXR1c3UgeiBuYXp3sSBwbGlrdSBpIHBvenljarEgdyBwbGlrdS4KICAgICAgWmFwYW1p6nRhaiBudW1lciBsaW5paSBkbGEgcG90cnplYiBrcm9rdSAzLgogCmRpZmYgLS1naXQgYS9ydW50aW1lL3R1dG9yL3R1dG9yLnBsLmNwMTI1MCBiL3J1bnRpbWUvdHV0b3IvdHV0b3IucGwuY3AxMjUwCmluZGV4IDRkYWVkMTguLjJjNjJiNzUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvdHV0b3IvdHV0b3IucGwuY3AxMjUwCisrKyBiL3J1bnRpbWUvdHV0b3IvdHV0b3IucGwuY3AxMjUwCkBAIC04LDggKzgsOCBAQAogICAgICB1v3l3YeYgVmltYSBqYWtvIGVkeXRvcmEgb2fzbG5lZ28gcHJ6ZXpuYWN6ZW5pYS4KIAogICAgICBDemFzIHBvdHJ6ZWJueSBuYSB1a2/xY3plbmllIHR1dG9yaWFsYSB0byAyNSBkbyAzMCBtaW51dCBpIHphbGW/eQotICAgICBvZCB0ZWdvIGphayB3aWVsZSBjemFzdSBzcOpkemlzeiBuYSBla3NwZXJ5bWVudG93YW5pdS4gIAotCSAKKyAgICAgb2QgdGVnbyBqYWsgd2llbGUgY3phc3Ugc3DqZHppc3ogbmEgZWtzcGVyeW1lbnRvd2FuaXUuCisKIAkgVVdBR0E6CiAJIFBvbGVjZW5pYSB3eWtvbnl3YW5lIHcgY3phc2llIGxla2NqaSB6bW9keWZpa3VquSB0ZWtzdC4gWnLzYgogCSB3Y3plnG5pZWoga29waeogdGVnbyBwbGlrdSBkbyDmd2ljemXxIChqZZxsaSB6YWN6ubNlnCBrb21lbmS5CkBAIC0xOTksNyArMTk5LDcgQEAKIAogICA0LiBXcGlzeiAgIGR3ICAgYnkgdXN1brnmIHd5cmF6LgogCi0gIFVXQUdBOiBMaXRlcmEgIGQgIHBvamF3aSBzaeogbmEgZG9sZSBla3JhbnUuIFZpbSBjemVrYSBuYSB3cGlzYW5pZSAgdyAuIAorICBVV0FHQTogTGl0ZXJhICBkICBwb2phd2kgc2nqIG5hIGRvbGUgZWtyYW51LiBWaW0gY3pla2EgbmEgd3Bpc2FuaWUgIHcgLgogCSBKZZxsaSB6b2JhY3p5c3ogaW5ueSB6bmFrIG96bmFjemEgdG8sIL9lIHdwaXNhs2WcIGNvnCCfbGUsIHdjaZxuaWoKIAkgPEVTQz4gaSB6YWN6bmlqIG9kIHBvY3q5dGt1LgogCkBAIC0zNTksNyArMzU5LDcgQEAKICAgZ2R6aWU6CiAgICBvcGVyYXRvciAgLSB0byBjbyB0cnplYmEgenJvYmnmIChucC4gIGQgIGRsYSB1c3V3YW5pYSkKICAgIFtsaWN6YmFdICAtIG9wY2pvbmFsbmUsIGlsZSByYXp5IHBvd3Tzcnp55iBydWNoCi0gICBydWNoICAgICAgLSBwcnplbm9zaSBuYWQgdGVrc3RlbSBkbyBvcGVyb3dhbmlhLCB0YWtpbSBqYWsgIHcgKHd5cmF6KSwgCisgICBydWNoICAgICAgLSBwcnplbm9zaSBuYWQgdGVrc3RlbSBkbyBvcGVyb3dhbmlhLCB0YWtpbSBqYWsgIHcgKHd5cmF6KSwKIAkgICAgICAgJCAgKGRvIGtv8WNhIGxpbmlpKSwgZXRjLgogCiAgIDYuIEJ5IHByemVqnOYgZG8gcG9jerl0a3UgbGluaWkgdb95aiB6ZXJhOiAgMApAQCAtNDkyLDcgKzQ5Miw3IEBACiAKICAgVVdBR0E6IFByemVjenl0YWogY2GzuSBsZWtjauogemFuaW0gd3lrb25hc3ogamFraWWcIHBvbGVjZW5pYSEhIQogCi0gIDEuIFByenl0cnp5bWFqIGtsYXdpc3ogQ1RSTCBpIHdjaZxuaWogIGcgLiBVv3l3YW15IG5vdGFjamkgQ1RSTC1HLiAKKyAgMS4gUHJ6eXRyenltYWoga2xhd2lzeiBDVFJMIGkgd2NpnG5paiAgZyAuIFW/eXdhbXkgbm90YWNqaSBDVFJMLUcuCiAgICAgIE5hIGRvbGUgc3Ryb255IHBvamF3aSBzaeogcGFzZWsgc3RhdHVzdSB6IG5hene5IHBsaWt1IGkgcG96eWNquSB3IHBsaWt1LgogICAgICBaYXBhbWnqdGFqIG51bWVyIGxpbmlpIGRsYSBwb3RyemViIGtyb2t1IDMuCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvdHV0b3IvdHV0b3IucGwudXRmLTggYi9ydW50aW1lL3R1dG9yL3R1dG9yLnBsLnV0Zi04CmluZGV4IDA2NTE4NGQuLjQ1OTBjNDUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvdHV0b3IvdHV0b3IucGwudXRmLTgKKysrIGIvcnVudGltZS90dXRvci90dXRvci5wbC51dGYtOApAQCAtOCw4ICs4LDggQEAKICAgICAgdcW8eXdhxIcgVmltYSBqYWtvIGVkeXRvcmEgb2fDs2xuZWdvIHByemV6bmFjemVuaWEuCiAKICAgICAgQ3phcyBwb3RyemVibnkgbmEgdWtvxYRjemVuaWUgdHV0b3JpYWxhIHRvIDI1IGRvIDMwIG1pbnV0IGkgemFsZcW8eQotICAgICBvZCB0ZWdvIGphayB3aWVsZSBjemFzdSBzcMSZZHppc3ogbmEgZWtzcGVyeW1lbnRvd2FuaXUuICAKLQkgCisgICAgIG9kIHRlZ28gamFrIHdpZWxlIGN6YXN1IHNwxJlkemlzeiBuYSBla3NwZXJ5bWVudG93YW5pdS4KKwogCSBVV0FHQToKIAkgUG9sZWNlbmlhIHd5a29ueXdhbmUgdyBjemFzaWUgbGVrY2ppIHptb2R5ZmlrdWrEhSB0ZWtzdC4gWnLDs2IKIAkgd2N6ZcWbbmllaiBrb3BpxJkgdGVnbyBwbGlrdSBkbyDEh3dpY3plxYQgKGplxZtsaSB6YWN6xIXFgmXFmyBrb21lbmTEhQpAQCAtMTk5LDcgKzE5OSw3IEBACiAKICAgNC4gV3Bpc3ogICBkdyAgIGJ5IHVzdW7EhcSHIHd5cmF6LgogCi0gIFVXQUdBOiBMaXRlcmEgIGQgIHBvamF3aSBzacSZIG5hIGRvbGUgZWtyYW51LiBWaW0gY3pla2EgbmEgd3Bpc2FuaWUgIHcgLiAKKyAgVVdBR0E6IExpdGVyYSAgZCAgcG9qYXdpIHNpxJkgbmEgZG9sZSBla3JhbnUuIFZpbSBjemVrYSBuYSB3cGlzYW5pZSAgdyAuCiAJIEplxZtsaSB6b2JhY3p5c3ogaW5ueSB6bmFrIG96bmFjemEgdG8sIMW8ZSB3cGlzYcWCZcWbIGNvxZsgxbpsZSwgd2NpxZtuaWoKIAkgPEVTQz4gaSB6YWN6bmlqIG9kIHBvY3rEhXRrdS4KIApAQCAtMzU5LDcgKzM1OSw3IEBACiAgIGdkemllOgogICAgb3BlcmF0b3IgIC0gdG8gY28gdHJ6ZWJhIHpyb2JpxIcgKG5wLiAgZCAgZGxhIHVzdXdhbmlhKQogICAgW2xpY3piYV0gIC0gb3Bjam9uYWxuZSwgaWxlIHJhenkgcG93dMOzcnp5xIcgcnVjaAotICAgcnVjaCAgICAgIC0gcHJ6ZW5vc2kgbmFkIHRla3N0ZW0gZG8gb3Blcm93YW5pYSwgdGFraW0gamFrICB3ICh3eXJheiksIAorICAgcnVjaCAgICAgIC0gcHJ6ZW5vc2kgbmFkIHRla3N0ZW0gZG8gb3Blcm93YW5pYSwgdGFraW0gamFrICB3ICh3eXJheiksCiAJICAgICAgICQgIChkbyBrb8WEY2EgbGluaWkpLCBldGMuCiAKICAgNi4gQnkgcHJ6ZWrFm8SHIGRvIHBvY3rEhXRrdSBsaW5paSB1xbx5aiB6ZXJhOiAgMApAQCAtNDkyLDcgKzQ5Miw3IEBACiAKICAgVVdBR0E6IFByemVjenl0YWogY2HFgsSFIGxla2NqxJkgemFuaW0gd3lrb25hc3ogamFraWXFmyBwb2xlY2VuaWEhISEKIAotICAxLiBQcnp5dHJ6eW1haiBrbGF3aXN6IENUUkwgaSB3Y2nFm25paiAgZyAuIFXFvHl3YW15IG5vdGFjamkgQ1RSTC1HLiAKKyAgMS4gUHJ6eXRyenltYWoga2xhd2lzeiBDVFJMIGkgd2NpxZtuaWogIGcgLiBVxbx5d2FteSBub3RhY2ppIENUUkwtRy4KICAgICAgTmEgZG9sZSBzdHJvbnkgcG9qYXdpIHNpxJkgcGFzZWsgc3RhdHVzdSB6IG5henfEhSBwbGlrdSBpIHBvenljasSFIHcgcGxpa3UuCiAgICAgIFphcGFtacSZdGFqIG51bWVyIGxpbmlpIGRsYSBwb3RyemViIGtyb2t1IDMuCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvdHV0b3IvdHV0b3Iuc2sgYi9ydW50aW1lL3R1dG9yL3R1dG9yLnNrCmluZGV4IGY1NmNkZmIuLjIyOTFhYWQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvdHV0b3IvdHV0b3Iuc2sKKysrIGIvcnVudGltZS90dXRvci90dXRvci5zawpAQCAtNjAsNyArNjAsNyBAQAogICAgICBzcGW7IGRvIHRlanRvIHb9dWt5LiBUbyBt9L5lIGJ5uzoJdmltdHV0b3IgPEVOVEVSPgogCiAgIDQuIEFrIHNpIHNpIHRpZXRvIGtyb2t5IHNwb7VhaGxpdm8gemFwYW3kdGFsLCB2eWtvbmFqIGtyb2t5IDEgYb4gMywgcHJlCi0gICAgIHVrb27oZW5pZSBhIHpub3Z1IHNwdXN0ZW5pZSBlZGl0b3JhLiAKKyAgICAgdWtvbuhlbmllIGEgem5vdnUgc3B1c3RlbmllIGVkaXRvcmEuCiAKIFBPWk7BTUtBOiA6cSEgPEVOVEVSPiBuZXVsb77tIHptZW55LCBrdG9y6SBzaSB2eWtvbmFsLiBPIG5pZWtvtWtvIGxla2Np7QogICAgICAgICAgIHNhIG5hdejtuSBha28gdWxvvmm7IHptZW55IGRvIHP6Ym9ydQpAQCAtMTI1LDcgKzEyNSw3IEBACiAKICAgMy4gUG8gcHJpZGFu7SB0ZXh0dSBzdGxh6CBrbOF2ZXN1IDxFU0M+IHByZSBu4XZyYXQgZG8gTm9ybeFsbmVobyBt82R1LgogCi0gIDQuIFByZXN18iBrdXJvenIgbmEgZHJ1aP0gcmlhZG9rIG96bmHoZW79IC0tLT4gYSB6b3Bha3VqIAorICA0LiBQcmVzdfIga3Vyb3pyIG5hIGRydWj9IHJpYWRvayBvem5h6GVu/SAtLS0+IGEgem9wYWt1agogICAgICBrcm9reSAyIGEgMyBr/W0gbmllamUgdmV0YSBzcHLhdm5hLgogCiAtLS0+IFR1IGplIG5lamFr/SB0ZXh0IGNo/WJhavpjaSBvCkBAIC0xNDcsMTQgKzE0NywxNCBAQAogMS4gT3B1c3RpIHT6dG8gdv11a3UsIGFrbyBzaSB0byB1cm9iaWwgdiBsZWtjaWkgMS4yOiAgOnEhCiAKIDIuIERvIHBy7Wthem926WhvIHJpYWRrdSBuYXDtuSBwcu1rYXo6ICB2aW0gdHV0b3IgPEVOVEVSPgotICAgJ3ZpbScgamUgcHLta2F6LCBrdG9y/SBzcHVzdO0gZWRpdG9yIFZpbSwgJ3R1dG9yJyBqZSBtZW5vIHP6Ym9ydSwgCisgICAndmltJyBqZSBwcu1rYXosIGt0b3L9IHNwdXN07SBlZGl0b3IgVmltLCAndHV0b3InIGplIG1lbm8gc/pib3J1LAogICAga3Rvcv0gY2hjZbkgZWRpdG92YbsuIFBvdb5pIHRha/0gc/pib3IsIGt0b3L9IG30vmW5IG1lbmm7LgogCiAzLiBWbG++IGEgem1hviB0ZXh0IHRhaywgYWtvIHNpIHNhIG5hdehpbCB2IHByZWRvuWz9Y2ggbGVrY2lhY2guCiAKIDQuIFVsb74gc/pib3Igc28gem1lbmFtaSBhIG9wdXN0aSBWaW0gcHLta2F6b206ICA6d3EgIDxFTlRFUj4KIAotNS4gUmW5dGFydHVqIHZpbXR1dG9yIGEgcHJlc3XyIHNhIGRvbGUgbmEgbmFzbGVkdWr6Y2UgemhybnV0aWUuIAorNS4gUmW5dGFydHVqIHZpbXR1dG9yIGEgcHJlc3XyIHNhIGRvbGUgbmEgbmFzbGVkdWr6Y2UgemhybnV0aWUuCiAKIDYuIFVyb2IgdGFrIHBvIHByZejtdGFu7SBwcmVkb7ls/WNoIGtyb2tvdiBhIHBvcm96dW1lbml1IGltLgogCkBAIC0xOTgsOCArMTk4LDggQEAKIDQuIE5hcO25ICBkdyAgYWJ5IHNsb3ZvIHptaXpsby4KIAogUE9aTsFNS0E6IFDtc21lbm8gZCBzYSB6b2JyYXrtIG5hIHBvc2xlZG5vbSByaWFka3Ugb2JyYXpvdmt5IGtl7yBobwotCSAgICAgICAgbmFw7blluS4gVmltIG5hIHRlYmEgcG/oa+EsIGFieSBzaSBtb2hvbCBuYXDtc2G7IAotICAgICAgICAgIHDtc21lbm8gdy4gQWsgdmlk7bkgbmll6G8gaW7pIGFrbyAgZCAsIHRhayBzaSBuYXDtc2FsIAorCSAgICAgICAgbmFw7blluS4gVmltIG5hIHRlYmEgcG/oa+EsIGFieSBzaSBtb2hvbCBuYXDtc2G7CisgICAgICAgICAgcO1zbWVubyB3LiBBayB2aWTtuSBuaWXobyBpbukgYWtvICBkICwgdGFrIHNpIG5hcO1zYWwKICAgICAgICAgICBuZXNwcuF2bnkgem5hazsgc3RsYeggIDxFU0M+ICBhIHph6G5pIHpub3ZhLgogCiAtLS0+IFR1IGplIG5pZWtvtWtvIHNsb3YgeuFiYXZhLCBrdG9y6SBuaWUgcGF0cmlhIGxpc3QgZG8gdGVqdG8gdmV0eS4KQEAgLTIzMSw3ICsyMzEsNyBAQAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAJCSAgICAgTGVrY2lhIDIuMzogT1BFUsFUT1JZIEEgUE9IWUJZCiAKLSAgVmW1YSBwcu1rYXpvdiwga3RvcukgbWVuaWEgdGV4dCBz+iBvZHZvZGVu6SBvZCBvcGVy4XRvcm92IGEgcG9oeWJvdi4gCisgIFZltWEgcHLta2F6b3YsIGt0b3LpIG1lbmlhIHRleHQgc/ogb2R2b2Rlbukgb2Qgb3BlcuF0b3JvdiBhIHBvaHlib3YuCiAgIEZvcm3hdCBwcmUgcHLta2F6IG1hemFuaWEga2zhdmVzb3UgIGQgIGplIG5hc2xlZG92bv06CiAKICAgICBkICAgcG9oeWIKQEAgLTI0MiwxMyArMjQyLDEzIEBACiAKICAgS3LhdGt5IGxpc3QgcG9oeWJvdjoKICAgICB3IC0gZG8gemHoaWF0a3Ug72FsuWllaG8gc2xvdmEsIG9rcmVtIGplaG8gcHJ26WhvIHDtc21lbmEuCi0gICAgZSAtIGRvIGtvbmNhIHRlcmFquWllaG8gc2xvdmEsIHZy4XRhbmUgcG9zbGVkbulobyB6bmFrdS4gCisgICAgZSAtIGRvIGtvbmNhIHRlcmFquWllaG8gc2xvdmEsIHZy4XRhbmUgcG9zbGVkbulobyB6bmFrdS4KICAgICAkIC0gZG8ga29uY2EgcmlhZGt1LCB2cuF0YW5lIHBvc2xlZG7paG8gem5ha3UKIAogICBUYWu+ZSBuYXDtc2Fu7W0gIGRlICBzYSB6bWG+ZSB2uWV0a28gb2Qga3Vyem9yYSBkbyBrb25jYSBzbG92YS4KIAotUE9aTsFNS0E6IFN0bGHoZW7tbSBpYmEgcG9oeWJ1IHYgbm9ybeFsbm9tIG3zZGUgYmV6IG9wZXLhdG9yYSAKLSAgICAgICAgICBzYSBwcmVzdW5pZSBrdXJ6b3IgdGFrIGFrbyBqZSB0byC5cGVjaXZpa292YW7pLiAKK1BPWk7BTUtBOiBTdGxh6GVu7W0gaWJhIHBvaHlidSB2IG5vcm3hbG5vbSBt82RlIGJleiBvcGVy4XRvcmEKKyAgICAgICAgICBzYSBwcmVzdW5pZSBrdXJ6b3IgdGFrIGFrbyBqZSB0byC5cGVjaXZpa292YW7pLgogCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIAkJTGVrY2lhIDIuNDogUG91vml0aWUgdmlhY27hc29ibulobyBwb2h5YnUKQEAgLTI1OCwxMyArMjU4LDEzIEBACiAKICAgMS4gUHJlc3XyIGt1cm96ciBuab65aWUgbmEgemHoaWF0b2sgcmlhZGt1IG96bmHoZW7paG8gLS0tPi4KIAotICAyLiBOYXDtuSAgMncgIGEga3Vyb3pyIHNhIHByZXN1bmllIG8gZHZlIHNsb3bhIHZwcmVkLiAKKyAgMi4gTmFw7bkgIDJ3ICBhIGt1cm96ciBzYSBwcmVzdW5pZSBvIGR2ZSBzbG924SB2cHJlZC4KIAotICAzLiBOYXDtuSAgM2UgIGEga3Vyb3pyIHNhIHByZXN1bmllIHZwcmVkIG5hIGtvbmllYyB0cmV0aWVobyBzbG92YS4gCisgIDMuIE5hcO25ICAzZSAgYSBrdXJvenIgc2EgcHJlc3VuaWUgdnByZWQgbmEga29uaWVjIHRyZXRpZWhvIHNsb3ZhLgogCiAgIDQuIE5hcO25ICAwICAobnVsYSkgYSBrdXJvenIgc2EgcHJlc3VuaWUgbmEgemHoaWF0b2sgcmlhZGt1LgogCi0gIDUuIFpvcGFrdWoga3Jva3kgMiBhIDMgcyBy9HpueW1pIOjtc2xhbWkuIAorICA1LiBab3Bha3VqIGtyb2t5IDIgYSAzIHMgcvR6bnltaSDo7XNsYW1pLgogCiAtLS0+IFRvdG8gamUgcmlhZG9rIHNvIHNsb3ZhbWkgcG8ga290cv1jaCBzYSBt9L5ldGUgcG9oeWJvdmG7LgogCkBAIC0yNzcsMTEgKzI3NywxMSBAQAogCiAgICAgKiogTmFw7XNhbmllIOjtc2xhIHNwb2x1IHMgb3BlcuF0b3JvbSBobyB6b3Bha3VqZSB6YWRhbv0gcG/oZXQga3LhdCAqKgogCi0gIFYga29tYmlu4WNpaSBvcGVy4XRvcm92IG1hemFuaWEgYSBwb2h5YnUgc3Bvbe1uYW7paG8gdnm5uWllIHZsb74gcG/oZXQgCisgIFYga29tYmlu4WNpaSBvcGVy4XRvcm92IG1hemFuaWEgYSBwb2h5YnUgc3Bvbe1uYW7paG8gdnm5uWllIHZsb74gcG/oZXQKICAgcHJlZCBwb2h5YiBwcmUgZG9jaWVsZW5pZSBocm9tYWRu6WhvIG1hemFuaWE6CiAgICAgZCAgIOjtc2xvICAgcG9oeWIKIAotICAxLiBQcmVzdfIga3Vyem9yIG5hIHBydukgc2xvdm8gcO1zYW7pIFZFpUvdTUkgUM1TTUVOQU1JIAorICAxLiBQcmVzdfIga3Vyem9yIG5hIHBydukgc2xvdm8gcO1zYW7pIFZFpUvdTUkgUM1TTUVOQU1JCiAgICAgIHYgcmlhZGt1IG96bmHoZW5vbSAtLS0+LgogCiAgIDIuIE5hcO25ICAyZHcgIGEgem1hvmW5IGR2ZSBzbG924SBw7XNhbukgVkWlS91NSSBQzVNNRU5BTUkKQEAgLTI4OSw5ICsyODksOSBAQAogICAzLiBab3Bha3VqIGtyb2t5IDEgYSAyIHMgcG91vml07W0gcvR6bmVobyDo7XNsYSB0YWsgYWJ5IHNpIHptYXphbCBzbG924QogICAgICBw7XNhbukgdmW1a/1taSBw7XNtZW5hbWkgamVkbv1tIHBy7Wthem9tLgogCi0tLS0+IFRlbnRvIEFCQyBERSByaWFkb2sgRkdISSBKSyBMTU4gT1Agc28gc2xvdmFtSSBqZSBRIFJTIFRVViB2eWNpc3RlbnkuIAorLS0tPiBUZW50byBBQkMgREUgcmlhZG9rIEZHSEkgSksgTE1OIE9QIHNvIHNsb3ZhbUkgamUgUSBSUyBUVVYgdnljaXN0ZW55LgogCi1QT1pOwU1LQTogyO1zbG8gbWVkemkgb3BlcuF0b3JvbSAgZCAgYSBwb2h5Ym9tIGZ1bmd1amUgcG9kb2JuZSBha28gcHJpIAorUE9aTsFNS0E6IMjtc2xvIG1lZHppIG9wZXLhdG9yb20gIGQgIGEgcG9oeWJvbSBmdW5ndWplIHBvZG9ibmUgYWtvIHByaQogICAgICAgICAgIHBvdb5pdO0gcyBwb2h5Ym9tIGJleiBvcGVy4XRvcmEuCiAKIApAQCAtMzU5LDcgKzM1OSw3IEBACiAgICAgIGtkZToKICAgICAgICBvcGVy4XRvciAtIOhvIHRyZWJhIHJvYmm7LCBuYXBy7WtsYWQgIGQgIHByZSB6bWF6YW5pZQogICAgICAgIFvo7XNsb10gLSBqZSB2b2xpdGW1bv0gcG/oZXQgcHJlIG9wYWtvdmFuaWUgcG9oeWJ1Ci0gICAgICAgcG9oeWIgLSBwb2h5YiBwbyB0ZXh0ZSB2emi1YWRvbSBuYSBvcGVy4XRvciwgbmFwcu1rbGFkIHcgKHNsb3ZvKSwgCisgICAgICAgcG9oeWIgLSBwb2h5YiBwbyB0ZXh0ZSB2emi1YWRvbSBuYSBvcGVy4XRvciwgbmFwcu1rbGFkIHcgKHNsb3ZvKSwKIAkJJCAoZG8ga29uY2EgcmlhZGt1KSwgYXTvLgogCiAgIDYuIFByZSBwb2h5YiBuYSB6YehpYXRvayByaWFka3UgcG91vmkgbnVsdTogIDAKQEAgLTQ3MiwxMyArNDcyLDEzIEBACiAgIDIuIFByZSBuYXJhZGVuaWUgem5ha3UgbmEgbWllc3RlIGt1cnpvcmEsIG5hcO25ICByICBhIHBvdG9tIHpuYWssIGt0b3L9CiAgICAgIG5haHJhZO0gcPR2b2Ru/SB6bmFrLgogCi0gIDMuIFBy7WtheiBuYSB1cHJhdmVuaWUgdW1vvvJ1amUgem1lbmm7IG9kIGt1cnpvcmEgYb4gcG8gbWllc3RvLCBrdG9y6SAKKyAgMy4gUHLta2F6IG5hIHVwcmF2ZW5pZSB1bW++8nVqZSB6bWVuabsgb2Qga3Vyem9yYSBhviBwbyBtaWVzdG8sIGt0b3LpCiAgICAgIHVy6HVqZSBwb2h5Yi4gIG5hcHIuIE5hcO25ICBjZSAg6O1tIHptbu25IHRleHQgb2QgcG967WNpZQogICAgICBrdXJ6b3JhIGRvIGtvbmNhIHNsb3ZhLCBjJCAgem1lbu0gdGV4dCBkbyBrb25jYSByaWFka3UuCiAKICAgNC4gRm9ybeF0IHByZSBuYWhyYWRlbmllIGplOgogCi0JICAgIGMgICAgW+jtc2xvXSAgICBwb2h5YiAKKwkgICAgYyAgICBb6O1zbG9dICAgIHBvaHliCiAKIAogVGVyYXogcHJlamRpIG5hIG5hbHNlZHVq+mN1IGxla2NpdS4KQEAgLTQ5NCw4ICs0OTQsOCBAQAogCiAgIFBvem7hbWthOiBQcmXo7XRhaiBzaSBjZWz6IHT6dG8gbGVrY2l1IHNr9HIgYWtvIHph6G5luSB2eWtvbuF2Ybsga3Jva3khIQogCi0gIDEuIERyviBzdGxh6GVu+iBrbOF2ZXN1IEN0cmwgYSBzdGxh6CAgZyAuIFRvdG8gbmF6/XZhbWUgQ1RSTC1HLiAKLSAgICAgTmEgc3BvZHUgb2JyYXpvdmt5IHNhIHpvYnJheu0gc3By4XZhIHMgbuF6dm9tIHP6Ym9ydSBhIHBveu1jaW91IAorICAxLiBEcr4gc3RsYehlbvoga2zhdmVzdSBDdHJsIGEgc3RsYeggIGcgLiBUb3RvIG5hev12YW1lIENUUkwtRy4KKyAgICAgTmEgc3BvZHUgb2JyYXpvdmt5IHNhIHpvYnJheu0gc3By4XZhIHMgbuF6dm9tIHP6Ym9ydSBhIHBveu1jaW91CiAgICAgIHYgc/pib3JlLiBaYXBhbeR0YWpzaSBzaSDo7XNsbyByaWFka3UgcHJlIHBvdb5pdGllIHYga3Jva3UgMy4KIAogICAyLiBTdGxh6CAgRyAg6O1tIHNhIGRvc3RhbmW5IG5hIHNwb2RvayBz+mJvcnUuCkBAIC01MjYsOCArNTI2LDggQEAKICAgNC4gQWsgY2hjZbkgdnlotWFkYbsgcmW7YXplYyB2IHNw5HRub20gc21lcmUsIHBvdb7tIHBy7WtheiAgPyAgbWllc3RvCiAgICAgIHBy7WthenUgLy4KIAotICA1LiBQcmUgbuF2cmF0IG5hIG1pZXN0byB6IGt0b3LpaG8gc2kgcHJpuWllbCBzdGxh6CBDVFJMLU8gKGRyviBzdGxh6GVu+iAKLSAgICAga2zhdmVzdSBDdHJsIHBv6GFzIHN0bGHoZW5pYSBrbOF2ZXN5IG8pLiBab3Bha3VqIHByZSDvYWy57SBu4XZyYXQgCisgIDUuIFByZSBu4XZyYXQgbmEgbWllc3RvIHoga3RvculobyBzaSBwcmm5aWVsIHN0bGHoIENUUkwtTyAoZHK+IHN0bGHoZW76CisgICAgIGts4XZlc3UgQ3RybCBwb+hhcyBzdGxh6GVuaWEga2zhdmVzeSBvKS4gWm9wYWt1aiBwcmUg72Fsue0gbuF2cmF0CiAgICAgIHNw5LsuIENUUkwtSSBpZGUgdnByZWQuCiAKIFBPWk7BTUtBOiAiZXJycm9vciIgbmllamUgc3D0c29iIGhs4XNrb3ZhbmlhIGVycm9yOyBlcnJyb29yIGplIGVycm9yLgpAQCAtNTkwLDcgKzU5MCw3IEBACiAKIAogICAxLiBDVFJMLWcgICAgdnlw7bllIHR2b2p1IHBveu1jaXUgdiBz+mJvcmUgYSBzdGF0dXMgc/pib3J1LgotICAgICAgICAgICAgRyAgu2EgcHJlbWllc3RuaSBuYSBrb25pZWMgcmlhZGt1LiAKKyAgICAgICAgICAgIEcgILthIHByZW1pZXN0bmkgbmEga29uaWVjIHJpYWRrdS4KICAgICAg6O1zbG8gIEcgILthIHByZW1pZXN0bmkgbmEgcmlhZG9rIHMg6O1zbG9tLgogICAgICAgICAgICBnZyAgu2EgcHJlc3VuaWUgbmEgcHJ2/SByaWFkb2sKIApAQCAtNjY4LDE1ICs2NjgsMTUgQEAKIAogICAzLiBTdGxh6CBrbOF2ZXN1ICA6IC4gViBzcG9kbmVqIOhhc3RpIG9rbmEgc2Egb2JqYXbtICA6JzwsJz4uCiAKLSAgNC4gTmFw7bkgdyBURVNUICAsIGtkZSBURVNUIGplIG1lbm8gc/pib3J1LCBrdG9y/SB6YXRpYWwgbmVleGlzdHVqZS4gCisgIDQuIE5hcO25IHcgVEVTVCAgLCBrZGUgVEVTVCBqZSBtZW5vIHP6Ym9ydSwga3Rvcv0gemF0aWFsIG5lZXhpc3R1amUuCiAgICAgIFNrb250cm9sdWosIGUgdmlk7bkgIDonPCwnPncgVEVTVCAgcHJlZHT9bSBuZb4gc3RsYejtuSBFbnRlci4KIAogICA1LiBWaW0gemFw7bllIG96bmHoZW7pIHJpYWRreSBkbyBz+mJvcnUgVEVTVC4gUG91vmkgOiFkaXIgIGFsZWJvICAhbHMKICAgICAgcHJlIG92ZXJlbmllLiBaYXRpYWwgaG8gZbl0ZSBuZW1hviEgUG91vmlqZW1lIGhvIHYg72FsuWVqIGxla2NpaS4KIAotUE9aTsFNS0E6IFN0bGHoZW7tbSBrbOF2ZXN5ICB2ICBzYSBzcHVzdO0gdml6deFsbmUgb3puYehvdmFuaWUuIAotICAgICAgICAgIE30vmW5IHBvaHlib3ZhuyBrdXJ6b3JvbSBwcmUgdXByZXNuZW5pZSB2eXpuYehlbulobyB0ZXh0dS4gCi0gICAgICAgICAgUG90b20gbfS+ZbkgcG91vmm7IG9wZXLhdG9yIHByZSB2eWtvbmFuaWUgbmVqYWtlaiBha2NpZSAKK1BPWk7BTUtBOiBTdGxh6GVu7W0ga2zhdmVzeSAgdiAgc2Egc3B1c3TtIHZpenXhbG5lIG96bmHob3ZhbmllLgorICAgICAgICAgIE30vmW5IHBvaHlib3ZhuyBrdXJ6b3JvbSBwcmUgdXByZXNuZW5pZSB2eXpuYehlbulobyB0ZXh0dS4KKyAgICAgICAgICBQb3RvbSBt9L5luSBwb3W+absgb3BlcuF0b3IgcHJlIHZ5a29uYW5pZSBuZWpha2VqIGFrY2llCiAgICAgICAgICAgcyB0ZXh0b20uIE5hcHLta2xhZCAgZCAgem1hvmUgdnl6bmHoZW79IHRleHQuCiAKIApAQCAtNjg2LDcgKzY4Niw3IEBACiAKIAkqKiBQcmUgdmxvvmVuaWUgb2JzYWh1IHP6Ym9ydSwgbmFw7bkgICA6ciBGSUxFTkFNRSAqKgogCi0gIDEuIFByZW1pZXN0bmkga3Vyem9yIG5hZCB0ZW50byByaWFkb2suIAorICAxLiBQcmVtaWVzdG5pIGt1cnpvciBuYWQgdGVudG8gcmlhZG9rLgogCiBQT1pOwU1LQTogUG8gdnlrb25hbu0ga3Jva3UgMiB1dmlk7bkgdGV4dCB6IGxla2NpZSA1LjMuIFBvdG9tIHNhIHByZXN18gogICAgICAgICAgIGRvbGUsIGFieSBzaSB2aWRlbCB0+nRvIGxla2NpdS4KQEAgLTcxMCw4ICs3MTAsOCBAQAogCSA6IWRlbCBGSUxFTkFNRSAgICA6IXJtIEZJTEVOQU1FICAgIC0gIG9kc3Ry4W5pIHP6Ym9yIEZJTEVOQU1FCiAKICAgMi4gIDp3IEZJTEVOQU1FICB1bG++7SBha3R14WxueSBz+mJvciBuYSBkaXNrIHBvZCBtZW5vbSBGSUxFTkFNRS4KLSAKLSAgMy4gIHYgIHBvaHliICA6dyBGSUxFTkFNRSAgdWxvvu0gdml6deFsbmUgb3puYehlbukgcmlhZGt5IGRvIAorCisgIDMuICB2ICBwb2h5YiAgOncgRklMRU5BTUUgIHVsb77tIHZpenXhbG5lIG96bmHoZW7pIHJpYWRreSBkbwogICAgICAgc/pib3J1IEZJTEVOQU1FLgogCiAgIDQuICA6ciBGSUxFTkFNRSAgdnliZXJpZSB6IGRpc2t1IHP6Ym9yIEZJTEVOQU1FIGEgdmxvvu0gaG8gZG8gYWt0deFsbmVobwpAQCAtNzM4LDggKzczOCw4IEBACiAtLS0+IFBvIG5hcO1zYW7tICBvICBzYSBrdXJ6b3IgcHJlbWllc3Ru7SBuYSB2bG++ZW79IHJpYWRvayBkbyB2a2xhZGFjaWVobwogICAgICBt82R1LgogCi0gIDQuIFByZSBvdHZvcmVuaWUgcmlhZGt1IG5hZCBrdXJ6b3JvbSwgamVkbm90dWNobyBuYXDtuSB2ZbVr6SAgTyAsIAotICAgICBuYW1pZXN0byBtYWzpaG8gIG8uIFZ5c2v6uWFqIHNpIHRvIG5hIHJpYWRrdSBkb2xlLiAKKyAgNC4gUHJlIG90dm9yZW5pZSByaWFka3UgbmFkIGt1cnpvcm9tLCBqZWRub3R1Y2hvIG5hcO25IHZltWvpICBPICwKKyAgICAgbmFtaWVzdG8gbWFs6WhvICBvLiBWeXNr+rlhaiBzaSB0byBuYSByaWFka3UgZG9sZS4KIAogLS0tPiBWbG++IHJpYWRvayBuYWQgdP1tdG8gbmFw7XNhbu1tIE8sIGtl7yBrdXJ6b3IgamUgbmEgdG9tdG8gcmlhZGt1LgogCkBAIC03NTMsMTEgKzc1MywxMSBAQAogCiAgIDEuIFByZXN18iBrdXJ6b3Igbmm+uWllIG5hIGtvbmllYyBwcnbpaG8gcmlhZGt1IG96bmHoZW7paG8gem5h6GtvdSAtLS0+CiAKLSAgMi4gU3RsYegga2zhdmVzdSAgZSAgZG9raWG1IGt1cm96ciBuaWVqZSBuYSBrb25jaSByaWFka3UuICAgCisgIDIuIFN0bGHoIGts4XZlc3UgIGUgIGRva2lhtSBrdXJvenIgbmllamUgbmEga29uY2kgcmlhZGt1LgogCiAgIDMuIE5hcO25ICBhICAobWFs6SBw7XNtZW5vKSBwcmUgcHJpZGFuaWUgdGV4dHUgWkEga3Vyem9yb20uCiAKLSAgNC4gRG9rb27o7SBzbG92byB0YWsgYWtvIGplIHRvIHYgZHJ1aG9tIHJpYWRrdS4gU3RsYbkgPEVTQz4gcHJlIAorICA0LiBEb2tvbujtIHNsb3ZvIHRhayBha28gamUgdG8gdiBkcnVob20gcmlhZGt1LiBTdGxhuSA8RVNDPiBwcmUKICAgICAgb3B1c3RlbmllIHZrbGFkYWNpZWhvIG3zZHUuCiAKICAgNS4gUG91vmkgIGUgIG5hIHByZXN1biBuYSDvYWy5aWUgbmVkb2tvbuhlbukgc2xvdm8gYSB6b3Bha3VqIGtyb2t5IDMgYSA0LgpAQCAtNzY1LDggKzc2NSw4IEBACiAtLS0+IFRlbnRvIHJpIHRpIGRvdm+1dWplIG7hY3YgcHJp4XZhbiB0ZXN0dSBuYSBrb25pZWMgcmlhZGt1LgogLS0tPiBUZW50byByaWFkb2sgdGkgZG92b7V1amUgbuFjdmlrIHByaWThdmFuaWEgdGV4dHUgbmEga29uaWVjIHJpYWRrdS4KIAotUE9aTsFNS0E6IGEsIGksIEEguXRhcnR1avogcm92bmFr/SB2a2xhZGFj7SBt82QsIGplZGlu/SByb3ppZGVsIGplLCBrZGUgCi0gICAgICAgICAgc2Egem5ha3kgdmtsYWRhavouIAorUE9aTsFNS0E6IGEsIGksIEEguXRhcnR1avogcm92bmFr/SB2a2xhZGFj7SBt82QsIGplZGlu/SByb3ppZGVsIGplLCBrZGUKKyAgICAgICAgICBzYSB6bmFreSB2a2xhZGFq+i4KIAogCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KQEAgLTc3OCwxOSArNzc4LDE5IEBACiAgIDEuIFByZXN18iBrdXJ6b3Igbmm+uWllIG5hIHBydv0gcmlhZG9rIG96bmHoZW79IHpuYehrb3UgLS0tPi4gUHJlbWllc3RuaQogICAgICBrdXJ6b3IgbmEgemHoaWF0b2sgcHJ26WhvIHb9c2t5dHUgIHh4eC4KIAotICAyLiBUZXJheiBuYXDtuSAgUiAgYSAgbmFw7bkgIOjtc2xvIHV2ZWRlbukgdiBkcnVob20gcmlhZGt1LCB0YWu+ZSAKKyAgMi4gVGVyYXogbmFw7bkgIFIgIGEgIG5hcO25ICDo7XNsbyB1dmVkZW7pIHYgZHJ1aG9tIHJpYWRrdSwgdGFrvmUKICAgICAgc2Egbu1tIG5haHJhZO0gcPR2b2Ru6SB4eHguCiAKLSAgMy4gU3RsYeggPEVTQz4gcHJlIG9wdXN0ZW5pZSBuYWhyYWR6b3ZhY2llaG8gbfNkdS4gUG96buFta2EsIL5lIHp2eblvayAKLSAgICAgcmlhZGt1IHpvc3RhbmUgbmV6bWVuZW79LiAKKyAgMy4gU3RsYeggPEVTQz4gcHJlIG9wdXN0ZW5pZSBuYWhyYWR6b3ZhY2llaG8gbfNkdS4gUG96buFta2EsIL5lIHp2eblvaworICAgICByaWFka3Ugem9zdGFuZSBuZXptZW5lbv0uCiAKICAgNC4gWm9wYWt1aiB0aWV0byBrcm9reSBwcmUgbmFocmFkZW5pZSB6dnm5bv1jaCB4eHguCiAKIC0tLT4gUHJpZGFu7W0gMTIzIGt1IHh4eCBkb3N0YW5luSB4eHguCiAtLS0+IFByaWRhbu1tIDEyMyBrdSA0NTYgZG9zdGFuZbkgNTc5LgogCi1QT1pOwU1LQTogIE5haHJhZHpvdmFj7SBt82QgamUgYWtvIHZrbGFkYWPtIG3zZCwgYWxlIGthvmT9IG5hcO1zYW79IHpuYWsgCi0gICAgICAgICAgIHptYb5lIGV4aXN0dWr6Y2kgem5hay4gCitQT1pOwU1LQTogIE5haHJhZHpvdmFj7SBt82QgamUgYWtvIHZrbGFkYWPtIG3zZCwgYWxlIGthvmT9IG5hcO1zYW79IHpuYWsKKyAgICAgICAgICAgem1hvmUgZXhpc3R1avpjaSB6bmFrLgogCiAKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgpAQCAtODA5LDE0ICs4MDksMTQgQEAKIAogICA1LiBOYXDtuSAgcCAgcHJlIHZsb75uaWUgKHBhc3RlKSB0ZXh0dS4gUG90b20gbmFw7bk6ICBhIGRydWhhIDxFU0M+LgogCi0gIDYuIFBvdb5pIHZpenXhbG55IG3zZCBwcmUgb3puYehlbmllICJwb2xvvmthLiIsIHZ5c3RyaWhuaSB0byAKLSAgICAgcG91vml07W0gIHksIHByZXN18iBzYSBuYSBrb25pZWMgbmFzbGVkdWr6Y2VobyByaWFka3UgcG91vml07W0gIGokIAorICA2LiBQb3W+aSB2aXp14WxueSBt82QgcHJlIG96bmHoZW5pZSAicG9sb75rYS4iLCB2eXN0cmlobmkgdG8KKyAgICAgcG91vml07W0gIHksIHByZXN18iBzYSBuYSBrb25pZWMgbmFzbGVkdWr6Y2VobyByaWFka3UgcG91vml07W0gIGokCiAgICAgIGEgdmxvviBzZW0gdGV4dCBwb3W+aXTtbSAgcC4KIAogLS0tPiBhKSB0b3RvIGplIHByduEgcG9sb75rYQogLS0tPiBiKQogCi1QT1pOwU1LQTogTfS+ZbkgcG91vmm7IHRpZb4gIHkgIGFrbyBvcGVy4XRvcjsgeXcgIHZ5c3RyaWhuZSBqZWRubyBzbG92by4gCitQT1pOwU1LQTogTfS+ZbkgcG91vmm7IHRpZb4gIHkgIGFrbyBvcGVy4XRvcjsgeXcgIHZ5c3RyaWhuZSBqZWRubyBzbG92by4KIAogCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KQEAgLTg0MywxMSArODQzLDExIEBACiAgIDUuIFRlcmF6IHNwdXN0aSB2eWi1YWThdmFj7SBwcu1rYXogem5vdnUsIGEgcG96cmkg6G8gc2Egc3RhbG86CiAgICAgIC9pZ25vcmUgPEVOVEVSPgogCi0gIDYuIFByZSBvcGV0b3Zu6SB6YXBudXRpZSByb3pseblvdmFuaWEgdmW1a/1jaCBhIG1hbP1jaCBw7XNtZW4gCisgIDYuIFByZSBvcGV0b3Zu6SB6YXBudXRpZSByb3pseblvdmFuaWEgdmW1a/1jaCBhIG1hbP1jaCBw7XNtZW4KICAgICAgbmFw7bk6ICA6c2V0IG5vaWMKIAogUE9aTsFNS0E6IE5hIG9kc3Ry4W5lbmllIHp2/XJhem5lbmlhIHb9cmF6b3YgbmFw7bk6ICA6bm9obHNlYXJjaAotUE9aTsFNS0E6IEFrIGNoY2W5IG5lcm96bHm5b3ZhuyB2ZbVrb3O7IHDtc21lbiBsZW4gcHJlIGplZG5vIAorUE9aTsFNS0E6IEFrIGNoY2W5IG5lcm96bHm5b3ZhuyB2ZbVrb3O7IHDtc21lbiBsZW4gcHJlIGplZG5vCiAgICAgICAgICAgcG91vml0aWUgdnlotWFk4XZhY2llaG8gcHLta2F6dSwgcG91vmkgXGM6ICAvaWdub3JlXGMgPEVOVEVSPgogCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KQEAgLTg2Nyw5ICs4NjcsOSBAQAogICA1LiBOYXDtc2FuaWUgdmW1a+lobyAgUiAgcHJlcG5lIGRvIG5haHJhZHpvdmFjaWVobyBt82R1LCBr/W0gbmllamUKICAgICAgc3RsYehlbukgPEVTQz4uCiAKLSAgNi4gTmFw7XNhbmllICI6c2V0IHh4eCIgbmFzdGF27SBtb75ub3O7ICJ4eHgiLiBOaWVrdG9y6SBuYXN0YXZlbmlhIHP6OiAKLSAgICAgJ2ljJyAnaWdub3JlY2FzZScgaWdub3J1amUgdmW1a+kgYSBtYWzpIHDtc21lbuEgcG/oYXMgdnlotWFk4XZhbmlhLiAKLSAgICAgJ2lzJyAnaW5jc2VhcmNoJyB6b2JyYXp1amUg6Glhc3Rv6G7pIHJlu2F6Y2UgdnlotWFk4XZhbulobyByZbthemNhLiAKKyAgNi4gTmFw7XNhbmllICI6c2V0IHh4eCIgbmFzdGF27SBtb75ub3O7ICJ4eHgiLiBOaWVrdG9y6SBuYXN0YXZlbmlhIHP6OgorICAgICAnaWMnICdpZ25vcmVjYXNlJyBpZ25vcnVqZSB2ZbVr6SBhIG1hbOkgcO1zbWVu4SBwb+hhcyB2eWi1YWThdmFuaWEuCisgICAgICdpcycgJ2luY3NlYXJjaCcgem9icmF6dWplIOhpYXN0b+hu6SByZbthemNlIHZ5aLVhZOF2YW7paG8gcmW7YXpjYS4KICAgICAgJ2hscycgJ2hsc2VhcmNoJyB2eXpuYejtIHa5ZXRreSB2eWi1YWThdmFu6SByZbthemNlLgogICAgICAgTfS+ZbkgcG91vmm7IGhvY2lrdG9y/SB6IGRsaP1jaCBhIGty4XRreWNoIG7henZvdiBtb75ub3N07S4KIApAQCAtODkzLDggKzg5Myw4IEBACiAJLSBzdGxh6CBrbOF2ZXN1IDxGMT4gKGFrIG5lamFr+iBt4bkpCiAJLSBuYXDtuSAgOmhlbHAgPEVOVEVSPgogCi0gIMjtdGFqIHRleHQgdiBva25lIG7hcG92ZWR5IHByZSB67XNrYW5pZSBwcmVkc3RhdnkgYWtvIG7hcG92ZWRhIGZ1bmd1amUuIAotICBOYXDtuSAgIENUUkwtVyBDVFJMLVcgIHByZSBza29rIHogamVkbulobyBva25hIGRvIGRydWjpaG8uIAorICDI7XRhaiB0ZXh0IHYgb2tuZSBu4XBvdmVkeSBwcmUgeu1za2FuaWUgcHJlZHN0YXZ5IGFrbyBu4XBvdmVkYSBmdW5ndWplLgorICBOYXDtuSAgIENUUkwtVyBDVFJMLVcgIHByZSBza29rIHogamVkbulobyBva25hIGRvIGRydWjpaG8uCiAgIE5hcO25ICAgIDpxIDxFTlRFUj4gICAg6O1tIHphdHZvcu25IG9rbm8gbuFwb3ZlZHkuCiAKICAgTfS+ZbkgbuFqc7sgaGVscCBrdSBob2NpYWtlaiB06W1lIHByaWRhbu1tIGFyZ3VtZW50dSBrdSBwcu1rYXp1ICI6aGVscCIuCkBAIC05NDUsMTIgKzk0NSwxMiBAQAogCiAgIDUuIFN0bGHoIDxUQUI+IGEgVmltIGRva29u6O0gbWVubyBwcu1rYXp1IG5hICI6ZWRpdCIuCiAKLSAgNi4gVGVyYXogcHJpZGFqIG1lZHplcm7tayBhIHph6GlhdG9rIG1lbmEgZXhpc3R1avpjZWhvIHP6Ym9ydTogCisgIDYuIFRlcmF6IHByaWRhaiBtZWR6ZXJu7WsgYSB6YehpYXRvayBtZW5hIGV4aXN0dWr6Y2VobyBz+mJvcnU6CiAgICAgIDplZGl0IEZJTAogCiAgIDcuIFN0bGHoIDxUQUI+LiBWaW0gZG9rb27o7SBtZW5vIChhayBqZSBqZWRpbmXobukpLgogCi1QT1pOwU1LQTogRG9rb27ob3ZhbmllIGZ1bmd1amUgcHJlIHZltWEgcHLta2F6b3YuIFZ5c2v6uWFqIHN0bGHoZW5pZSAKK1BPWk7BTUtBOiBEb2tvbuhvdmFuaWUgZnVuZ3VqZSBwcmUgdmW1YSBwcu1rYXpvdi4gVnlza/q5YWogc3RsYehlbmllCiAgICAgICAgICAgQ1RSTC1EIGEgPFRBQj4uIKlwZWNp4WxuZSBqZSB0byB1vml0b+hu6SBwcmUgcHLta2F6ICA6aGVscC4KIAogCkBAIC05NjAsMTYgKzk2MCwxNiBAQAogCiAgIDEuIE5hcO25ICA6aGVscCAgYWxlYm8gc3RsYeggPEYxPiBhbGVibyA8SGVscD4gcHJlIG90dm9yZW5pZSBva25hIG7hcG92ZWR5LgogCi0gIDIuIE5hcO25ICA6aGVscCBwcu1rYXogIHByZSB2eWi1YWRhbmllIG7hcG92ZWR5IGt1IHBy7WthenUgcHLta2F6LiAKKyAgMi4gTmFw7bkgIDpoZWxwIHBy7WtheiAgcHJlIHZ5aLVhZGFuaWUgbuFwb3ZlZHkga3UgcHLta2F6dSBwcu1rYXouCiAKLSAgMy4gTmFw7bkgIENUUkwtVyBDVFJMLVcgIG5hIHByZXNrb+hlbmllIGRvIGlu6WhvIG9rbmEuIAorICAzLiBOYXDtuSAgQ1RSTC1XIENUUkwtVyAgbmEgcHJlc2tv6GVuaWUgZG8gaW7paG8gb2tuYS4KIAogICA0LiBOYXDtuSAgOnEgIHByZSB6YXR2b3JlbmllIG9rbmEgbuFwb3ZlZHkKIAotICA1LiBWeXR2b3IguXRhcnRvdmFj7SBza3JpcHQgdmltcmMgcHJlIHVkcr5hbmllIHVwcmVkbm9zdPJvdmFu/WNoIG5hc3RhdmVu7S4gCisgIDUuIFZ5dHZvciC5dGFydG92YWPtIHNrcmlwdCB2aW1yYyBwcmUgdWRyvmFuaWUgdXByZWRub3N08m92YW79Y2ggbmFzdGF2ZW7tLgogCi0gIDYuIFBv6GFzIHDtc2FuaWEgcHLta2F6dSAgOiAgc3RsYeggQ1RSTC1EIHByZSB6b2JyYXplbmllIGRva29u6GVu7S4gCi0gICAgIFN0bGHoIDxUQUI+IHByZSBwb3W+aXRpZSBqZWRu6WhvIHogZG9rb27oZW7tLiAKKyAgNi4gUG/oYXMgcO1zYW5pYSBwcu1rYXp1ICA6ICBzdGxh6CBDVFJMLUQgcHJlIHpvYnJhemVuaWUgZG9rb27oZW7tLgorICAgICBTdGxh6CA8VEFCPiBwcmUgcG91vml0aWUgamVkbulobyB6IGRva29u6GVu7S4KIAogCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvdHV0b3IvdHV0b3Iuc2suY3AxMjUwIGIvcnVudGltZS90dXRvci90dXRvci5zay5jcDEyNTAKaW5kZXggODkxYjM1NS4uZjMyYzliMSAxMDA2NDQKLS0tIGEvcnVudGltZS90dXRvci90dXRvci5zay5jcDEyNTAKKysrIGIvcnVudGltZS90dXRvci90dXRvci5zay5jcDEyNTAKQEAgLTYwLDcgKzYwLDcgQEAKICAgICAgc3BlnSBkbyB0ZWp0byB2/XVreS4gVG8gbfSeZSBieZ06CXZpbXR1dG9yIDxFTlRFUj4KIAogICA0LiBBayBzaSBzaSB0aWV0byBrcm9reSBzcG++YWhsaXZvIHphcGFt5HRhbCwgdnlrb25haiBrcm9reSAxIGGeIDMsIHByZQotICAgICB1a29u6GVuaWUgYSB6bm92dSBzcHVzdGVuaWUgZWRpdG9yYS4gCisgICAgIHVrb27oZW5pZSBhIHpub3Z1IHNwdXN0ZW5pZSBlZGl0b3JhLgogCiBQT1pOwU1LQTogOnEhIDxFTlRFUj4gbmV1bG+e7SB6bWVueSwga3Rvcukgc2kgdnlrb25hbC4gTyBuaWVrb75rbyBsZWtjae0KICAgICAgICAgICBzYSBuYXXo7ZogYWtvIHVsb55pnSB6bWVueSBkbyBz+mJvcnUKQEAgLTEyNSw3ICsxMjUsNyBAQAogCiAgIDMuIFBvIHByaWRhbu0gdGV4dHUgc3RsYegga2zhdmVzdSA8RVNDPiBwcmUgbuF2cmF0IGRvIE5vcm3hbG5laG8gbfNkdS4KIAotICA0LiBQcmVzdfIga3Vyb3pyIG5hIGRydWj9IHJpYWRvayBvem5h6GVu/SAtLS0+IGEgem9wYWt1aiAKKyAgNC4gUHJlc3XyIGt1cm96ciBuYSBkcnVo/SByaWFkb2sgb3puYehlbv0gLS0tPiBhIHpvcGFrdWoKICAgICAga3Jva3kgMiBhIDMga/1tIG5pZWplIHZldGEgc3By4XZuYS4KIAogLS0tPiBUdSBqZSBuZWpha/0gdGV4dCBjaP1iYWr6Y2kgbwpAQCAtMTQ3LDE0ICsxNDcsMTQgQEAKIDEuIE9wdXN0aSB0+nRvIHb9dWt1LCBha28gc2kgdG8gdXJvYmlsIHYgbGVrY2lpIDEuMjogIDpxIQogCiAyLiBEbyBwcu1rYXpvdulobyByaWFka3UgbmFw7ZogcHLta2F6OiAgdmltIHR1dG9yIDxFTlRFUj4KLSAgICd2aW0nIGplIHBy7Wtheiwga3Rvcv0gc3B1c3TtIGVkaXRvciBWaW0sICd0dXRvcicgamUgbWVubyBz+mJvcnUsIAorICAgJ3ZpbScgamUgcHLta2F6LCBrdG9y/SBzcHVzdO0gZWRpdG9yIFZpbSwgJ3R1dG9yJyBqZSBtZW5vIHP6Ym9ydSwKICAgIGt0b3L9IGNoY2WaIGVkaXRvdmGdLiBQb3WeaSB0YWv9IHP6Ym9yLCBrdG9y/SBt9J5lmiBtZW5pnS4KIAogMy4gVmxvniBhIHptYZ4gdGV4dCB0YWssIGFrbyBzaSBzYSBuYXXoaWwgdiBwcmVkb5ps/WNoIGxla2NpYWNoLgogCiA0LiBVbG+eIHP6Ym9yIHNvIHptZW5hbWkgYSBvcHVzdGkgVmltIHBy7Wthem9tOiAgOndxICA8RU5URVI+CiAKLTUuIFJlmnRhcnR1aiB2aW10dXRvciBhIHByZXN18iBzYSBkb2xlIG5hIG5hc2xlZHVq+mNlIHpocm51dGllLiAKKzUuIFJlmnRhcnR1aiB2aW10dXRvciBhIHByZXN18iBzYSBkb2xlIG5hIG5hc2xlZHVq+mNlIHpocm51dGllLgogCiA2LiBVcm9iIHRhayBwbyBwcmXo7XRhbu0gcHJlZG+abP1jaCBrcm9rb3YgYSBwb3JvenVtZW5pdSBpbS4KIApAQCAtMTk4LDggKzE5OCw4IEBACiA0LiBOYXDtmiAgZHcgIGFieSBzbG92byB6bWl6bG8uCiAKIFBPWk7BTUtBOiBQ7XNtZW5vIGQgc2Egem9icmF67SBuYSBwb3NsZWRub20gcmlhZGt1IG9icmF6b3ZreSBrZe8gaG8KLQkgICAgICAgIG5hcO2aZZouIFZpbSBuYSB0ZWJhIHBv6GvhLCBhYnkgc2kgbW9ob2wgbmFw7XNhnSAKLSAgICAgICAgICBw7XNtZW5vIHcuIEFrIHZpZO2aIG5pZehvIGlu6SBha28gIGQgLCB0YWsgc2kgbmFw7XNhbCAKKwkgICAgICAgIG5hcO2aZZouIFZpbSBuYSB0ZWJhIHBv6GvhLCBhYnkgc2kgbW9ob2wgbmFw7XNhnQorICAgICAgICAgIHDtc21lbm8gdy4gQWsgdmlk7Zogbmll6G8gaW7pIGFrbyAgZCAsIHRhayBzaSBuYXDtc2FsCiAgICAgICAgICAgbmVzcHLhdm55IHpuYWs7IHN0bGHoICA8RVNDPiAgYSB6YehuaSB6bm92YS4KIAogLS0tPiBUdSBqZSBuaWVrb75rbyBzbG92IHrhYmF2YSwga3RvcukgbmllIHBhdHJpYSBsaXN0IGRvIHRlanRvIHZldHkuCkBAIC0yMzEsNyArMjMxLDcgQEAKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCQkgICAgIExla2NpYSAyLjM6IE9QRVLBVE9SWSBBIFBPSFlCWQogCi0gIFZlvmEgcHLta2F6b3YsIGt0b3LpIG1lbmlhIHRleHQgc/ogb2R2b2Rlbukgb2Qgb3BlcuF0b3JvdiBhIHBvaHlib3YuIAorICBWZb5hIHBy7Wthem92LCBrdG9y6SBtZW5pYSB0ZXh0IHP6IG9kdm9kZW7pIG9kIG9wZXLhdG9yb3YgYSBwb2h5Ym92LgogICBGb3Jt4XQgcHJlIHBy7WtheiBtYXphbmlhIGts4XZlc291ICBkICBqZSBuYXNsZWRvdm79OgogCiAgICAgZCAgIHBvaHliCkBAIC0yNDIsMTMgKzI0MiwxMyBAQAogCiAgIEty4XRreSBsaXN0IHBvaHlib3Y6CiAgICAgdyAtIGRvIHph6GlhdGt1IO9hbJppZWhvIHNsb3ZhLCBva3JlbSBqZWhvIHBydulobyBw7XNtZW5hLgotICAgIGUgLSBkbyBrb25jYSB0ZXJhapppZWhvIHNsb3ZhLCB2cuF0YW5lIHBvc2xlZG7paG8gem5ha3UuIAorICAgIGUgLSBkbyBrb25jYSB0ZXJhapppZWhvIHNsb3ZhLCB2cuF0YW5lIHBvc2xlZG7paG8gem5ha3UuCiAgICAgJCAtIGRvIGtvbmNhIHJpYWRrdSwgdnLhdGFuZSBwb3NsZWRu6WhvIHpuYWt1CiAKICAgVGFrnmUgbmFw7XNhbu1tICBkZSAgc2Egem1hnmUgdppldGtvIG9kIGt1cnpvcmEgZG8ga29uY2Egc2xvdmEuCiAKLVBPWk7BTUtBOiBTdGxh6GVu7W0gaWJhIHBvaHlidSB2IG5vcm3hbG5vbSBt82RlIGJleiBvcGVy4XRvcmEgCi0gICAgICAgICAgc2EgcHJlc3VuaWUga3Vyem9yIHRhayBha28gamUgdG8gmnBlY2l2aWtvdmFu6S4gCitQT1pOwU1LQTogU3RsYehlbu1tIGliYSBwb2h5YnUgdiBub3Jt4Wxub20gbfNkZSBiZXogb3BlcuF0b3JhCisgICAgICAgICAgc2EgcHJlc3VuaWUga3Vyem9yIHRhayBha28gamUgdG8gmnBlY2l2aWtvdmFu6S4KIAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAJCUxla2NpYSAyLjQ6IFBvdZ5pdGllIHZpYWNu4XNvYm7paG8gcG9oeWJ1CkBAIC0yNTgsMTMgKzI1OCwxMyBAQAogCiAgIDEuIFByZXN18iBrdXJvenIgbmmemmllIG5hIHph6GlhdG9rIHJpYWRrdSBvem5h6GVu6WhvIC0tLT4uCiAKLSAgMi4gTmFw7ZogIDJ3ICBhIGt1cm96ciBzYSBwcmVzdW5pZSBvIGR2ZSBzbG924SB2cHJlZC4gCisgIDIuIE5hcO2aICAydyAgYSBrdXJvenIgc2EgcHJlc3VuaWUgbyBkdmUgc2xvduEgdnByZWQuCiAKLSAgMy4gTmFw7ZogIDNlICBhIGt1cm96ciBzYSBwcmVzdW5pZSB2cHJlZCBuYSBrb25pZWMgdHJldGllaG8gc2xvdmEuIAorICAzLiBOYXDtmiAgM2UgIGEga3Vyb3pyIHNhIHByZXN1bmllIHZwcmVkIG5hIGtvbmllYyB0cmV0aWVobyBzbG92YS4KIAogICA0LiBOYXDtmiAgMCAgKG51bGEpIGEga3Vyb3pyIHNhIHByZXN1bmllIG5hIHph6GlhdG9rIHJpYWRrdS4KIAotICA1LiBab3Bha3VqIGtyb2t5IDIgYSAzIHMgcvR6bnltaSDo7XNsYW1pLiAKKyAgNS4gWm9wYWt1aiBrcm9reSAyIGEgMyBzIHL0em55bWkg6O1zbGFtaS4KIAogLS0tPiBUb3RvIGplIHJpYWRvayBzbyBzbG92YW1pIHBvIGtvdHL9Y2ggc2EgbfSeZXRlIHBvaHlib3ZhnS4KIApAQCAtMjc3LDExICsyNzcsMTEgQEAKIAogICAgICoqIE5hcO1zYW5pZSDo7XNsYSBzcG9sdSBzIG9wZXLhdG9yb20gaG8gem9wYWt1amUgemFkYW79IHBv6GV0IGty4XQgKioKIAotICBWIGtvbWJpbuFjaWkgb3BlcuF0b3JvdiBtYXphbmlhIGEgcG9oeWJ1IHNwb23tbmFu6WhvIHZ5mpppZSB2bG+eIHBv6GV0IAorICBWIGtvbWJpbuFjaWkgb3BlcuF0b3JvdiBtYXphbmlhIGEgcG9oeWJ1IHNwb23tbmFu6WhvIHZ5mpppZSB2bG+eIHBv6GV0CiAgIHByZWQgcG9oeWIgcHJlIGRvY2llbGVuaWUgaHJvbWFkbulobyBtYXphbmlhOgogICAgIGQgICDo7XNsbyAgIHBvaHliCiAKLSAgMS4gUHJlc3XyIGt1cnpvciBuYSBwcnbpIHNsb3ZvIHDtc2Fu6SBWRbxL3U1JIFDNU01FTkFNSSAKKyAgMS4gUHJlc3XyIGt1cnpvciBuYSBwcnbpIHNsb3ZvIHDtc2Fu6SBWRbxL3U1JIFDNU01FTkFNSQogICAgICB2IHJpYWRrdSBvem5h6GVub20gLS0tPi4KIAogICAyLiBOYXDtmiAgMmR3ICBhIHptYZ5lmiBkdmUgc2xvduEgcO1zYW7pIFZFvEvdTUkgUM1TTUVOQU1JCkBAIC0yODksOSArMjg5LDkgQEAKICAgMy4gWm9wYWt1aiBrcm9reSAxIGEgMiBzIHBvdZ5pdO1tIHL0em5laG8g6O1zbGEgdGFrIGFieSBzaSB6bWF6YWwgc2xvduEKICAgICAgcO1zYW7pIHZlvmv9bWkgcO1zbWVuYW1pIGplZG79bSBwcu1rYXpvbS4KIAotLS0tPiBUZW50byBBQkMgREUgcmlhZG9rIEZHSEkgSksgTE1OIE9QIHNvIHNsb3ZhbUkgamUgUSBSUyBUVVYgdnljaXN0ZW55LiAKKy0tLT4gVGVudG8gQUJDIERFIHJpYWRvayBGR0hJIEpLIExNTiBPUCBzbyBzbG92YW1JIGplIFEgUlMgVFVWIHZ5Y2lzdGVueS4KIAotUE9aTsFNS0E6IMjtc2xvIG1lZHppIG9wZXLhdG9yb20gIGQgIGEgcG9oeWJvbSBmdW5ndWplIHBvZG9ibmUgYWtvIHByaSAKK1BPWk7BTUtBOiDI7XNsbyBtZWR6aSBvcGVy4XRvcm9tICBkICBhIHBvaHlib20gZnVuZ3VqZSBwb2RvYm5lIGFrbyBwcmkKICAgICAgICAgICBwb3WeaXTtIHMgcG9oeWJvbSBiZXogb3BlcuF0b3JhLgogCiAKQEAgLTM1OSw3ICszNTksNyBAQAogICAgICBrZGU6CiAgICAgICAgb3BlcuF0b3IgLSDobyB0cmViYSByb2JpnSwgbmFwcu1rbGFkICBkICBwcmUgem1hemFuaWUKICAgICAgICBb6O1zbG9dIC0gamUgdm9saXRlvm79IHBv6GV0IHByZSBvcGFrb3ZhbmllIHBvaHlidQotICAgICAgIHBvaHliIC0gcG9oeWIgcG8gdGV4dGUgdnpovmFkb20gbmEgb3BlcuF0b3IsIG5hcHLta2xhZCB3IChzbG92byksIAorICAgICAgIHBvaHliIC0gcG9oeWIgcG8gdGV4dGUgdnpovmFkb20gbmEgb3BlcuF0b3IsIG5hcHLta2xhZCB3IChzbG92byksCiAJCSQgKGRvIGtvbmNhIHJpYWRrdSksIGF07y4KIAogICA2LiBQcmUgcG9oeWIgbmEgemHoaWF0b2sgcmlhZGt1IHBvdZ5pIG51bHU6ICAwCkBAIC00NzIsMTMgKzQ3MiwxMyBAQAogICAyLiBQcmUgbmFyYWRlbmllIHpuYWt1IG5hIG1pZXN0ZSBrdXJ6b3JhLCBuYXDtmiAgciAgYSBwb3RvbSB6bmFrLCBrdG9y/QogICAgICBuYWhyYWTtIHD0dm9kbv0gem5hay4KIAotICAzLiBQcu1rYXogbmEgdXByYXZlbmllIHVtb57ydWplIHptZW5pnSBvZCBrdXJ6b3JhIGGeIHBvIG1pZXN0bywga3RvcukgCisgIDMuIFBy7WtheiBuYSB1cHJhdmVuaWUgdW1vnvJ1amUgem1lbmmdIG9kIGt1cnpvcmEgYZ4gcG8gbWllc3RvLCBrdG9y6QogICAgICB1cuh1amUgcG9oeWIuICBuYXByLiBOYXDtmiAgY2UgIOjtbSB6bW7tmiB0ZXh0IG9kIHBveu1jaWUKICAgICAga3Vyem9yYSBkbyBrb25jYSBzbG92YSwgYyQgIHptZW7tIHRleHQgZG8ga29uY2EgcmlhZGt1LgogCiAgIDQuIEZvcm3hdCBwcmUgbmFocmFkZW5pZSBqZToKIAotCSAgICBjICAgIFvo7XNsb10gICAgcG9oeWIgCisJICAgIGMgICAgW+jtc2xvXSAgICBwb2h5YgogCiAKIFRlcmF6IHByZWpkaSBuYSBuYWxzZWR1avpjdSBsZWtjaXUuCkBAIC00OTQsOCArNDk0LDggQEAKIAogICBQb3pu4W1rYTogUHJl6O10YWogc2kgY2Vs+iB0+nRvIGxla2NpdSBza/RyIGFrbyB6YehuZZogdnlrb27hdmGdIGtyb2t5ISEKIAotICAxLiBEcp4gc3RsYehlbvoga2zhdmVzdSBDdHJsIGEgc3RsYeggIGcgLiBUb3RvIG5hev12YW1lIENUUkwtRy4gCi0gICAgIE5hIHNwb2R1IG9icmF6b3ZreSBzYSB6b2JyYXrtIHNwcuF2YSBzIG7henZvbSBz+mJvcnUgYSBwb3rtY2lvdSAKKyAgMS4gRHKeIHN0bGHoZW76IGts4XZlc3UgQ3RybCBhIHN0bGHoICBnIC4gVG90byBuYXr9dmFtZSBDVFJMLUcuCisgICAgIE5hIHNwb2R1IG9icmF6b3ZreSBzYSB6b2JyYXrtIHNwcuF2YSBzIG7henZvbSBz+mJvcnUgYSBwb3rtY2lvdQogICAgICB2IHP6Ym9yZS4gWmFwYW3kdGFqc2kgc2kg6O1zbG8gcmlhZGt1IHByZSBwb3WeaXRpZSB2IGtyb2t1IDMuCiAKICAgMi4gU3RsYeggIEcgIOjtbSBzYSBkb3N0YW5lmiBuYSBzcG9kb2sgc/pib3J1LgpAQCAtNTI2LDggKzUyNiw4IEBACiAgIDQuIEFrIGNoY2WaIHZ5aL5hZGGdIHJlnWF6ZWMgdiBzcOR0bm9tIHNtZXJlLCBwb3We7SBwcu1rYXogID8gIG1pZXN0bwogICAgICBwcu1rYXp1IC8uCiAKLSAgNS4gUHJlIG7hdnJhdCBuYSBtaWVzdG8geiBrdG9y6WhvIHNpIHByaZppZWwgc3RsYeggQ1RSTC1PIChkcp4gc3RsYehlbvogCi0gICAgIGts4XZlc3UgQ3RybCBwb+hhcyBzdGxh6GVuaWEga2zhdmVzeSBvKS4gWm9wYWt1aiBwcmUg72Fsmu0gbuF2cmF0IAorICA1LiBQcmUgbuF2cmF0IG5hIG1pZXN0byB6IGt0b3LpaG8gc2kgcHJpmmllbCBzdGxh6CBDVFJMLU8gKGRyniBzdGxh6GVu+gorICAgICBrbOF2ZXN1IEN0cmwgcG/oYXMgc3RsYehlbmlhIGts4XZlc3kgbykuIFpvcGFrdWogcHJlIO9hbJrtIG7hdnJhdAogICAgICBzcOSdLiBDVFJMLUkgaWRlIHZwcmVkLgogCiBQT1pOwU1LQTogImVycnJvb3IiIG5pZWplIHNw9HNvYiBobOFza292YW5pYSBlcnJvcjsgZXJycm9vciBqZSBlcnJvci4KQEAgLTU5MCw3ICs1OTAsNyBAQAogCiAKICAgMS4gQ1RSTC1nICAgIHZ5cO2aZSB0dm9qdSBwb3rtY2l1IHYgc/pib3JlIGEgc3RhdHVzIHP6Ym9ydS4KLSAgICAgICAgICAgIEcgIJ1hIHByZW1pZXN0bmkgbmEga29uaWVjIHJpYWRrdS4gCisgICAgICAgICAgICBHICCdYSBwcmVtaWVzdG5pIG5hIGtvbmllYyByaWFka3UuCiAgICAgIOjtc2xvICBHICCdYSBwcmVtaWVzdG5pIG5hIHJpYWRvayBzIOjtc2xvbS4KICAgICAgICAgICAgZ2cgIJ1hIHByZXN1bmllIG5hIHBydv0gcmlhZG9rCiAKQEAgLTY2OCwxNSArNjY4LDE1IEBACiAKICAgMy4gU3RsYegga2zhdmVzdSAgOiAuIFYgc3BvZG5laiDoYXN0aSBva25hIHNhIG9iamF27SAgOic8LCc+LgogCi0gIDQuIE5hcO2aIHcgVEVTVCAgLCBrZGUgVEVTVCBqZSBtZW5vIHP6Ym9ydSwga3Rvcv0gemF0aWFsIG5lZXhpc3R1amUuIAorICA0LiBOYXDtmiB3IFRFU1QgICwga2RlIFRFU1QgamUgbWVubyBz+mJvcnUsIGt0b3L9IHphdGlhbCBuZWV4aXN0dWplLgogICAgICBTa29udHJvbHVqLCBlIHZpZO2aICA6JzwsJz53IFRFU1QgIHByZWR0/W0gbmWeIHN0bGHo7ZogRW50ZXIuCiAKICAgNS4gVmltIHphcO2aZSBvem5h6GVu6SByaWFka3kgZG8gc/pib3J1IFRFU1QuIFBvdZ5pIDohZGlyICBhbGVibyAgIWxzCiAgICAgIHByZSBvdmVyZW5pZS4gWmF0aWFsIGhvIGWadGUgbmVtYZ4hIFBvdZ5pamVtZSBobyB2IO9hbJplaiBsZWtjaWkuCiAKLVBPWk7BTUtBOiBTdGxh6GVu7W0ga2zhdmVzeSAgdiAgc2Egc3B1c3TtIHZpenXhbG5lIG96bmHob3ZhbmllLiAKLSAgICAgICAgICBN9J5lmiBwb2h5Ym92YZ0ga3Vyem9yb20gcHJlIHVwcmVzbmVuaWUgdnl6bmHoZW7paG8gdGV4dHUuIAotICAgICAgICAgIFBvdG9tIG30nmWaIHBvdZ5pnSBvcGVy4XRvciBwcmUgdnlrb25hbmllIG5lamFrZWogYWtjaWUgCitQT1pOwU1LQTogU3RsYehlbu1tIGts4XZlc3kgIHYgIHNhIHNwdXN07SB2aXp14WxuZSBvem5h6G92YW5pZS4KKyAgICAgICAgICBN9J5lmiBwb2h5Ym92YZ0ga3Vyem9yb20gcHJlIHVwcmVzbmVuaWUgdnl6bmHoZW7paG8gdGV4dHUuCisgICAgICAgICAgUG90b20gbfSeZZogcG91nmmdIG9wZXLhdG9yIHByZSB2eWtvbmFuaWUgbmVqYWtlaiBha2NpZQogICAgICAgICAgIHMgdGV4dG9tLiBOYXBy7WtsYWQgIGQgIHptYZ5lIHZ5em5h6GVu/SB0ZXh0LgogCiAKQEAgLTY4Niw3ICs2ODYsNyBAQAogCiAJKiogUHJlIHZsb55lbmllIG9ic2FodSBz+mJvcnUsIG5hcO2aICAgOnIgRklMRU5BTUUgKioKIAotICAxLiBQcmVtaWVzdG5pIGt1cnpvciBuYWQgdGVudG8gcmlhZG9rLiAKKyAgMS4gUHJlbWllc3RuaSBrdXJ6b3IgbmFkIHRlbnRvIHJpYWRvay4KIAogUE9aTsFNS0E6IFBvIHZ5a29uYW7tIGtyb2t1IDIgdXZpZO2aIHRleHQgeiBsZWtjaWUgNS4zLiBQb3RvbSBzYSBwcmVzdfIKICAgICAgICAgICBkb2xlLCBhYnkgc2kgdmlkZWwgdPp0byBsZWtjaXUuCkBAIC03MTAsOCArNzEwLDggQEAKIAkgOiFkZWwgRklMRU5BTUUgICAgOiFybSBGSUxFTkFNRSAgICAtICBvZHN0cuFuaSBz+mJvciBGSUxFTkFNRQogCiAgIDIuICA6dyBGSUxFTkFNRSAgdWxvnu0gYWt0deFsbnkgc/pib3IgbmEgZGlzayBwb2QgbWVub20gRklMRU5BTUUuCi0gCi0gIDMuICB2ICBwb2h5YiAgOncgRklMRU5BTUUgIHVsb57tIHZpenXhbG5lIG96bmHoZW7pIHJpYWRreSBkbyAKKworICAzLiAgdiAgcG9oeWIgIDp3IEZJTEVOQU1FICB1bG+e7SB2aXp14WxuZSBvem5h6GVu6SByaWFka3kgZG8KICAgICAgIHP6Ym9ydSBGSUxFTkFNRS4KIAogICA0LiAgOnIgRklMRU5BTUUgIHZ5YmVyaWUgeiBkaXNrdSBz+mJvciBGSUxFTkFNRSBhIHZsb57tIGhvIGRvIGFrdHXhbG5laG8KQEAgLTczOCw4ICs3MzgsOCBAQAogLS0tPiBQbyBuYXDtc2Fu7SAgbyAgc2Ega3Vyem9yIHByZW1pZXN0bu0gbmEgdmxvnmVu/SByaWFkb2sgZG8gdmtsYWRhY2llaG8KICAgICAgbfNkdS4KIAotICA0LiBQcmUgb3R2b3JlbmllIHJpYWRrdSBuYWQga3Vyem9yb20sIGplZG5vdHVjaG8gbmFw7ZogdmW+a+kgIE8gLCAKLSAgICAgbmFtaWVzdG8gbWFs6WhvICBvLiBWeXNr+pphaiBzaSB0byBuYSByaWFka3UgZG9sZS4gCisgIDQuIFByZSBvdHZvcmVuaWUgcmlhZGt1IG5hZCBrdXJ6b3JvbSwgamVkbm90dWNobyBuYXDtmiB2Zb5r6SAgTyAsCisgICAgIG5hbWllc3RvIG1hbOlobyAgby4gVnlza/qaYWogc2kgdG8gbmEgcmlhZGt1IGRvbGUuCiAKIC0tLT4gVmxvniByaWFkb2sgbmFkIHT9bXRvIG5hcO1zYW7tbSBPLCBrZe8ga3Vyem9yIGplIG5hIHRvbXRvIHJpYWRrdS4KIApAQCAtNzUzLDExICs3NTMsMTEgQEAKIAogICAxLiBQcmVzdfIga3Vyem9yIG5pnpppZSBuYSBrb25pZWMgcHJ26WhvIHJpYWRrdSBvem5h6GVu6WhvIHpuYehrb3UgLS0tPgogCi0gIDIuIFN0bGHoIGts4XZlc3UgIGUgIGRva2lhviBrdXJvenIgbmllamUgbmEga29uY2kgcmlhZGt1LiAgIAorICAyLiBTdGxh6CBrbOF2ZXN1ICBlICBkb2tpYb4ga3Vyb3pyIG5pZWplIG5hIGtvbmNpIHJpYWRrdS4KIAogICAzLiBOYXDtmiAgYSAgKG1hbOkgcO1zbWVubykgcHJlIHByaWRhbmllIHRleHR1IFpBIGt1cnpvcm9tLgogCi0gIDQuIERva29u6O0gc2xvdm8gdGFrIGFrbyBqZSB0byB2IGRydWhvbSByaWFka3UuIFN0bGGaIDxFU0M+IHByZSAKKyAgNC4gRG9rb27o7SBzbG92byB0YWsgYWtvIGplIHRvIHYgZHJ1aG9tIHJpYWRrdS4gU3RsYZogPEVTQz4gcHJlCiAgICAgIG9wdXN0ZW5pZSB2a2xhZGFjaWVobyBt82R1LgogCiAgIDUuIFBvdZ5pICBlICBuYSBwcmVzdW4gbmEg72FsmmllIG5lZG9rb27oZW7pIHNsb3ZvIGEgem9wYWt1aiBrcm9reSAzIGEgNC4KQEAgLTc2NSw4ICs3NjUsOCBAQAogLS0tPiBUZW50byByaSB0aSBkb3ZvvnVqZSBu4WN2IHByaeF2YW4gdGVzdHUgbmEga29uaWVjIHJpYWRrdS4KIC0tLT4gVGVudG8gcmlhZG9rIHRpIGRvdm++dWplIG7hY3ZpayBwcmlk4XZhbmlhIHRleHR1IG5hIGtvbmllYyByaWFka3UuCiAKLVBPWk7BTUtBOiBhLCBpLCBBIJp0YXJ0dWr6IHJvdm5ha/0gdmtsYWRhY+0gbfNkLCBqZWRpbv0gcm96aWRlbCBqZSwga2RlIAotICAgICAgICAgIHNhIHpuYWt5IHZrbGFkYWr6LiAKK1BPWk7BTUtBOiBhLCBpLCBBIJp0YXJ0dWr6IHJvdm5ha/0gdmtsYWRhY+0gbfNkLCBqZWRpbv0gcm96aWRlbCBqZSwga2RlCisgICAgICAgICAgc2Egem5ha3kgdmtsYWRhavouCiAKIAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CkBAIC03NzgsMTkgKzc3OCwxOSBAQAogICAxLiBQcmVzdfIga3Vyem9yIG5pnpppZSBuYSBwcnb9IHJpYWRvayBvem5h6GVu/SB6bmHoa291IC0tLT4uIFByZW1pZXN0bmkKICAgICAga3Vyem9yIG5hIHph6GlhdG9rIHBydulobyB2/XNreXR1ICB4eHguCiAKLSAgMi4gVGVyYXogbmFw7ZogIFIgIGEgIG5hcO2aICDo7XNsbyB1dmVkZW7pIHYgZHJ1aG9tIHJpYWRrdSwgdGFrnmUgCisgIDIuIFRlcmF6IG5hcO2aICBSICBhICBuYXDtmiAg6O1zbG8gdXZlZGVu6SB2IGRydWhvbSByaWFka3UsIHRha55lCiAgICAgIHNhIG7tbSBuYWhyYWTtIHD0dm9kbukgeHh4LgogCi0gIDMuIFN0bGHoIDxFU0M+IHByZSBvcHVzdGVuaWUgbmFocmFkem92YWNpZWhvIG3zZHUuIFBvem7hbWthLCCeZSB6dnmab2sgCi0gICAgIHJpYWRrdSB6b3N0YW5lIG5lem1lbmVu/S4gCisgIDMuIFN0bGHoIDxFU0M+IHByZSBvcHVzdGVuaWUgbmFocmFkem92YWNpZWhvIG3zZHUuIFBvem7hbWthLCCeZSB6dnmab2sKKyAgICAgcmlhZGt1IHpvc3RhbmUgbmV6bWVuZW79LgogCiAgIDQuIFpvcGFrdWogdGlldG8ga3Jva3kgcHJlIG5haHJhZGVuaWUgenZ5mm79Y2ggeHh4LgogCiAtLS0+IFByaWRhbu1tIDEyMyBrdSB4eHggZG9zdGFuZZogeHh4LgogLS0tPiBQcmlkYW7tbSAxMjMga3UgNDU2IGRvc3RhbmWaIDU3OS4KIAotUE9aTsFNS0E6ICBOYWhyYWR6b3ZhY+0gbfNkIGplIGFrbyB2a2xhZGFj7SBt82QsIGFsZSBrYZ5k/SBuYXDtc2Fu/SB6bmFrIAotICAgICAgICAgICB6bWGeZSBleGlzdHVq+mNpIHpuYWsuIAorUE9aTsFNS0E6ICBOYWhyYWR6b3ZhY+0gbfNkIGplIGFrbyB2a2xhZGFj7SBt82QsIGFsZSBrYZ5k/SBuYXDtc2Fu/SB6bmFrCisgICAgICAgICAgIHptYZ5lIGV4aXN0dWr6Y2kgem5hay4KIAogCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KQEAgLTgwOSwxNCArODA5LDE0IEBACiAKICAgNS4gTmFw7ZogIHAgIHByZSB2bG+ebmllIChwYXN0ZSkgdGV4dHUuIFBvdG9tIG5hcO2aOiAgYSBkcnVoYSA8RVNDPi4KIAotICA2LiBQb3WeaSB2aXp14WxueSBt82QgcHJlIG96bmHoZW5pZSAicG9sb55rYS4iLCB2eXN0cmlobmkgdG8gCi0gICAgIHBvdZ5pdO1tICB5LCBwcmVzdfIgc2EgbmEga29uaWVjIG5hc2xlZHVq+mNlaG8gcmlhZGt1IHBvdZ5pdO1tICBqJCAKKyAgNi4gUG91nmkgdml6deFsbnkgbfNkIHByZSBvem5h6GVuaWUgInBvbG+ea2EuIiwgdnlzdHJpaG5pIHRvCisgICAgIHBvdZ5pdO1tICB5LCBwcmVzdfIgc2EgbmEga29uaWVjIG5hc2xlZHVq+mNlaG8gcmlhZGt1IHBvdZ5pdO1tICBqJAogICAgICBhIHZsb54gc2VtIHRleHQgcG91nml07W0gIHAuCiAKIC0tLT4gYSkgdG90byBqZSBwcnbhIHBvbG+ea2EKIC0tLT4gYikKIAotUE9aTsFNS0E6IE30nmWaIHBvdZ5pnSB0aWWeICB5ICBha28gb3BlcuF0b3I7IHl3ICB2eXN0cmlobmUgamVkbm8gc2xvdm8uIAorUE9aTsFNS0E6IE30nmWaIHBvdZ5pnSB0aWWeICB5ICBha28gb3BlcuF0b3I7IHl3ICB2eXN0cmlobmUgamVkbm8gc2xvdm8uCiAKIAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CkBAIC04NDMsMTEgKzg0MywxMSBAQAogICA1LiBUZXJheiBzcHVzdGkgdnlovmFk4XZhY+0gcHLta2F6IHpub3Z1LCBhIHBvenJpIOhvIHNhIHN0YWxvOgogICAgICAvaWdub3JlIDxFTlRFUj4KIAotICA2LiBQcmUgb3BldG92bukgemFwbnV0aWUgcm96bHmab3ZhbmlhIHZlvmv9Y2ggYSBtYWz9Y2ggcO1zbWVuIAorICA2LiBQcmUgb3BldG92bukgemFwbnV0aWUgcm96bHmab3ZhbmlhIHZlvmv9Y2ggYSBtYWz9Y2ggcO1zbWVuCiAgICAgIG5hcO2aOiAgOnNldCBub2ljCiAKIFBPWk7BTUtBOiBOYSBvZHN0cuFuZW5pZSB6dv1yYXpuZW5pYSB2/XJhem92IG5hcO2aOiAgOm5vaGxzZWFyY2gKLVBPWk7BTUtBOiBBayBjaGNlmiBuZXJvemx5mm92YZ0gdmW+a29znSBw7XNtZW4gbGVuIHByZSBqZWRubyAKK1BPWk7BTUtBOiBBayBjaGNlmiBuZXJvemx5mm92YZ0gdmW+a29znSBw7XNtZW4gbGVuIHByZSBqZWRubwogICAgICAgICAgIHBvdZ5pdGllIHZ5aL5hZOF2YWNpZWhvIHBy7WthenUsIHBvdZ5pIFxjOiAgL2lnbm9yZVxjIDxFTlRFUj4KIAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CkBAIC04NjcsOSArODY3LDkgQEAKICAgNS4gTmFw7XNhbmllIHZlvmvpaG8gIFIgIHByZXBuZSBkbyBuYWhyYWR6b3ZhY2llaG8gbfNkdSwga/1tIG5pZWplCiAgICAgIHN0bGHoZW7pIDxFU0M+LgogCi0gIDYuIE5hcO1zYW5pZSAiOnNldCB4eHgiIG5hc3Rhdu0gbW+ebm9znSAieHh4Ii4gTmlla3RvcukgbmFzdGF2ZW5pYSBz+jogCi0gICAgICdpYycgJ2lnbm9yZWNhc2UnIGlnbm9ydWplIHZlvmvpIGEgbWFs6SBw7XNtZW7hIHBv6GFzIHZ5aL5hZOF2YW5pYS4gCi0gICAgICdpcycgJ2luY3NlYXJjaCcgem9icmF6dWplIOhpYXN0b+hu6SByZZ1hemNlIHZ5aL5hZOF2YW7paG8gcmWdYXpjYS4gCisgIDYuIE5hcO1zYW5pZSAiOnNldCB4eHgiIG5hc3Rhdu0gbW+ebm9znSAieHh4Ii4gTmlla3RvcukgbmFzdGF2ZW5pYSBz+joKKyAgICAgJ2ljJyAnaWdub3JlY2FzZScgaWdub3J1amUgdmW+a+kgYSBtYWzpIHDtc21lbuEgcG/oYXMgdnlovmFk4XZhbmlhLgorICAgICAnaXMnICdpbmNzZWFyY2gnIHpvYnJhenVqZSDoaWFzdG/obukgcmWdYXpjZSB2eWi+YWThdmFu6WhvIHJlnWF6Y2EuCiAgICAgICdobHMnICdobHNlYXJjaCcgdnl6bmHo7SB2mmV0a3kgdnlovmFk4XZhbukgcmWdYXpjZS4KICAgICAgIE30nmWaIHBvdZ5pnSBob2Npa3Rvcv0geiBkbGj9Y2ggYSBrcuF0a3ljaCBu4Xp2b3YgbW+ebm9zdO0uCiAKQEAgLTg5Myw4ICs4OTMsOCBAQAogCS0gc3RsYegga2zhdmVzdSA8RjE+IChhayBuZWpha/ogbeGaKQogCS0gbmFw7ZogIDpoZWxwIDxFTlRFUj4KIAotICDI7XRhaiB0ZXh0IHYgb2tuZSBu4XBvdmVkeSBwcmUgeu1za2FuaWUgcHJlZHN0YXZ5IGFrbyBu4XBvdmVkYSBmdW5ndWplLiAKLSAgTmFw7ZogICBDVFJMLVcgQ1RSTC1XICBwcmUgc2tvayB6IGplZG7paG8gb2tuYSBkbyBkcnVo6WhvLiAKKyAgyO10YWogdGV4dCB2IG9rbmUgbuFwb3ZlZHkgcHJlIHrtc2thbmllIHByZWRzdGF2eSBha28gbuFwb3ZlZGEgZnVuZ3VqZS4KKyAgTmFw7ZogICBDVFJMLVcgQ1RSTC1XICBwcmUgc2tvayB6IGplZG7paG8gb2tuYSBkbyBkcnVo6WhvLgogICBOYXDtmiAgICA6cSA8RU5URVI+ICAgIOjtbSB6YXR2b3LtmiBva25vIG7hcG92ZWR5LgogCiAgIE30nmWaIG7hanOdIGhlbHAga3UgaG9jaWFrZWogdOltZSBwcmlkYW7tbSBhcmd1bWVudHUga3UgcHLta2F6dSAiOmhlbHAiLgpAQCAtOTQ1LDEyICs5NDUsMTIgQEAKIAogICA1LiBTdGxh6CA8VEFCPiBhIFZpbSBkb2tvbujtIG1lbm8gcHLta2F6dSBuYSAiOmVkaXQiLgogCi0gIDYuIFRlcmF6IHByaWRhaiBtZWR6ZXJu7WsgYSB6YehpYXRvayBtZW5hIGV4aXN0dWr6Y2VobyBz+mJvcnU6IAorICA2LiBUZXJheiBwcmlkYWogbWVkemVybu1rIGEgemHoaWF0b2sgbWVuYSBleGlzdHVq+mNlaG8gc/pib3J1OgogICAgICA6ZWRpdCBGSUwKIAogICA3LiBTdGxh6CA8VEFCPi4gVmltIGRva29u6O0gbWVubyAoYWsgamUgamVkaW5l6G7pKS4KIAotUE9aTsFNS0E6IERva29u6G92YW5pZSBmdW5ndWplIHByZSB2Zb5hIHBy7Wthem92LiBWeXNr+pphaiBzdGxh6GVuaWUgCitQT1pOwU1LQTogRG9rb27ob3ZhbmllIGZ1bmd1amUgcHJlIHZlvmEgcHLta2F6b3YuIFZ5c2v6mmFqIHN0bGHoZW5pZQogICAgICAgICAgIENUUkwtRCBhIDxUQUI+LiCKcGVjaeFsbmUgamUgdG8gdZ5pdG/obukgcHJlIHBy7WtheiAgOmhlbHAuCiAKIApAQCAtOTYwLDE2ICs5NjAsMTYgQEAKIAogICAxLiBOYXDtmiAgOmhlbHAgIGFsZWJvIHN0bGHoIDxGMT4gYWxlYm8gPEhlbHA+IHByZSBvdHZvcmVuaWUgb2tuYSBu4XBvdmVkeS4KIAotICAyLiBOYXDtmiAgOmhlbHAgcHLta2F6ICBwcmUgdnlovmFkYW5pZSBu4XBvdmVkeSBrdSBwcu1rYXp1IHBy7Wthei4gCisgIDIuIE5hcO2aICA6aGVscCBwcu1rYXogIHByZSB2eWi+YWRhbmllIG7hcG92ZWR5IGt1IHBy7WthenUgcHLta2F6LgogCi0gIDMuIE5hcO2aICBDVFJMLVcgQ1RSTC1XICBuYSBwcmVza2/oZW5pZSBkbyBpbulobyBva25hLiAKKyAgMy4gTmFw7ZogIENUUkwtVyBDVFJMLVcgIG5hIHByZXNrb+hlbmllIGRvIGlu6WhvIG9rbmEuCiAKICAgNC4gTmFw7ZogIDpxICBwcmUgemF0dm9yZW5pZSBva25hIG7hcG92ZWR5CiAKLSAgNS4gVnl0dm9yIJp0YXJ0b3ZhY+0gc2tyaXB0IHZpbXJjIHByZSB1ZHKeYW5pZSB1cHJlZG5vc3Tyb3Zhbv1jaCBuYXN0YXZlbu0uIAorICA1LiBWeXR2b3IgmnRhcnRvdmFj7SBza3JpcHQgdmltcmMgcHJlIHVkcp5hbmllIHVwcmVkbm9zdPJvdmFu/WNoIG5hc3RhdmVu7S4KIAotICA2LiBQb+hhcyBw7XNhbmlhIHBy7WthenUgIDogIHN0bGHoIENUUkwtRCBwcmUgem9icmF6ZW5pZSBkb2tvbuhlbu0uIAotICAgICBTdGxh6CA8VEFCPiBwcmUgcG91nml0aWUgamVkbulobyB6IGRva29u6GVu7S4gCisgIDYuIFBv6GFzIHDtc2FuaWEgcHLta2F6dSAgOiAgc3RsYeggQ1RSTC1EIHByZSB6b2JyYXplbmllIGRva29u6GVu7S4KKyAgICAgU3RsYeggPFRBQj4gcHJlIHBvdZ5pdGllIGplZG7paG8geiBkb2tvbuhlbu0uCiAKIAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CmRpZmYgLS1naXQgYS9zcmMvR3ZpbUV4dC9HdmltRXh0LnJlZyBiL3NyYy9HdmltRXh0L0d2aW1FeHQucmVnCmluZGV4IDFlM2E3ODEuLmJiOTA2ZTIgMTAwNjQ0Ci0tLSBhL3NyYy9HdmltRXh0L0d2aW1FeHQucmVnCisrKyBiL3NyYy9HdmltRXh0L0d2aW1FeHQucmVnCkBAIC0xNSw2ICsxNSw2IEBACiBbSEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXFZpbVxHdmltXQogICAgInBhdGgiPSJndmltLmV4ZSIKIAotW0hLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxVbmluc3RhbGxcVmltIDcuMGZdCi0gICAiRGlzcGxheU5hbWUiPSJWaW0gNy4wZjogRWRpdCB3aXRoIFZpbSBwb3B1cCBtZW51IGVudHJ5IgorW0hLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxVbmluc3RhbGxcVmltIDcuMGddCisgICAiRGlzcGxheU5hbWUiPSJWaW0gNy4wZzogRWRpdCB3aXRoIFZpbSBwb3B1cCBtZW51IGVudHJ5IgogICAgIlVuaW5zdGFsbFN0cmluZyI9InVuaW5zdGFsLmV4ZSIKZGlmZiAtLWdpdCBhL3NyYy9JTlNUQUxMbWFjLnR4dCBiL3NyYy9JTlNUQUxMbWFjLnR4dAppbmRleCBmYTQwYzE1Li44MWFkOTcwIDEwMDY0NAotLS0gYS9zcmMvSU5TVEFMTG1hYy50eHQKKysrIGIvc3JjL0lOU1RBTExtYWMudHh0CkBAIC00Myw5ICs0Myw5IEBACiAKICBUbyBvdmVycnVsZSB0aGUgYXJjaGl0ZWN0dXJlIGRvIHRoaXMgYmVmb3JlIHJ1bm5pbmcgbWFrZToKIAotIAkuL2NvbmZpZ3VyZSAtLXdpdGgtbWFjLWFyY2g9aW50ZWwKKwkuL2NvbmZpZ3VyZSAtLXdpdGgtbWFjLWFyY2g9aW50ZWwKICBvcgotIAkuL2NvbmZpZ3VyZSAtLXdpdGgtbWFjLWFyY2g9cHBjCisJLi9jb25maWd1cmUgLS13aXRoLW1hYy1hcmNoPXBwYwogCiAKIDEuMiBYLVdpbmRvd3Mgb3IgUGxhaW4gVGV4dApkaWZmIC0tZ2l0IGEvc3JjL0lOU1RBTExwYy50eHQgYi9zcmMvSU5TVEFMTHBjLnR4dAppbmRleCBkMmEzZTI4Li5hMTNkY2UwIDEwMDY0NAotLS0gYS9zcmMvSU5TVEFMTHBjLnR4dAorKysgYi9zcmMvSU5TVEFMTHBjLnR4dApAQCAtNDMsMTEgKzQzLDExIEBACiBWaXN1YWwgU3R1ZGlvIGluc3RhbGxlZCBhIGJhdGNoIGZpbGUgY2FsbGVkIHZjdmFyczMyLmJhdCwgd2hpY2ggeW91IG11c3QKIHJ1biB0byBzZXQgdXAgcGF0aHMgZm9yIG5tYWtlIGFuZCBNU1ZDLgogCi1ubWFrZSAtZiBNYWtlX212Yy5tYWsgICAgICAgICAgIGNvbnNvbGUgICBXaW4zMiBTREsgb3IgTWljcm9zb2Z0IFZpc3VhbCBDKysKLW5tYWtlIC1mIE1ha2VfbXZjLm1hayBHVUk9eWVzICAgR1VJICAgICAgIE1pY3Jvc29mdCBWaXN1YWwgQysrCi1ubWFrZSAtZiBNYWtlX212Yy5tYWsgT0xFPXllcyAgIE9MRSAgICAgICBNaWNyb3NvZnQgVmlzdWFsIEMrKworbm1ha2UgLWYgTWFrZV9tdmMubWFrCQljb25zb2xlICAgV2luMzIgU0RLIG9yIE1pY3Jvc29mdCBWaXN1YWwgQysrCitubWFrZSAtZiBNYWtlX212Yy5tYWsgR1VJPXllcwlHVUkJICBNaWNyb3NvZnQgVmlzdWFsIEMrKworbm1ha2UgLWYgTWFrZV9tdmMubWFrIE9MRT15ZXMJT0xFCSAgTWljcm9zb2Z0IFZpc3VhbCBDKysKIG5tYWtlIC1mIE1ha2VfbXZjLm1hayBQRVJMPUM6XFBlcmwgUFlUSE9OPUM6XFB5dGhvbiBldGMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlcmwsIFB5dGhvbiwgZXRjLgorCQkJCVBlcmwsIFB5dGhvbiwgZXRjLgogCiBNYWtlX212Yy5tYWsgYWxsb3dzIGEgVmltIHRvIGJlIGJ1aWx0IHdpdGggdmFyaW91cyBkaWZmZXJlbnQgZmVhdHVyZXMgYW5kCiBkZWJ1ZyBzdXBwb3J0LiAgRGVidWdnaW5nIHdpdGggTVMgRGV2c3R1ZGlvIGlzIHByb3ZpZGVkIGJ5IE1ha2VfZHZjLm1hay4KQEAgLTYxLDkgKzYxLDkgQEAKIGZhciBtb3JlIGNvbmZpZ3VyYXRpb24uKSBNYWtlX2l2Yy5tYWsgY2FuIGFsc28gYmUgYnVpbHQgd2l0aCBubWFrZS4KIAogbm1ha2UgLWYgTWFrZV9pdmMubWFrIENGRz0iVmltIC0gV2luMzIgUmVsZWFzZSBndmltIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVUkgICAgICAgTWljcm9zb2Z0IFZpc3VhbCBDKysgNC54IG9yIGxhdGVyCisJCQkJR1VJCSAgTWljcm9zb2Z0IFZpc3VhbCBDKysgNC54IG9yIGxhdGVyCiBubWFrZSAtZiBNYWtlX2l2Yy5tYWsgQ0ZHPSJWaW0gLSBXaW4zMiBSZWxlYXNlIGd2aW0gT0xFIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPTEUgICAgICAgTWljcm9zb2Z0IFZpc3VhbCBDKysgNC54IG9yIGxhdGVyCisJCQkJT0xFCSAgTWljcm9zb2Z0IFZpc3VhbCBDKysgNC54IG9yIGxhdGVyCiAKIFNlZSB0aGUgc3BlY2lmaWMgZmlsZXMgZm9yIGNvbW1lbnRzIGFuZCBvcHRpb25zLgogCkBAIC05NCw3ICs5NCw3IEBACiBUbyBjb21waWxlIFZpbSB1c2luZyB0aGUgVkMyMDAzIFRvb2xraXQgYW5kIE1ha2VfbXZjLm1haywgeW91IG11c3QgZmlyc3QKIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kcyBpbiBhIGNtZC5leGUgd2luZG93ICh0aGUgbXN2Y3NldHVwLmJhdCBiYXRjaAogZmlsZSBjYW4gYmUgdXNlZCk6Ci0gICAgICAgCisKICAgICBzZXQgUEFUSD0lU3lzdGVtUm9vdCVcTWljcm9zb2Z0Lk5FVFxGcmFtZXdvcmtcdjEuMS40MzIyOyVQQVRIJQogICAgIGNhbGwgIiVWQ1Rvb2xraXRJbnN0YWxsRGlyJXZjdmFyczMyLmJhdCIKICAgICBzZXQgTVNWQ1Zlcj03LjEKQEAgLTEwNCw3ICsxMDQsNyBAQAogTm93IHlvdSBjYW4gYnVpbGQgVmltIHdpdGggTWFrZV9tdmMubWFrLgogCiAKLUdldHRpbmcgdGhlIFdpbmRvd3MgUGxhdGZvcm0gU0RLICAgICAgICAgICAgKm1zLXBsYXRmb3JtLXNkayoKK0dldHRpbmcgdGhlIFdpbmRvd3MgUGxhdGZvcm0gU0RLCSAgICAqbXMtcGxhdGZvcm0tc2RrKgogCiBZb3Ugd2lsbCBhbHNvIG5lZWQgYSBjb3B5IG9mIHRoZSBXaW5kb3dzIFBsYXRmb3JtIFNESyBmcm9tCiAgICAgaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL21zZG93bmxvYWQvcGxhdGZvcm1zZGsvc2RrdXBkYXRlLwpAQCAtMTIyLDcgKzEyMiw3IEBACiB3aGljaCBpcyBuZWVkZWQgdG8gbGluayBWaW0uCiAKIAotR2V0dGluZyB0aGUgLk5FVCBGcmFtZXdvcmsgMS4xIFNESyAgICAgICAgICAqZG90bmV0LTEuMS1zZGsqCitHZXR0aW5nIHRoZSAuTkVUIEZyYW1ld29yayAxLjEgU0RLCSAgICAqZG90bmV0LTEuMS1zZGsqCiAKIFlvdSBuZWVkIHRoZSAuTkVUIEZyYW1ld29yayAxLjEgU0RLIGZyb20KICAgICBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vZG93bmxvYWRzL2RldGFpbHMuYXNweD9mYW1pbHlpZD05YjNhMmNhNi0zNjQ3LTQwNzAtOWY0MS1hMzMzYzZiOTE4MWQKQEAgLTEzMSw3ICsxMzEsNyBAQAogaW5zdGFsbGluZyB0aGUgLk5FVCAxLjEgU0RLLgogCiAKLUdldHRpbmcgdGhlIFdpbkRiZyBkZWJ1Z2dlciAgICAgICAgICAgICAgICAgKndpbmRiZy1kb3dubG9hZCoKK0dldHRpbmcgdGhlIFdpbkRiZyBkZWJ1Z2dlcgkJICAgICp3aW5kYmctZG93bmxvYWQqCiAKIFRoZSBEZWJ1Z2dpbmcgVG9vbHMgZm9yIFdpbmRvd3MgY2FuIGJlIGRvd25sb2FkZWQgZnJvbQogICAgIGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS93aGRjL2RldnRvb2xzL2RlYnVnZ2luZy9kZWZhdWx0Lm1zcHgKQEAgLTI0Miw3ICsyNDIsNyBAQAogSWYgeW91IGxpa2UsIHlvdSBjYW4gY29tcGlsZSB0aGUgJ21pbmd3JyBXaW4zMiB2ZXJzaW9uIGZyb20gdGhlIGNvbWZvcnQgb2YKIHlvdXIgTGludXggKG9yIG90aGVyIHVuaXgpIGJveC4gIFRvIGRvIHRoaXMsIHlvdSBuZWVkIHRvIGZvbGxvdyBhIGZldyBzdGVwczoKICAgICAxKSBJbnN0YWxsIHRoZSBtaW5ndzMyIGNyb3NzLWNvbXBpbGVyLiBTZWUKLSAgICAgICAgaHR0cDovL3d3dy5saWJzZGwub3JnL2V4dHJhcy93aW4zMi9jcm9zcy9SRUFETUUudHh0CisJaHR0cDovL3d3dy5saWJzZGwub3JnL2V4dHJhcy93aW4zMi9jcm9zcy9SRUFETUUudHh0CiAgICAgMikgZ2V0IHRoZSAqdW5peCogdmVyc2lvbiBvZiB0aGUgdmltIHNvdXJjZXMKICAgICAzKSBpbiAnTWFrZV9taW5nLm1haycsIHNldCAnQ1JPU1MnIHRvICcxJyBpbnN0ZWFkIG9mICcwJy4KICAgICA0KSBtYWtlIC1mIE1ha2VfbWluZy5tYWsgZ3ZpbS5leGUKQEAgLTMxNyw3ICszMTcsNyBAQAogOC4gV2luZG93cyAzLjF4CiA9PT09PT09PT09PT09PT0KIAotbWFrZSAtZiBNYWtlX3cxNi5tYWsgICAgICAgICAgICAgMTYgYml0LCBCb3JsYW5kIEMrKyA1LjAKK21ha2UgLWYgTWFrZV93MTYubWFrCQkgMTYgYml0LCBCb3JsYW5kIEMrKyA1LjAKIAogV2FybmluZzogQmUgc3VyZSB0byB1c2UgdGhlIHJpZ2h0IG1ha2UuZXhlLiAgSXQgc2hvdWxkIGJlIEJvcmxhbmQgbWFrZS4KIApAQCAtMzQwLDkgKzM0MCw5IEBACiBTdW1tYXJ5OgogcmVuIE1ha2VfYmMzLm1hayBNYWtlZmlsZTsgbWFrZSAgICAgMTYgYml0LCBCb3JsYW5kIEMrKyBhbmQgVHVyYm8gQysrCiByZW4gTWFrZV90Y2MubWFrIE1ha2VmaWxlOyBtYWtlICAgICAxNiBiaXQsIFR1cmJvIEMKLW1ha2UgLWYgTWFrZV9kamcubWFrICAgICAgICAgICAgICAgIDMyIGJpdCwgREpHUFAgMi4wCi1tYWtlIC1mIE1ha2VfYmM1Lm1hayAgICAgICAgICAgICAgICAzMiBiaXQsIEJvcmxhbmQgQysrIDUueCAoZWRpdCBpdCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIERPUykKK21ha2UgLWYgTWFrZV9kamcubWFrCQkgICAgMzIgYml0LCBESkdQUCAyLjAKK21ha2UgLWYgTWFrZV9iYzUubWFrCQkgICAgMzIgYml0LCBCb3JsYW5kIEMrKyA1LnggKGVkaXQgaXQgdG8KKwkJCQkgICAgZGVmaW5lIERPUykKIAogV2FybmluZzogQmUgc3VyZSB0byB1c2UgdGhlIHJpZ2h0IG1ha2UuZXhlLiAgTWljcm9zb2Z0IEMgbWFrZSBkb2Vzbid0IHdvcms7CiBCb3JsYW5kIG1ha2Ugb25seSB3b3JrcyB3aXRoIE1ha2VfYmMzLm1haywgTWFrZV9iYzUubWFrIGFuZCBNYWtlX3RjYy5tYWs7CmRpZmYgLS1naXQgYS9zcmMvSU5TVEFMTHZtcy50eHQgYi9zcmMvSU5TVEFMTHZtcy50eHQKaW5kZXggYzBjZTMxMS4uNTEyYjY2NSAxMDA2NDQKLS0tIGEvc3JjL0lOU1RBTEx2bXMudHh0CisrKyBiL3NyYy9JTlNUQUxMdm1zLnR4dApAQCAtMSw3ICsxLDcgQEAKIElOU1RBTEx2bXMudHh0IC0gSW5zdGFsbGF0aW9uIG9mIFZpbSBvbiBPcGVuVk1TCiAKIE1haW50YWluZXI6ICAgWm9sdGFuIEFycGFkZmZ5IDxhcnBhZGZmeUBwb2xhcmhvbWUuY29tPgotTGFzdCBjaGFuZ2U6ICAyMDA2IE1hciAwMgorTGFzdCBjaGFuZ2U6ICAyMDA2IEFwciAzMAogCiBUaGlzIGZpbGUgY29udGFpbnMgaW5zdHJ1Y3Rpb25zIGZvciBjb21waWxpbmcgVmltIG9uIE9wZW52bXMuCiBJZiB5b3UgYWxyZWFkeSBoYXZlIGFuIGV4ZWN1dGFibGUgdmVyc2lvbiBvZiBWaW0sIHlvdSBkb24ndCBuZWVkIHRoaXMuCkBAIC0zMDMsNyArMzAzLDcgQEAKICAgICAgWW91IG5lZWQgYWxzbyB0aGUgT3BlblZNUyBQb3J0aW5nIExpYnJhcnk6CiAgICAgIGh0dHA6Ly93d3cub3BlbnZtcy5jb21wYXEuY29tL29wZW52bXMvcHJvZHVjdHMvaXBzL3BvcnRpbmcuaHRtbAogCi0gICAgIFNvdXJjZSBjb2RlIGZvciBHVEsgYW5kIHBvcnRpbmcgbGlicmFyeSB0aGF0IGlzIHVzZWQgdG8gYnVpbGQgCisgICAgIFNvdXJjZSBjb2RlIGZvciBHVEsgYW5kIHBvcnRpbmcgbGlicmFyeSB0aGF0IGlzIHVzZWQgdG8gYnVpbGQKICAgICAgVk1TIGV4ZWN1dGFibGVzIGF0IHBvbGFyaG9tZS5jb20gYXJlIGF0CiAgICAgIGh0dHA6Ly93d3cucG9sYXJob21lLmNvbS92aW0vZmlsZXMvc291cmNlL3Ztcy8KIApkaWZmIC0tZ2l0IGEvc3JjL01ha2VfYmM1Lm1hayBiL3NyYy9NYWtlX2JjNS5tYWsKaW5kZXggZTUwYTQzNS4uYTFkOTJiZCAxMDA2NDQKLS0tIGEvc3JjL01ha2VfYmM1Lm1haworKysgYi9zcmMvTWFrZV9iYzUubWFrCkBAIC01NCw5ICs1NCw5IEBACiAjICAgUlVCWV9WRVJfTE9ORyAgc2FtZSwgYnV0IGluIGZvcm1hdCB3aXRoIGRvdC4gKDEuNikKICMgICBEWU5BTUlDX1JVQlkgbm8gb3IgeWVzOiB1c2UgeWVzIHRvIGxvYWQgdGhlIFJ1YnkgRExMIGR5bmFtaWNhbGx5IChubykKICMgTUJZVEUJCW5vIG9yIHllczogc2V0IHRvIHllcyBmb3IgbXVsdGktYnl0ZSBzdXBwb3J0ICh5ZXMpCi0jICAgICAgICAgICAgICAgTk9URTogbXVsdGktYnl0ZSBzdXBwb3J0IGlzIGJyb2tlbiBpbiB0aGUgQm9ybGFuZCBsaWJyYXJpZXMsCi0jICAgICAgICAgICAgICAgbm90IGV2ZXJ5dGhpbmcgd2lsbCB3b3JrIHByb3Blcmx5ISAgRXNwLiBoYW5kbGluZyBtdWx0aS1ieXRlCi0jICAgICAgICAgICAgICAgZmlsZSBuYW1lcy4KKyMJCU5PVEU6IG11bHRpLWJ5dGUgc3VwcG9ydCBpcyBicm9rZW4gaW4gdGhlIEJvcmxhbmQgbGlicmFyaWVzLAorIwkJbm90IGV2ZXJ5dGhpbmcgd2lsbCB3b3JrIHByb3Blcmx5ISAgRXNwLiBoYW5kbGluZyBtdWx0aS1ieXRlCisjCQlmaWxlIG5hbWVzLgogIyBJTUUJCW5vIG9yIHllczogc2V0IHRvIHllcyBmb3IgbXVsdGktYnl0ZSBJTUUgc3VwcG9ydCAoeWVzKQogIyAgIERZTkFNSUNfSU1FIG5vIG9yIHllczogc2V0IHRvIHllcyB0byBsb2FkIGltbTMyLmRsbCBkeW5hbWljYWxseSAoeWVzKQogIyBHRVRURVhUCW5vIG9yIHllczogc2V0IHRvIHllcyBmb3IgbXVsdGktbGFuZ3VhZ2Ugc3VwcG9ydCAoeWVzKQpAQCAtODAsNyArODAsNyBAQAogIyBDU0NPUEUJbm8gb3IgeWVzOiBpbmNsdWRlIHN1cHBvcnQgZm9yIENzY29wZSBpbnRlcmZhY2UgKHllcykKICMgTkVUQkVBTlMJbm8gb3IgeWVzOiBpbmNsdWRlIHN1cHBvcnQgZm9yIE5ldGJlYW5zIGludGVyZmFjZSAoeWVzIGlmIEdVSQogIwkJaXMgeWVzKQotIyBOQkRFQlVHIAlubyBvciB5ZXM6IGluY2x1ZGUgc3VwcG9ydCBmb3IgZGVidWdnaW5nIE5ldGJlYW5zIGludGVyZmFjZSAobm8pCisjIE5CREVCVUcJbm8gb3IgeWVzOiBpbmNsdWRlIHN1cHBvcnQgZm9yIGRlYnVnZ2luZyBOZXRiZWFucyBpbnRlcmZhY2UgKG5vKQogIyBYUE0JCWRlZmluZSB0byBwYXRoIHRvIFhQTSBkaXIgdG8gZ2V0IHN1cHBvcnQgZm9yIGxvYWRpbmcgWFBNIGltYWdlcy4KIAogIyMjIEJPUjogcm9vdCBvZiB0aGUgQkMgaW5zdGFsbGF0aW9uCmRpZmYgLS1naXQgYS9zcmMvTWFrZV9jeWcubWFrIGIvc3JjL01ha2VfY3lnLm1hawppbmRleCA1NTY4MTc0Li40Yzc1N2UxIDEwMDY0NAotLS0gYS9zcmMvTWFrZV9jeWcubWFrCisrKyBiL3NyYy9NYWtlX2N5Zy5tYWsKQEAgLTEsNiArMSw2IEBACiAjCiAjIE1ha2VmaWxlIGZvciBWSU0gb24gV2luMzIsIHVzaW5nIEN5Z251cyBnY2MKLSMgTGFzdCB1cGRhdGVkIGJ5IERhbiBTaGFycC4gIExhc3QgQ2hhbmdlOiAyMDA2IE1hciAyNAorIyBMYXN0IHVwZGF0ZWQgYnkgRGFuIFNoYXJwLiAgTGFzdCBDaGFuZ2U6IDIwMDYgQXByIDMwCiAjCiAjIEFsc28gcmVhZCBJTlNUQUxMcGMudHh0IQogIwpAQCAtNDIsNyArNDIsNyBAQAogIyBPUFRJTUlaRQlTUEFDRSwgU1BFRUQsIG9yIE1BWFNQRUVEOiBzZXQgb3B0aW1pemF0aW9uIGxldmVsIChNQVhTUEVFRCkKICMgTkVUQkVBTlMJbm8gb3IgeWVzOiB0byBpbmNsdWRlIG5ldGJlYW5zIGludGVyZmFjZSBzdXBwb3J0ICh5ZXMgd2hlbiBHVUkKICMJCWlzIHllcykKLSMgTkJERUJVRyAJbm8gb3IgeWVzOiB0byBpbmNsdWRlIG5ldGJlYW5zIGludGVyZmFjZSBkZWJ1Z2dpbmcgc3VwcG9ydCAobm8pCisjIE5CREVCVUcJbm8gb3IgeWVzOiB0byBpbmNsdWRlIG5ldGJlYW5zIGludGVyZmFjZSBkZWJ1Z2dpbmcgc3VwcG9ydCAobm8pCiAjIFhQTQkJZGVmaW5lIHRvIHBhdGggdG8gWFBNIGRpciB0byBnZXQgWFBNIGltYWdlIHN1cHBvcnQgKG5vdCBkZWZpbmVkKQogIz4+Pj4+IGNob29zZSBvcHRpb25zOgogaWZuZGVmIEdVSQpkaWZmIC0tZ2l0IGEvc3JjL01ha2Vfdm1zLm1tcyBiL3NyYy9NYWtlX3Ztcy5tbXMKaW5kZXggODk1YjdiYy4uMDdkMmIyMCAxMDA2NDQKLS0tIGEvc3JjL01ha2Vfdm1zLm1tcworKysgYi9zcmMvTWFrZV92bXMubW1zCkBAIC0yLDcgKzIsNyBAQAogIyBNYWtlZmlsZSBmb3IgVmltIG9uIE9wZW5WTVMKICMKICMgTWFpbnRhaW5lcjogICBab2x0YW4gQXJwYWRmZnkgPGFycGFkZmZ5QHBvbGFyaG9tZS5jb20+Ci0jIExhc3QgY2hhbmdlOiAgMjAwNiBBcHIgMTEKKyMgTGFzdCBjaGFuZ2U6ICAyMDA2IEFwciAzMAogIwogIyBUaGlzIGhhcyBzY3JpcHQgYmVlbiB0ZXN0ZWQgb24gVk1TIDYuMiB0byA4LjIgb24gREVDIEFscGhhLCBWQVggYW5kIElBNjQKICMgd2l0aCBNTVMgYW5kIE1NSwpAQCAtMTAwLDcgKzEwMCw3IEBACiAuSUZERUYgVkFYCiAuSUZERUYgREVDQwkgICAgICMgVkFYIHdpdGggREVDQwogQ0NfREVGICA9IGNjICMgL2RlY2MgIyBzb21lIHN5c3RlbSByZXF1aXJlcyB0aGlzIHN3aXRjaAotICAgICAgICAgICAgICAgICAgICAgIyBidXQgd2hlbiBpdCBpcyBub3QgcmVxdWlyZWQgL3ZlciBtaWdodCBmYWlsCisJCSAgICAgIyBidXQgd2hlbiBpdCBpcyBub3QgcmVxdWlyZWQgL3ZlciBtaWdodCBmYWlsCiBQUkVGSVggID0gL3ByZWZpeD1hbGwKIC5FTFNFCQkgICAgICMgVkFYIHdpdGggVkFYQwogQ0NfREVGCT0gY2MKQEAgLTM5MSw3ICszOTEsNyBAQAogLklGREVGIFhQTQogCS1AIHdyaXRlIHN5cyRvdXRwdXQgInVzaW5nIERFQ1cvTW90aWYvWFBNIGVudmlyb25tZW50LiIKIC5FTFNFCi0gICAgICAgIC1AIHdyaXRlIHN5cyRvdXRwdXQgInVzaW5nIERFQ1cvTW90aWYgZW52aXJvbm1lbnQuIgorCS1AIHdyaXRlIHN5cyRvdXRwdXQgInVzaW5nIERFQ1cvTW90aWYgZW52aXJvbm1lbnQuIgogLkVORElGCiAJLUAgd3JpdGUgc3lzJG91dHB1dCAiY3JlYXRpbmcgT1NfVk1TX01PVElGLk9QVCBmaWxlLiIKIAktQCBvcGVuL3dyaXRlIG9wdF9maWxlIE9TX1ZNU19NT1RJRi5PUFQKZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZSBiL3NyYy9NYWtlZmlsZQppbmRleCA4NTcyNTUxLi4zMmYzYTk3IDEwMDY0NAotLS0gYS9zcmMvTWFrZWZpbGUKKysrIGIvc3JjL01ha2VmaWxlCkBAIC04ODAsNyArODgwLDcgQEAKIAogIyMjIFZpbSB2ZXJzaW9uIChhZGp1c3RlZCBieSBhIHNjcmlwdCkKIFZJTU1BSk9SID0gNwotVklNTUlOT1IgPSAwZgorVklNTUlOT1IgPSAwZwogCiAjIyMgTG9jYXRpb24gb2YgVmltIGZpbGVzIChzaG91bGQgbm90IG5lZWQgdG8gYmUgY2hhbmdlZCwgYW5kICB7e3sxCiAjIyMgc29tZSB0aGluZ3MgbWlnaHQgbm90IHdvcmsgd2hlbiB0aGV5IGFyZSBjaGFuZ2VkISkKQEAgLTExMTMsNyArMTExMyw3IEBACiAKICMjIyBNb3RpZiBHVUkKIE1PVElGX1NSQwk9IGd1aS5jIGd1aV9tb3RpZi5jIGd1aV94MTEuYyBwdHkuYyBndWlfYmV2YWwuYyBcCi0JCSAgCWd1aV94bWRsZy5jIGd1aV94bWVidy5jCisJCQlndWlfeG1kbGcuYyBndWlfeG1lYncuYwogTU9USUZfT0JKCT0gb2JqZWN0cy9ndWkubyBvYmplY3RzL2d1aV9tb3RpZi5vIG9iamVjdHMvZ3VpX3gxMS5vIFwKIAkJCW9iamVjdHMvcHR5Lm8gb2JqZWN0cy9ndWlfYmV2YWwubyBcCiAJCQlvYmplY3RzL2d1aV94bWRsZy5vIG9iamVjdHMvZ3VpX3htZWJ3Lm8KQEAgLTE3NjQsNyArMTc2NCw3IEBACiAKICMgSW5zdGFsbCBtb3N0IG9mIHRoZSBydW50aW1lIGZpbGVzCiBpbnN0YWxscnVudGltZTogaW5zdGFsbHJ0YmFzZSBpbnN0YWxsbWFjcm9zIGluc3RhbGx0dXRvciBpbnN0YWxsc3BlbGwKLQkKKwogIyBpbnN0YWxsIHRoZSBoZWxwIGZpbGVzOyBmaXJzdCBhZGp1c3QgdGhlIGNvbnRlbnRzIGZvciB0aGUgZmluYWwgbG9jYXRpb24KIGluc3RhbGxydGJhc2U6ICQoSEVMUFNPVVJDRSkvdmltLjEgJChERVNUX1ZJTSkgJChERVNUX1JUKSBcCiAJCSQoREVTVF9IRUxQKSAkKERFU1RfUFJJTlQpICQoREVTVF9DT0wpICQoREVTVF9TWU4pICQoREVTVF9JTkQpIFwKQEAgLTIwNjIsNyArMjA2Miw3IEBACiAJCSQoR1ZJTU5BTUUpICQoR1ZJRVdOQU1FKSAkKFJHVklNTkFNRSkgJChSR1ZJRVdOQU1FKSBcCiAJCSQoR1ZJTURJRkZOQU1FKSAkKEVWSUVXTkFNRSkKIAotaW5zdGFsbG1hbmxpbmtzOiAKK2luc3RhbGxtYW5saW5rczoKIAktJChTSEVMTCkgLi9pbnN0YWxsbWwuc2ggaW5zdGFsbCAiJChHVUlfTUFOX1RBUkdFVFMpIiBcCiAJCSQoREVTVF9NQU4pICQoSU5TVEFMTE1MQVJHUykKIApkaWZmIC0tZ2l0IGEvc3JjL2F1dG8vY29uZmlndXJlIGIvc3JjL2F1dG8vY29uZmlndXJlCmluZGV4IDMxOWZkNGUuLjM1ZWVhMzUgMTAwNzU1Ci0tLSBhL3NyYy9hdXRvL2NvbmZpZ3VyZQorKysgYi9zcmMvYXV0by9jb25maWd1cmUKQEAgLTI5ODMsNyArMjk4Myw3IEBACiAKIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IG5vIiA+JjUKIGVjaG8gIiR7RUNIT19UfW5vIiA+JjYKLQkgICAgICAgIE1BQ0FSQ0g9InBwYyIKKwkJTUFDQVJDSD0icHBjIgogCQlDUFBGTEFHUz0iJHNhdmVfY3BwZmxhZ3MgLWFyY2ggcHBjIgogCQlMREZMQUdTPSIkc2F2ZV9sZGZsYWdzIC1hcmNoIHBwYyIKIGZpCkBAIC0zNzUzLDExICszNzUzLDExIEBACiAgICAgaWYgdGVzdCAiWCRQTFRIT01FIiAhPSAiWCI7IHRoZW4KIAllY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBcIiRQTFRIT01FXCIiID4mNQogZWNobyAiJHtFQ0hPX1R9XCIkUExUSE9NRVwiIiA+JjYKLSAgICAgICAgdmlfY3ZfcGF0aF9tenNjaGVtZV9wZng9IiRQTFRIT01FIgorCXZpX2N2X3BhdGhfbXpzY2hlbWVfcGZ4PSIkUExUSE9NRSIKICAgICBlbHNlCiAJZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogXCJub3Qgc2V0XCIiID4mNQogZWNobyAiJHtFQ0hPX1R9XCJub3Qgc2V0XCIiID4mNgotCSAgICAgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtenNjaGVtZSIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisJCSMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXpzY2hlbWUiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IG16c2NoZW1lOyBhY193b3JkPSQyCiBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgpAQCAtMzc5NywzMCArMzc5NywzMCBAQAogZmkKIAogCi0JCSAgICAgICAgaWYgdGVzdCAiWCR2aV9jdl9wYXRoX216c2NoZW1lIiAhPSAiWCI7IHRoZW4KKwkJCWlmIHRlc3QgIlgkdmlfY3ZfcGF0aF9tenNjaGVtZSIgIT0gIlgiOyB0aGVuCiAJICBsc291dD1gbHMgLWwgJHZpX2N2X3BhdGhfbXpzY2hlbWVgCiAJICBpZiBlY2hvICIkbHNvdXQiIHwgZ3JlcCAtZSAnLT4nID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4KIAkgICAgdmlfY3ZfcGF0aF9tenNjaGVtZT1gZWNobyAiJGxzb3V0IiB8IHNlZCAncy8uKi0+IFwoLipcKS9cMS8nYAogCSAgZmkKIAlmaQogCi0gICAgICAgIGlmIHRlc3QgIlgkdmlfY3ZfcGF0aF9tenNjaGVtZSIgIT0gIlgiOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgTXpTY2hlbWUgaW5zdGFsbCBwcmVmaXgiID4mNQorCWlmIHRlc3QgIlgkdmlfY3ZfcGF0aF9tenNjaGVtZSIgIT0gIlgiOyB0aGVuCisJICAgIAkgICAgZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIE16U2NoZW1lIGluc3RhbGwgcHJlZml4IiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgTXpTY2hlbWUgaW5zdGFsbCBwcmVmaXguLi4gJEVDSE9fQyIgPiY2CiBpZiB0ZXN0ICIke3ZpX2N2X3BhdGhfbXpzY2hlbWVfcGZ4K3NldH0iID0gc2V0OyB0aGVuCiAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CiBlbHNlCiAgICB2aV9jdl9wYXRoX216c2NoZW1lX3BmeD1gCi0gICAgICAJICAgICR7dmlfY3ZfcGF0aF9tenNjaGVtZX0gLWV2bSBcCi0gICAgICAgICAgICAiKGRpc3BsYXkgKHNpbXBsaWZ5LXBhdGgJCVwKLSAgICAgICAgICAgICAgKGJ1aWxkLXBhdGggKGNhbGwtd2l0aC12YWx1ZXMJXAotICAgICAgCSAgICAgICAgKGxhbWJkYSAoKSAoc3BsaXQtcGF0aCAoZmluZC1zeXN0ZW0tcGF0aCAocXVvdGUgZXhlYy1maWxlKSkpKSBcCi0gICAgICAJICAgICAgICAobGFtYmRhIChiYXNlIG5hbWUgbXVzdC1iZS1kaXI/KSBiYXNlKSkgKHF1b3RlIHVwKSkpKSJgCisJICAgICR7dmlfY3ZfcGF0aF9tenNjaGVtZX0gLWV2bSBcCisJICAgICIoZGlzcGxheSAoc2ltcGxpZnktcGF0aAkJXAorCSAgICAgICAoYnVpbGQtcGF0aCAoY2FsbC13aXRoLXZhbHVlcwlcCisJCShsYW1iZGEgKCkgKHNwbGl0LXBhdGggKGZpbmQtc3lzdGVtLXBhdGggKHF1b3RlIGV4ZWMtZmlsZSkpKSkgXAorCQkobGFtYmRhIChiYXNlIG5hbWUgbXVzdC1iZS1kaXI/KSBiYXNlKSkgKHF1b3RlIHVwKSkpKSJgCiBmaQogZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJHZpX2N2X3BhdGhfbXpzY2hlbWVfcGZ4IiA+JjUKIGVjaG8gIiR7RUNIT19UfSR2aV9jdl9wYXRoX216c2NoZW1lX3BmeCIgPiY2CiAJICAgIAkgICAgdmlfY3ZfcGF0aF9tenNjaGVtZV9wZng9YGVjaG8gIiR2aV9jdl9wYXRoX216c2NoZW1lX3BmeCIgfCBzZWQgJ3MrLyQrKydgCi0gICAgICAgIGZpCisJZmkKICAgICBmaQogICBmaQogCkBAIC0zODQzLDcgKzM4NDMsNyBAQAogICAgIGVsc2UKICAgICAgIE1aU0NIRU1FX0xJQlM9Ii1MJHt2aV9jdl9wYXRoX216c2NoZW1lX3BmeH0vbGliIC1sbXpnYyAtbG16c2NoZW1lIgogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQkJICAgICAgICBNWlNDSEVNRV9MSUJTPSIkTVpTQ0hFTUVfTElCUyAtV2wsLXJwYXRoIC1XbCwke3ZpX2N2X3BhdGhfbXpzY2hlbWVfcGZ4fS9saWIiCisJCQlNWlNDSEVNRV9MSUJTPSIkTVpTQ0hFTUVfTElCUyAtV2wsLXJwYXRoIC1XbCwke3ZpX2N2X3BhdGhfbXpzY2hlbWVfcGZ4fS9saWIiCiAgICAgICBlbGlmIHRlc3QgImAodW5hbWUpIDI+L2Rldi9udWxsYCIgPSBTdW5PUyAmJgogCQkJICAgICAgIHVuYW1lIC1yIHwgZ3JlcCAnXjUnID4vZGV2L251bGw7IHRoZW4KIAlNWlNDSEVNRV9MSUJTPSIkTVpTQ0hFTUVfTElCUyAtUiAke3ZpX2N2X3BhdGhfbXpzY2hlbWVfcGZ4fS9saWIiCkBAIC03ODQ4LDcgKzc4NDgsNyBAQAogICAgICAgaWYgdGVzdCAiYCh1bmFtZSkgMj4vZGV2L251bGxgIiA9IEZyZWVCU0Q7IHRoZW4KIAllY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiB5ZXMiID4mNQogZWNobyAiJHtFQ0hPX1R9eWVzIiA+JjYKLSAgICAgICAgR05PTUVfSU5DTFVERURJUj0iJEdOT01FX0lOQ0xVREVESVIgLURfVEhSRUFEX1NBRkUiCisJR05PTUVfSU5DTFVERURJUj0iJEdOT01FX0lOQ0xVREVESVIgLURfVEhSRUFEX1NBRkUiCiAJR05PTUVfTElCUz0iJEdOT01FX0xJQlMgLXB0aHJlYWQiCiAgICAgICBlbHNlCiAJZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogbm8iID4mNQpkaWZmIC0tZ2l0IGEvc3JjL2NvbmZpZ3VyZS5pbiBiL3NyYy9jb25maWd1cmUuaW4KaW5kZXggNWM2ZGQ1MS4uOWU1MDBkOSAxMDA2NDQKLS0tIGEvc3JjL2NvbmZpZ3VyZS5pbgorKysgYi9zcmMvY29uZmlndXJlLmluCkBAIC0xMzUsNyArMTM1LDcgQEAKIAlBQ19UUllfTElOSyhbIF0sIFsgXSwKIAkgICAgQUNfTVNHX1JFU1VMVCh5ZXMpOyBNQUNBUkNIPSJpbnRlbCIsCiAJICAgIEFDX01TR19SRVNVTFQobm8sIHVzaW5nIFBvd2VyUEMpCi0JICAgICAgICBNQUNBUkNIPSJwcGMiCisJCU1BQ0FSQ0g9InBwYyIKIAkJQ1BQRkxBR1M9IiRzYXZlX2NwcGZsYWdzIC1hcmNoIHBwYyIKIAkJTERGTEFHUz0iJHNhdmVfbGRmbGFncyAtYXJjaCBwcGMiKSkKICAgZWxpZiB0ZXN0ICJ4JE1BQ0FSQ0giID0gInhpbnRlbCI7IHRoZW4KQEAgLTM3Miw4ICszNzIsOCBAQAogCiAgIEFDX01TR19DSEVDS0lORygtLXdpdGgtcGx0aG9tZSBhcmd1bWVudCkKICAgQUNfQVJHX1dJVEgocGx0aG9tZSwKLSAgCVsgIC0td2l0aC1wbHRob21lPVBMVEhPTUUgICBVc2UgUExUSE9NRS5dLAotICAgICAgICB3aXRoX3BsdGhvbWU9IiR3aXRodmFsIjsgQUNfTVNHX1JFU1VMVCgkd2l0aF9wbHRob21lKSwKKwlbICAtLXdpdGgtcGx0aG9tZT1QTFRIT01FICAgVXNlIFBMVEhPTUUuXSwKKwl3aXRoX3BsdGhvbWU9IiR3aXRodmFsIjsgQUNfTVNHX1JFU1VMVCgkd2l0aF9wbHRob21lKSwKIAl3aXRoX3BsdGhvbWU9IiI7QUNfTVNHX1JFU1VMVCgibm8iKSkKIAogICBpZiB0ZXN0ICJYJHdpdGhfcGx0aG9tZSIgIT0gIlgiOyB0aGVuCkBAIC0zODIsMzMgKzM4MiwzMyBAQAogICAgIEFDX01TR19DSEVDS0lORyhQTFRIT01FIGVudmlyb25tZW50IHZhcikKICAgICBpZiB0ZXN0ICJYJFBMVEhPTUUiICE9ICJYIjsgdGhlbgogCUFDX01TR19SRVNVTFQoIiRQTFRIT01FIikKLSAgICAgICAgdmlfY3ZfcGF0aF9tenNjaGVtZV9wZng9IiRQTFRIT01FIgorCXZpX2N2X3BhdGhfbXpzY2hlbWVfcGZ4PSIkUExUSE9NRSIKICAgICBlbHNlCiAJQUNfTVNHX1JFU1VMVCgibm90IHNldCIpCiAJZG5sIC0tIHRyeSB0byBmaW5kIE16U2NoZW1lIGV4ZWN1dGFibGUKLSAgICAgICAgQUNfUEFUSF9QUk9HKHZpX2N2X3BhdGhfbXpzY2hlbWUsIG16c2NoZW1lKQorCUFDX1BBVEhfUFJPRyh2aV9jdl9wYXRoX216c2NoZW1lLCBtenNjaGVtZSkKIAogCWRubCByZXNvbHZlIHN5bWJvbGljIGxpbmssIHRoZSBleGVjdXRhYmxlIGlzIG9mdGVuIGVsc2V3aGVyZSBhbmQgdGhlcmUKIAlkbmwgYXJlIG5vIGxpbmtzIGZvciB0aGUgaW5jbHVkZSBmaWxlcy4KLSAgICAgICAgaWYgdGVzdCAiWCR2aV9jdl9wYXRoX216c2NoZW1lIiAhPSAiWCI7IHRoZW4KKwlpZiB0ZXN0ICJYJHZpX2N2X3BhdGhfbXpzY2hlbWUiICE9ICJYIjsgdGhlbgogCSAgbHNvdXQ9YGxzIC1sICR2aV9jdl9wYXRoX216c2NoZW1lYAogCSAgaWYgZWNobyAiJGxzb3V0IiB8IGdyZXAgLWUgJy0+JyA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCiAJICAgIHZpX2N2X3BhdGhfbXpzY2hlbWU9YGVjaG8gIiRsc291dCIgfCBzZWQgJ3MvLiotPiBcKC4qXCkvXDEvJ2AKIAkgIGZpCiAJZmkKIAotICAgICAgICBpZiB0ZXN0ICJYJHZpX2N2X3BhdGhfbXpzY2hlbWUiICE9ICJYIjsgdGhlbgotICAgICAgICAgICAgZG5sIC0tIGZpbmQgd2hlcmUgTXpTY2hlbWUgdGhpbmtzIGl0IHdhcyBpbnN0YWxsZWQKLSAgICAgICAgICAgIEFDX0NBQ0hFX0NIRUNLKE16U2NoZW1lIGluc3RhbGwgcHJlZml4LHZpX2N2X3BhdGhfbXpzY2hlbWVfcGZ4LAotICAgICAgICAgICAgWyB2aV9jdl9wYXRoX216c2NoZW1lX3BmeD1gCi0gICAgICAJICAgICR7dmlfY3ZfcGF0aF9tenNjaGVtZX0gLWV2bSBcCi0gICAgICAgICAgICAiKGRpc3BsYXkgKHNpbXBsaWZ5LXBhdGgJCVwKLSAgICAgICAgICAgICAgKGJ1aWxkLXBhdGggKGNhbGwtd2l0aC12YWx1ZXMJXAotICAgICAgCSAgICAgICAgKGxhbWJkYSAoKSAoc3BsaXQtcGF0aCAoZmluZC1zeXN0ZW0tcGF0aCAocXVvdGUgZXhlYy1maWxlKSkpKSBcCi0gICAgICAJICAgICAgICAobGFtYmRhIChiYXNlIG5hbWUgbXVzdC1iZS1kaXI/KSBiYXNlKSkgKHF1b3RlIHVwKSkpKSJgIF0pCisJaWYgdGVzdCAiWCR2aV9jdl9wYXRoX216c2NoZW1lIiAhPSAiWCI7IHRoZW4KKwkgICAgZG5sIC0tIGZpbmQgd2hlcmUgTXpTY2hlbWUgdGhpbmtzIGl0IHdhcyBpbnN0YWxsZWQKKwkgICAgQUNfQ0FDSEVfQ0hFQ0soTXpTY2hlbWUgaW5zdGFsbCBwcmVmaXgsdmlfY3ZfcGF0aF9tenNjaGVtZV9wZngsCisJICAgIFsgdmlfY3ZfcGF0aF9tenNjaGVtZV9wZng9YAorCSAgICAke3ZpX2N2X3BhdGhfbXpzY2hlbWV9IC1ldm0gXAorCSAgICAiKGRpc3BsYXkgKHNpbXBsaWZ5LXBhdGgJCVwKKwkgICAgICAgKGJ1aWxkLXBhdGggKGNhbGwtd2l0aC12YWx1ZXMJXAorCQkobGFtYmRhICgpIChzcGxpdC1wYXRoIChmaW5kLXN5c3RlbS1wYXRoIChxdW90ZSBleGVjLWZpbGUpKSkpIFwKKwkJKGxhbWJkYSAoYmFzZSBuYW1lIG11c3QtYmUtZGlyPykgYmFzZSkpIChxdW90ZSB1cCkpKSkiYCBdKQogCSAgICBkbmwgUmVtb3ZlIGEgdHJhaWxpbmcgc2xhc2guCiAJICAgIHZpX2N2X3BhdGhfbXpzY2hlbWVfcGZ4PWBlY2hvICIkdmlfY3ZfcGF0aF9tenNjaGVtZV9wZngiIHwgc2VkICdzKy8kKysnYAotICAgICAgICBmaQorCWZpCiAgICAgZmkKICAgZmkKIApAQCAtNDMwLDcgKzQzMCw3IEBACiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogCWRubCBNYWtlIFZpbSByZW1lbWJlciB0aGUgcGF0aCB0byB0aGUgbGlicmFyeS4gIEZvciB3aGVuIGl0J3Mgbm90IGluCiAJZG5sICRMRF9MSUJSQVJZX1BBVEguCi0gICAgICAgIE1aU0NIRU1FX0xJQlM9IiRNWlNDSEVNRV9MSUJTIC1XbCwtcnBhdGggLVdsLCR7dmlfY3ZfcGF0aF9tenNjaGVtZV9wZnh9L2xpYiIKKwlNWlNDSEVNRV9MSUJTPSIkTVpTQ0hFTUVfTElCUyAtV2wsLXJwYXRoIC1XbCwke3ZpX2N2X3BhdGhfbXpzY2hlbWVfcGZ4fS9saWIiCiAgICAgICBlbGlmIHRlc3QgImAodW5hbWUpIDI+L2Rldi9udWxsYCIgPSBTdW5PUyAmJgogCQkJICAgICAgIHVuYW1lIC1yIHwgZ3JlcCAnXjUnID4vZGV2L251bGw7IHRoZW4KIAlNWlNDSEVNRV9MSUJTPSIkTVpTQ0hFTUVfTElCUyAtUiAke3ZpX2N2X3BhdGhfbXpzY2hlbWVfcGZ4fS9saWIiCkBAIC0xNDg2LDEzICsxNDg2LDEzIEBACiAgICAgICBHTk9NRV9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMtb25seS1sIGxpYmdub21ldWktMi4wYAogICAgICAgR05PTUVfTElCRElSPWAkUEtHX0NPTkZJRyAtLWxpYnMtb25seS1MIGxpYmdub21ldWktMi4wYAogICAgICAgR05PTUVfSU5DTFVERURJUj1gJFBLR19DT05GSUcgLS1jZmxhZ3MgbGliZ25vbWV1aS0yLjBgCi0gICAgIAorCiAgICAgICBkbmwgT24gRnJlZUJTRCB3ZSBuZWVkIC1wdGhyZWFkIGJ1dCBwa2ctY29uZmlnIGRvZXNuJ3QgaW5jbHVkZSBpdC4KICAgICAgIGRubCBUaGlzIG1pZ2h0IG5vdCBiZSB0aGUgcmlnaHQgd2F5IGJ1dCBpdCB3b3JrcyBmb3IgbWUuLi4KICAgICAgIEFDX01TR19DSEVDS0lORyhmb3IgRnJlZUJTRCkKICAgICAgIGlmIHRlc3QgImAodW5hbWUpIDI+L2Rldi9udWxsYCIgPSBGcmVlQlNEOyB0aGVuCiAJQUNfTVNHX1JFU1VMVCh5ZXMsIGFkZGluZyAtcHRocmVhZCkKLSAgICAgICAgR05PTUVfSU5DTFVERURJUj0iJEdOT01FX0lOQ0xVREVESVIgLURfVEhSRUFEX1NBRkUiCisJR05PTUVfSU5DTFVERURJUj0iJEdOT01FX0lOQ0xVREVESVIgLURfVEhSRUFEX1NBRkUiCiAJR05PTUVfTElCUz0iJEdOT01FX0xJQlMgLXB0aHJlYWQiCiAgICAgICBlbHNlCiAJQUNfTVNHX1JFU1VMVChubykKZGlmZiAtLWdpdCBhL3NyYy9ldmFsLmMgYi9zcmMvZXZhbC5jCmluZGV4IDM4ODcyN2YuLjk0NWI0NjAgMTAwNjQ0Ci0tLSBhL3NyYy9ldmFsLmMKKysrIGIvc3JjL2V2YWwuYwpAQCAtMTk4LDcgKzE5OCw3IEBACiAgKi8KIHN0YXRpYyBoYXNodGFiX1QJZnVuY19oYXNodGFiOwogCi0vKiBUaGUgbmFtZXMgb2YgcGFja2FnZXMgdGhhdCBvbmNlIHdlcmUgbG9hZGVkIGlzIHJlbWVtYmVyZWQuICovCisvKiBUaGUgbmFtZXMgb2YgcGFja2FnZXMgdGhhdCBvbmNlIHdlcmUgbG9hZGVkIGFyZSByZW1lbWJlcmVkLiAqLwogc3RhdGljIGdhcnJheV9UCQlnYV9sb2FkZWQgPSB7MCwgMCwgc2l6ZW9mKGNoYXJfdSAqKSwgNCwgTlVMTH07CiAKIC8qIGxpc3QgaGVhZHMgZm9yIGdhcmJhZ2UgY29sbGVjdGlvbiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2V4X2RvY21kLmMgYi9zcmMvZXhfZG9jbWQuYwppbmRleCAyZmM1ZDBhLi4yZjQ3NjZkIDEwMDY0NAotLS0gYS9zcmMvZXhfZG9jbWQuYworKysgYi9zcmMvZXhfZG9jbWQuYwpAQCAtODgxMyw2ICs4ODEzLDExIEBACiAgICAgY2hhcl91CSpwOwogI2VuZGlmCiAKKyAgICBpZiAoZXhfbm9ybWFsX2xvY2sgPiAwKQorICAgIHsKKwlFTVNHKF8oZV9zZWN1cmUpKTsKKwlyZXR1cm47CisgICAgfQogICAgIGlmIChleF9ub3JtYWxfYnVzeSA+PSBwX21tZCkKICAgICB7CiAJRU1TRyhfKCJFMTkyOiBSZWN1cnNpdmUgdXNlIG9mIDpub3JtYWwgdG9vIGRlZXAiKSk7CmRpZmYgLS1naXQgYS9zcmMvZXhfZ2V0bG4uYyBiL3NyYy9leF9nZXRsbi5jCmluZGV4IDM3NmNiY2MuLjNhYzIwZmYgMTAwNjQ0Ci0tLSBhL3NyYy9leF9nZXRsbi5jCisrKyBiL3NyYy9leF9nZXRsbi5jCkBAIC00MzI1LDcgKzQzMjUsNyBAQAogCXJldHVybiBFeHBhbmRSVERpcihwYXQsIG51bV9maWxlLCBmaWxlLCAiY29tcGlsZXIiKTsKICMgaWYgZGVmaW5lZChGRUFUX1VTUl9DTURTKSAmJiBkZWZpbmVkKEZFQVRfRVZBTCkKICAgICBpZiAoeHAtPnhwX2NvbnRleHQgPT0gRVhQQU5EX1VTRVJfTElTVCkKLSAgICAgICAgcmV0dXJuIEV4cGFuZFVzZXJMaXN0KHhwLCBudW1fZmlsZSwgZmlsZSk7CisJcmV0dXJuIEV4cGFuZFVzZXJMaXN0KHhwLCBudW1fZmlsZSwgZmlsZSk7CiAjIGVuZGlmCiAKICAgICByZWdtYXRjaC5yZWdwcm9nID0gdmltX3JlZ2NvbXAocGF0LCBwX21hZ2ljID8gUkVfTUFHSUMgOiAwKTsKZGlmZiAtLWdpdCBhL3NyYy9maWxlaW8uYyBiL3NyYy9maWxlaW8uYwppbmRleCAwMTk1M2YzLi45ZjI0ZjY5IDEwMDY0NAotLS0gYS9zcmMvZmlsZWlvLmMKKysrIGIvc3JjL2ZpbGVpby5jCkBAIC03NzYyLDcgKzc3NjIsNyBAQAogICAgIGludAkJZmluZGdyb3VwOwogICAgIGludAkJYWxsZ3JvdXBzOwogICAgIGludAkJcGF0bGVuOwotICAgIGludAkgICAgICAgIGlzX2J1ZmxvY2FsOworICAgIGludAkJaXNfYnVmbG9jYWw7CiAgICAgaW50CQlidWZsb2NhbF9ucjsKICAgICBjaGFyX3UJYnVmbG9jYWxfcGF0WzI1XTsJLyogZm9yICI8YnVmZmVyPVg+IiAqLwogCkBAIC04ODM5LDEwICs4ODM5LDEwIEBACiAKICAgICBmb3IgKGFwID0gZmlyc3RfYXV0b3BhdFsoaW50KWV2ZW50XTsgYXAgIT0gTlVMTDsgYXAgPSBhcC0+bmV4dCkKIAlpZiAoYXAtPnBhdCAhPSBOVUxMICYmIGFwLT5jbWRzICE9IE5VTEwKLSAgICAgICAgICAgICYmIChhcC0+YnVmbG9jYWxfbnIgPT0gMAorCSAgICAgICYmIChhcC0+YnVmbG9jYWxfbnIgPT0gMAogCQk/IG1hdGNoX2ZpbGVfcGF0KE5VTEwsIGFwLT5yZWdfcHJvZywKIAkJCQkJICBmbmFtZSwgc2ZuYW1lLCB0YWlsLCBhcC0+YWxsb3dfZGlycykKLSAgICAgICAgICAgICAgICA6IGJ1ZiAhPSBOVUxMICYmIGFwLT5idWZsb2NhbF9uciA9PSBidWYtPmJfZm51bQorCQk6IGJ1ZiAhPSBOVUxMICYmIGFwLT5idWZsb2NhbF9uciA9PSBidWYtPmJfZm51bQogCSAgICkpCiAJewogCSAgICByZXR2YWwgPSBUUlVFOwpkaWZmIC0tZ2l0IGEvc3JjL2dldGNoYXIuYyBiL3NyYy9nZXRjaGFyLmMKaW5kZXggM2I5ZDQyMC4uODhlNzI0ZiAxMDA2NDQKLS0tIGEvc3JjL2dldGNoYXIuYworKysgYi9zcmMvZ2V0Y2hhci5jCkBAIC00MzM1LDExICs0MzM1LDI2IEBACiAgICAgY2hhcl91CSpyZXM7CiAgICAgY2hhcl91CSpwOwogICAgIGNoYXJfdQkqc2F2ZV9jbWQ7CisgICAgcG9zX1QJc2F2ZV9jdXJzb3I7CiAKICAgICBzYXZlX2NtZCA9IHNhdmVfY21kbGluZV9hbGxvYygpOwogICAgIGlmIChzYXZlX2NtZCA9PSBOVUxMKQogCXJldHVybiBOVUxMOworCisgICAgLyogRm9yYmlkIGNoYW5naW5nIHRleHQgb3IgdXNpbmcgIjpub3JtYWwiIHRvIGF2b2lkIG1vc3Qgb2YgdGhlIGJhZCBzaWRlCisgICAgICogZWZmZWN0cy4gIEFsc28gcmVzdG9yZSB0aGUgY3Vyc29yIHBvc2l0aW9uLiAqLworICAgICsrdGV4dGxvY2s7CisjaWZkZWYgRkVBVF9FWF9FWFRSQQorICAgICsrZXhfbm9ybWFsX2xvY2s7CisjZW5kaWYKKyAgICBzYXZlX2N1cnNvciA9IGN1cndpbi0+d19jdXJzb3I7CiAgICAgcCA9IGV2YWxfdG9fc3RyaW5nKHN0ciwgTlVMTCwgRkFMU0UpOworICAgIC0tdGV4dGxvY2s7CisjaWZkZWYgRkVBVF9FWF9FWFRSQQorICAgIC0tZXhfbm9ybWFsX2xvY2s7CisjZW5kaWYKKyAgICBjdXJ3aW4tPndfY3Vyc29yID0gc2F2ZV9jdXJzb3I7CisKICAgICByZXN0b3JlX2NtZGxpbmVfYWxsb2Moc2F2ZV9jbWQpOwogICAgIGlmIChwID09IE5VTEwpCiAJcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvZ2xvYmFscy5oIGIvc3JjL2dsb2JhbHMuaAppbmRleCA4NjdkYTViLi4xMjg3ZDI0IDEwMDY0NAotLS0gYS9zcmMvZ2xvYmFscy5oCisrKyBiL3NyYy9nbG9iYWxzLmgKQEAgLTkzNyw2ICs5MzcsNyBAQAogCQkgICAgOwogI2lmZGVmIEZFQVRfRVhfRVhUUkEKIEVYVEVSTiBpbnQJZXhfbm9ybWFsX2J1c3kgSU5JVCg9IDApOyAvKiByZWN1cnNpdmVuZXMgb2YgZXhfbm9ybWFsKCkgKi8KK0VYVEVSTiBpbnQJZXhfbm9ybWFsX2xvY2sgSU5JVCg9IDApOyAvKiBmb3JiaWQgdXNlIG9mIGV4X25vcm1hbCgpICovCiAjZW5kaWYKIEVYVEVSTiBpbnQJc3RvcF9pbnNlcnRfbW9kZTsJLyogZm9yICI6c3RvcGluc2VydCIgYW5kICdpbnNlcnRtb2RlJyAqLwogCmRpZmYgLS1naXQgYS9zcmMvZ3VpLmMgYi9zcmMvZ3VpLmMKaW5kZXggZmUxMjg2NC4uN2QxMTgzOSAxMDA2NDQKLS0tIGEvc3JjL2d1aS5jCisrKyBiL3NyYy9ndWkuYwpAQCAtNDQ1Niw4ICs0NDU2LDggQEAKICAgICBsb25nX3UJcmdiID0gZ3VpX21jaF9nZXRfcmdiKHBpeGVsKTsKIAogICAgIHJldHVybiAgKGludCkoICAoKChyZ2IgPj4gMTYpICYgMHhmZikgKiAyOTkpCi0JICAgICAgICAgICArICgoKHJnYiA+PiA4KSAmIDB4ZmYpICogNTg3KQotCSAgICAgICAgICAgKyAgKChyZ2IJICAmIDB4ZmYpICogMTE0KSkgLyAxMDAwOworCQkgICArICgoKHJnYiA+PiA4KSAmIDB4ZmYpICogNTg3KQorCQkgICArICAoKHJnYgkgICYgMHhmZikgKiAxMTQpKSAvIDEwMDA7CiB9CiAKICNpZiBkZWZpbmVkKEZFQVRfR1VJX1gxMSkgfHwgZGVmaW5lZChQUk9UTykKZGlmZiAtLWdpdCBhL3NyYy9ndWlfZ3RrLmMgYi9zcmMvZ3VpX2d0ay5jCmluZGV4IDZjODY5NDguLmNjNzVjNjcgMTAwNjQ0Ci0tLSBhL3NyYy9ndWlfZ3RrLmMKKysrIGIvc3JjL2d1aV9ndGsuYwpAQCAtMjkxLDcgKzI5MSw3IEBACiAgICAgICogaW1tZWRpYXRlbHkgcGFzcyBpdCB0byBtYWlud2luLgogICAgICAqLwogICAgIGlmIChndGtfc29ja2V0X2lkICE9IDApCi0gICAgICAgIGd0a193aWRnZXRfZ3JhYl9mb2N1cyhndWkuZHJhd2FyZWEpOworCWd0a193aWRnZXRfZ3JhYl9mb2N1cyhndWkuZHJhd2FyZWEpOwogCiAgICAgcmV0dXJuIFRSVUU7CiB9CkBAIC03NDIsOSArNzQyLDkgQEAKIAkJICAgIG1lbnUsCiAJCSAgICBpZHgpOwogCi0gICAgICAgICAgICBpZiAoZ3RrX3NvY2tldF9pZCAhPSAwKQotICAgICAgICAgICAgICAgIGd0a19zaWduYWxfY29ubmVjdChHVEtfT0JKRUNUKG1lbnUtPmlkKSwgImZvY3VzX2luX2V2ZW50IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TSUdOQUxfRlVOQyh0b29sYmFyX2J1dHRvbl9mb2N1c19pbl9ldmVudCksIE5VTEwpOworCSAgICBpZiAoZ3RrX3NvY2tldF9pZCAhPSAwKQorCQlndGtfc2lnbmFsX2Nvbm5lY3QoR1RLX09CSkVDVChtZW51LT5pZCksICJmb2N1c19pbl9ldmVudCIsCisJCQlHVEtfU0lHTkFMX0ZVTkModG9vbGJhcl9idXR0b25fZm9jdXNfaW5fZXZlbnQpLCBOVUxMKTsKIAogCSAgICBDT05WRVJUX1RPX1VURjhfRlJFRSh0ZXh0KTsKIAkgICAgQ09OVkVSVF9UT19VVEY4X0ZSRUUodG9vbHRpcCk7CkBAIC0xMzA3LDExICsxMzA3LDExIEBACiAgICAgZ3VpLmJyb3dzZV9mbmFtZSA9IE5VTEw7CiAgICAgaWYgKGd0a19kaWFsb2dfcnVuKEdUS19ESUFMT0coZmMpKSA9PSBHVEtfUkVTUE9OU0VfQUNDRVBUKQogICAgIHsKLSAgICAgICAgY2hhciAqZmlsZW5hbWU7CisJY2hhciAqZmlsZW5hbWU7CiAKLSAgICAgICAgZmlsZW5hbWUgPSBndGtfZmlsZV9jaG9vc2VyX2dldF9maWxlbmFtZShHVEtfRklMRV9DSE9PU0VSKGZjKSk7Ci0gICAgICAgIGd1aS5icm93c2VfZm5hbWUgPSAoY2hhcl91ICopZ19zdHJkdXAoZmlsZW5hbWUpOwotICAgICAgICBnX2ZyZWUoZmlsZW5hbWUpOworCWZpbGVuYW1lID0gZ3RrX2ZpbGVfY2hvb3Nlcl9nZXRfZmlsZW5hbWUoR1RLX0ZJTEVfQ0hPT1NFUihmYykpOworCWd1aS5icm93c2VfZm5hbWUgPSAoY2hhcl91ICopZ19zdHJkdXAoZmlsZW5hbWUpOworCWdfZnJlZShmaWxlbmFtZSk7CiAgICAgfQogICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lER0VUKGZjKSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9ndWlfZ3RrX3gxMS5jIGIvc3JjL2d1aV9ndGtfeDExLmMKaW5kZXggZjdmOWFkYy4uYzI3Y2U3YyAxMDA2NDQKLS0tIGEvc3JjL2d1aV9ndGtfeDExLmMKKysrIGIvc3JjL2d1aV9ndGtfeDExLmMKQEAgLTgxMiw3ICs4MTIsNyBAQAogCiAgICAgLyogbWFrZSBzdXJlIGtleWJvYXJkIGlucHV0IGdvZXMgdG8gdGhlIGRyYXcgYXJlYSAoaWYgdGhpcyBpcyBmb2N1cyBmb3IgYSB3aW5kb3cpICovCiAgICAgaWYgKHdpZGdldCAhPSBndWkuZHJhd2FyZWEpCi0gICAgICAgIGd0a193aWRnZXRfZ3JhYl9mb2N1cyhndWkuZHJhd2FyZWEpOworCWd0a193aWRnZXRfZ3JhYl9mb2N1cyhndWkuZHJhd2FyZWEpOwogCiAgICAgcmV0dXJuIFRSVUU7CiB9CkBAIC0yODQzLDIxICsyODQzLDIxIEBACiAgICAgaWYgKHVzaW5nX2dub21lICYmIHdpZGdldCAhPSBOVUxMKQogICAgIHsKICMgaWZkZWYgSEFWRV9HVEsyCi0gICAgICAgIEd0a1dpZGdldCAqcGFyZW50OworCUd0a1dpZGdldCAqcGFyZW50OwogCUJvbm9ib0RvY2tJdGVtICpkb2NraXRlbTsKIAogCXBhcmVudAkgPSBndGtfd2lkZ2V0X2dldF9wYXJlbnQod2lkZ2V0KTsKLSAgICAgICAgaWYgKEdfVFlQRV9GUk9NX0lOU1RBTkNFKHBhcmVudCkgPT0gQk9OT0JPX1RZUEVfRE9DS19JVEVNKQotICAgICAgICB7Ci0gICAgICAgICAgICAvKiBPbmx5IG1lbnUgJiB0b29sYmFyIGFyZSBkb2NrIGl0ZW1zLiAgQ291bGQgdGFibGluZSBiZT8KLSAgICAgICAgICAgICAqIFNlZW0gdG8gYmUgb25seSB0aGUgMiBkZWZpbmVkIGluIEdOT01FICovCi0gICAgICAgICAgICB3aWRnZXQgPSBwYXJlbnQ7Ci0gICAgICAgICAgICBkb2NraXRlbSA9IEJPTk9CT19ET0NLX0lURU0od2lkZ2V0KTsKKwlpZiAoR19UWVBFX0ZST01fSU5TVEFOQ0UocGFyZW50KSA9PSBCT05PQk9fVFlQRV9ET0NLX0lURU0pCisJeworCSAgICAvKiBPbmx5IG1lbnUgJiB0b29sYmFyIGFyZSBkb2NrIGl0ZW1zLiAgQ291bGQgdGFibGluZSBiZT8KKwkgICAgICogU2VlbSB0byBiZSBvbmx5IHRoZSAyIGRlZmluZWQgaW4gR05PTUUgKi8KKwkgICAgd2lkZ2V0ID0gcGFyZW50OworCSAgICBkb2NraXRlbSA9IEJPTk9CT19ET0NLX0lURU0od2lkZ2V0KTsKIAotICAgICAgICAgICAgaWYgKGRvY2tpdGVtID09IE5VTEwgfHwgZG9ja2l0ZW0tPmlzX2Zsb2F0aW5nKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgaXRlbV9vcmllbnRhdGlvbiA9IGJvbm9ib19kb2NrX2l0ZW1fZ2V0X29yaWVudGF0aW9uKGRvY2tpdGVtKTsKLSAgICAgICAgfQorCSAgICBpZiAoZG9ja2l0ZW0gPT0gTlVMTCB8fCBkb2NraXRlbS0+aXNfZmxvYXRpbmcpCisJCXJldHVybiAwOworCSAgICBpdGVtX29yaWVudGF0aW9uID0gYm9ub2JvX2RvY2tfaXRlbV9nZXRfb3JpZW50YXRpb24oZG9ja2l0ZW0pOworCX0KICMgZWxzZQogCUdub21lRG9ja0l0ZW0gKmRvY2tpdGVtOwogCkBAIC0yOTUzLDkgKzI5NTMsOSBAQAogICAgICAqLwogICAgIGlmICghKGZvcmNlX3dpZHRoICYmIGZvcmNlX2hlaWdodCkgICYmICBpbml0X3dpbmRvd19oaW50c19zdGF0ZSA+IDApCiAgICAgewotICAgICAgICAvKiBEb24ndCBkbyBpdCEgKi8KLSAgICAgICAgaW5pdF93aW5kb3dfaGludHNfc3RhdGUgPSAyOwotICAgICAgICByZXR1cm47CisJLyogRG9uJ3QgZG8gaXQhICovCisJaW5pdF93aW5kb3dfaGludHNfc3RhdGUgPSAyOworCXJldHVybjsKICAgICB9CiAKICAgICAvKiBUaGlzIGFsc28gbmVlZHMgdG8gYmUgZG9uZSB3aGVuIHRoZSBtYWluIHdpbmRvdyBpc24ndCB0aGVyZSB5ZXQsCkBAIC0yOTc4LDE5ICsyOTc4LDE5IEBACiAgICAgICovCiAgICAgaWYgKGZvcmNlX3dpZHRoICYmIGZvcmNlX2hlaWdodCkKICAgICB7Ci0gICAgICAgIG1pbl93aWR0aCAgPSBmb3JjZV93aWR0aDsKLSAgICAgICAgbWluX2hlaWdodCA9IGZvcmNlX2hlaWdodDsKKwltaW5fd2lkdGggID0gZm9yY2Vfd2lkdGg7CisJbWluX2hlaWdodCA9IGZvcmNlX2hlaWdodDsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgbWluX3dpZHRoICA9IHdpZHRoICArIE1JTl9DT0xVTU5TICogZ3VpLmNoYXJfd2lkdGg7Ci0gICAgICAgIG1pbl9oZWlnaHQgPSBoZWlnaHQgKyBNSU5fTElORVMgICAqIGd1aS5jaGFyX2hlaWdodDsKKwltaW5fd2lkdGggID0gd2lkdGggICsgTUlOX0NPTFVNTlMgKiBndWkuY2hhcl93aWR0aDsKKwltaW5faGVpZ2h0ID0gaGVpZ2h0ICsgTUlOX0xJTkVTICAgKiBndWkuY2hhcl9oZWlnaHQ7CiAgICAgfQogCiAgICAgLyogQXZvaWQgYW4gZXhwb3NlIGV2ZW50IHdoZW4gdGhlIHNpemUgZGlkbid0IGNoYW5nZS4gKi8KICAgICBpZiAod2lkdGggIT0gb2xkX3dpZHRoCiAJICAgIHx8IGhlaWdodCAhPSBvbGRfaGVpZ2h0Ci0gICAgICAgICAgICB8fCBtaW5fd2lkdGggIT0gb2xkX21pbl93aWR0aAorCSAgICB8fCBtaW5fd2lkdGggIT0gb2xkX21pbl93aWR0aAogCSAgICB8fCBtaW5faGVpZ2h0ICE9IG9sZF9taW5faGVpZ2h0CiAJICAgIHx8IGd1aS5jaGFyX3dpZHRoICE9IG9sZF9jaGFyX3dpZHRoCiAJICAgIHx8IGd1aS5jaGFyX2hlaWdodCAhPSBvbGRfY2hhcl9oZWlnaHQpCkBAIC0zMDAyLDggKzMwMDIsOCBAQAogCWdlb21ldHJ5LmhlaWdodF9pbmMgID0gZ3VpLmNoYXJfaGVpZ2h0OwogCWdlb21ldHJ5LmJhc2Vfd2lkdGggID0gd2lkdGg7CiAJZ2VvbWV0cnkuYmFzZV9oZWlnaHQgPSBoZWlnaHQ7Ci0gICAgICAgIGdlb21ldHJ5Lm1pbl93aWR0aCAgID0gbWluX3dpZHRoOwotICAgICAgICBnZW9tZXRyeS5taW5faGVpZ2h0ICA9IG1pbl9oZWlnaHQ7CisJZ2VvbWV0cnkubWluX3dpZHRoICAgPSBtaW5fd2lkdGg7CisJZ2VvbWV0cnkubWluX2hlaWdodCAgPSBtaW5faGVpZ2h0OwogCWdlb21ldHJ5X21hc2sJICAgICA9IEdES19ISU5UX0JBU0VfU0laRXxHREtfSElOVF9SRVNJWkVfSU5DCiAJCQkgICAgICAgfEdES19ISU5UX01JTl9TSVpFOwogIyBpZmRlZiBIQVZFX0dUSzIKQEAgLTMwMTYsMTIgKzMwMTYsMTIgQEAKIAlndGtfd2luZG93X3NldF9nZW9tZXRyeV9oaW50cyhHVEtfV0lORE9XKGd1aS5tYWlud2luKSwgZ3VpLmZvcm13aW4sCiAJCQkJICAgICAgJmdlb21ldHJ5LCBnZW9tZXRyeV9tYXNrKTsKICMgZW5kaWYKLSAgICAgICAgb2xkX3dpZHRoICAgICAgID0gd2lkdGg7Ci0gICAgICAgIG9sZF9oZWlnaHQgICAgICA9IGhlaWdodDsKLSAgICAgICAgb2xkX21pbl93aWR0aCAgID0gbWluX3dpZHRoOwotICAgICAgICBvbGRfbWluX2hlaWdodCAgPSBtaW5faGVpZ2h0OwotICAgICAgICBvbGRfY2hhcl93aWR0aCAgPSBndWkuY2hhcl93aWR0aDsKLSAgICAgICAgb2xkX2NoYXJfaGVpZ2h0ID0gZ3VpLmNoYXJfaGVpZ2h0OworCW9sZF93aWR0aCAgICAgICA9IHdpZHRoOworCW9sZF9oZWlnaHQgICAgICA9IGhlaWdodDsKKwlvbGRfbWluX3dpZHRoICAgPSBtaW5fd2lkdGg7CisJb2xkX21pbl9oZWlnaHQgID0gbWluX2hlaWdodDsKKwlvbGRfY2hhcl93aWR0aCAgPSBndWkuY2hhcl93aWR0aDsKKwlvbGRfY2hhcl9oZWlnaHQgPSBndWkuY2hhcl9oZWlnaHQ7CiAgICAgfQogfQogCkBAIC0zMzQ2LDcgKzMzNDYsNyBAQAogCWd0a19ub3RlYm9va19yZW1vdmVfcGFnZShHVEtfTk9URUJPT0soZ3VpLnRhYmxpbmUpLCBucik7CiAKICAgICBpZiAoZ3RrX25vdGVib29rX2N1cnJlbnRfcGFnZShHVEtfTk9URUJPT0soZ3VpLnRhYmxpbmUpKSAhPSBjdXJ0YWJpZHgpCi0gICAgICAgIGd0a19ub3RlYm9va19zZXRfcGFnZShHVEtfTk9URUJPT0soZ3VpLnRhYmxpbmUpLCBjdXJ0YWJpZHgpOworCWd0a19ub3RlYm9va19zZXRfcGFnZShHVEtfTk9URUJPT0soZ3VpLnRhYmxpbmUpLCBjdXJ0YWJpZHgpOwogCiAgICAgLyogTWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgaW4gcGxhY2UgYmVmb3JlIGRyYXdpbmcgdGV4dC4gKi8KICAgICBndWlfbWNoX3VwZGF0ZSgpOwpAQCAtMzM2Niw3ICszMzY2LDcgQEAKIAogICAgIGlnbm9yZV90YWJsaW5lX2V2dCA9IFRSVUU7CiAgICAgaWYgKGd0a19ub3RlYm9va19jdXJyZW50X3BhZ2UoR1RLX05PVEVCT09LKGd1aS50YWJsaW5lKSkgIT0gbnIgLSAxKQotICAgICAgICBndGtfbm90ZWJvb2tfc2V0X3BhZ2UoR1RLX05PVEVCT09LKGd1aS50YWJsaW5lKSwgbnIgLSAxKTsKKwlndGtfbm90ZWJvb2tfc2V0X3BhZ2UoR1RLX05PVEVCT09LKGd1aS50YWJsaW5lKSwgbnIgLSAxKTsKICAgICBpZ25vcmVfdGFibGluZV9ldnQgPSBGQUxTRTsKIH0KIApAQCAtMzY3OCw3ICszNjc4LDcgQEAKICAgICB7CiAJR3RrV2lkZ2V0ICpwYWdlLCAqbGFiZWwsICpldmVudF9ib3g7CiAKLSAgICAgICAgLyogQWRkIHRoZSBmaXJzdCB0YWIuICovCisJLyogQWRkIHRoZSBmaXJzdCB0YWIuICovCiAJcGFnZSA9IGd0a192Ym94X25ldyhGQUxTRSwgMCk7CiAJZ3RrX3dpZGdldF9zaG93KHBhZ2UpOwogCWd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoZ3VpLnRhYmxpbmUpLCBwYWdlKTsKQEAgLTM2OTIsMTIgKzM2OTIsMTIgQEAKIAlndGtfbm90ZWJvb2tfc2V0X3RhYl9sYWJlbChHVEtfTk9URUJPT0soZ3VpLnRhYmxpbmUpLCBwYWdlLCBldmVudF9ib3gpOwogICAgIH0KICAgICBndGtfc2lnbmFsX2Nvbm5lY3QoR1RLX09CSkVDVChndWkudGFibGluZSksICJzd2l0Y2hfcGFnZSIsCi0gICAgICAgICAgICAgICAgICAgICAgIEdUS19TSUdOQUxfRlVOQyhvbl9zZWxlY3RfdGFiKSwgTlVMTCk7CisJCSAgICAgICBHVEtfU0lHTkFMX0ZVTkMob25fc2VsZWN0X3RhYiksIE5VTEwpOwogCiAgICAgLyogQ3JlYXRlIGEgcG9wdXAgbWVudSBmb3IgdGhlIHRhYiBsaW5lIGFuZCBjb25uZWN0IGl0LiAqLwogICAgIHRhYmxpbmVfbWVudSA9IGNyZWF0ZV90YWJsaW5lX21lbnUoKTsKICAgICBndGtfc2lnbmFsX2Nvbm5lY3Rfb2JqZWN0KEdUS19PQkpFQ1QoZ3VpLnRhYmxpbmUpLCAiYnV0dG9uX3ByZXNzX2V2ZW50IiwKLSAgICAgICAgICAgICAgR1RLX1NJR05BTF9GVU5DKG9uX3RhYmxpbmVfbWVudSksIEdUS19PQkpFQ1QodGFibGluZV9tZW51KSk7CisJICAgIEdUS19TSUdOQUxfRlVOQyhvbl90YWJsaW5lX21lbnUpLCBHVEtfT0JKRUNUKHRhYmxpbmVfbWVudSkpOwogI2VuZGlmCiAKICAgICBndWkuZm9ybXdpbiA9IGd0a19mb3JtX25ldygpOwpAQCAtMzc5NywyMiArMzc5NywyMiBAQAogICAgICAqLwogICAgIGlmIChndGtfc29ja2V0X2lkID09IDApCiAgICAgewotICAgICAgICBndGtfc2lnbmFsX2Nvbm5lY3QoR1RLX09CSkVDVChndWkubWFpbndpbiksICJmb2N1c19vdXRfZXZlbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TSUdOQUxfRlVOQyhmb2N1c19vdXRfZXZlbnQpLCBOVUxMKTsKLSAgICAgICAgZ3RrX3NpZ25hbF9jb25uZWN0KEdUS19PQkpFQ1QoZ3VpLm1haW53aW4pLCAiZm9jdXNfaW5fZXZlbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TSUdOQUxfRlVOQyhmb2N1c19pbl9ldmVudCksIE5VTEwpOworCWd0a19zaWduYWxfY29ubmVjdChHVEtfT0JKRUNUKGd1aS5tYWlud2luKSwgImZvY3VzX291dF9ldmVudCIsCisJCQkgICAgICAgR1RLX1NJR05BTF9GVU5DKGZvY3VzX291dF9ldmVudCksIE5VTEwpOworCWd0a19zaWduYWxfY29ubmVjdChHVEtfT0JKRUNUKGd1aS5tYWlud2luKSwgImZvY3VzX2luX2V2ZW50IiwKKwkJCSAgICAgICBHVEtfU0lHTkFMX0ZVTkMoZm9jdXNfaW5fZXZlbnQpLCBOVUxMKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgZ3RrX3NpZ25hbF9jb25uZWN0KEdUS19PQkpFQ1QoZ3VpLmRyYXdhcmVhKSwgImZvY3VzX291dF9ldmVudCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1NJR05BTF9GVU5DKGZvY3VzX291dF9ldmVudCksIE5VTEwpOwotICAgICAgICBndGtfc2lnbmFsX2Nvbm5lY3QoR1RLX09CSkVDVChndWkuZHJhd2FyZWEpLCAiZm9jdXNfaW5fZXZlbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TSUdOQUxfRlVOQyhmb2N1c19pbl9ldmVudCksIE5VTEwpOworCWd0a19zaWduYWxfY29ubmVjdChHVEtfT0JKRUNUKGd1aS5kcmF3YXJlYSksICJmb2N1c19vdXRfZXZlbnQiLAorCQkJICAgICAgIEdUS19TSUdOQUxfRlVOQyhmb2N1c19vdXRfZXZlbnQpLCBOVUxMKTsKKwlndGtfc2lnbmFsX2Nvbm5lY3QoR1RLX09CSkVDVChndWkuZHJhd2FyZWEpLCAiZm9jdXNfaW5fZXZlbnQiLAorCQkJICAgICAgIEdUS19TSUdOQUxfRlVOQyhmb2N1c19pbl9ldmVudCksIE5VTEwpOwogI2lmZGVmIEZFQVRfR1VJX1RBQkxJTkUKLSAgICAgICAgZ3RrX3NpZ25hbF9jb25uZWN0KEdUS19PQkpFQ1QoZ3VpLnRhYmxpbmUpLCAiZm9jdXNfb3V0X2V2ZW50IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfU0lHTkFMX0ZVTkMoZm9jdXNfb3V0X2V2ZW50KSwgTlVMTCk7Ci0gICAgICAgIGd0a19zaWduYWxfY29ubmVjdChHVEtfT0JKRUNUKGd1aS50YWJsaW5lKSwgImZvY3VzX2luX2V2ZW50IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfU0lHTkFMX0ZVTkMoZm9jdXNfaW5fZXZlbnQpLCBOVUxMKTsKKwlndGtfc2lnbmFsX2Nvbm5lY3QoR1RLX09CSkVDVChndWkudGFibGluZSksICJmb2N1c19vdXRfZXZlbnQiLAorCQkJICAgICAgIEdUS19TSUdOQUxfRlVOQyhmb2N1c19vdXRfZXZlbnQpLCBOVUxMKTsKKwlndGtfc2lnbmFsX2Nvbm5lY3QoR1RLX09CSkVDVChndWkudGFibGluZSksICJmb2N1c19pbl9ldmVudCIsCisJCQkgICAgICAgR1RLX1NJR05BTF9GVU5DKGZvY3VzX2luX2V2ZW50KSwgTlVMTCk7CiAjZW5kaWYgLyogRkVBVF9HVUlfVEFCTElORSAqLwogICAgIH0KIApAQCAtMzkwNiw3ICszOTA2LDcgQEAKICAgICAgKiBXaWR0aHMgc2VlbSB0byBzb3J0IHRoZW1zZWx2ZXMgb3V0LCBkb24ndCBhc2sgbWUgd2h5LgogICAgICAqLwogICAgIGlmIChndGtfc29ja2V0X2lkICE9IDApCi0gICAgICAgIHVzYWJsZV9oZWlnaHQgLT0gKGd1aS5jaGFyX2hlaWdodCAtIChndWkuY2hhcl9oZWlnaHQvMikpOyAvKiBzaWMuICovCisJdXNhYmxlX2hlaWdodCAtPSAoZ3VpLmNoYXJfaGVpZ2h0IC0gKGd1aS5jaGFyX2hlaWdodC8yKSk7IC8qIHNpYy4gKi8KIAogICAgIGd0a19mb3JtX2ZyZWV6ZShHVEtfRk9STShndWkuZm9ybXdpbikpOwogICAgIGd1aV9yZXNpemVfc2hlbGwoZXZlbnQtPndpZHRoLCB1c2FibGVfaGVpZ2h0KTsKQEAgLTM5NTgsMTAgKzM5NTgsMTAgQEAKIHsKICAgICBpZiAoaW5pdF93aW5kb3dfaGludHNfc3RhdGUgPT0gMSkKICAgICB7Ci0gICAgICAgIC8qIFNhZmUgdG8gdXNlIG5vcm1hbCBoaW50cyBub3cgKi8KLSAgICAgICAgaW5pdF93aW5kb3dfaGludHNfc3RhdGUgPSAwOwotICAgICAgICB1cGRhdGVfd2luZG93X21hbmFnZXJfaGludHMoMCwgMCk7Ci0gICAgICAgIHJldHVybiBGQUxTRTsgICAvKiBzdG9wIHRpbWVyICovCisJLyogU2FmZSB0byB1c2Ugbm9ybWFsIGhpbnRzIG5vdyAqLworCWluaXRfd2luZG93X2hpbnRzX3N0YXRlID0gMDsKKwl1cGRhdGVfd2luZG93X21hbmFnZXJfaGludHMoMCwgMCk7CisJcmV0dXJuIEZBTFNFOyAgIC8qIHN0b3AgdGltZXIgKi8KICAgICB9CiAKICAgICAvKiBLZWVwIG9uIHRyeWluZyAqLwpAQCAtNDAzNCwyNSArNDAzNCwyNSBAQAogCXZpbV9mcmVlKGd1aS5nZW9tKTsKIAlndWkuZ2VvbSA9IE5VTEw7CiAKLSAgICAgICAgLyogRnJvbSBub3cgdW50aWwgZXZlcnlvbmUncyBzdG9wcGVkIHRyeWluZyB0byBzZXQgdGhlIHdpbmRvdyBoaW50cwotICAgICAgICAgKiB0byB0aGVpciBjb3JyZWN0IG1pbmltdW0gdmFsdWVzLCBzdG9wIHRoZW0gYmVpbmcgc2V0IGFzIHdlIG5lZWQKLSAgICAgICAgICogdGhlbSB0byByZW1haW4gYXQgb3VyIHJlcXVpcmVkIHNpemUgZm9yIHRoZSBwYXJlbnQgR3RrU29ja2V0IHRvCi0gICAgICAgICAqIGdpdmUgdXMgdGhlIHJpZ2h0IGluaXRpYWwgc2l6ZS4KLSAgICAgICAgICovCisJLyogRnJvbSBub3cgdW50aWwgZXZlcnlvbmUncyBzdG9wcGVkIHRyeWluZyB0byBzZXQgdGhlIHdpbmRvdyBoaW50cworCSAqIHRvIHRoZWlyIGNvcnJlY3QgbWluaW11bSB2YWx1ZXMsIHN0b3AgdGhlbSBiZWluZyBzZXQgYXMgd2UgbmVlZAorCSAqIHRoZW0gdG8gcmVtYWluIGF0IG91ciByZXF1aXJlZCBzaXplIGZvciB0aGUgcGFyZW50IEd0a1NvY2tldCB0bworCSAqIGdpdmUgdXMgdGhlIHJpZ2h0IGluaXRpYWwgc2l6ZS4KKwkgKi8KIAlpZiAoZ3RrX3NvY2tldF9pZCAhPSAwICAmJiAgKG1hc2sgJiBXaWR0aFZhbHVlIHx8IG1hc2sgJiBIZWlnaHRWYWx1ZSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGd1aW50IHBpeGVsX3dpZHRoID0gKGd1aW50KShndWlfZ2V0X2Jhc2Vfd2lkdGgoKSArIENvbHVtbnMgKiBndWkuY2hhcl93aWR0aCk7Ci0gICAgICAgICAgICBndWludCBwaXhlbF9oZWlnaHQgPSAoZ3VpbnQpKGd1aV9nZXRfYmFzZV9oZWlnaHQoKSArIFJvd3MgKiBndWkuY2hhcl9oZWlnaHQpOworCXsKKwkgICAgZ3VpbnQgcGl4ZWxfd2lkdGggPSAoZ3VpbnQpKGd1aV9nZXRfYmFzZV93aWR0aCgpICsgQ29sdW1ucyAqIGd1aS5jaGFyX3dpZHRoKTsKKwkgICAgZ3VpbnQgcGl4ZWxfaGVpZ2h0ID0gKGd1aW50KShndWlfZ2V0X2Jhc2VfaGVpZ2h0KCkgKyBSb3dzICogZ3VpLmNoYXJfaGVpZ2h0KTsKIAogI2lmZGVmIEhBVkVfR1RLMgotICAgICAgICAgICAgcGl4ZWxfd2lkdGggICs9IGdldF9tZW51X3Rvb2xfd2lkdGgoKTsKLSAgICAgICAgICAgIHBpeGVsX2hlaWdodCArPSBnZXRfbWVudV90b29sX2hlaWdodCgpOworCSAgICBwaXhlbF93aWR0aCAgKz0gZ2V0X21lbnVfdG9vbF93aWR0aCgpOworCSAgICBwaXhlbF9oZWlnaHQgKz0gZ2V0X21lbnVfdG9vbF9oZWlnaHQoKTsKICNlbmRpZgogCi0gICAgICAgICAgICB1cGRhdGVfd2luZG93X21hbmFnZXJfaGludHMocGl4ZWxfd2lkdGgsIHBpeGVsX2hlaWdodCk7Ci0gICAgICAgICAgICBpbml0X3dpbmRvd19oaW50c19zdGF0ZSA9IDE7Ci0gICAgICAgICAgICBnX3RpbWVvdXRfYWRkKDEwMDAsIGNoZWNrX3N0YXJ0dXBfcGx1Z19oaW50cywgTlVMTCk7Ci0gICAgICAgIH0KKwkgICAgdXBkYXRlX3dpbmRvd19tYW5hZ2VyX2hpbnRzKHBpeGVsX3dpZHRoLCBwaXhlbF9oZWlnaHQpOworCSAgICBpbml0X3dpbmRvd19oaW50c19zdGF0ZSA9IDE7CisJICAgIGdfdGltZW91dF9hZGQoMTAwMCwgY2hlY2tfc3RhcnR1cF9wbHVnX2hpbnRzLCBOVUxMKTsKKwl9CiAgICAgfQogCiAgICAgZ3RrX2Zvcm1fc2V0X3NpemUoR1RLX0ZPUk0oZ3VpLmZvcm13aW4pLApAQCAtNDI5OSw3ICs0Mjk5LDcgQEAKICNlbHNlICAvKiBIQVZFX0dUSzIgKi8KICAgICAvKiB0aGlzIHdpbGwgY2F1c2UgdGhlIHByb3BlciByZXNpemVtZW50IHRvIGhhcHBlbiB0b28gKi8KICAgICBpZiAoZ3RrX3NvY2tldF9pZCA9PSAwKQotICAgICAgICB1cGRhdGVfd2luZG93X21hbmFnZXJfaGludHMoMCwgMCk7CisJdXBkYXRlX3dpbmRvd19tYW5hZ2VyX2hpbnRzKDAsIDApOwogCiAgICAgLyogV2l0aCBHVEsrIDIsIGNoYW5naW5nIHRoZSBzaXplIG9mIHRoZSBmb3JtIHdpZGdldCBkb2Vzbid0IHJlc2l6ZQogICAgICAqIHRoZSB3aW5kb3cuICBTbyBsZXQncyBkbyBpdCB0aGUgb3RoZXIgd2F5IGFyb3VuZCBhbmQgcmVzaXplIHRoZQpAQCAtNDMwOCw5ICs0MzA4LDkgQEAKICAgICBoZWlnaHQgKz0gZ2V0X21lbnVfdG9vbF9oZWlnaHQoKTsKIAogICAgIGlmIChndGtfc29ja2V0X2lkID09IDApCi0gICAgICAgIGd0a193aW5kb3dfcmVzaXplKEdUS19XSU5ET1coZ3VpLm1haW53aW4pLCB3aWR0aCwgaGVpZ2h0KTsKKwlndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKGd1aS5tYWlud2luKSwgd2lkdGgsIGhlaWdodCk7CiAgICAgZWxzZQotICAgICAgICB1cGRhdGVfd2luZG93X21hbmFnZXJfaGludHMod2lkdGgsIGhlaWdodCk7CisJdXBkYXRlX3dpbmRvd19tYW5hZ2VyX2hpbnRzKHdpZHRoLCBoZWlnaHQpOwogCiAjaWYgMAogICAgIGlmICghcmVzaXplX2lkbGVfaW5zdGFsbGVkKQpAQCAtNzE3Niw0ICs3MTc2LDMgQEAKICMgZW5kaWYgLyogIUhBVkVfR1RLMiAqLwogCiAjZW5kaWYgLyogRkVBVF9TSUdOX0lDT05TICovCi0KZGlmZiAtLWdpdCBhL3NyYy9ndWlfbWFjLmMgYi9zcmMvZ3VpX21hYy5jCmluZGV4IDI1MTMyMjQuLmE5ZTZmNWMgMTAwNjQ0Ci0tLSBhL3NyYy9ndWlfbWFjLmMKKysrIGIvc3JjL2d1aV9tYWMuYwpAQCAtMTQsOCArMTQsOCBAQAogCiAvKgogICogTk9URVM6IC0gVmltIDcrIGRvZXMgbm90IHN1cHBvcnQgY2xhc3NpYyBNYWNPUy4gUGxlYXNlIHVzZSBWaW0gNi54Ci0gKiAgICAgICAgLSBDb21tZW50cyBtZW50aW9uaW5nIEZBUSByZWZlciB0byB0aGUgYm9vazoKLSAqICAgICAgICAgICJNYWN3b3JsZCBNYWMgUHJvZ3JhbW1pbmcgRkFRcyIgZnJvbSAiSURHIEJvb2tzIgorICoJICAtIENvbW1lbnRzIG1lbnRpb25pbmcgRkFRIHJlZmVyIHRvIHRoZSBib29rOgorICoJICAgICJNYWN3b3JsZCBNYWMgUHJvZ3JhbW1pbmcgRkFRcyIgZnJvbSAiSURHIEJvb2tzIgogICovCiAKIC8qCkBAIC0zODE3LDEwICszODE3LDEwIEBACiAgICAgc3RhdGljIHZvaWQKIGRyYXdfdW5kZXJjdXJsKGludCBmbGFncywgaW50IHJvdywgaW50IGNvbCwgaW50IGNlbGxzKQogewotICAgIGludCAgICAgICAgICAgICAgICAgeDsKLSAgICBpbnQgICAgICAgICAgICAgICAgIG9mZnNldDsKLSAgICBjb25zdCBzdGF0aWMgaW50ICAgIHZhbFs4XSA9IHsxLCAwLCAwLCAwLCAxLCAyLCAyLCAyIH07Ci0gICAgaW50ICAgICAgICAgICAgICAgICB5ID0gRklMTF9ZKHJvdyArIDEpIC0gMTsKKyAgICBpbnQJCQl4OworICAgIGludAkJCW9mZnNldDsKKyAgICBjb25zdCBzdGF0aWMgaW50CXZhbFs4XSA9IHsxLCAwLCAwLCAwLCAxLCAyLCAyLCAyIH07CisgICAgaW50CQkJeSA9IEZJTExfWShyb3cgKyAxKSAtIDE7CiAKICAgICBSR0JGb3JlQ29sb3IoJnNwZWNpYWxDb2xvcik7CiAKZGlmZiAtLWdpdCBhL3NyYy9ndWlfbW90aWYuYyBiL3NyYy9ndWlfbW90aWYuYwppbmRleCBmN2IzMmQ1Li5lMjlkZDJhIDEwMDY0NAotLS0gYS9zcmMvZ3VpX21vdGlmLmMKKysrIGIvc3JjL2d1aV9tb3RpZi5jCkBAIC0zMjIzLDEyICszMjIzLDEyIEBACiAgICAgUGl4ZWwgICAgICAgKmhzcDsKIHsKICAgICBYdFZhR2V0VmFsdWVzKHRvb2xCYXIsCi0gICAgICAgICAgICBYbU5iYWNrZ3JvdW5kLCBiZ3AsCi0gICAgICAgICAgICBYbU5mb3JlZ3JvdW5kLCBmZ3AsCi0gICAgICAgICAgICBYbU5ib3R0b21TaGFkb3dDb2xvciwgYnNwLAotICAgICAgICAgICAgWG1OdG9wU2hhZG93Q29sb3IsIHRzcCwKLSAgICAgICAgICAgIFhtTmhpZ2hsaWdodENvbG9yLCBoc3AsCi0gICAgICAgICAgICBOVUxMKTsKKwkgICAgWG1OYmFja2dyb3VuZCwgYmdwLAorCSAgICBYbU5mb3JlZ3JvdW5kLCBmZ3AsCisJICAgIFhtTmJvdHRvbVNoYWRvd0NvbG9yLCBic3AsCisJICAgIFhtTnRvcFNoYWRvd0NvbG9yLCB0c3AsCisJICAgIFhtTmhpZ2hsaWdodENvbG9yLCBoc3AsCisJICAgIE5VTEwpOwogfQogCiAjIGlmZGVmIEZFQVRfRk9PVEVSCmRpZmYgLS1naXQgYS9zcmMvZ3VpX3czMi5jIGIvc3JjL2d1aV93MzIuYwppbmRleCA0YjRlOWE5Li43MTFmZTgyIDEwMDY0NAotLS0gYS9zcmMvZ3VpX3czMi5jCisrKyBiL3NyYy9ndWlfdzMyLmMKQEAgLTg5Nyw4ICs4OTcsOCBAQAogCQl7CiAJCSAgICBMUE5NVFRESVNQSU5GTwlscGRpOwogCQkgICAgUE9JTlQJCXB0OwotCQkgICAgc3RhdGljIGNoYXIgICAgICAgICAqdHRfdGV4dCA9IE5VTEw7Ci0JCSAgICBzdGF0aWMgaW50ICAgICAgICAgIHR0X3RleHRfbGVuID0gMDsKKwkJICAgIHN0YXRpYyBjaGFyCQkqdHRfdGV4dCA9IE5VTEw7CisJCSAgICBzdGF0aWMgaW50CQl0dF90ZXh0X2xlbiA9IDA7CiAKIAkJICAgIC8qCiAJCSAgICAgKiBNb3VzZSBpcyBvdmVyIHRoZSBHVUkgdGFibGluZS4gRGlzcGxheSB0aGUgdG9vbHRpcApAQCAtMjQ3NCwxOCArMjQ3NCwxOCBAQAogICAgIGdldF93b3JrX2FyZWEoJndvcmthcmVhX3JlY3QpOwogCiAgICAgKnNjcmVlbl93ID0gd29ya2FyZWFfcmVjdC5yaWdodCAtIHdvcmthcmVhX3JlY3QubGVmdAotCSAgICAgICAgLSBHZXRTeXN0ZW1NZXRyaWNzKFNNX0NYRlJBTUUpICogMjsKKwkJLSBHZXRTeXN0ZW1NZXRyaWNzKFNNX0NYRlJBTUUpICogMjsKIAogICAgIC8qIEZJWE1FOiBkaXJ0eSB0cmljazogQmVjYXVzZSB0aGUgZ3VpX2dldF9iYXNlX2hlaWdodCgpIGRvZXNuJ3QgaW5jbHVkZQogICAgICAqIHRoZSBtZW51YmFyIGZvciBNU3dpbiwgd2Ugc3VidHJhY3QgaXQgZnJvbSB0aGUgc2NyZWVuIGhlaWdodCwgc28gdGhhdAogICAgICAqIHRoZSB3aW5kb3cgc2l6ZSBjYW4gYmUgbWFkZSB0byBmaXQgb24gdGhlIHNjcmVlbi4gKi8KICAgICAqc2NyZWVuX2ggPSB3b3JrYXJlYV9yZWN0LmJvdHRvbSAtIHdvcmthcmVhX3JlY3QudG9wCi0JICAgICAgICAtIEdldFN5c3RlbU1ldHJpY3MoU01fQ1lGUkFNRSkgKiAyCisJCS0gR2V0U3lzdGVtTWV0cmljcyhTTV9DWUZSQU1FKSAqIDIKIAkJLSBHZXRTeXN0ZW1NZXRyaWNzKFNNX0NZQ0FQVElPTikKICNpZmRlZiBGRUFUX01FTlUKLQkgICAgICAgIC0gZ3VpX21zd2luX2dldF9tZW51X2hlaWdodChGQUxTRSkKKwkJLSBndWlfbXN3aW5fZ2V0X21lbnVfaGVpZ2h0KEZBTFNFKQogI2VuZGlmCi0JICAgICAgICA7CisJCTsKIH0KIAogCkBAIC00NDE3LDI3ICs0NDE3LDI4IEBACiAgICAgaERsbCA9IEdldE1vZHVsZUhhbmRsZShjb21jdGxfZGxsKTsKICAgICBpZiAoaERsbCAhPSBOVUxMKQogICAgIHsKLSAgICAgICAgRExMR0VUVkVSU0lPTlBST0MgcEdldFZlcjsKLSAgICAgICAgcEdldFZlciA9IChETExHRVRWRVJTSU9OUFJPQylHZXRQcm9jQWRkcmVzcyhoRGxsLCAiRGxsR2V0VmVyc2lvbiIpOworCURMTEdFVFZFUlNJT05QUk9DIHBHZXRWZXI7CisJcEdldFZlciA9IChETExHRVRWRVJTSU9OUFJPQylHZXRQcm9jQWRkcmVzcyhoRGxsLCAiRGxsR2V0VmVyc2lvbiIpOwogCi0gICAgICAgIGlmIChwR2V0VmVyICE9IE5VTEwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIERMTFZFUlNJT05JTkZPIGR2aTsKLSAgICAgICAgICAgIEhSRVNVTFQgaHI7CisJaWYgKHBHZXRWZXIgIT0gTlVMTCkKKwl7CisJICAgIERMTFZFUlNJT05JTkZPIGR2aTsKKwkgICAgSFJFU1VMVCBocjsKIAotICAgICAgICAgICAgWmVyb01lbW9yeSgmZHZpLCBzaXplb2YoZHZpKSk7Ci0gICAgICAgICAgICBkdmkuY2JTaXplID0gc2l6ZW9mKGR2aSk7CisJICAgIFplcm9NZW1vcnkoJmR2aSwgc2l6ZW9mKGR2aSkpOworCSAgICBkdmkuY2JTaXplID0gc2l6ZW9mKGR2aSk7CiAKLSAgICAgICAgICAgIGhyID0gKCpwR2V0VmVyKSgmZHZpKTsKKwkgICAgaHIgPSAoKnBHZXRWZXIpKCZkdmkpOwogCi0gICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKQorCSAgICBpZiAoU1VDQ0VFREVEKGhyKQogCQkgICAgJiYgKGR2aS5kd01ham9yVmVyc2lvbiA+IDQKLQkJICAgIHx8IChkdmkuZHdNYWpvclZlcnNpb24gPT0gNCAmJiBkdmkuZHdNaW5vclZlcnNpb24gPj0gNzApKSkKKwkJCXx8IChkdmkuZHdNYWpvclZlcnNpb24gPT0gNAorCQkJCQkJJiYgZHZpLmR3TWlub3JWZXJzaW9uID49IDcwKSkpCiAJICAgIHsKIAkJbXVsdGlsaW5lX3RpcCA9IFRSVUU7CiAJCXJldHVybiBtdWx0aWxpbmVfdGlwOwogCSAgICB9Ci0gICAgICAgIH0KKwl9CiAJZWxzZQogCXsKIAkgICAgLyogdGhlcmUgaXMgY2hhbmNlIHdlIGhhdmUgYW5jaWVudCBDb21tQ3RsIDQuNzAKZGlmZiAtLWdpdCBhL3NyYy9ndWlfeG1lYncuYyBiL3NyYy9ndWlfeG1lYncuYwppbmRleCA3MGU3ZGY3Li44MjBhZWJhIDEwMDY0NAotLS0gYS9zcmMvZ3VpX3htZWJ3LmMKKysrIGIvc3JjL2d1aV94bWVidy5jCkBAIC0xNDIsNTYgKzE0Miw1NiBAQAogewogICAgIHsKIAkvKiBjb3JlX2NsYXNzIGZpZWxkcyAqLwotCS8qIHN1cGVyY2xhc3MgICAgICAgICAgICAqLyAoV2lkZ2V0Q2xhc3MpICYgeG1QdXNoQnV0dG9uQ2xhc3NSZWMsCi0JLyogY2xhc3NfbmFtZSAgICAgICAgICAgICovICJYbUVuaGFuY2VkQnV0dG9uIiwKLQkvKiB3aWRnZXRfc2l6ZSAgICAgICAgICAgKi8gc2l6ZW9mKFhtRW5oYW5jZWRCdXR0b25SZWMpLAotCS8qIGNsYXNzX2luaXRpYWxpemUgICAgICAqLyBOVUxMLAorCS8qIHN1cGVyY2xhc3MJCSAqLyAoV2lkZ2V0Q2xhc3MpICYgeG1QdXNoQnV0dG9uQ2xhc3NSZWMsCisJLyogY2xhc3NfbmFtZQkJICovICJYbUVuaGFuY2VkQnV0dG9uIiwKKwkvKiB3aWRnZXRfc2l6ZQkJICovIHNpemVvZihYbUVuaGFuY2VkQnV0dG9uUmVjKSwKKwkvKiBjbGFzc19pbml0aWFsaXplCSAqLyBOVUxMLAogCS8qIGNsYXNzX3BhcnRfaW5pdGlhbGl6ZSAqLyBOVUxMLAotCS8qIGNsYXNzX2luaXRlZCAgICAgICAgICAqLyBGYWxzZSwKLQkvKiBpbml0aWFsaXplICAgICAgICAgICAgKi8gSW5pdGlhbGl6ZSwKLQkvKiBpbml0aWFsaXplX2hvb2sgICAgICAgKi8gTlVMTCwKLQkvKiByZWFsaXplICAgICAgICAgICAgICAgKi8gWHRJbmhlcml0UmVhbGl6ZSwKLQkvKiBhY3Rpb25zICAgICAgICAgICAgICAgKi8gYWN0aW9uc0xpc3QsCi0JLyogbnVtX2FjdGlvbnMgICAgICAgICAgICovIFh0TnVtYmVyKGFjdGlvbnNMaXN0KSwKLQkvKiByZXNvdXJjZXMgICAgICAgICAgICAgKi8gcmVzb3VyY2VzLAotCS8qIG51bV9yZXNvdXJjZXMgICAgICAgICAqLyBYdE51bWJlcihyZXNvdXJjZXMpLAotCS8qIHhybV9jbGFzcyAgICAgICAgICAgICAqLyBOVUxMUVVBUkssCi0JLyogY29tcHJlc3NfbW90aW9uICAgICAgICovIFRydWUsCi0JLyogY29tcHJlc3NfZXhwb3N1cmUgICAgICovIFh0RXhwb3NlQ29tcHJlc3NNYXhpbWFsLAotCS8qIGNvbXByZXNzX2VudGVybGVhdmUgICAqLyBUcnVlLAotCS8qIHZpc2libGVfaW50ZXJlc3QgICAgICAqLyBGYWxzZSwKLQkvKiBkZXN0cm95ICAgICAgICAgICAgICAgKi8gRGVzdHJveSwKLQkvKiByZXNpemUgICAgICAgICAgICAgICAgKi8gWHRJbmhlcml0UmVzaXplLAotCS8qIGV4cG9zZSAgICAgICAgICAgICAgICAqLyBSZWRpc3BsYXksCi0JLyogc2V0X3ZhbHVlcyAgICAgICAgICAgICovIFNldFZhbHVlcywKLQkvKiBzZXRfdmFsdWVzX2hvb2sgICAgICAgKi8gTlVMTCwKLQkvKiBzZXRfdmFsdWVzX2FsbW9zdCAgICAgKi8gWHRJbmhlcml0U2V0VmFsdWVzQWxtb3N0LAotCS8qIGdldF92YWx1ZXNfaG9vayAgICAgICAqLyBOVUxMLAotCS8qIGFjY2VwdF9mb2N1cyAgICAgICAgICAqLyBYdEluaGVyaXRBY2NlcHRGb2N1cywKLQkvKiB2ZXJzaW9uICAgICAgICAgICAgICAgKi8gWHRWZXJzaW9uLAotCS8qIGNhbGxiYWNrX3ByaXZhdGUgICAgICAqLyBOVUxMLAotCS8qIHRtX3RhYmxlICAgICAgICAgICAgICAqLyBOVUxMLAotCS8qIHF1ZXJ5X2dlb21ldHJ5ICAgICAgICAqLyBOVUxMLAotCS8qIGRpc3BsYXlfYWNjZWxlcmF0b3IgICAqLyBYdEluaGVyaXREaXNwbGF5QWNjZWxlcmF0b3IsCi0JLyogZXh0ZW5zaW9uICAgICAgICAgICAgICovIE5VTEwKKwkvKiBjbGFzc19pbml0ZWQJCSAqLyBGYWxzZSwKKwkvKiBpbml0aWFsaXplCQkgKi8gSW5pdGlhbGl6ZSwKKwkvKiBpbml0aWFsaXplX2hvb2sJICovIE5VTEwsCisJLyogcmVhbGl6ZQkJICovIFh0SW5oZXJpdFJlYWxpemUsCisJLyogYWN0aW9ucwkJICovIGFjdGlvbnNMaXN0LAorCS8qIG51bV9hY3Rpb25zCQkgKi8gWHROdW1iZXIoYWN0aW9uc0xpc3QpLAorCS8qIHJlc291cmNlcwkJICovIHJlc291cmNlcywKKwkvKiBudW1fcmVzb3VyY2VzCSAqLyBYdE51bWJlcihyZXNvdXJjZXMpLAorCS8qIHhybV9jbGFzcwkJICovIE5VTExRVUFSSywKKwkvKiBjb21wcmVzc19tb3Rpb24JICovIFRydWUsCisJLyogY29tcHJlc3NfZXhwb3N1cmUJICovIFh0RXhwb3NlQ29tcHJlc3NNYXhpbWFsLAorCS8qIGNvbXByZXNzX2VudGVybGVhdmUJICovIFRydWUsCisJLyogdmlzaWJsZV9pbnRlcmVzdAkgKi8gRmFsc2UsCisJLyogZGVzdHJveQkJICovIERlc3Ryb3ksCisJLyogcmVzaXplCQkgKi8gWHRJbmhlcml0UmVzaXplLAorCS8qIGV4cG9zZQkJICovIFJlZGlzcGxheSwKKwkvKiBzZXRfdmFsdWVzCQkgKi8gU2V0VmFsdWVzLAorCS8qIHNldF92YWx1ZXNfaG9vawkgKi8gTlVMTCwKKwkvKiBzZXRfdmFsdWVzX2FsbW9zdAkgKi8gWHRJbmhlcml0U2V0VmFsdWVzQWxtb3N0LAorCS8qIGdldF92YWx1ZXNfaG9vawkgKi8gTlVMTCwKKwkvKiBhY2NlcHRfZm9jdXMJCSAqLyBYdEluaGVyaXRBY2NlcHRGb2N1cywKKwkvKiB2ZXJzaW9uCQkgKi8gWHRWZXJzaW9uLAorCS8qIGNhbGxiYWNrX3ByaXZhdGUJICovIE5VTEwsCisJLyogdG1fdGFibGUJCSAqLyBOVUxMLAorCS8qIHF1ZXJ5X2dlb21ldHJ5CSAqLyBOVUxMLAorCS8qIGRpc3BsYXlfYWNjZWxlcmF0b3IJICovIFh0SW5oZXJpdERpc3BsYXlBY2NlbGVyYXRvciwKKwkvKiBleHRlbnNpb24JCSAqLyBOVUxMCiAgICAgfSwKIAogICAgIC8qIHByaW1pdGl2ZV9jbGFzcyBmaWVsZHMgKi8KICAgICB7Ci0JLyogYm9yZGVyIGhpZ2hsaWdodCAgICAgICovIEJvcmRlckhpZ2hsaWdodCwKLQkvKiBib3JkZXJfdW5oaWdobGlnaHQgICAgKi8gQm9yZGVyVW5oaWdobGlnaHQsCi0JLyogdHJhbnNsYXRpb25zICAgICAgICAgICovIFh0SW5oZXJpdFRyYW5zbGF0aW9ucywKLQkvKiBhcm0gYW5kIGFjdGl2YXRlICAgICAgKi8gWG1Jbmhlcml0QXJtQW5kQWN0aXZhdGUsCi0JLyogc3ludGhldGljIHJlc291cmNlcyAgICovIE5VTEwsCi0JLyogbnVtYmVyIG9mIHN5biByZXMgICAgICovIDAsCi0JLyogZXh0ZW5zaW9uICAgICAgICAgICAgICovIE5VTEwsCisJLyogYm9yZGVyIGhpZ2hsaWdodAkgKi8gQm9yZGVySGlnaGxpZ2h0LAorCS8qIGJvcmRlcl91bmhpZ2hsaWdodAkgKi8gQm9yZGVyVW5oaWdobGlnaHQsCisJLyogdHJhbnNsYXRpb25zCQkgKi8gWHRJbmhlcml0VHJhbnNsYXRpb25zLAorCS8qIGFybSBhbmQgYWN0aXZhdGUJICovIFhtSW5oZXJpdEFybUFuZEFjdGl2YXRlLAorCS8qIHN5bnRoZXRpYyByZXNvdXJjZXMJICovIE5VTEwsCisJLyogbnVtYmVyIG9mIHN5biByZXMJICovIDAsCisJLyogZXh0ZW5zaW9uCQkgKi8gTlVMTCwKICAgICB9LAogCiAgICAgLyogbGFiZWxfY2xhc3MgZmllbGRzICovCiAgICAgewotCS8qIHNldE92ZXJyaWRlQ2FsbGJhY2sgICAqLyBYbUluaGVyaXRTZXRPdmVycmlkZUNhbGxiYWNrLAotCS8qIG1lbnVQcm9jcyAgICAgICAgICAgICAqLyBYbUluaGVyaXRNZW51UHJvYywKLQkvKiB0cmFuc2xhdGlvbnMgICAgICAgICAgKi8gWHRJbmhlcml0VHJhbnNsYXRpb25zLAorCS8qIHNldE92ZXJyaWRlQ2FsbGJhY2sJICovIFhtSW5oZXJpdFNldE92ZXJyaWRlQ2FsbGJhY2ssCisJLyogbWVudVByb2NzCQkgKi8gWG1Jbmhlcml0TWVudVByb2MsCisJLyogdHJhbnNsYXRpb25zCQkgKi8gWHRJbmhlcml0VHJhbnNsYXRpb25zLAogCS8qIGV4dGVuc2lvbgkJICovIE5VTEwsCiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvc3JjL2hhcmRjb3B5LmMgYi9zcmMvaGFyZGNvcHkuYwppbmRleCAzYjRjMmQxMi4uNjBjNWU4MyAxMDA2NDQKLS0tIGEvc3JjL2hhcmRjb3B5LmMKKysrIGIvc3JjL2hhcmRjb3B5LmMKQEAgLTEwNiw3ICsxMDYsNyBAQAogIyBkZWZpbmUgT1BUX01CRk9OVF9VU0VDT1VSSUVSICAwCiAjIGRlZmluZSBPUFRfTUJGT05UX0FTQ0lJICAgICAgIDEKICMgZGVmaW5lIE9QVF9NQkZPTlRfUkVHVUxBUiAgICAgMgotIyBkZWZpbmUgT1BUX01CRk9OVF9CT0xEICAgICAgICAzCisjIGRlZmluZSBPUFRfTUJGT05UX0JPTEQJMwogIyBkZWZpbmUgT1BUX01CRk9OVF9PQkxJUVVFICAgICA0CiAjIGRlZmluZSBPUFRfTUJGT05UX0JPTERPQkxJUVVFIDUKICMgZGVmaW5lIE9QVF9NQkZPTlRfTlVNX09QVElPTlMgNgpAQCAtMTA3NSwyMCArMTA3NSwyMCBAQAogI2RlZmluZSBDU19KSVNfQ18xOTc4ICAgKDB4MDEpCiAjZGVmaW5lIENTX0pJU19YXzE5ODMgICAoMHgwMikKICNkZWZpbmUgQ1NfSklTX1hfMTk5MCAgICgweDA0KQotI2RlZmluZSBDU19ORUMgICAgICAgICAgKDB4MDgpCi0jZGVmaW5lIENTX01TV0lORE9XUyAgICAoMHgxMCkKLSNkZWZpbmUgQ1NfQ1A5MzIgICAgICAgICgweDIwKQotI2RlZmluZSBDU19LQU5KSVRBTEs2ICAgKDB4NDApCisjZGVmaW5lIENTX05FQwkJKDB4MDgpCisjZGVmaW5lIENTX01TV0lORE9XUwkoMHgxMCkKKyNkZWZpbmUgQ1NfQ1A5MzIJKDB4MjApCisjZGVmaW5lIENTX0tBTkpJVEFMSzYJKDB4NDApCiAjZGVmaW5lIENTX0tBTkpJVEFMSzcgICAoMHg4MCkKIAogLyogSmFwYW5lc2UgZW5jb2RpbmdzIGFuZCBjaGFyc2V0cyAqLwogc3RhdGljIHN0cnVjdCBwcnRfcHNfZW5jb2RpbmdfUyBqX2VuY29kaW5nc1tdID0KIHsKICAgICB7Imlzby0yMDIyLWpwIiwgTlVMTCwgICAgICAgKENTX0pJU19DXzE5Nzh8Q1NfSklTX1hfMTk4M3xDU19KSVNfWF8xOTkwfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU19ORUMpfSwKLSAgICB7ImV1Yy1qcCIsICAgICAgIkVVQyIsICAgICAgKENTX0pJU19DXzE5Nzh8Q1NfSklTX1hfMTk4M3xDU19KSVNfWF8xOTkwKX0sCi0gICAgeyJzamlzIiwgICAgICAgICJSS1NKIiwgICAgIChDU19KSVNfQ18xOTc4fENTX0pJU19YXzE5ODN8Q1NfTVNXSU5ET1dTfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NfS0FOSklUQUxLNnxDU19LQU5KSVRBTEs3KX0sCisJCQkJCQkJCSAgICBDU19ORUMpfSwKKyAgICB7ImV1Yy1qcCIsCSAgICAiRVVDIiwJKENTX0pJU19DXzE5Nzh8Q1NfSklTX1hfMTk4M3xDU19KSVNfWF8xOTkwKX0sCisgICAgeyJzamlzIiwJICAgICJSS1NKIiwJKENTX0pJU19DXzE5Nzh8Q1NfSklTX1hfMTk4M3xDU19NU1dJTkRPV1N8CisJCQkJCQlDU19LQU5KSVRBTEs2fENTX0tBTkpJVEFMSzcpfSwKICAgICB7ImNwOTMyIiwgICAgICAgIlJLU0oiLCAgICAgQ1NfSklTX1hfMTk4M30sCiAgICAgeyJ1Y3MtMiIsICAgICAgICJVQ1MyIiwgICAgIENTX0pJU19YXzE5OTB9LAogICAgIHsidXRmLTgiLCAgICAgICAiVVRGOCIgLCAgICBDU19KSVNfWF8xOTkwfQpAQCAtMTA5OCw3ICsxMDk4LDcgQEAKICAgICB7IkpJU19DXzE5NzgiLCAgIjc4IiwgICAgICAgQ1NfSklTX0NfMTk3OH0sCiAgICAgeyJKSVNfWF8xOTgzIiwgIE5VTEwsICAgICAgIENTX0pJU19YXzE5ODN9LAogICAgIHsiSklTX1hfMTk5MCIsICAiSG9qbyIsICAgICBDU19KSVNfWF8xOTkwfSwKLSAgICB7Ik5FQyIsICAgICAgICAgIkV4dCIsICAgICAgQ1NfTkVDfSwKKyAgICB7Ik5FQyIsCSAgICAiRXh0IiwJQ1NfTkVDfSwKICAgICB7Ik1TV0lORE9XUyIsICAgIjkwbXMiLCAgICAgQ1NfTVNXSU5ET1dTfSwKICAgICB7IkNQOTMyIiwgICAgICAgIjkwbXMiLCAgICAgQ1NfSklTX1hfMTk4M30sCiAgICAgeyJLQU5KSVRBTEs2IiwgICI4M3B2IiwgICAgIENTX0tBTkpJVEFMSzZ9LApAQCAtMTEwNywxMCArMTEwNywxMCBAQAogCiAjZGVmaW5lIENTX0dCXzIzMTJfODAgICAgICAgKDB4MDEpCiAjZGVmaW5lIENTX0dCVF8xMjM0NV85MCAgICAgKDB4MDIpCi0jZGVmaW5lIENTX0dCSzJLICAgICAgICAgICAgKDB4MDQpCi0jZGVmaW5lIENTX1NDX01BQyAgICAgICAgICAgKDB4MDgpCi0jZGVmaW5lIENTX0dCVF85MF9NQUMgICAgICAgKDB4MTApCi0jZGVmaW5lIENTX0dCSyAgICAgICAgICAgICAgKDB4MjApCisjZGVmaW5lIENTX0dCSzJLCSAgICAoMHgwNCkKKyNkZWZpbmUgQ1NfU0NfTUFDCSAgICAoMHgwOCkKKyNkZWZpbmUgQ1NfR0JUXzkwX01BQwkgICAgKDB4MTApCisjZGVmaW5lIENTX0dCSwkJICAgICgweDIwKQogI2RlZmluZSBDU19TQ19JU08xMDY0NiAgICAgICgweDQwKQogCiAvKiBTaW1wbGlmaWVkIENoaW5lc2UgZW5jb2RpbmdzIGFuZCBjaGFyc2V0cyAqLwpAQCAtMTExOSw4ICsxMTE5LDggQEAKICAgICB7Imlzby0yMDIyIiwgICAgTlVMTCwgICAgICAgKENTX0dCXzIzMTJfODB8Q1NfR0JUXzEyMzQ1XzkwKX0sCiAgICAgeyJnYjE4MDMwIiwgICAgIE5VTEwsICAgICAgIENTX0dCSzJLfSwKICAgICB7ImV1Yy1jbiIsICAgICAgIkVVQyIsICAgICAgKENTX0dCXzIzMTJfODB8Q1NfR0JUXzEyMzQ1XzkwfENTX1NDX01BQ3wKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU19HQlRfOTBfTUFDKX0sCi0gICAgeyJnYmsiLCAgICAgICAgICJFVUMiLCAgICAgIENTX0dCS30sCisJCQkJCQkJCUNTX0dCVF85MF9NQUMpfSwKKyAgICB7ImdiayIsCSAgICAiRVVDIiwJQ1NfR0JLfSwKICAgICB7InVjcy0yIiwgICAgICAgIlVDUzIiLCAgICAgQ1NfU0NfSVNPMTA2NDZ9LAogICAgIHsidXRmLTgiLCAgICAgICAiVVRGOCIsICAgICBDU19TQ19JU08xMDY0Nn0KIH07CkBAIC0xMTI4LDkgKzExMjgsOSBAQAogewogICAgIHsiR0JfMjMxMi04MCIsICAiR0IiLCAgICAgICBDU19HQl8yMzEyXzgwfSwKICAgICB7IkdCVF8xMjM0NS05MCIsIkdCVCIsICAgICAgQ1NfR0JUXzEyMzQ1XzkwfSwKLSAgICB7Ik1BQyIsICAgICAgICAgIkdCcGMiLCAgICAgQ1NfU0NfTUFDfSwKLSAgICB7IkdCVC05MF9NQUMiLCAgIkdCVHBjIiwgICAgQ1NfR0JUXzkwX01BQ30sCi0gICAgeyJHQksiLCAgICAgICAgICJHQksiLCAgICAgIENTX0dCS30sCisgICAgeyJNQUMiLAkgICAgIkdCcGMiLAlDU19TQ19NQUN9LAorICAgIHsiR0JULTkwX01BQyIsICAiR0JUcGMiLAlDU19HQlRfOTBfTUFDfSwKKyAgICB7IkdCSyIsCSAgICAiR0JLIiwJQ1NfR0JLfSwKICAgICB7IkdCMTgwMzAiLCAgICAgIkdCSzJLIiwgICAgQ1NfR0JLMkt9LAogICAgIHsiSVNPMTA2NDYiLCAgICAiVW5pR0IiLCAgICBDU19TQ19JU08xMDY0Nn0KIH07CkBAIC0xMTM4LDI1ICsxMTM4LDI1IEBACiAjZGVmaW5lIENTX0NOU19QTEFORV8xICAgICAgKDB4MDEpCiAjZGVmaW5lIENTX0NOU19QTEFORV8yICAgICAgKDB4MDIpCiAjZGVmaW5lIENTX0NOU19QTEFORV8xXzIgICAgKDB4MDQpCi0jZGVmaW5lIENTX0I1ICAgICAgICAgICAgICAgKDB4MDgpCi0jZGVmaW5lIENTX0VURU4gICAgICAgICAgICAgKDB4MTApCi0jZGVmaW5lIENTX0hLX0dDQ1MgICAgICAgICAgKDB4MjApCi0jZGVmaW5lIENTX0hLX1NDUyAgICAgICAgICAgKDB4NDApCi0jZGVmaW5lIENTX0hLX1NDU19FVEVOICAgICAgKDB4ODApCi0jZGVmaW5lIENTX01USEtMICAgICAgICAgICAgKDB4MTAwKQotI2RlZmluZSBDU19NVEhLUyAgICAgICAgICAgICgweDIwMCkKLSNkZWZpbmUgQ1NfRExIS0wgICAgICAgICAgICAoMHg0MDApCi0jZGVmaW5lIENTX0RMSEtTICAgICAgICAgICAgKDB4ODAwKQotI2RlZmluZSBDU19UQ19JU08xMDY0NiAgICAgICgweDEwMDApCisjZGVmaW5lIENTX0I1CQkgICAgKDB4MDgpCisjZGVmaW5lIENTX0VURU4JCSAgICAoMHgxMCkKKyNkZWZpbmUgQ1NfSEtfR0NDUwkgICAgKDB4MjApCisjZGVmaW5lIENTX0hLX1NDUwkgICAgKDB4NDApCisjZGVmaW5lIENTX0hLX1NDU19FVEVOCSAgICAoMHg4MCkKKyNkZWZpbmUgQ1NfTVRIS0wJICAgICgweDEwMCkKKyNkZWZpbmUgQ1NfTVRIS1MJICAgICgweDIwMCkKKyNkZWZpbmUgQ1NfRExIS0wJICAgICgweDQwMCkKKyNkZWZpbmUgQ1NfRExIS1MJICAgICgweDgwMCkKKyNkZWZpbmUgQ1NfVENfSVNPMTA2NDYJICAgICgweDEwMDApCiAKIC8qIFRyYWRpdGlvbmFsIENoaW5lc2UgZW5jb2RpbmdzIGFuZCBjaGFyc2V0cyAqLwogc3RhdGljIHN0cnVjdCBwcnRfcHNfZW5jb2RpbmdfUyB0Y19lbmNvZGluZ3NbXSA9CiB7CiAgICAgeyJpc28tMjAyMiIsICAgIE5VTEwsICAgICAgIChDU19DTlNfUExBTkVfMXxDU19DTlNfUExBTkVfMil9LAogICAgIHsiZXVjLXR3IiwgICAgICAiRVVDIiwgICAgICBDU19DTlNfUExBTkVfMV8yfSwKLSAgICB7ImJpZzUiLCAgICAgICAgIkI1IiwgICAgICAgKENTX0I1fENTX0VURU58Q1NfSEtfR0NDU3xDU19IS19TQ1N8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU19IS19TQ1NfRVRFTnxDU19NVEhLTHxDU19NVEhLU3xDU19ETEhLTHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NfRExIS1MpfSwKKyAgICB7ImJpZzUiLAkgICAgIkI1IiwJKENTX0I1fENTX0VURU58Q1NfSEtfR0NDU3xDU19IS19TQ1N8CisJCQkJICAgIENTX0hLX1NDU19FVEVOfENTX01USEtMfENTX01USEtTfENTX0RMSEtMfAorCQkJCQkJCQkgICAgQ1NfRExIS1MpfSwKICAgICB7ImNwOTUwIiwgICAgICAgIkI1IiwgICAgICAgQ1NfQjV9LAogICAgIHsidWNzLTIiLCAgICAgICAiVUNTMiIsICAgICBDU19UQ19JU08xMDY0Nn0sCiAgICAgeyJ1dGYtOCIsICAgICAgICJVVEY4IiwgICAgIENTX1RDX0lTTzEwNjQ2fSwKQEAgLTExNjgsMTEgKzExNjgsMTEgQEAKICAgICB7IkNOU18xOTkyXzEiLCAgIkNOUzEiLCAgICAgQ1NfQ05TX1BMQU5FXzF9LAogICAgIHsiQ05TXzE5OTJfMiIsICAiQ05TMiIsICAgICBDU19DTlNfUExBTkVfMn0sCiAgICAgeyJDTlNfMTk5MyIsICAgICJDTlMiLCAgICAgIENTX0NOU19QTEFORV8xXzJ9LAotICAgIHsiQklHNSIsICAgICAgICBOVUxMLCAgICAgICBDU19CNX0sCi0gICAgeyJDUDk1MCIsICAgICAgIE5VTEwsICAgICAgIENTX0I1fSwKLSAgICB7IkVURU4iLCAgICAgICAgIkVUZW4iLCAgICAgQ1NfRVRFTn0sCi0gICAgeyJIS19HQ0NTIiwgICAgICJIS2djY3MiLCAgIENTX0hLX0dDQ1N9LAotICAgIHsiU0NTIiwgICAgICAgICAiSEtzY3MiLCAgICBDU19IS19TQ1N9LAorICAgIHsiQklHNSIsCSAgICBOVUxMLAlDU19CNX0sCisgICAgeyJDUDk1MCIsCSAgICBOVUxMLAlDU19CNX0sCisgICAgeyJFVEVOIiwJICAgICJFVGVuIiwJQ1NfRVRFTn0sCisgICAgeyJIS19HQ0NTIiwgICAgICJIS2djY3MiLAlDU19IS19HQ0NTfSwKKyAgICB7IlNDUyIsCSAgICAiSEtzY3MiLAlDU19IS19TQ1N9LAogICAgIHsiU0NTX0VURU4iLCAgICAiRVRISyIsICAgICBDU19IS19TQ1NfRVRFTn0sCiAgICAgeyJNVEhLTCIsICAgICAgICJIS200NzEiLCAgIENTX01USEtMfSwKICAgICB7Ik1USEtTIiwgICAgICAgIkhLbTMxNCIsICAgQ1NfTVRIS1N9LApAQCAtMTE4MSw4ICsxMTgxLDggQEAKICAgICB7IklTTzEwNjQ2IiwgICAgIlVuaUNOUyIsICAgQ1NfVENfSVNPMTA2NDZ9CiB9OwogCi0jZGVmaW5lIENTX0tSX1hfMTk5MiAgICAgICAgKDB4MDEpCi0jZGVmaW5lIENTX0tSX01BQyAgICAgICAgICAgKDB4MDIpCisjZGVmaW5lIENTX0tSX1hfMTk5MgkgICAgKDB4MDEpCisjZGVmaW5lIENTX0tSX01BQwkgICAgKDB4MDIpCiAjZGVmaW5lIENTX0tSX1hfMTk5Ml9NUyAgICAgKDB4MDQpCiAjZGVmaW5lIENTX0tSX0lTTzEwNjQ2ICAgICAgKDB4MDgpCiAKQEAgLTExOTMsNyArMTE5Myw3IEBACiAgICAgeyJldWMta3IiLCAgICAgICJFVUMiLCAgICAgIChDU19LUl9YXzE5OTJ8Q1NfS1JfTUFDKX0sCiAgICAgeyJqb2hhYiIsICAgICAgICJKb2hhYiIsICAgIENTX0tSX1hfMTk5Mn0sCiAgICAgeyJjcDEzNjEiLCAgICAgICJKb2hhYiIsICAgIENTX0tSX1hfMTk5Mn0sCi0gICAgeyJ1aGMiLCAgICAgICAgICJVSEMiLCAgICAgIENTX0tSX1hfMTk5Ml9NU30sCisgICAgeyJ1aGMiLAkgICAgIlVIQyIsCUNTX0tSX1hfMTk5Ml9NU30sCiAgICAgeyJjcDk0OSIsICAgICAgICJVSEMiLCAgICAgIENTX0tSX1hfMTk5Ml9NU30sCiAgICAgeyJ1Y3MtMiIsICAgICAgICJVQ1MyIiwgICAgIENTX0tSX0lTTzEwNjQ2fSwKICAgICB7InV0Zi04IiwgICAgICAgIlVURjgiLCAgICAgQ1NfS1JfSVNPMTA2NDZ9CkBAIC0xMjAyLDcgKzEyMDIsNyBAQAogewogICAgIHsiS1NfWF8xOTkyIiwgICAiS1NDIiwgICAgICBDU19LUl9YXzE5OTJ9LAogICAgIHsiQ1AxMzYxIiwgICAgICAiS1NDIiwgICAgICBDU19LUl9YXzE5OTJ9LAotICAgIHsiTUFDIiwgICAgICAgICAiS1NDcGMiLCAgICBDU19LUl9NQUN9LAorICAgIHsiTUFDIiwJICAgICJLU0NwYyIsCUNTX0tSX01BQ30sCiAgICAgeyJNU1dJTkRPV1MiLCAgICJLU0NtcyIsICAgIENTX0tSX1hfMTk5Ml9NU30sCiAgICAgeyJDUDk0OSIsICAgICAgICJLU0NtcyIsICAgIENTX0tSX1hfMTk5Ml9NU30sCiAgICAgeyJXQU5TVU5HIiwgICAgICJLU0NtcyIsICAgIENTX0tSX1hfMTk5Ml9NU30sCkBAIC0xMjEyLDQ3ICsxMjEyLDQ3IEBACiAvKiBDb2xsZWN0aW9ucyBvZiBlbmNvZGluZ3MgYW5kIGNoYXJzZXRzIGZvciBtdWx0aS1ieXRlIHByaW50aW5nICovCiBzdHJ1Y3QgcHJ0X3BzX21iZm9udF9TCiB7Ci0gICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIG51bV9lbmNvZGluZ3M7Ci0gICAgc3RydWN0IHBydF9wc19lbmNvZGluZ19TICAgICplbmNvZGluZ3M7Ci0gICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIG51bV9jaGFyc2V0czsKLSAgICBzdHJ1Y3QgcHJ0X3BzX2NoYXJzZXRfUyAgICAgKmNoYXJzZXRzOwotICAgIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAqYXNjaWlfZW5jOwotICAgIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAqZGVmY3M7CisgICAgaW50CQkJCW51bV9lbmNvZGluZ3M7CisgICAgc3RydWN0IHBydF9wc19lbmNvZGluZ19TCSplbmNvZGluZ3M7CisgICAgaW50CQkJCW51bV9jaGFyc2V0czsKKyAgICBzdHJ1Y3QgcHJ0X3BzX2NoYXJzZXRfUwkqY2hhcnNldHM7CisgICAgY2hhcgkJCSphc2NpaV9lbmM7CisgICAgY2hhcgkJCSpkZWZjczsKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgcHJ0X3BzX21iZm9udF9TIHBydF9wc19tYmZvbnRzW10gPQogewogICAgIHsKLSAgICAgICAgTlVNX0VMRU1FTlRTKGpfZW5jb2RpbmdzKSwKLSAgICAgICAgal9lbmNvZGluZ3MsCi0gICAgICAgIE5VTV9FTEVNRU5UUyhqX2NoYXJzZXRzKSwKLSAgICAgICAgal9jaGFyc2V0cywKLSAgICAgICAgImppc19yb21hbiIsCi0gICAgICAgICJKSVNfWF8xOTgzIgorCU5VTV9FTEVNRU5UUyhqX2VuY29kaW5ncyksCisJal9lbmNvZGluZ3MsCisJTlVNX0VMRU1FTlRTKGpfY2hhcnNldHMpLAorCWpfY2hhcnNldHMsCisJImppc19yb21hbiIsCisJIkpJU19YXzE5ODMiCiAgICAgfSwKICAgICB7Ci0gICAgICAgIE5VTV9FTEVNRU5UUyhzY19lbmNvZGluZ3MpLAotICAgICAgICBzY19lbmNvZGluZ3MsCi0gICAgICAgIE5VTV9FTEVNRU5UUyhzY19jaGFyc2V0cyksCi0gICAgICAgIHNjX2NoYXJzZXRzLAotICAgICAgICAiZ2Jfcm9tYW4iLAotICAgICAgICAiR0JfMjMxMi04MCIKKwlOVU1fRUxFTUVOVFMoc2NfZW5jb2RpbmdzKSwKKwlzY19lbmNvZGluZ3MsCisJTlVNX0VMRU1FTlRTKHNjX2NoYXJzZXRzKSwKKwlzY19jaGFyc2V0cywKKwkiZ2Jfcm9tYW4iLAorCSJHQl8yMzEyLTgwIgogICAgIH0sCiAgICAgewotICAgICAgICBOVU1fRUxFTUVOVFModGNfZW5jb2RpbmdzKSwKLSAgICAgICAgdGNfZW5jb2RpbmdzLAotICAgICAgICBOVU1fRUxFTUVOVFModGNfY2hhcnNldHMpLAotICAgICAgICB0Y19jaGFyc2V0cywKLSAgICAgICAgImNuc19yb21hbiIsCi0gICAgICAgICJCSUc1IgorCU5VTV9FTEVNRU5UUyh0Y19lbmNvZGluZ3MpLAorCXRjX2VuY29kaW5ncywKKwlOVU1fRUxFTUVOVFModGNfY2hhcnNldHMpLAorCXRjX2NoYXJzZXRzLAorCSJjbnNfcm9tYW4iLAorCSJCSUc1IgogICAgIH0sCiAgICAgewotICAgICAgICBOVU1fRUxFTUVOVFMoa19lbmNvZGluZ3MpLAotICAgICAgICBrX2VuY29kaW5ncywKLSAgICAgICAgTlVNX0VMRU1FTlRTKGtfY2hhcnNldHMpLAotICAgICAgICBrX2NoYXJzZXRzLAotICAgICAgICAia3Nfcm9tYW4iLAotICAgICAgICAiS1NfWF8xOTkyIgorCU5VTV9FTEVNRU5UUyhrX2VuY29kaW5ncyksCisJa19lbmNvZGluZ3MsCisJTlVNX0VMRU1FTlRTKGtfY2hhcnNldHMpLAorCWtfY2hhcnNldHMsCisJImtzX3JvbWFuIiwKKwkiS1NfWF8xOTkyIgogICAgIH0KIH07CiAjZW5kaWYgLyogRkVBVF9NQllURSAqLwpAQCAtMTI5OSwxOSArMTI5OSwxOSBAQAogI2RlZmluZSBQUlRfUkVTT1VSQ0VfUkVTT1VSQ0UJICAgICJSZXNvdXJjZS0iCiAjZGVmaW5lIFBSVF9SRVNPVVJDRV9QUk9DU0VUCSAgICAiUHJvY1NldCIKICNkZWZpbmUgUFJUX1JFU09VUkNFX0VOQ09ESU5HCSAgICAiRW5jb2RpbmciCi0jZGVmaW5lIFBSVF9SRVNPVVJDRV9DTUFQICAgICAgICAgICAiQ01hcCIKKyNkZWZpbmUgUFJUX1JFU09VUkNFX0NNQVAJICAgICJDTWFwIgogCiAKIC8qIERhdGEgZm9yIHRhYmxlIGJhc2VkIERTQyBjb21tZW50IHJlY29nbml0aW9uLCBlYXN5IHRvIGV4dGVuZCBpZiBWSU0gbmVlZHMgdG8KICAqIHJlYWQgbW9yZSBjb21tZW50cy4gKi8KLSNkZWZpbmUgUFJUX0RTQ19NSVNDX1RZUEUgICAgICAgICAgICgtMSkKLSNkZWZpbmUgUFJUX0RTQ19USVRMRV9UWVBFICAgICAgICAgICgxKQotI2RlZmluZSBQUlRfRFNDX1ZFUlNJT05fVFlQRSAgICAgICAgKDIpCisjZGVmaW5lIFBSVF9EU0NfTUlTQ19UWVBFCSAgICAoLTEpCisjZGVmaW5lIFBSVF9EU0NfVElUTEVfVFlQRQkgICAgKDEpCisjZGVmaW5lIFBSVF9EU0NfVkVSU0lPTl9UWVBFCSAgICAoMikKICNkZWZpbmUgUFJUX0RTQ19FTkRDT01NRU5UU19UWVBFICAgICgzKQogCi0jZGVmaW5lIFBSVF9EU0NfVElUTEUJICAgICAgICAgICAgIiUlVGl0bGU6IgotI2RlZmluZSBQUlRfRFNDX1ZFUlNJT04JICAgICAgICAgICAgIiUlVmVyc2lvbjoiCi0jZGVmaW5lIFBSVF9EU0NfRU5EQ09NTUVOVFMgICAgICAgICAiJSVFbmRDb21tZW50czoiCisjZGVmaW5lIFBSVF9EU0NfVElUTEUJCSAgICAiJSVUaXRsZToiCisjZGVmaW5lIFBSVF9EU0NfVkVSU0lPTgkJICAgICIlJVZlcnNpb246IgorI2RlZmluZSBQUlRfRFNDX0VORENPTU1FTlRTCSAgICAiJSVFbmRDb21tZW50czoiCiAKIHN0cnVjdCBwcnRfZHNjX2NvbW1lbnRfUwogewpAQCAtMTUzOCw3ICsxNTM4LDcgQEAKICAgICBwcnRfd3JpdGVfZmlsZShwcnRfbGluZV9idWZmZXIpOwogI2lmZGVmIEZFQVRfTUJZVEUKICAgICBpZiAocHJ0X291dF9tYnl0ZSkKLSAgICAgICAgc3ByaW50ZigoY2hhciAqKXBydF9saW5lX2J1ZmZlciwgIi8lcyAlZCAlZiAvXyVzIHNmZnNcbiIsCisJc3ByaW50ZigoY2hhciAqKXBydF9saW5lX2J1ZmZlciwgIi8lcyAlZCAlZiAvXyVzIHNmZnNcbiIsCiAJCSAgICAgICBuZXdfbmFtZSwgaGVpZ2h0LCA1MDAuL3BydF9wc19jb3VyaWVyX2ZvbnQud3gsIG5ld19uYW1lKTsKICAgICBlbHNlCiAjZW5kaWYKQEAgLTE3MDQsNyArMTcwNCw3IEBACiAJCXBydF9kb19tb3ZldG8gPSBGQUxTRTsKIAkgICAgfQogCi0gICAgICAgICAgICAvKiBVbmRlcmxpbmUgbGVuZ3RoIG9mIHRleHQgcnVuICovCisJICAgIC8qIFVuZGVybGluZSBsZW5ndGggb2YgdGV4dCBydW4gKi8KIAkgICAgcHJ0X3dyaXRlX3JlYWwocHJ0X3RleHRfcnVuLCAyKTsKIAkgICAgcHJ0X3dyaXRlX3N0cmluZygidWxcbiIpOwogCX0KQEAgLTE3MTIsMTggKzE3MTIsMTggQEAKIAkgKiBOb3RlOiB3ZSB3cml0ZSB0ZXh0IG91dCByYXcgLSBFQkNESUMgY29udmVyc2lvbiBpcyBoYW5kbGVkIGluIHRoZQogCSAqIFBvc3RTY3JpcHQgd29ybGQgdmlhIHRoZSBmb250IGVuY29kaW5nIHZlY3Rvci4gKi8KICNpZmRlZiBGRUFUX01CWVRFCi0gICAgICAgIGlmIChwcnRfb3V0X21ieXRlKQotICAgICAgICAgICAgcHJ0X3dyaXRlX3N0cmluZygiPCIpOwotICAgICAgICBlbHNlCisJaWYgKHBydF9vdXRfbWJ5dGUpCisJICAgIHBydF93cml0ZV9zdHJpbmcoIjwiKTsKKwllbHNlCiAjZW5kaWYKLSAgICAgICAgICAgIHBydF93cml0ZV9zdHJpbmcoIigiKTsKKwkgICAgcHJ0X3dyaXRlX3N0cmluZygiKCIpOwogCXBydF93cml0ZV9maWxlX3Jhd19sZW4ocHJ0X3BzX2J1ZmZlci5nYV9kYXRhLCBwcnRfcHNfYnVmZmVyLmdhX2xlbik7CiAjaWZkZWYgRkVBVF9NQllURQotICAgICAgICBpZiAocHJ0X291dF9tYnl0ZSkKLSAgICAgICAgICAgIHBydF93cml0ZV9zdHJpbmcoIj4iKTsKLSAgICAgICAgZWxzZQorCWlmIChwcnRfb3V0X21ieXRlKQorCSAgICBwcnRfd3JpdGVfc3RyaW5nKCI+Iik7CisJZWxzZQogI2VuZGlmCi0gICAgICAgICAgICBwcnRfd3JpdGVfc3RyaW5nKCIpIik7CisJICAgIHBydF93cml0ZV9zdHJpbmcoIikiKTsKIAkvKiBBZGQgYSBtb3ZldG8gaWYgbmVlZCBiZSBhbmQgdXNlIHRoZSBhcHByb3ByaWF0ZSBzaG93IHByb2NlZHVyZSAqLwogCWlmIChwcnRfZG9fbW92ZXRvKQogCXsKQEAgLTE4MDAsMTkgKzE4MDAsMTkgQEAKICAgICBpbmRleCA9IHBydF9yZXNmaWxlLmxpbmVfZW5kICsgMTsKICAgICB3aGlsZSAoaW5kZXggPCBwcnRfcmVzZmlsZS5sZW4pCiAgICAgewotICAgICAgICBpZiAocHJ0X3Jlc2ZpbGUuYnVmZmVyW2luZGV4XSAhPSBQU0xGICYmIHBydF9yZXNmaWxlLmJ1ZmZlcltpbmRleF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE9IFBTQ1IpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaW5kZXgrKzsKKwlpZiAocHJ0X3Jlc2ZpbGUuYnVmZmVyW2luZGV4XSAhPSBQU0xGICYmIHBydF9yZXNmaWxlLmJ1ZmZlcltpbmRleF0KKwkJCQkJCQkJCSE9IFBTQ1IpCisJICAgIGJyZWFrOworCWluZGV4Kys7CiAgICAgfQogICAgIHBydF9yZXNmaWxlLmxpbmVfc3RhcnQgPSBpbmRleDsKIAogICAgIHdoaWxlIChpbmRleCA8IHBydF9yZXNmaWxlLmxlbikKICAgICB7Ci0gICAgICAgIGlmIChwcnRfcmVzZmlsZS5idWZmZXJbaW5kZXhdID09IFBTTEYgfHwgcHJ0X3Jlc2ZpbGUuYnVmZmVyW2luZGV4XQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gUFNDUikKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpbmRleCsrOworCWlmIChwcnRfcmVzZmlsZS5idWZmZXJbaW5kZXhdID09IFBTTEYgfHwgcHJ0X3Jlc2ZpbGUuYnVmZmVyW2luZGV4XQorCQkJCQkJCQkJPT0gUFNDUikKKwkgICAgYnJlYWs7CisJaW5kZXgrKzsKICAgICB9CiAgICAgcHJ0X3Jlc2ZpbGUubGluZV9lbmQgPSBpbmRleDsKIApAQCAtMTgyNywxMCArMTgyNywxMCBAQAogewogICAgIC8qIEZvcmNlIG5vdCBlcXVhbCBpZiBzdHJpbmcgaXMgbG9uZ2VyIHRoYW4gcmVtYWluZGVyIG9mIGxpbmUgKi8KICAgICBpZiAobGVuID4gKHBydF9yZXNmaWxlLmxpbmVfZW5kIC0gKHBydF9yZXNmaWxlLmxpbmVfc3RhcnQgKyBvZmZzZXQpKSkKLSAgICAgICAgcmV0dXJuIDE7CisJcmV0dXJuIDE7CiAKICAgICByZXR1cm4gU1RSTkNNUCgmcHJ0X3Jlc2ZpbGUuYnVmZmVyW3BydF9yZXNmaWxlLmxpbmVfc3RhcnQgKyBvZmZzZXRdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZywgbGVuKTsKKwkJCQkJCQkJc3RyaW5nLCBsZW4pOwogfQogCiAgICAgc3RhdGljIGludApAQCAtMTg0Miw5ICsxODQyLDkgQEAKICAgICBpbmRleCA9IHBydF9yZXNmaWxlLmxpbmVfc3RhcnQgKyBvZmZzZXQ7CiAgICAgd2hpbGUgKGluZGV4IDwgcHJ0X3Jlc2ZpbGUubGluZV9lbmQpCiAgICAgewotICAgICAgICBpZiAoaXNzcGFjZShwcnRfcmVzZmlsZS5idWZmZXJbaW5kZXhdKSkKLSAgICAgICAgICAgIHJldHVybiBpbmRleCAtIHBydF9yZXNmaWxlLmxpbmVfc3RhcnQ7Ci0gICAgICAgIGluZGV4Kys7CisJaWYgKGlzc3BhY2UocHJ0X3Jlc2ZpbGUuYnVmZmVyW2luZGV4XSkpCisJICAgIHJldHVybiBpbmRleCAtIHBydF9yZXNmaWxlLmxpbmVfc3RhcnQ7CisJaW5kZXgrKzsKICAgICB9CiAgICAgcmV0dXJuIC0xOwogfQpAQCAtMTg1OCw5ICsxODU4LDkgQEAKICAgICBpbmRleCA9IHBydF9yZXNmaWxlLmxpbmVfc3RhcnQgKyBvZmZzZXQ7CiAgICAgd2hpbGUgKGluZGV4IDwgcHJ0X3Jlc2ZpbGUubGluZV9lbmQpCiAgICAgewotICAgICAgICBpZiAoIWlzc3BhY2UocHJ0X3Jlc2ZpbGUuYnVmZmVyW2luZGV4XSkpCi0gICAgICAgICAgICByZXR1cm4gaW5kZXggLSBwcnRfcmVzZmlsZS5saW5lX3N0YXJ0OwotICAgICAgICBpbmRleCsrOworCWlmICghaXNzcGFjZShwcnRfcmVzZmlsZS5idWZmZXJbaW5kZXhdKSkKKwkgICAgcmV0dXJuIGluZGV4IC0gcHJ0X3Jlc2ZpbGUubGluZV9zdGFydDsKKwlpbmRleCsrOwogICAgIH0KICAgICByZXR1cm4gLTE7CiB9CkBAIC0xODc2LDM3ICsxODc2LDM3IEBACiAKICAgICAvKiBNb3ZlIHRvIHN0YXJ0IG9mIG5leHQgbGluZSAqLwogICAgIGlmICghcHJ0X3Jlc2ZpbGVfbmV4dF9saW5lKCkpCi0gICAgICAgIHJldHVybiBGQUxTRTsKKwlyZXR1cm4gRkFMU0U7CiAKICAgICAvKiBEU0MgY29tbWVudHMgYWx3YXlzIHN0YXJ0ICUlICovCiAgICAgaWYgKHBydF9yZXNmaWxlX3N0cm5jbXAoMCwgIiUlIiwgMikgIT0gMCkKLSAgICAgICAgcmV0dXJuIEZBTFNFOworCXJldHVybiBGQUxTRTsKIAogICAgIC8qIEZpbmQgdHlwZSBvZiBEU0MgY29tbWVudCAqLwogICAgIGZvciAoY29tbWVudCA9IDA7IGNvbW1lbnQgPCBOVU1fRUxFTUVOVFMocHJ0X2RzY190YWJsZSk7IGNvbW1lbnQrKykKLSAgICAgICAgaWYgKHBydF9yZXNmaWxlX3N0cm5jbXAoMCwgcHJ0X2RzY190YWJsZVtjb21tZW50XS5zdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBydF9kc2NfdGFibGVbY29tbWVudF0ubGVuKSA9PSAwKQotICAgICAgICAgICAgYnJlYWs7CisJaWYgKHBydF9yZXNmaWxlX3N0cm5jbXAoMCwgcHJ0X2RzY190YWJsZVtjb21tZW50XS5zdHJpbmcsCisJCQkJCSAgICBwcnRfZHNjX3RhYmxlW2NvbW1lbnRdLmxlbikgPT0gMCkKKwkgICAgYnJlYWs7CiAKICAgICBpZiAoY29tbWVudCAhPSBOVU1fRUxFTUVOVFMocHJ0X2RzY190YWJsZSkpCiAgICAgewotICAgICAgICAvKiBSZXR1cm4gdHlwZSBvZiBjb21tZW50ICovCi0gICAgICAgIHBfZHNjX2xpbmUtPnR5cGUgPSBwcnRfZHNjX3RhYmxlW2NvbW1lbnRdLnR5cGU7Ci0gICAgICAgIG9mZnNldCA9IHBydF9kc2NfdGFibGVbY29tbWVudF0ubGVuOworCS8qIFJldHVybiB0eXBlIG9mIGNvbW1lbnQgKi8KKwlwX2RzY19saW5lLT50eXBlID0gcHJ0X2RzY190YWJsZVtjb21tZW50XS50eXBlOworCW9mZnNldCA9IHBydF9kc2NfdGFibGVbY29tbWVudF0ubGVuOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICAvKiBVbnJlY29nbmlzZWQgRFNDIGNvbW1lbnQsIHNraXAgdG8gd3MgYWZ0ZXIgY29tbWVudCBsZWFkZXIgKi8KLSAgICAgICAgcF9kc2NfbGluZS0+dHlwZSA9IFBSVF9EU0NfTUlTQ19UWVBFOwotICAgICAgICBvZmZzZXQgPSBwcnRfcmVzZmlsZV9za2lwX25vbndzKDApOwotICAgICAgICBpZiAob2Zmc2V0ID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworCS8qIFVucmVjb2duaXNlZCBEU0MgY29tbWVudCwgc2tpcCB0byB3cyBhZnRlciBjb21tZW50IGxlYWRlciAqLworCXBfZHNjX2xpbmUtPnR5cGUgPSBQUlRfRFNDX01JU0NfVFlQRTsKKwlvZmZzZXQgPSBwcnRfcmVzZmlsZV9za2lwX25vbndzKDApOworCWlmIChvZmZzZXQgPT0gLTEpCisJICAgIHJldHVybiBGQUxTRTsKICAgICB9CiAKICAgICAvKiBTa2lwIHdzIHRvIGNvbW1lbnQgdmFsdWUgKi8KICAgICBvZmZzZXQgPSBwcnRfcmVzZmlsZV9za2lwX3dzKG9mZnNldCk7CiAgICAgaWYgKG9mZnNldCA9PSAtMSkKLSAgICAgICAgcmV0dXJuIEZBTFNFOworCXJldHVybiBGQUxTRTsKIAogICAgIHBfZHNjX2xpbmUtPnN0cmluZyA9ICZwcnRfcmVzZmlsZS5idWZmZXJbcHJ0X3Jlc2ZpbGUubGluZV9zdGFydCArIG9mZnNldF07CiAgICAgcF9kc2NfbGluZS0+bGVuID0gcHJ0X3Jlc2ZpbGUubGluZV9lbmQgLSAocHJ0X3Jlc2ZpbGUubGluZV9zdGFydCArIG9mZnNldCk7CkBAIC0xOTIxLDEwICsxOTIxLDEwIEBACiBwcnRfb3Blbl9yZXNvdXJjZShyZXNvdXJjZSkKICAgICBzdHJ1Y3QgcHJ0X3BzX3Jlc291cmNlX1MgKnJlc291cmNlOwogewotICAgIGludCAgICAgICAgIG9mZnNldDsKLSAgICBpbnQgICAgICAgICBzZWVuX2FsbDsKLSAgICBpbnQgICAgICAgICBzZWVuX3RpdGxlOwotICAgIGludCAgICAgICAgIHNlZW5fdmVyc2lvbjsKKyAgICBpbnQJCW9mZnNldDsKKyAgICBpbnQJCXNlZW5fYWxsOworICAgIGludAkJc2Vlbl90aXRsZTsKKyAgICBpbnQJCXNlZW5fdmVyc2lvbjsKICAgICBGSUxFCSpmZF9yZXNvdXJjZTsKICAgICBzdHJ1Y3QgcHJ0X2RzY19saW5lX1MgZHNjX2xpbmU7CiAKQEAgLTE5MzgsNyArMTkzOCw3IEBACiAKICAgICAvKiBQYXJzZSBmaXJzdCBsaW5lIHRvIGVuc3VyZSB2YWxpZCByZXNvdXJjZSBmaWxlICovCiAgICAgcHJ0X3Jlc2ZpbGUubGVuID0gKGludClmcmVhZCgoY2hhciAqKXBydF9yZXNmaWxlLmJ1ZmZlciwgc2l6ZW9mKGNoYXJfdSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSVF9GSUxFX0JVRkZFUl9MRU4sIGZkX3Jlc291cmNlKTsKKwkJCQkJICAgIFBSVF9GSUxFX0JVRkZFUl9MRU4sIGZkX3Jlc291cmNlKTsKICAgICBpZiAoZmVycm9yKGZkX3Jlc291cmNlKSkKICAgICB7CiAJRU1TRzIoXygiRTQ1NzogQ2FuJ3QgcmVhZCBQb3N0U2NyaXB0IHJlc291cmNlIGZpbGUgXCIlc1wiIiksCkBAIC0xOTUwLDcgKzE5NTAsNyBAQAogICAgIHBydF9yZXNmaWxlLmxpbmVfZW5kID0gLTE7CiAgICAgcHJ0X3Jlc2ZpbGUubGluZV9zdGFydCA9IDA7CiAgICAgaWYgKCFwcnRfcmVzZmlsZV9uZXh0X2xpbmUoKSkKLSAgICAgICAgcmV0dXJuIEZBTFNFOworCXJldHVybiBGQUxTRTsKIAogICAgIG9mZnNldCA9IDA7CiAKQEAgLTE5NjcsMTAgKzE5NjcsMTAgQEAKICAgICBvZmZzZXQgKz0gKGludClTVFJMRU4oUFJUX1JFU09VUkNFX0hFQURFUik7CiAgICAgb2Zmc2V0ID0gcHJ0X3Jlc2ZpbGVfc2tpcF9ub253cyhvZmZzZXQpOwogICAgIGlmIChvZmZzZXQgPT0gLTEpCi0gICAgICAgIHJldHVybiBGQUxTRTsKKwlyZXR1cm4gRkFMU0U7CiAgICAgb2Zmc2V0ID0gcHJ0X3Jlc2ZpbGVfc2tpcF93cyhvZmZzZXQpOwogICAgIGlmIChvZmZzZXQgPT0gLTEpCi0gICAgICAgIHJldHVybiBGQUxTRTsKKwlyZXR1cm4gRkFMU0U7CiAKICAgICBpZiAocHJ0X3Jlc2ZpbGVfc3RybmNtcChvZmZzZXQsIFBSVF9SRVNPVVJDRV9SRVNPVVJDRSwKIAkJCQkgICAgIChpbnQpU1RSTEVOKFBSVF9SRVNPVVJDRV9SRVNPVVJDRSkpICE9IDApCkBAIC0yMDA4LDMxICsyMDA4LDMxIEBACiAgICAgc2Vlbl9hbGwgPSBGQUxTRTsKICAgICB3aGlsZSAoIXNlZW5fYWxsICYmIHBydF9uZXh0X2RzYygmZHNjX2xpbmUpKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChkc2NfbGluZS50eXBlKQotICAgICAgICB7Ci0gICAgICAgIGNhc2UgUFJUX0RTQ19USVRMRV9UWVBFOgotICAgICAgICAgICAgdmltX3N0cm5jcHkocmVzb3VyY2UtPnRpdGxlLCBkc2NfbGluZS5zdHJpbmcsIGRzY19saW5lLmxlbik7Ci0gICAgICAgICAgICBzZWVuX3RpdGxlID0gVFJVRTsKLSAgICAgICAgICAgIGlmIChzZWVuX3ZlcnNpb24pCi0gICAgICAgICAgICAgICAgc2Vlbl9hbGwgPSBUUlVFOwotICAgICAgICAgICAgYnJlYWs7CisJc3dpdGNoIChkc2NfbGluZS50eXBlKQorCXsKKwljYXNlIFBSVF9EU0NfVElUTEVfVFlQRToKKwkgICAgdmltX3N0cm5jcHkocmVzb3VyY2UtPnRpdGxlLCBkc2NfbGluZS5zdHJpbmcsIGRzY19saW5lLmxlbik7CisJICAgIHNlZW5fdGl0bGUgPSBUUlVFOworCSAgICBpZiAoc2Vlbl92ZXJzaW9uKQorCQlzZWVuX2FsbCA9IFRSVUU7CisJICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgUFJUX0RTQ19WRVJTSU9OX1RZUEU6Ci0gICAgICAgICAgICB2aW1fc3RybmNweShyZXNvdXJjZS0+dmVyc2lvbiwgZHNjX2xpbmUuc3RyaW5nLCBkc2NfbGluZS5sZW4pOwotICAgICAgICAgICAgc2Vlbl92ZXJzaW9uID0gVFJVRTsKLSAgICAgICAgICAgIGlmIChzZWVuX3RpdGxlKQotICAgICAgICAgICAgICAgIHNlZW5fYWxsID0gVFJVRTsKLSAgICAgICAgICAgIGJyZWFrOworCWNhc2UgUFJUX0RTQ19WRVJTSU9OX1RZUEU6CisJICAgIHZpbV9zdHJuY3B5KHJlc291cmNlLT52ZXJzaW9uLCBkc2NfbGluZS5zdHJpbmcsIGRzY19saW5lLmxlbik7CisJICAgIHNlZW5fdmVyc2lvbiA9IFRSVUU7CisJICAgIGlmIChzZWVuX3RpdGxlKQorCQlzZWVuX2FsbCA9IFRSVUU7CisJICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgUFJUX0RTQ19FTkRDT01NRU5UU19UWVBFOgotICAgICAgICAgICAgLyogV29udCBmaW5kIHRpdGxlIG9yIHJlc291cmNlIGFmdGVyIHRoaXMgY29tbWVudCwgc3RvcCBzZWFyY2hpbmcgKi8KLSAgICAgICAgICAgIHNlZW5fYWxsID0gVFJVRTsKLSAgICAgICAgICAgIGJyZWFrOworCWNhc2UgUFJUX0RTQ19FTkRDT01NRU5UU19UWVBFOgorCSAgICAvKiBXb250IGZpbmQgdGl0bGUgb3IgcmVzb3VyY2UgYWZ0ZXIgdGhpcyBjb21tZW50LCBzdG9wIHNlYXJjaGluZyAqLworCSAgICBzZWVuX2FsbCA9IFRSVUU7CisJICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgUFJUX0RTQ19NSVNDX1RZUEU6Ci0gICAgICAgICAgICAvKiBOb3QgaW50ZXJlc3RlZCBpbiB3aGF0ZXZlciBjb21tZW50IHRoaXMgbGluZSBoYWQgKi8KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisJY2FzZSBQUlRfRFNDX01JU0NfVFlQRToKKwkgICAgLyogTm90IGludGVyZXN0ZWQgaW4gd2hhdGV2ZXIgY29tbWVudCB0aGlzIGxpbmUgaGFkICovCisJICAgIGJyZWFrOworCX0KICAgICB9CiAKICAgICBpZiAoIXNlZW5fdGl0bGUgfHwgIXNlZW5fdmVyc2lvbikKQEAgLTIxNTEsMTAgKzIxNTEsMTAgQEAKICAgICBpbnQgICAgIGk7CiAKICAgICBwcnRfZHNjX3Jlc291cmNlcyhyZXNvdXJjZSwgImZvbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHNfZm9udC0+cHNfZm9udG5hbWVbUFJUX1BTX0ZPTlRfUk9NQU5dKTsKKwkJCQkgICAgcHNfZm9udC0+cHNfZm9udG5hbWVbUFJUX1BTX0ZPTlRfUk9NQU5dKTsKICAgICBmb3IgKGkgPSBQUlRfUFNfRk9OVF9CT0xEIDsgaSA8PSBQUlRfUFNfRk9OVF9CT0xET0JMSVFVRSA7IGkrKykKLSAgICAgICAgaWYgKHBzX2ZvbnQtPnBzX2ZvbnRuYW1lW2ldICE9IE5VTEwpCi0gICAgICAgICAgICBwcnRfZHNjX3Jlc291cmNlcyhOVUxMLCAiZm9udCIsIHBzX2ZvbnQtPnBzX2ZvbnRuYW1lW2ldKTsKKwlpZiAocHNfZm9udC0+cHNfZm9udG5hbWVbaV0gIT0gTlVMTCkKKwkgICAgcHJ0X2RzY19yZXNvdXJjZXMoTlVMTCwgImZvbnQiLCBwc19mb250LT5wc19mb250bmFtZVtpXSk7CiB9CiAKICAgICBzdGF0aWMgdm9pZApAQCAtMjIyOCwxOCArMjIyOCwxOCBAQAogI2lmZGVmIEZFQVRfTUJZVEUKICAgICBpZiAocHJ0X291dF9tYnl0ZSkKICAgICB7Ci0gICAgICAgIGludCAgICAgaTsKKwlpbnQgICAgIGk7CiAKLSAgICAgICAgLyogRnJlZSBvZmYgYWxsIENJRCBmb250IG5hbWVzIGNyZWF0ZWQsIGJ1dCBmaXJzdCBjbGVhciBkdXBsaWNhdGUKLSAgICAgICAgICogcG9pbnRlcnMgdG8gdGhlIHNhbWUgc3RyaW5nICh3aGVuIHRoZSBzYW1lIGZvbnQgaXMgdXNlZCBmb3IgbW9yZSB0aGFuCi0gICAgICAgICAqIG9uZSBzdHlsZSkuCi0gICAgICAgICAqLwotICAgICAgICBmb3IgKGkgPSBQUlRfUFNfRk9OVF9ST01BTjsgaSA8PSBQUlRfUFNfRk9OVF9CT0xET0JMSVFVRTsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAocHJ0X3BzX21iX2ZvbnQucHNfZm9udG5hbWVbaV0gIT0gTlVMTCkKLSAgICAgICAgICAgICAgICB2aW1fZnJlZShwcnRfcHNfbWJfZm9udC5wc19mb250bmFtZVtpXSk7Ci0gICAgICAgICAgICBwcnRfcHNfbWJfZm9udC5wc19mb250bmFtZVtpXSA9IE5VTEw7Ci0gICAgICAgIH0KKwkvKiBGcmVlIG9mZiBhbGwgQ0lEIGZvbnQgbmFtZXMgY3JlYXRlZCwgYnV0IGZpcnN0IGNsZWFyIGR1cGxpY2F0ZQorCSAqIHBvaW50ZXJzIHRvIHRoZSBzYW1lIHN0cmluZyAod2hlbiB0aGUgc2FtZSBmb250IGlzIHVzZWQgZm9yIG1vcmUgdGhhbgorCSAqIG9uZSBzdHlsZSkuCisJICovCisJZm9yIChpID0gUFJUX1BTX0ZPTlRfUk9NQU47IGkgPD0gUFJUX1BTX0ZPTlRfQk9MRE9CTElRVUU7IGkrKykKKwl7CisJICAgIGlmIChwcnRfcHNfbWJfZm9udC5wc19mb250bmFtZVtpXSAhPSBOVUxMKQorCQl2aW1fZnJlZShwcnRfcHNfbWJfZm9udC5wc19mb250bmFtZVtpXSk7CisJICAgIHBydF9wc19tYl9mb250LnBzX2ZvbnRuYW1lW2ldID0gTlVMTDsKKwl9CiAgICAgfQogCiAgICAgaWYgKHBydF9kb19jb252KQpAQCAtMjMzNCwxMSArMjMzNCwxMSBAQAogICAgIHsKIAlwcnRfbnVtYmVyX3dpZHRoID0gUFJJTlRfTlVNQkVSX1dJRFRIICogcHJ0X2NoYXJfd2lkdGg7CiAjaWZkZWYgRkVBVF9NQllURQotICAgICAgICAvKiBJZiB3ZSBhcmUgb3V0cHV0dGluZyBtdWx0aS1ieXRlIGNoYXJhY3RlcnMgdGhlbiBsaW5lIG51bWJlcnMgd2lsbCBiZQotICAgICAgICAgKiBwcmludGVkIHdpdGggaGFsZiB3aWR0aCBjaGFyYWN0ZXJzCi0gICAgICAgICAqLwotICAgICAgICBpZiAocHJ0X291dF9tYnl0ZSkKLSAgICAgICAgICAgIHBydF9udW1iZXJfd2lkdGggLz0gMjsKKwkvKiBJZiB3ZSBhcmUgb3V0cHV0dGluZyBtdWx0aS1ieXRlIGNoYXJhY3RlcnMgdGhlbiBsaW5lIG51bWJlcnMgd2lsbCBiZQorCSAqIHByaW50ZWQgd2l0aCBoYWxmIHdpZHRoIGNoYXJhY3RlcnMKKwkgKi8KKwlpZiAocHJ0X291dF9tYnl0ZSkKKwkgICAgcHJ0X251bWJlcl93aWR0aCAvPSAyOwogI2VuZGlmCiAJcHJ0X2xlZnRfbWFyZ2luICs9IHBydF9udW1iZXJfd2lkdGg7CiAgICAgfQpAQCAtMjM1OSw3ICsyMzU5LDcgQEAKIAogICAgIGZvbnRuYW1lID0gKGNoYXIgKilhbGxvYyhuYW1lX2xlbiArIDEpOwogICAgIGlmIChmb250bmFtZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gRkFMU0U7CisJcmV0dXJuIEZBTFNFOwogICAgIHZpbV9zdHJuY3B5KChjaGFyX3UgKilmb250bmFtZSwgbmFtZSwgbmFtZV9sZW4pOwogICAgIHBydF9wc19tYl9mb250LnBzX2ZvbnRuYW1lW2ZvbnRdID0gZm9udG5hbWU7CiAKQEAgLTI0MTgsMTIgKzI0MTgsMTIgQEAKICAgICBwX21iZW5jID0gcF9jbWFwLT5lbmNvZGluZ3M7CiAgICAgZm9yIChtYmVuYyA9IDA7IG1iZW5jIDwgcF9jbWFwLT5udW1fZW5jb2RpbmdzOyBtYmVuYysrKQogICAgIHsKLSAgICAgICAgaWYgKFNUUk5JQ01QKHBfbWJlbmMtPmVuY29kaW5nLCBwX2VuY29kaW5nLCBlbmNfbGVuKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICAqcHBfbWJlbmMgPSBwX21iZW5jOwotICAgICAgICAgICAgcmV0dXJuIFRSVUU7Ci0gICAgICAgIH0KLSAgICAgICAgcF9tYmVuYysrOworCWlmIChTVFJOSUNNUChwX21iZW5jLT5lbmNvZGluZywgcF9lbmNvZGluZywgZW5jX2xlbikgPT0gMCkKKwl7CisJICAgICpwcF9tYmVuYyA9IHBfbWJlbmM7CisJICAgIHJldHVybiBUUlVFOworCX0KKwlwX21iZW5jKys7CiAgICAgfQogICAgIHJldHVybiBGQUxTRTsKIH0KQEAgLTI0NDAsMTcgKzI0NDAsMTcgQEAKIAogICAgIC8qIExvb2sgZm9yIHJlY29nbmlzZWQgY2hhcmFjdGVyIHNldCwgdXNpbmcgZGVmYXVsdCBpZiBvbmUgaXMgbm90IGdpdmVuICovCiAgICAgaWYgKCpwX2NoYXJzZXQgPT0gTlVMKQotICAgICAgICBwX2NoYXJzZXQgPSBwX2NtYXAtPmRlZmNzOworCXBfY2hhcnNldCA9IHBfY21hcC0+ZGVmY3M7CiAgICAgY2hhcl9sZW4gPSAoaW50KVNUUkxFTihwX2NoYXJzZXQpOwogICAgIHBfbWJjaGFyID0gcF9jbWFwLT5jaGFyc2V0czsKICAgICBmb3IgKG1iY2hhciA9IDA7IG1iY2hhciA8IHBfY21hcC0+bnVtX2NoYXJzZXRzOyBtYmNoYXIrKykKICAgICB7Ci0gICAgICAgIGlmIChTVFJOSUNNUChwX21iY2hhci0+Y2hhcnNldCwgcF9jaGFyc2V0LCBjaGFyX2xlbikgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgKnBwX21iY2hhciA9IHBfbWJjaGFyOwotICAgICAgICAgICAgcmV0dXJuIFRSVUU7Ci0gICAgICAgIH0KLSAgICAgICAgcF9tYmNoYXIrKzsKKwlpZiAoU1RSTklDTVAocF9tYmNoYXItPmNoYXJzZXQsIHBfY2hhcnNldCwgY2hhcl9sZW4pID09IDApCisJeworCSAgICAqcHBfbWJjaGFyID0gcF9tYmNoYXI7CisJICAgIHJldHVybiBUUlVFOworCX0KKwlwX21iY2hhcisrOwogICAgIH0KICAgICByZXR1cm4gRkFMU0U7CiB9CkBAIC0yNDczLDggKzI0NzMsOCBAQAogICAgIGRvdWJsZSAgICAgIHRvcDsKICAgICBkb3VibGUgICAgICBib3R0b207CiAjaWZkZWYgRkVBVF9NQllURQotICAgIGludCAgICAgICAgIHByb3BzOwotICAgIGludCAgICAgICAgIGNtYXAgPSAwOworICAgIGludAkJcHJvcHM7CisgICAgaW50CQljbWFwID0gMDsKICAgICBjaGFyX3UJKnBfZW5jb2Rpbmc7CiAgICAgc3RydWN0IHBydF9wc19lbmNvZGluZ19TICpwX21iZW5jOwogICAgIHN0cnVjdCBwcnRfcHNfZW5jb2RpbmdfUyAqcF9tYmVuY19maXJzdDsKQEAgLTI1MDUsNyArMjUwNSw3IEBACiAjaWZkZWYgRkVBVF9NQllURQogICAgIHBfZW5jb2RpbmcgPSBlbmNfc2tpcChwX3BlbmMpOwogICAgIGlmICgqcF9lbmNvZGluZyA9PSBOVUwpCi0gICAgICAgIHBfZW5jb2RpbmcgPSBlbmNfc2tpcChwX2VuYyk7CisJcF9lbmNvZGluZyA9IGVuY19za2lwKHBfZW5jKTsKIAogICAgIC8qIExvb2sgZm9yIHJlY29nbmlzZWQgbXVsdGktYnl0ZSBjb2RpbmcsIGFuZCBpZiB0aGUgY2hhcnNldCBpcyByZWNvZ25pc2VkLgogICAgICAqIFRoaXMgaXMgdG8gY29wZSB3aXRoIHRoZSBmYWN0IHRoYXQgdmFyaW91cyB1bmljb2RlIGVuY29kaW5ncyBhcmUKQEAgLTI1MTQsMTE5ICsyNTE0LDExOSBAQAogICAgIHByb3BzID0gZW5jX2Nhbm9uX3Byb3BzKHBfZW5jb2RpbmcpOwogICAgIGlmICghKHByb3BzICYgRU5DXzhCSVQpICYmICgqcF9wZW5jICE9IE5VTCB8fCAqcF9wbWNzICE9IE5VTCkpCiAgICAgewotICAgICAgICBwX21iZW5jX2ZpcnN0ID0gTlVMTDsKLSAgICAgICAgcF9tYmNoYXIgPSBOVUxMOwotICAgICAgICBmb3IgKGNtYXAgPSAwOyBjbWFwIDwgTlVNX0VMRU1FTlRTKHBydF9wc19tYmZvbnRzKTsgY21hcCsrKQotICAgICAgICAgICAgaWYgKHBydF9tYXRjaF9lbmNvZGluZygoY2hhciAqKXBfZW5jb2RpbmcsICZwcnRfcHNfbWJmb250c1tjbWFwXSwKKwlwX21iZW5jX2ZpcnN0ID0gTlVMTDsKKwlwX21iY2hhciA9IE5VTEw7CisJZm9yIChjbWFwID0gMDsgY21hcCA8IE5VTV9FTEVNRU5UUyhwcnRfcHNfbWJmb250cyk7IGNtYXArKykKKwkgICAgaWYgKHBydF9tYXRjaF9lbmNvZGluZygoY2hhciAqKXBfZW5jb2RpbmcsICZwcnRfcHNfbWJmb250c1tjbWFwXSwKIAkJCQkJCQkJICAgICZwX21iZW5jKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAocF9tYmVuY19maXJzdCA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBwX21iZW5jX2ZpcnN0ID0gcF9tYmVuYzsKLSAgICAgICAgICAgICAgICBpZiAocHJ0X21hdGNoX2NoYXJzZXQoKGNoYXIgKilwX3BtY3MsICZwcnRfcHNfbWJmb250c1tjbWFwXSwKKwkgICAgeworCQlpZiAocF9tYmVuY19maXJzdCA9PSBOVUxMKQorCQkgICAgcF9tYmVuY19maXJzdCA9IHBfbWJlbmM7CisJCWlmIChwcnRfbWF0Y2hfY2hhcnNldCgoY2hhciAqKXBfcG1jcywgJnBydF9wc19tYmZvbnRzW2NtYXBdLAogCQkJCQkJCQkgICAmcF9tYmNoYXIpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKwkJICAgIGJyZWFrOworCSAgICB9CiAKLSAgICAgICAgLyogVXNlIGZpcnN0IGVuY29kaW5nIG1hdGNoZWQgaWYgbm8gY2hhcnNldCBtYXRjaGVkICovCi0gICAgICAgIGlmIChwX21iY2hhciA9PSBOVUxMICYmIHBfbWJlbmNfZmlyc3QgIT0gTlVMTCkKLSAgICAgICAgICAgIHBfbWJlbmMgPSBwX21iZW5jX2ZpcnN0OworCS8qIFVzZSBmaXJzdCBlbmNvZGluZyBtYXRjaGVkIGlmIG5vIGNoYXJzZXQgbWF0Y2hlZCAqLworCWlmIChwX21iY2hhciA9PSBOVUxMICYmIHBfbWJlbmNfZmlyc3QgIT0gTlVMTCkKKwkgICAgcF9tYmVuYyA9IHBfbWJlbmNfZmlyc3Q7CiAgICAgfQogCiAgICAgcHJ0X291dF9tYnl0ZSA9IChwX21iZW5jICE9IE5VTEwpOwogICAgIGlmIChwcnRfb3V0X21ieXRlKQogICAgIHsKLSAgICAgICAgLyogQnVpbGQgQ01hcCBuYW1lIC0gd2lsbCBiZSBzYW1lIGZvciBhbGwgbXVsdGktYnl0ZSBmb250cyB1c2VkICovCi0gICAgICAgIHBydF9jbWFwWzBdID0gTlVMOworCS8qIEJ1aWxkIENNYXAgbmFtZSAtIHdpbGwgYmUgc2FtZSBmb3IgYWxsIG11bHRpLWJ5dGUgZm9udHMgdXNlZCAqLworCXBydF9jbWFwWzBdID0gTlVMOwogCi0gICAgICAgIHBydF9jdXN0b21fY21hcCA9IChwX21iY2hhciA9PSBOVUxMKTsKLSAgICAgICAgaWYgKCFwcnRfY3VzdG9tX2NtYXApCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8qIENoZWNrIGVuY29kaW5nIGFuZCBjaGFyYWN0ZXIgc2V0IGFyZSBjb21wYXRpYmxlICovCi0gICAgICAgICAgICBpZiAoKHBfbWJlbmMtPm5lZWRzX2NoYXJzZXQgJiBwX21iY2hhci0+aGFzX2NoYXJzZXQpID09IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRU1TRyhfKCJFNjczOiBJbmNvbXBhdGlibGUgbXVsdGktYnl0ZSBlbmNvZGluZyBhbmQgY2hhcmFjdGVyIHNldC4iKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgICAgICAgICAgfQorCXBydF9jdXN0b21fY21hcCA9IChwX21iY2hhciA9PSBOVUxMKTsKKwlpZiAoIXBydF9jdXN0b21fY21hcCkKKwl7CisJICAgIC8qIENoZWNrIGVuY29kaW5nIGFuZCBjaGFyYWN0ZXIgc2V0IGFyZSBjb21wYXRpYmxlICovCisJICAgIGlmICgocF9tYmVuYy0+bmVlZHNfY2hhcnNldCAmIHBfbWJjaGFyLT5oYXNfY2hhcnNldCkgPT0gMCkKKwkgICAgeworCQlFTVNHKF8oIkU2NzM6IEluY29tcGF0aWJsZSBtdWx0aS1ieXRlIGVuY29kaW5nIGFuZCBjaGFyYWN0ZXIgc2V0LiIpKTsKKwkJcmV0dXJuIEZBTFNFOworCSAgICB9CiAKLSAgICAgICAgICAgIC8qIEFkZCBjaGFyc2V0IG5hbWUgaWYgbm90IGVtcHR5ICovCi0gICAgICAgICAgICBpZiAocF9tYmNoYXItPmNtYXBfY2hhcnNldCAhPSBOVUxMKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZpbV9zdHJuY3B5KChjaGFyX3UgKilwcnRfY21hcCwKKwkgICAgLyogQWRkIGNoYXJzZXQgbmFtZSBpZiBub3QgZW1wdHkgKi8KKwkgICAgaWYgKHBfbWJjaGFyLT5jbWFwX2NoYXJzZXQgIT0gTlVMTCkKKwkgICAgeworCQl2aW1fc3RybmNweSgoY2hhcl91ICopcHJ0X2NtYXAsCiAJCSAgICAgIChjaGFyX3UgKilwX21iY2hhci0+Y21hcF9jaGFyc2V0LCBzaXplb2YocHJ0X2NtYXApIC0gMyk7Ci0gICAgICAgICAgICAgICAgU1RSQ0FUKHBydF9jbWFwLCAiLSIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgLyogQWRkIGN1c3RvbSBDTWFwIGNoYXJhY3RlciBzZXQgbmFtZSAqLwotICAgICAgICAgICAgaWYgKCpwX3BtY3MgPT0gTlVMKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEVNU0coXygiRTY3NDogcHJpbnRtYmNoYXJzZXQgY2Fubm90IGJlIGVtcHR5IHdpdGggbXVsdGktYnl0ZSBlbmNvZGluZy4iKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmltX3N0cm5jcHkoKGNoYXJfdSAqKXBydF9jbWFwLCBwX3BtY3MsIHNpemVvZihwcnRfY21hcCkgLSAzKTsKLSAgICAgICAgICAgIFNUUkNBVChwcnRfY21hcCwgIi0iKTsKLSAgICAgICAgfQorCQlTVFJDQVQocHJ0X2NtYXAsICItIik7CisJICAgIH0KKwl9CisJZWxzZQorCXsKKwkgICAgLyogQWRkIGN1c3RvbSBDTWFwIGNoYXJhY3RlciBzZXQgbmFtZSAqLworCSAgICBpZiAoKnBfcG1jcyA9PSBOVUwpCisJICAgIHsKKwkJRU1TRyhfKCJFNjc0OiBwcmludG1iY2hhcnNldCBjYW5ub3QgYmUgZW1wdHkgd2l0aCBtdWx0aS1ieXRlIGVuY29kaW5nLiIpKTsKKwkJcmV0dXJuIEZBTFNFOworCSAgICB9CisJICAgIHZpbV9zdHJuY3B5KChjaGFyX3UgKilwcnRfY21hcCwgcF9wbWNzLCBzaXplb2YocHJ0X2NtYXApIC0gMyk7CisJICAgIFNUUkNBVChwcnRfY21hcCwgIi0iKTsKKwl9CiAKLSAgICAgICAgLyogQ01hcCBuYW1lIGVuZHMgd2l0aCAob3B0aW9uYWwpIGVuY29kaW5nIG5hbWUgYW5kIC1IIGZvciBob3Jpem9udGFsICovCi0gICAgICAgIGlmIChwX21iZW5jLT5jbWFwX2VuY29kaW5nICE9IE5VTEwgJiYgU1RSTEVOKHBydF9jbWFwKQorCS8qIENNYXAgbmFtZSBlbmRzIHdpdGggKG9wdGlvbmFsKSBlbmNvZGluZyBuYW1lIGFuZCAtSCBmb3IgaG9yaXpvbnRhbCAqLworCWlmIChwX21iZW5jLT5jbWFwX2VuY29kaW5nICE9IE5VTEwgJiYgU1RSTEVOKHBydF9jbWFwKQogCQkgICAgICArIFNUUkxFTihwX21iZW5jLT5jbWFwX2VuY29kaW5nKSArIDMgPCBzaXplb2YocHJ0X2NtYXApKQotICAgICAgICB7Ci0gICAgICAgICAgICBTVFJDQVQocHJ0X2NtYXAsIHBfbWJlbmMtPmNtYXBfZW5jb2RpbmcpOwotICAgICAgICAgICAgU1RSQ0FUKHBydF9jbWFwLCAiLSIpOwotICAgICAgICB9Ci0gICAgICAgIFNUUkNBVChwcnRfY21hcCwgIkgiKTsKKwl7CisJICAgIFNUUkNBVChwcnRfY21hcCwgcF9tYmVuYy0+Y21hcF9lbmNvZGluZyk7CisJICAgIFNUUkNBVChwcnRfY21hcCwgIi0iKTsKKwl9CisJU1RSQ0FUKHBydF9jbWFwLCAiSCIpOwogCi0gICAgICAgIGlmICghbWJmb250X29wdHNbT1BUX01CRk9OVF9SRUdVTEFSXS5wcmVzZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBFTVNHKF8oIkU2NzU6IE5vIGRlZmF1bHQgZm9udCBzcGVjaWZpZWQgZm9yIG11bHRpLWJ5dGUgcHJpbnRpbmcuIikpOwotICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgICAgICB9CisJaWYgKCFtYmZvbnRfb3B0c1tPUFRfTUJGT05UX1JFR1VMQVJdLnByZXNlbnQpCisJeworCSAgICBFTVNHKF8oIkU2NzU6IE5vIGRlZmF1bHQgZm9udCBzcGVjaWZpZWQgZm9yIG11bHRpLWJ5dGUgcHJpbnRpbmcuIikpOworCSAgICByZXR1cm4gRkFMU0U7CisJfQogCi0gICAgICAgIC8qIERlcml2ZSBDSUQgZm9udCBuYW1lcyB3aXRoIGZhbGxiYWNrcyBpZiBub3QgZGVmaW5lZCAqLwotICAgICAgICBpZiAoIXBydF9idWlsZF9jaWRfZm9udG5hbWUoUFJUX1BTX0ZPTlRfUk9NQU4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYmZvbnRfb3B0c1tPUFRfTUJGT05UX1JFR1VMQVJdLnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1iZm9udF9vcHRzW09QVF9NQkZPTlRfUkVHVUxBUl0uc3RybGVuKSkKLSAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgaWYgKG1iZm9udF9vcHRzW09QVF9NQkZPTlRfQk9MRF0ucHJlc2VudCkKLSAgICAgICAgICAgIGlmICghcHJ0X2J1aWxkX2NpZF9mb250bmFtZShQUlRfUFNfRk9OVF9CT0xELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1iZm9udF9vcHRzW09QVF9NQkZPTlRfQk9MRF0uc3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1iZm9udF9vcHRzW09QVF9NQkZPTlRfQk9MRF0uc3RybGVuKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgICAgIGlmIChtYmZvbnRfb3B0c1tPUFRfTUJGT05UX09CTElRVUVdLnByZXNlbnQpCi0gICAgICAgICAgICBpZiAoIXBydF9idWlsZF9jaWRfZm9udG5hbWUoUFJUX1BTX0ZPTlRfT0JMSVFVRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYmZvbnRfb3B0c1tPUFRfTUJGT05UX09CTElRVUVdLnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYmZvbnRfb3B0c1tPUFRfTUJGT05UX09CTElRVUVdLnN0cmxlbikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgICAgICBpZiAobWJmb250X29wdHNbT1BUX01CRk9OVF9CT0xET0JMSVFVRV0ucHJlc2VudCkKLSAgICAgICAgICAgIGlmICghcHJ0X2J1aWxkX2NpZF9mb250bmFtZShQUlRfUFNfRk9OVF9CT0xET0JMSVFVRSwKKwkvKiBEZXJpdmUgQ0lEIGZvbnQgbmFtZXMgd2l0aCBmYWxsYmFja3MgaWYgbm90IGRlZmluZWQgKi8KKwlpZiAoIXBydF9idWlsZF9jaWRfZm9udG5hbWUoUFJUX1BTX0ZPTlRfUk9NQU4sCisJCQkJICAgIG1iZm9udF9vcHRzW09QVF9NQkZPTlRfUkVHVUxBUl0uc3RyaW5nLAorCQkJCSAgICBtYmZvbnRfb3B0c1tPUFRfTUJGT05UX1JFR1VMQVJdLnN0cmxlbikpCisJICAgIHJldHVybiBGQUxTRTsKKwlpZiAobWJmb250X29wdHNbT1BUX01CRk9OVF9CT0xEXS5wcmVzZW50KQorCSAgICBpZiAoIXBydF9idWlsZF9jaWRfZm9udG5hbWUoUFJUX1BTX0ZPTlRfQk9MRCwKKwkJCQkJbWJmb250X29wdHNbT1BUX01CRk9OVF9CT0xEXS5zdHJpbmcsCisJCQkJCW1iZm9udF9vcHRzW09QVF9NQkZPTlRfQk9MRF0uc3RybGVuKSkKKwkJcmV0dXJuIEZBTFNFOworCWlmIChtYmZvbnRfb3B0c1tPUFRfTUJGT05UX09CTElRVUVdLnByZXNlbnQpCisJICAgIGlmICghcHJ0X2J1aWxkX2NpZF9mb250bmFtZShQUlRfUFNfRk9OVF9PQkxJUVVFLAorCQkJCQltYmZvbnRfb3B0c1tPUFRfTUJGT05UX09CTElRVUVdLnN0cmluZywKKwkJCQkJbWJmb250X29wdHNbT1BUX01CRk9OVF9PQkxJUVVFXS5zdHJsZW4pKQorCQlyZXR1cm4gRkFMU0U7CisJaWYgKG1iZm9udF9vcHRzW09QVF9NQkZPTlRfQk9MRE9CTElRVUVdLnByZXNlbnQpCisJICAgIGlmICghcHJ0X2J1aWxkX2NpZF9mb250bmFtZShQUlRfUFNfRk9OVF9CT0xET0JMSVFVRSwKIAkJCQkgICBtYmZvbnRfb3B0c1tPUFRfTUJGT05UX0JPTERPQkxJUVVFXS5zdHJpbmcsCiAJCQkJICBtYmZvbnRfb3B0c1tPUFRfTUJGT05UX0JPTERPQkxJUVVFXS5zdHJsZW4pKQotICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKwkJcmV0dXJuIEZBTFNFOwogCi0gICAgICAgIC8qIENoZWNrIGlmIG5lZWQgdG8gdXNlIENvdXJpZXIgZm9yIEFTQ0lJIGNvZGUgcmFuZ2UsIGFuZCBpZiBzbyBwaWNrIHVwCi0gICAgICAgICAqIHRoZSBlbmNvZGluZyB0byB1c2UgKi8KLSAgICAgICAgcHJ0X3VzZV9jb3VyaWVyID0gbWJmb250X29wdHNbT1BUX01CRk9OVF9VU0VDT1VSSUVSXS5wcmVzZW50ICYmCi0gICAgICAgICAgICAoVE9MT1dFUl9BU0MobWJmb250X29wdHNbT1BUX01CRk9OVF9VU0VDT1VSSUVSXS5zdHJpbmdbMF0pID09ICd5Jyk7Ci0gICAgICAgIGlmIChwcnRfdXNlX2NvdXJpZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8qIFVzZSBuYXRpb25hbCBBU0NJSSB2YXJpYW50IHVubGVzcyBBU0NJSSB3YW50ZWQgKi8KLSAgICAgICAgICAgIGlmIChtYmZvbnRfb3B0c1tPUFRfTUJGT05UX0FTQ0lJXS5wcmVzZW50ICYmCi0gICAgICAgICAgICAgICAgKFRPTE9XRVJfQVNDKG1iZm9udF9vcHRzW09QVF9NQkZPTlRfQVNDSUldLnN0cmluZ1swXSkgPT0gJ3knKSkKLSAgICAgICAgICAgICAgICBwcnRfYXNjaWlfZW5jb2RpbmcgPSAiYXNjaWkiOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHBydF9hc2NpaV9lbmNvZGluZyA9IHBydF9wc19tYmZvbnRzW2NtYXBdLmFzY2lpX2VuYzsKLSAgICAgICAgfQorCS8qIENoZWNrIGlmIG5lZWQgdG8gdXNlIENvdXJpZXIgZm9yIEFTQ0lJIGNvZGUgcmFuZ2UsIGFuZCBpZiBzbyBwaWNrIHVwCisJICogdGhlIGVuY29kaW5nIHRvIHVzZSAqLworCXBydF91c2VfY291cmllciA9IG1iZm9udF9vcHRzW09QVF9NQkZPTlRfVVNFQ09VUklFUl0ucHJlc2VudCAmJgorCSAgICAoVE9MT1dFUl9BU0MobWJmb250X29wdHNbT1BUX01CRk9OVF9VU0VDT1VSSUVSXS5zdHJpbmdbMF0pID09ICd5Jyk7CisJaWYgKHBydF91c2VfY291cmllcikKKwl7CisJICAgIC8qIFVzZSBuYXRpb25hbCBBU0NJSSB2YXJpYW50IHVubGVzcyBBU0NJSSB3YW50ZWQgKi8KKwkgICAgaWYgKG1iZm9udF9vcHRzW09QVF9NQkZPTlRfQVNDSUldLnByZXNlbnQgJiYKKwkJKFRPTE9XRVJfQVNDKG1iZm9udF9vcHRzW09QVF9NQkZPTlRfQVNDSUldLnN0cmluZ1swXSkgPT0gJ3knKSkKKwkJcHJ0X2FzY2lpX2VuY29kaW5nID0gImFzY2lpIjsKKwkgICAgZWxzZQorCQlwcnRfYXNjaWlfZW5jb2RpbmcgPSBwcnRfcHNfbWJmb250c1tjbWFwXS5hc2NpaV9lbmM7CisJfQogCi0gICAgICAgIHBydF9wc19mb250ID0gJnBydF9wc19tYl9mb250OworCXBydF9wc19mb250ID0gJnBydF9wc19tYl9mb250OwogICAgIH0KICAgICBlbHNlCiAjZW5kaWYKICAgICB7CiAjaWZkZWYgRkVBVF9NQllURQotICAgICAgICBwcnRfdXNlX2NvdXJpZXIgPSBGQUxTRTsKKwlwcnRfdXNlX2NvdXJpZXIgPSBGQUxTRTsKICNlbmRpZgotICAgICAgICBwcnRfcHNfZm9udCA9ICZwcnRfcHNfY291cmllcl9mb250OworCXBydF9wc19mb250ID0gJnBydF9wc19jb3VyaWVyX2ZvbnQ7CiAgICAgfQogCiAgICAgLyoKQEAgLTI3ODAsNyArMjc4MCw3IEBACiAgICAgcHJ0X2J1ZnNpeiA9IHBzZXR0aW5ncy0+Y2hhcnNfcGVyX2xpbmU7CiAjaWZkZWYgRkVBVF9NQllURQogICAgIGlmIChwcnRfb3V0X21ieXRlKQotICAgICAgICBwcnRfYnVmc2l6ICo9IDI7CisJcHJ0X2J1ZnNpeiAqPSAyOwogI2VuZGlmCiAgICAgZ2FfaW5pdDIoJnBydF9wc19idWZmZXIsIChpbnQpc2l6ZW9mKGNoYXIpLCBwcnRfYnVmc2l6KTsKIApAQCAtMjg3Myw3ICsyODczLDcgQEAKICAgICBwcnRfZHNjX3N0YXJ0KCk7CiAgICAgcHJ0X2RzY190ZXh0bGluZSgiVGl0bGUiLCAoY2hhciAqKXBzZXR0aW5ncy0+am9ibmFtZSk7CiAgICAgaWYgKCFnZXRfdXNlcl9uYW1lKChjaGFyX3UgKilidWZmZXIsIDI1NikpCi0gICAgICAgIFNUUkNQWShidWZmZXIsICJVbmtub3duIik7CisJU1RSQ1BZKGJ1ZmZlciwgIlVua25vd24iKTsKICAgICBwcnRfZHNjX3RleHRsaW5lKCJGb3IiLCBidWZmZXIpOwogICAgIHBydF9kc2NfdGV4dGxpbmUoIkNyZWF0b3IiLCBWSU1fVkVSU0lPTl9MT05HKTsKICAgICAvKiBOb3RlOiB0byBlbnN1cmUgQ2xlYW44Yml0IEkgZG9uJ3QgdGhpbmsgd2UgY2FuIHVzZSBMQ19USU1FICovCkBAIC0yOTI5LDE0ICsyOTI5LDE0IEBACiAjaWZkZWYgRkVBVF9NQllURQogICAgIGlmICghcHJ0X291dF9tYnl0ZSB8fCBwcnRfdXNlX2NvdXJpZXIpCiAjZW5kaWYKLSAgICAgICAgcHJ0X2RzY19mb250X3Jlc291cmNlKCJEb2N1bWVudE5lZWRlZFJlc291cmNlcyIsICZwcnRfcHNfY291cmllcl9mb250KTsKKwlwcnRfZHNjX2ZvbnRfcmVzb3VyY2UoIkRvY3VtZW50TmVlZGVkUmVzb3VyY2VzIiwgJnBydF9wc19jb3VyaWVyX2ZvbnQpOwogI2lmZGVmIEZFQVRfTUJZVEUKICAgICBpZiAocHJ0X291dF9tYnl0ZSkKICAgICB7Ci0gICAgICAgIHBydF9kc2NfZm9udF9yZXNvdXJjZSgocHJ0X3VzZV9jb3VyaWVyID8gTlVMTAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiRG9jdW1lbnROZWVkZWRSZXNvdXJjZXMiKSwgJnBydF9wc19tYl9mb250KTsKLSAgICAgICAgaWYgKCFwcnRfY3VzdG9tX2NtYXApCi0gICAgICAgICAgICBwcnRfZHNjX3Jlc291cmNlcyhOVUxMLCAiY21hcCIsIHBydF9jbWFwKTsKKwlwcnRfZHNjX2ZvbnRfcmVzb3VyY2UoKHBydF91c2VfY291cmllciA/IE5VTEwKKwkJCQkgOiAiRG9jdW1lbnROZWVkZWRSZXNvdXJjZXMiKSwgJnBydF9wc19tYl9mb250KTsKKwlpZiAoIXBydF9jdXN0b21fY21hcCkKKwkgICAgcHJ0X2RzY19yZXNvdXJjZXMoTlVMTCwgImNtYXAiLCBwcnRfY21hcCk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTI5NTMsMTYgKzI5NTMsMTYgQEAKICNpZmRlZiBGRUFUX01CWVRFCiAgICAgaWYgKHBydF9vdXRfbWJ5dGUpCiAgICAgewotICAgICAgICAvKiBMb29rIGZvciByZXF1aXJlZCB2ZXJzaW9uIG9mIG11bHRpLWJ5dGUgcHJpbnRpbmcgcHJvY3NldCAqLwotICAgICAgICBpZiAoIXBydF9maW5kX3Jlc291cmNlKCJjaWRmb250IiwgJnJlc19jaWRmb250KSkKLSAgICAgICAgewotICAgICAgICAgICAgRU1TRyhfKCJFNDU2OiBDYW4ndCBmaW5kIFBvc3RTY3JpcHQgcmVzb3VyY2UgZmlsZSBcImNpZGZvbnQucHNcIiIpKTsKLSAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIXBydF9vcGVuX3Jlc291cmNlKCZyZXNfY2lkZm9udCkpCi0gICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgICAgIGlmICghcHJ0X2NoZWNrX3Jlc291cmNlKCZyZXNfY2lkZm9udCwgUFJUX0NJRF9QUk9MT0dfVkVSU0lPTikpCi0gICAgICAgICAgICByZXR1cm4gRkFMU0U7CisJLyogTG9vayBmb3IgcmVxdWlyZWQgdmVyc2lvbiBvZiBtdWx0aS1ieXRlIHByaW50aW5nIHByb2NzZXQgKi8KKwlpZiAoIXBydF9maW5kX3Jlc291cmNlKCJjaWRmb250IiwgJnJlc19jaWRmb250KSkKKwl7CisJICAgIEVNU0coXygiRTQ1NjogQ2FuJ3QgZmluZCBQb3N0U2NyaXB0IHJlc291cmNlIGZpbGUgXCJjaWRmb250LnBzXCIiKSk7CisJICAgIHJldHVybiBGQUxTRTsKKwl9CisJaWYgKCFwcnRfb3Blbl9yZXNvdXJjZSgmcmVzX2NpZGZvbnQpKQorCSAgICByZXR1cm4gRkFMU0U7CisJaWYgKCFwcnRfY2hlY2tfcmVzb3VyY2UoJnJlc19jaWRmb250LCBQUlRfQ0lEX1BST0xPR19WRVJTSU9OKSkKKwkgICAgcmV0dXJuIEZBTFNFOwogICAgIH0KICNlbmRpZgogCkBAIC0yOTc1LDY0ICsyOTc1LDY0IEBACiAgICAgaWYgKCFwcnRfb3V0X21ieXRlKQogICAgIHsKICNlbmRpZgotICAgICAgICBwX2VuY29kaW5nID0gZW5jX3NraXAocF9wZW5jKTsKLSAgICAgICAgaWYgKCpwX2VuY29kaW5nID09IE5VTAotICAgICAgICAgICAgICAgIHx8ICFwcnRfZmluZF9yZXNvdXJjZSgoY2hhciAqKXBfZW5jb2RpbmcsICZyZXNfZW5jb2RpbmcpKQotICAgICAgICB7Ci0gICAgICAgICAgICAvKiAncHJpbnRlbmNvZGluZycgbm90IHNldCBvciBub3Qgc3VwcG9ydGVkIC0gZmluZCBhbHRlcm5hdGUgKi8KKwlwX2VuY29kaW5nID0gZW5jX3NraXAocF9wZW5jKTsKKwlpZiAoKnBfZW5jb2RpbmcgPT0gTlVMCisJCXx8ICFwcnRfZmluZF9yZXNvdXJjZSgoY2hhciAqKXBfZW5jb2RpbmcsICZyZXNfZW5jb2RpbmcpKQorCXsKKwkgICAgLyogJ3ByaW50ZW5jb2RpbmcnIG5vdCBzZXQgb3Igbm90IHN1cHBvcnRlZCAtIGZpbmQgYWx0ZXJuYXRlICovCiAjaWZkZWYgRkVBVF9NQllURQotICAgICAgICAgICAgaW50CQlwcm9wczsKKwkgICAgaW50CQlwcm9wczsKIAotICAgICAgICAgICAgcF9lbmNvZGluZyA9IGVuY19za2lwKHBfZW5jKTsKLSAgICAgICAgICAgIHByb3BzID0gZW5jX2Nhbm9uX3Byb3BzKHBfZW5jb2RpbmcpOwotICAgICAgICAgICAgaWYgKCEocHJvcHMgJiBFTkNfOEJJVCkKLSAgICAgICAgICAgICAgICAgICAgfHwgIXBydF9maW5kX3Jlc291cmNlKChjaGFyICopcF9lbmNvZGluZywgJnJlc19lbmNvZGluZykpCi0gICAgICAgICAgICAgICAgLyogOC1iaXQgJ2VuY29kaW5nJyBpcyBub3Qgc3VwcG9ydGVkICovCisJICAgIHBfZW5jb2RpbmcgPSBlbmNfc2tpcChwX2VuYyk7CisJICAgIHByb3BzID0gZW5jX2Nhbm9uX3Byb3BzKHBfZW5jb2RpbmcpOworCSAgICBpZiAoIShwcm9wcyAmIEVOQ184QklUKQorCQkgICAgfHwgIXBydF9maW5kX3Jlc291cmNlKChjaGFyICopcF9lbmNvZGluZywgJnJlc19lbmNvZGluZykpCisJCS8qIDgtYml0ICdlbmNvZGluZycgaXMgbm90IHN1cHBvcnRlZCAqLwogI2VuZGlmCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8qIFVzZSBsYXRpbjEgYXMgZGVmYXVsdCBwcmludGluZyBlbmNvZGluZyAqLwotICAgICAgICAgICAgICAgIHBfZW5jb2RpbmcgPSAoY2hhcl91ICopImxhdGluMSI7Ci0gICAgICAgICAgICAgICAgaWYgKCFwcnRfZmluZF9yZXNvdXJjZSgoY2hhciAqKXBfZW5jb2RpbmcsICZyZXNfZW5jb2RpbmcpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgRU1TRzIoXygiRTQ1NjogQ2FuJ3QgZmluZCBQb3N0U2NyaXB0IHJlc291cmNlIGZpbGUgXCIlcy5wc1wiIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9lbmNvZGluZyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFwcnRfb3Blbl9yZXNvdXJjZSgmcmVzX2VuY29kaW5nKSkKLSAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgLyogRm9yIHRoZSBtb21lbnQgdGhlcmUgYXJlIG5vIGNoZWNrcyBvbiBlbmNvZGluZyByZXNvdXJjZSBmaWxlcyB0bwotICAgICAgICAgKiBwZXJmb3JtICovCisJCXsKKwkJLyogVXNlIGxhdGluMSBhcyBkZWZhdWx0IHByaW50aW5nIGVuY29kaW5nICovCisJCXBfZW5jb2RpbmcgPSAoY2hhcl91ICopImxhdGluMSI7CisJCWlmICghcHJ0X2ZpbmRfcmVzb3VyY2UoKGNoYXIgKilwX2VuY29kaW5nLCAmcmVzX2VuY29kaW5nKSkKKwkJeworCQkgICAgRU1TRzIoXygiRTQ1NjogQ2FuJ3QgZmluZCBQb3N0U2NyaXB0IHJlc291cmNlIGZpbGUgXCIlcy5wc1wiIiksCisJCQkgICAgcF9lbmNvZGluZyk7CisJCSAgICByZXR1cm4gRkFMU0U7CisJCX0KKwkgICAgfQorCX0KKwlpZiAoIXBydF9vcGVuX3Jlc291cmNlKCZyZXNfZW5jb2RpbmcpKQorCSAgICByZXR1cm4gRkFMU0U7CisJLyogRm9yIHRoZSBtb21lbnQgdGhlcmUgYXJlIG5vIGNoZWNrcyBvbiBlbmNvZGluZyByZXNvdXJjZSBmaWxlcyB0bworCSAqIHBlcmZvcm0gKi8KICNpZmRlZiBGRUFUX01CWVRFCiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHBfZW5jb2RpbmcgPSBlbmNfc2tpcChwX3BlbmMpOwotICAgICAgICBpZiAoKnBfZW5jb2RpbmcgPT0gTlVMKQotICAgICAgICAgICAgcF9lbmNvZGluZyA9IGVuY19za2lwKHBfZW5jKTsKLSAgICAgICAgaWYgKHBydF91c2VfY291cmllcikKLSAgICAgICAgewotICAgICAgICAgICAgLyogSW5jbHVkZSBBU0NJSSByYW5nZSBlbmNvZGluZyB2ZWN0b3IgKi8KLSAgICAgICAgICAgIGlmICghcHJ0X2ZpbmRfcmVzb3VyY2UocHJ0X2FzY2lpX2VuY29kaW5nLCAmcmVzX2VuY29kaW5nKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBFTVNHMihfKCJFNDU2OiBDYW4ndCBmaW5kIFBvc3RTY3JpcHQgcmVzb3VyY2UgZmlsZSBcIiVzLnBzXCIiKSwKKwlwX2VuY29kaW5nID0gZW5jX3NraXAocF9wZW5jKTsKKwlpZiAoKnBfZW5jb2RpbmcgPT0gTlVMKQorCSAgICBwX2VuY29kaW5nID0gZW5jX3NraXAocF9lbmMpOworCWlmIChwcnRfdXNlX2NvdXJpZXIpCisJeworCSAgICAvKiBJbmNsdWRlIEFTQ0lJIHJhbmdlIGVuY29kaW5nIHZlY3RvciAqLworCSAgICBpZiAoIXBydF9maW5kX3Jlc291cmNlKHBydF9hc2NpaV9lbmNvZGluZywgJnJlc19lbmNvZGluZykpCisJICAgIHsKKwkJRU1TRzIoXygiRTQ1NjogQ2FuJ3QgZmluZCBQb3N0U2NyaXB0IHJlc291cmNlIGZpbGUgXCIlcy5wc1wiIiksCiAJCQkJCQkJICBwcnRfYXNjaWlfZW5jb2RpbmcpOwotICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghcHJ0X29wZW5fcmVzb3VyY2UoJnJlc19lbmNvZGluZykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgICAgICAgICAgLyogRm9yIHRoZSBtb21lbnQgdGhlcmUgYXJlIG5vIGNoZWNrcyBvbiBlbmNvZGluZyByZXNvdXJjZSBmaWxlcyB0bwotICAgICAgICAgICAgICogcGVyZm9ybSAqLwotICAgICAgICB9CisJCXJldHVybiBGQUxTRTsKKwkgICAgfQorCSAgICBpZiAoIXBydF9vcGVuX3Jlc291cmNlKCZyZXNfZW5jb2RpbmcpKQorCQlyZXR1cm4gRkFMU0U7CisJICAgIC8qIEZvciB0aGUgbW9tZW50IHRoZXJlIGFyZSBubyBjaGVja3Mgb24gZW5jb2RpbmcgcmVzb3VyY2UgZmlsZXMgdG8KKwkgICAgICogcGVyZm9ybSAqLworCX0KICAgICB9CiAKICAgICBwcnRfY29udi52Y190eXBlID0gQ09OVl9OT05FOwogICAgIGlmICghKGVuY19jYW5vbl9wcm9wcyhwX2VuYykgJiBlbmNfY2Fub25fcHJvcHMocF9lbmNvZGluZykgJiBFTkNfOEJJVCkpIHsKLSAgICAgICAgLyogU2V0IHVwIGVuY29kaW5nIGNvbnZlcnNpb24gaWYgcmVxdWlyZWQgKi8KKwkvKiBTZXQgdXAgZW5jb2RpbmcgY29udmVyc2lvbiBpZiByZXF1aXJlZCAqLwogCWlmIChGQUlMID09IGNvbnZlcnRfc2V0dXAoJnBydF9jb252LCBwX2VuYywgcF9lbmNvZGluZykpCiAJewotICAgICAgICAgICAgRU1TRzIoXygiRTYyMDogVW5hYmxlIHRvIGNvbnZlcnQgdG8gcHJpbnQgZW5jb2RpbmcgXCIlc1wiIiksCisJICAgIEVNU0cyKF8oIkU2MjA6IFVuYWJsZSB0byBjb252ZXJ0IHRvIHByaW50IGVuY29kaW5nIFwiJXNcIiIpLAogCQkgICAgcF9lbmNvZGluZyk7CiAJICAgIHJldHVybiBGQUxTRTsKIAl9CkBAIC0zMDQyLDE1ICszMDQyLDE1IEBACiAKICAgICBpZiAocHJ0X291dF9tYnl0ZSAmJiBwcnRfY3VzdG9tX2NtYXApCiAgICAgewotICAgICAgICAvKiBGaW5kIHVzZXIgc3VwcGxpZWQgQ01hcCAqLwotICAgICAgICBpZiAoIXBydF9maW5kX3Jlc291cmNlKHBydF9jbWFwLCAmcmVzX2NtYXApKQotICAgICAgICB7Ci0gICAgICAgICAgICBFTVNHMihfKCJFNDU2OiBDYW4ndCBmaW5kIFBvc3RTY3JpcHQgcmVzb3VyY2UgZmlsZSBcIiVzLnBzXCIiKSwKKwkvKiBGaW5kIHVzZXIgc3VwcGxpZWQgQ01hcCAqLworCWlmICghcHJ0X2ZpbmRfcmVzb3VyY2UocHJ0X2NtYXAsICZyZXNfY21hcCkpCisJeworCSAgICBFTVNHMihfKCJFNDU2OiBDYW4ndCBmaW5kIFBvc3RTY3JpcHQgcmVzb3VyY2UgZmlsZSBcIiVzLnBzXCIiKSwKIAkJCQkJCQkJICAgIHBydF9jbWFwKTsKLSAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIXBydF9vcGVuX3Jlc291cmNlKCZyZXNfY21hcCkpCi0gICAgICAgICAgICByZXR1cm4gRkFMU0U7CisJICAgIHJldHVybiBGQUxTRTsKKwl9CisJaWYgKCFwcnRfb3Blbl9yZXNvdXJjZSgmcmVzX2NtYXApKQorCSAgICByZXR1cm4gRkFMU0U7CiAgICAgfQogI2VuZGlmCiAKQEAgLTMwNjIsMjYgKzMwNjIsMjYgQEAKICNpZmRlZiBGRUFUX01CWVRFCiAgICAgaWYgKHBydF9vdXRfbWJ5dGUpCiAgICAgewotICAgICAgICBTVFJDUFkoYnVmZmVyLCByZXNfY2lkZm9udC50aXRsZSk7Ci0gICAgICAgIFNUUkNBVChidWZmZXIsICIgIik7Ci0gICAgICAgIFNUUkNBVChidWZmZXIsIHJlc19jaWRmb250LnZlcnNpb24pOwotICAgICAgICBwcnRfZHNjX3Jlc291cmNlcyhOVUxMLCAicHJvY3NldCIsIGJ1ZmZlcik7CisJU1RSQ1BZKGJ1ZmZlciwgcmVzX2NpZGZvbnQudGl0bGUpOworCVNUUkNBVChidWZmZXIsICIgIik7CisJU1RSQ0FUKGJ1ZmZlciwgcmVzX2NpZGZvbnQudmVyc2lvbik7CisJcHJ0X2RzY19yZXNvdXJjZXMoTlVMTCwgInByb2NzZXQiLCBidWZmZXIpOwogCi0gICAgICAgIGlmIChwcnRfY3VzdG9tX2NtYXApCi0gICAgICAgIHsKLSAgICAgICAgICAgIFNUUkNQWShidWZmZXIsIHJlc19jbWFwLnRpdGxlKTsKLSAgICAgICAgICAgIFNUUkNBVChidWZmZXIsICIgIik7Ci0gICAgICAgICAgICBTVFJDQVQoYnVmZmVyLCByZXNfY21hcC52ZXJzaW9uKTsKLSAgICAgICAgICAgIHBydF9kc2NfcmVzb3VyY2VzKE5VTEwsICJjbWFwIiwgYnVmZmVyKTsKLSAgICAgICAgfQorCWlmIChwcnRfY3VzdG9tX2NtYXApCisJeworCSAgICBTVFJDUFkoYnVmZmVyLCByZXNfY21hcC50aXRsZSk7CisJICAgIFNUUkNBVChidWZmZXIsICIgIik7CisJICAgIFNUUkNBVChidWZmZXIsIHJlc19jbWFwLnZlcnNpb24pOworCSAgICBwcnRfZHNjX3Jlc291cmNlcyhOVUxMLCAiY21hcCIsIGJ1ZmZlcik7CisJfQogICAgIH0KICAgICBpZiAoIXBydF9vdXRfbWJ5dGUgfHwgcHJ0X3VzZV9jb3VyaWVyKQogI2VuZGlmCiAgICAgewotICAgICAgICBTVFJDUFkoYnVmZmVyLCByZXNfZW5jb2RpbmcudGl0bGUpOwotICAgICAgICBTVFJDQVQoYnVmZmVyLCAiICIpOwotICAgICAgICBTVFJDQVQoYnVmZmVyLCByZXNfZW5jb2RpbmcudmVyc2lvbik7Ci0gICAgICAgIHBydF9kc2NfcmVzb3VyY2VzKE5VTEwsICJlbmNvZGluZyIsIGJ1ZmZlcik7CisJU1RSQ1BZKGJ1ZmZlciwgcmVzX2VuY29kaW5nLnRpdGxlKTsKKwlTVFJDQVQoYnVmZmVyLCAiICIpOworCVNUUkNBVChidWZmZXIsIHJlc19lbmNvZGluZy52ZXJzaW9uKTsKKwlwcnRfZHNjX3Jlc291cmNlcyhOVUxMLCAiZW5jb2RpbmciLCBidWZmZXIpOwogICAgIH0KICAgICBwcnRfZHNjX3JlcXVpcmVtZW50cyhwcnRfZHVwbGV4LCBwcnRfdHVtYmxlLCBwcnRfY29sbGF0ZSwKICNpZmRlZiBGRUFUX1NZTl9ITApAQCAtMzEwMSwxNCArMzEwMSwxNCBAQAogI2lmZGVmIEZFQVRfTUJZVEUKICAgICBpZiAoIXBydF9vdXRfbWJ5dGUgfHwgcHJ0X3VzZV9jb3VyaWVyKQogI2VuZGlmCi0gICAgICAgIHBydF9kc2NfZm9udF9yZXNvdXJjZSgiUGFnZVJlc291cmNlcyIsICZwcnRfcHNfY291cmllcl9mb250KTsKKwlwcnRfZHNjX2ZvbnRfcmVzb3VyY2UoIlBhZ2VSZXNvdXJjZXMiLCAmcHJ0X3BzX2NvdXJpZXJfZm9udCk7CiAjaWZkZWYgRkVBVF9NQllURQogICAgIGlmIChwcnRfb3V0X21ieXRlKQogICAgIHsKLSAgICAgICAgcHJ0X2RzY19mb250X3Jlc291cmNlKChwcnRfdXNlX2NvdXJpZXIgPyBOVUxMIDogIlBhZ2VSZXNvdXJjZXMiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcnRfcHNfbWJfZm9udCk7Ci0gICAgICAgIGlmICghcHJ0X2N1c3RvbV9jbWFwKQotICAgICAgICAgICAgcHJ0X2RzY19yZXNvdXJjZXMoTlVMTCwgImNtYXAiLCBwcnRfY21hcCk7CisJcHJ0X2RzY19mb250X3Jlc291cmNlKChwcnRfdXNlX2NvdXJpZXIgPyBOVUxMIDogIlBhZ2VSZXNvdXJjZXMiKSwKKwkJCQkJCQkgICAgJnBydF9wc19tYl9mb250KTsKKwlpZiAoIXBydF9jdXN0b21fY21hcCkKKwkgICAgcHJ0X2RzY19yZXNvdXJjZXMoTlVMTCwgImNtYXAiLCBwcnRfY21hcCk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTMxMjgsMjEgKzMxMjgsMjEgQEAKICNpZmRlZiBGRUFUX01CWVRFCiAgICAgaWYgKHBydF9vdXRfbWJ5dGUpCiAgICAgewotICAgICAgICAvKiBBZGQgQ0lEIGZvbnQgcHJvY3NldCwgYW5kIGFueSB1c2VyIHN1cHBsaWVkIENNYXAgKi8KLSAgICAgICAgaWYgKCFwcnRfYWRkX3Jlc291cmNlKCZyZXNfY2lkZm9udCkpCi0gICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgICAgIGlmIChwcnRfY3VzdG9tX2NtYXAgJiYgIXBydF9hZGRfcmVzb3VyY2UoJnJlc19jbWFwKSkKLSAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKwkvKiBBZGQgQ0lEIGZvbnQgcHJvY3NldCwgYW5kIGFueSB1c2VyIHN1cHBsaWVkIENNYXAgKi8KKwlpZiAoIXBydF9hZGRfcmVzb3VyY2UoJnJlc19jaWRmb250KSkKKwkgICAgcmV0dXJuIEZBTFNFOworCWlmIChwcnRfY3VzdG9tX2NtYXAgJiYgIXBydF9hZGRfcmVzb3VyY2UoJnJlc19jbWFwKSkKKwkgICAgcmV0dXJuIEZBTFNFOwogICAgIH0KICNlbmRpZgogCiAjaWZkZWYgRkVBVF9NQllURQogICAgIGlmICghcHJ0X291dF9tYnl0ZSB8fCBwcnRfdXNlX2NvdXJpZXIpCiAjZW5kaWYKLSAgICAgICAgLyogVGhlcmUgd2lsbCBiZSBvbmx5IG9uZSBSb21hbiBmb250IGVuY29kaW5nIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBQUwotICAgICAgICAgKiBmaWxlLiAqLwotICAgICAgICBpZiAoIXBydF9hZGRfcmVzb3VyY2UoJnJlc19lbmNvZGluZykpCi0gICAgICAgICAgICByZXR1cm4gRkFMU0U7CisJLyogVGhlcmUgd2lsbCBiZSBvbmx5IG9uZSBSb21hbiBmb250IGVuY29kaW5nIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBQUworCSAqIGZpbGUuICovCisJaWYgKCFwcnRfYWRkX3Jlc291cmNlKCZyZXNfZW5jb2RpbmcpKQorCSAgICByZXR1cm4gRkFMU0U7CiAKICAgICBwcnRfZHNjX25vYXJnKCJFbmRQcm9sb2ciKTsKIApAQCAtMzE2OCw4MiArMzE2OCw4MiBAQAogI2lmZGVmIEZFQVRfTUJZVEUKICAgICBpZiAoIXBydF9vdXRfbWJ5dGUgfHwgcHJ0X3VzZV9jb3VyaWVyKQogICAgIHsKLSAgICAgICAgLyogV2hlbiB1c2luZyBDb3VyaWVyIGZvciBBU0NJSSByYW5nZSB3aGVuIHByaW50aW5nIG11bHRpLWJ5dGUsIG5lZWQgdG8KLSAgICAgICAgICogcGljayB1cCBBU0NJSSBlbmNvZGluZyB0byB1c2Ugd2l0aCBpdC4gKi8KLSAgICAgICAgaWYgKHBydF91c2VfY291cmllcikKLSAgICAgICAgICAgIHBfZW5jb2RpbmcgPSAoY2hhcl91ICopcHJ0X2FzY2lpX2VuY29kaW5nOworCS8qIFdoZW4gdXNpbmcgQ291cmllciBmb3IgQVNDSUkgcmFuZ2Ugd2hlbiBwcmludGluZyBtdWx0aS1ieXRlLCBuZWVkIHRvCisJICogcGljayB1cCBBU0NJSSBlbmNvZGluZyB0byB1c2Ugd2l0aCBpdC4gKi8KKwlpZiAocHJ0X3VzZV9jb3VyaWVyKQorCSAgICBwX2VuY29kaW5nID0gKGNoYXJfdSAqKXBydF9hc2NpaV9lbmNvZGluZzsKICNlbmRpZgotICAgICAgICBwcnRfZHNjX3Jlc291cmNlcygiSW5jbHVkZVJlc291cmNlIiwgImZvbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBwcnRfcHNfY291cmllcl9mb250LnBzX2ZvbnRuYW1lW1BSVF9QU19GT05UX1JPTUFOXSk7Ci0gICAgICAgIHBydF9kZWZfZm9udCgiRjAiLCAoY2hhciAqKXBfZW5jb2RpbmcsIChpbnQpcHJ0X2xpbmVfaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgcHJ0X3BzX2NvdXJpZXJfZm9udC5wc19mb250bmFtZVtQUlRfUFNfRk9OVF9ST01BTl0pOwotICAgICAgICBwcnRfZHNjX3Jlc291cmNlcygiSW5jbHVkZVJlc291cmNlIiwgImZvbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBwcnRfcHNfY291cmllcl9mb250LnBzX2ZvbnRuYW1lW1BSVF9QU19GT05UX0JPTERdKTsKLSAgICAgICAgcHJ0X2RlZl9mb250KCJGMSIsIChjaGFyICopcF9lbmNvZGluZywgKGludClwcnRfbGluZV9oZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICBwcnRfcHNfY291cmllcl9mb250LnBzX2ZvbnRuYW1lW1BSVF9QU19GT05UX0JPTERdKTsKLSAgICAgICAgcHJ0X2RzY19yZXNvdXJjZXMoIkluY2x1ZGVSZXNvdXJjZSIsICJmb250IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcHJ0X3BzX2NvdXJpZXJfZm9udC5wc19mb250bmFtZVtQUlRfUFNfRk9OVF9PQkxJUVVFXSk7Ci0gICAgICAgIHBydF9kZWZfZm9udCgiRjIiLCAoY2hhciAqKXBfZW5jb2RpbmcsIChpbnQpcHJ0X2xpbmVfaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgcHJ0X3BzX2NvdXJpZXJfZm9udC5wc19mb250bmFtZVtQUlRfUFNfRk9OVF9PQkxJUVVFXSk7Ci0gICAgICAgIHBydF9kc2NfcmVzb3VyY2VzKCJJbmNsdWRlUmVzb3VyY2UiLCAiZm9udCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHBydF9wc19jb3VyaWVyX2ZvbnQucHNfZm9udG5hbWVbUFJUX1BTX0ZPTlRfQk9MRE9CTElRVUVdKTsKLSAgICAgICAgcHJ0X2RlZl9mb250KCJGMyIsIChjaGFyICopcF9lbmNvZGluZywgKGludClwcnRfbGluZV9oZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICBwcnRfcHNfY291cmllcl9mb250LnBzX2ZvbnRuYW1lW1BSVF9QU19GT05UX0JPTERPQkxJUVVFXSk7CisJcHJ0X2RzY19yZXNvdXJjZXMoIkluY2x1ZGVSZXNvdXJjZSIsICJmb250IiwKKwkJCSAgcHJ0X3BzX2NvdXJpZXJfZm9udC5wc19mb250bmFtZVtQUlRfUFNfRk9OVF9ST01BTl0pOworCXBydF9kZWZfZm9udCgiRjAiLCAoY2hhciAqKXBfZW5jb2RpbmcsIChpbnQpcHJ0X2xpbmVfaGVpZ2h0LAorCQkgICAgIHBydF9wc19jb3VyaWVyX2ZvbnQucHNfZm9udG5hbWVbUFJUX1BTX0ZPTlRfUk9NQU5dKTsKKwlwcnRfZHNjX3Jlc291cmNlcygiSW5jbHVkZVJlc291cmNlIiwgImZvbnQiLAorCQkJICBwcnRfcHNfY291cmllcl9mb250LnBzX2ZvbnRuYW1lW1BSVF9QU19GT05UX0JPTERdKTsKKwlwcnRfZGVmX2ZvbnQoIkYxIiwgKGNoYXIgKilwX2VuY29kaW5nLCAoaW50KXBydF9saW5lX2hlaWdodCwKKwkJICAgICBwcnRfcHNfY291cmllcl9mb250LnBzX2ZvbnRuYW1lW1BSVF9QU19GT05UX0JPTERdKTsKKwlwcnRfZHNjX3Jlc291cmNlcygiSW5jbHVkZVJlc291cmNlIiwgImZvbnQiLAorCQkJICBwcnRfcHNfY291cmllcl9mb250LnBzX2ZvbnRuYW1lW1BSVF9QU19GT05UX09CTElRVUVdKTsKKwlwcnRfZGVmX2ZvbnQoIkYyIiwgKGNoYXIgKilwX2VuY29kaW5nLCAoaW50KXBydF9saW5lX2hlaWdodCwKKwkJICAgICBwcnRfcHNfY291cmllcl9mb250LnBzX2ZvbnRuYW1lW1BSVF9QU19GT05UX09CTElRVUVdKTsKKwlwcnRfZHNjX3Jlc291cmNlcygiSW5jbHVkZVJlc291cmNlIiwgImZvbnQiLAorCQkJICBwcnRfcHNfY291cmllcl9mb250LnBzX2ZvbnRuYW1lW1BSVF9QU19GT05UX0JPTERPQkxJUVVFXSk7CisJcHJ0X2RlZl9mb250KCJGMyIsIChjaGFyICopcF9lbmNvZGluZywgKGludClwcnRfbGluZV9oZWlnaHQsCisJCSAgICAgcHJ0X3BzX2NvdXJpZXJfZm9udC5wc19mb250bmFtZVtQUlRfUFNfRk9OVF9CT0xET0JMSVFVRV0pOwogI2lmZGVmIEZFQVRfTUJZVEUKICAgICB9CiAgICAgaWYgKHBydF9vdXRfbWJ5dGUpCiAgICAgewotICAgICAgICAvKiBEZWZpbmUgdGhlIENJRCBmb250cyB0byBiZSB1c2VkIGluIHRoZSBqb2IuICBUeXBpY2FsbHkgQ0pLViBmb250cyBkbwotICAgICAgICAgKiBub3QgaGF2ZSBhbiBpdGFsaWMgZm9ybSBiZWluZyBhIHdlc3Rlcm4gc3R5bGUsIHNvIHdoZXJlIG5vIGZvbnQgaXMKLSAgICAgICAgICogZGVmaW5lZCBmb3IgdGhlc2UgZmFjZXMgVklNIGZhbGxzIGJhY2sgdG8gYW4gZXhpc3RpbmcgZmFjZS4KLSAgICAgICAgICogTm90ZTogaWYgdXNpbmcgQ291cmllciBmb3IgdGhlIEFTQ0lJIHJhbmdlIHRoZW4gdGhlIHByaW50b3V0IHdpbGwKLSAgICAgICAgICogaGF2ZSBib2xkL2l0YWxpYy9ib2xkaXRhbGljIHJlZ2FyZGxlc3Mgb2YgdGhlIHNldHRpbmcgb2YgcHJpbnRtYmZvbnQuCi0gICAgICAgICAqLwotICAgICAgICBwcnRfZHNjX3Jlc291cmNlcygiSW5jbHVkZVJlc291cmNlIiwgImZvbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBwcnRfcHNfbWJfZm9udC5wc19mb250bmFtZVtQUlRfUFNfRk9OVF9ST01BTl0pOwotICAgICAgICBpZiAoIXBydF9jdXN0b21fY21hcCkKLSAgICAgICAgICAgIHBydF9kc2NfcmVzb3VyY2VzKCJJbmNsdWRlUmVzb3VyY2UiLCAiY21hcCIsIHBydF9jbWFwKTsKLSAgICAgICAgcHJ0X2RlZl9jaWRmb250KCJDRjAiLCAoaW50KXBydF9saW5lX2hlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHBydF9wc19tYl9mb250LnBzX2ZvbnRuYW1lW1BSVF9QU19GT05UX1JPTUFOXSk7CisJLyogRGVmaW5lIHRoZSBDSUQgZm9udHMgdG8gYmUgdXNlZCBpbiB0aGUgam9iLglUeXBpY2FsbHkgQ0pLViBmb250cyBkbworCSAqIG5vdCBoYXZlIGFuIGl0YWxpYyBmb3JtIGJlaW5nIGEgd2VzdGVybiBzdHlsZSwgc28gd2hlcmUgbm8gZm9udCBpcworCSAqIGRlZmluZWQgZm9yIHRoZXNlIGZhY2VzIFZJTSBmYWxscyBiYWNrIHRvIGFuIGV4aXN0aW5nIGZhY2UuCisJICogTm90ZTogaWYgdXNpbmcgQ291cmllciBmb3IgdGhlIEFTQ0lJIHJhbmdlIHRoZW4gdGhlIHByaW50b3V0IHdpbGwKKwkgKiBoYXZlIGJvbGQvaXRhbGljL2JvbGRpdGFsaWMgcmVnYXJkbGVzcyBvZiB0aGUgc2V0dGluZyBvZiBwcmludG1iZm9udC4KKwkgKi8KKwlwcnRfZHNjX3Jlc291cmNlcygiSW5jbHVkZVJlc291cmNlIiwgImZvbnQiLAorCQkJICBwcnRfcHNfbWJfZm9udC5wc19mb250bmFtZVtQUlRfUFNfRk9OVF9ST01BTl0pOworCWlmICghcHJ0X2N1c3RvbV9jbWFwKQorCSAgICBwcnRfZHNjX3Jlc291cmNlcygiSW5jbHVkZVJlc291cmNlIiwgImNtYXAiLCBwcnRfY21hcCk7CisJcHJ0X2RlZl9jaWRmb250KCJDRjAiLCAoaW50KXBydF9saW5lX2hlaWdodCwKKwkJCXBydF9wc19tYl9mb250LnBzX2ZvbnRuYW1lW1BSVF9QU19GT05UX1JPTUFOXSk7CiAKLSAgICAgICAgaWYgKHBydF9wc19tYl9mb250LnBzX2ZvbnRuYW1lW1BSVF9QU19GT05UX0JPTERdICE9IE5VTEwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHBydF9kc2NfcmVzb3VyY2VzKCJJbmNsdWRlUmVzb3VyY2UiLCAiZm9udCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcnRfcHNfbWJfZm9udC5wc19mb250bmFtZVtQUlRfUFNfRk9OVF9CT0xEXSk7Ci0gICAgICAgICAgICBpZiAoIXBydF9jdXN0b21fY21hcCkKLSAgICAgICAgICAgICAgICBwcnRfZHNjX3Jlc291cmNlcygiSW5jbHVkZVJlc291cmNlIiwgImNtYXAiLCBwcnRfY21hcCk7Ci0gICAgICAgICAgICBwcnRfZGVmX2NpZGZvbnQoIkNGMSIsIChpbnQpcHJ0X2xpbmVfaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBydF9wc19tYl9mb250LnBzX2ZvbnRuYW1lW1BSVF9QU19GT05UX0JPTERdKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICAvKiBVc2UgUk9NQU4gZm9yIEJPTEQgKi8KLSAgICAgICAgICAgIHBydF9kdXBfY2lkZm9udCgiQ0YwIiwgIkNGMSIpOworCWlmIChwcnRfcHNfbWJfZm9udC5wc19mb250bmFtZVtQUlRfUFNfRk9OVF9CT0xEXSAhPSBOVUxMKQorCXsKKwkgICAgcHJ0X2RzY19yZXNvdXJjZXMoIkluY2x1ZGVSZXNvdXJjZSIsICJmb250IiwKKwkJCSAgICAgIHBydF9wc19tYl9mb250LnBzX2ZvbnRuYW1lW1BSVF9QU19GT05UX0JPTERdKTsKKwkgICAgaWYgKCFwcnRfY3VzdG9tX2NtYXApCisJCXBydF9kc2NfcmVzb3VyY2VzKCJJbmNsdWRlUmVzb3VyY2UiLCAiY21hcCIsIHBydF9jbWFwKTsKKwkgICAgcHJ0X2RlZl9jaWRmb250KCJDRjEiLCAoaW50KXBydF9saW5lX2hlaWdodCwKKwkJCSAgICBwcnRfcHNfbWJfZm9udC5wc19mb250bmFtZVtQUlRfUFNfRk9OVF9CT0xEXSk7CisJfQorCWVsc2UKKwkgICAgLyogVXNlIFJPTUFOIGZvciBCT0xEICovCisJICAgIHBydF9kdXBfY2lkZm9udCgiQ0YwIiwgIkNGMSIpOwogCi0gICAgICAgIGlmIChwcnRfcHNfbWJfZm9udC5wc19mb250bmFtZVtQUlRfUFNfRk9OVF9PQkxJUVVFXSAhPSBOVUxMKQotICAgICAgICB7Ci0gICAgICAgICAgICBwcnRfZHNjX3Jlc291cmNlcygiSW5jbHVkZVJlc291cmNlIiwgImZvbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJ0X3BzX21iX2ZvbnQucHNfZm9udG5hbWVbUFJUX1BTX0ZPTlRfT0JMSVFVRV0pOwotICAgICAgICAgICAgaWYgKCFwcnRfY3VzdG9tX2NtYXApCi0gICAgICAgICAgICAgICAgcHJ0X2RzY19yZXNvdXJjZXMoIkluY2x1ZGVSZXNvdXJjZSIsICJjbWFwIiwgcHJ0X2NtYXApOwotICAgICAgICAgICAgcHJ0X2RlZl9jaWRmb250KCJDRjIiLCAoaW50KXBydF9saW5lX2hlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcnRfcHNfbWJfZm9udC5wc19mb250bmFtZVtQUlRfUFNfRk9OVF9PQkxJUVVFXSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgLyogVXNlIFJPTUFOIGZvciBPQkxJUVVFICovCi0gICAgICAgICAgICBwcnRfZHVwX2NpZGZvbnQoIkNGMCIsICJDRjIiKTsKKwlpZiAocHJ0X3BzX21iX2ZvbnQucHNfZm9udG5hbWVbUFJUX1BTX0ZPTlRfT0JMSVFVRV0gIT0gTlVMTCkKKwl7CisJICAgIHBydF9kc2NfcmVzb3VyY2VzKCJJbmNsdWRlUmVzb3VyY2UiLCAiZm9udCIsCisJCQkgICAgICBwcnRfcHNfbWJfZm9udC5wc19mb250bmFtZVtQUlRfUFNfRk9OVF9PQkxJUVVFXSk7CisJICAgIGlmICghcHJ0X2N1c3RvbV9jbWFwKQorCQlwcnRfZHNjX3Jlc291cmNlcygiSW5jbHVkZVJlc291cmNlIiwgImNtYXAiLCBwcnRfY21hcCk7CisJICAgIHBydF9kZWZfY2lkZm9udCgiQ0YyIiwgKGludClwcnRfbGluZV9oZWlnaHQsCisJCQkgICAgcHJ0X3BzX21iX2ZvbnQucHNfZm9udG5hbWVbUFJUX1BTX0ZPTlRfT0JMSVFVRV0pOworCX0KKwllbHNlCisJICAgIC8qIFVzZSBST01BTiBmb3IgT0JMSVFVRSAqLworCSAgICBwcnRfZHVwX2NpZGZvbnQoIkNGMCIsICJDRjIiKTsKIAotICAgICAgICBpZiAocHJ0X3BzX21iX2ZvbnQucHNfZm9udG5hbWVbUFJUX1BTX0ZPTlRfQk9MRE9CTElRVUVdICE9IE5VTEwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHBydF9kc2NfcmVzb3VyY2VzKCJJbmNsdWRlUmVzb3VyY2UiLCAiZm9udCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcnRfcHNfbWJfZm9udC5wc19mb250bmFtZVtQUlRfUFNfRk9OVF9CT0xET0JMSVFVRV0pOwotICAgICAgICAgICAgaWYgKCFwcnRfY3VzdG9tX2NtYXApCi0gICAgICAgICAgICAgICAgcHJ0X2RzY19yZXNvdXJjZXMoIkluY2x1ZGVSZXNvdXJjZSIsICJjbWFwIiwgcHJ0X2NtYXApOwotICAgICAgICAgICAgcHJ0X2RlZl9jaWRmb250KCJDRjMiLCAoaW50KXBydF9saW5lX2hlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcnRfcHNfbWJfZm9udC5wc19mb250bmFtZVtQUlRfUFNfRk9OVF9CT0xET0JMSVFVRV0pOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIC8qIFVzZSBCT0xEIGZvciBCT0xET0JMSVFVRSAqLwotICAgICAgICAgICAgcHJ0X2R1cF9jaWRmb250KCJDRjEiLCAiQ0YzIik7CisJaWYgKHBydF9wc19tYl9mb250LnBzX2ZvbnRuYW1lW1BSVF9QU19GT05UX0JPTERPQkxJUVVFXSAhPSBOVUxMKQorCXsKKwkgICAgcHJ0X2RzY19yZXNvdXJjZXMoIkluY2x1ZGVSZXNvdXJjZSIsICJmb250IiwKKwkJCSAgICAgIHBydF9wc19tYl9mb250LnBzX2ZvbnRuYW1lW1BSVF9QU19GT05UX0JPTERPQkxJUVVFXSk7CisJICAgIGlmICghcHJ0X2N1c3RvbV9jbWFwKQorCQlwcnRfZHNjX3Jlc291cmNlcygiSW5jbHVkZVJlc291cmNlIiwgImNtYXAiLCBwcnRfY21hcCk7CisJICAgIHBydF9kZWZfY2lkZm9udCgiQ0YzIiwgKGludClwcnRfbGluZV9oZWlnaHQsCisJCQkgICAgcHJ0X3BzX21iX2ZvbnQucHNfZm9udG5hbWVbUFJUX1BTX0ZPTlRfQk9MRE9CTElRVUVdKTsKKwl9CisJZWxzZQorCSAgICAvKiBVc2UgQk9MRCBmb3IgQk9MRE9CTElRVUUgKi8KKwkgICAgcHJ0X2R1cF9jaWRmb250KCJDRjEiLCAiQ0YzIik7CiAgICAgfQogI2VuZGlmCiAKQEAgLTMzMjgsMTAgKzMzMjgsMTAgQEAKICNpZmRlZiBGRUFUX01CWVRFCiAgICAgcHJ0X2luX2FzY2lpID0gIXBydF9vdXRfbWJ5dGU7CiAgICAgaWYgKHBydF9vdXRfbWJ5dGUpCi0gICAgICAgIHBydF93cml0ZV9zdHJpbmcoIkNGMCBzZlxuIik7CisJcHJ0X3dyaXRlX3N0cmluZygiQ0YwIHNmXG4iKTsKICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgcHJ0X3dyaXRlX3N0cmluZygiRjAgc2ZcbiIpOworCXBydF93cml0ZV9zdHJpbmcoIkYwIHNmXG4iKTsKICAgICBwcnRfZmdjb2wgPSBQUkNPTE9SX0JMQUNLOwogICAgIHBydF9iZ2NvbCA9IFBSQ09MT1JfV0hJVEU7CiAgICAgcHJ0X2ZvbnQgPSBQUlRfUFNfRk9OVF9ST01BTjsKQEAgLTMzOTMsOCArMzM5Myw4IEBACiAgICAgZmxvYXQgICAgICAgY2hhcl93aWR0aDsKICAgICBmbG9hdCAgICAgICBuZXh0X3BvczsKICNpZmRlZiBGRUFUX01CWVRFCi0gICAgaW50ICAgICAgICAgaW5fYXNjaWk7Ci0gICAgaW50ICAgICAgICAgaGFsZl93aWR0aDsKKyAgICBpbnQJCWluX2FzY2lpOworICAgIGludAkJaGFsZl93aWR0aDsKICNlbmRpZgogCiAgICAgY2hhcl93aWR0aCA9IHBydF9jaGFyX3dpZHRoOwpAQCAtMzQwOSw0NyArMzQwOSw0NyBAQAogICAgICAqLwogICAgIGlmIChwcnRfdXNlX2NvdXJpZXIpCiAgICAgewotICAgICAgICBpbl9hc2NpaSA9IChsZW4gPT0gMSAmJiAqcCA8IDB4ODApOwotICAgICAgICBpZiAocHJ0X2luX2FzY2lpKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIWluX2FzY2lpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8qIE5vIGxvbmdlciBpbiBBU0NJSSByYW5nZSAtIG5lZWQgdG8gc3dpdGNoIGZvbnQgKi8KLSAgICAgICAgICAgICAgICBwcnRfaW5fYXNjaWkgPSBGQUxTRTsKLSAgICAgICAgICAgICAgICBwcnRfbmVlZF9mb250ID0gVFJVRTsKLSAgICAgICAgICAgICAgICBwcnRfYXR0cmlidXRlX2NoYW5nZSA9IFRSVUU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaW5fYXNjaWkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8qIE5vdyBpbiBBU0NJSSByYW5nZSAtIG5lZWQgdG8gc3dpdGNoIGZvbnQgKi8KLSAgICAgICAgICAgIHBydF9pbl9hc2NpaSA9IFRSVUU7Ci0gICAgICAgICAgICBwcnRfbmVlZF9mb250ID0gVFJVRTsKLSAgICAgICAgICAgIHBydF9hdHRyaWJ1dGVfY2hhbmdlID0gVFJVRTsKLSAgICAgICAgfQorCWluX2FzY2lpID0gKGxlbiA9PSAxICYmICpwIDwgMHg4MCk7CisJaWYgKHBydF9pbl9hc2NpaSkKKwl7CisJICAgIGlmICghaW5fYXNjaWkpCisJICAgIHsKKwkJLyogTm8gbG9uZ2VyIGluIEFTQ0lJIHJhbmdlIC0gbmVlZCB0byBzd2l0Y2ggZm9udCAqLworCQlwcnRfaW5fYXNjaWkgPSBGQUxTRTsKKwkJcHJ0X25lZWRfZm9udCA9IFRSVUU7CisJCXBydF9hdHRyaWJ1dGVfY2hhbmdlID0gVFJVRTsKKwkgICAgfQorCX0KKwllbHNlIGlmIChpbl9hc2NpaSkKKwl7CisJICAgIC8qIE5vdyBpbiBBU0NJSSByYW5nZSAtIG5lZWQgdG8gc3dpdGNoIGZvbnQgKi8KKwkgICAgcHJ0X2luX2FzY2lpID0gVFJVRTsKKwkgICAgcHJ0X25lZWRfZm9udCA9IFRSVUU7CisJICAgIHBydF9hdHRyaWJ1dGVfY2hhbmdlID0gVFJVRTsKKwl9CiAgICAgfQogICAgIGlmIChwcnRfb3V0X21ieXRlKQogICAgIHsKLSAgICAgICAgaGFsZl93aWR0aCA9ICgoKm1iX3B0cjJjZWxscykocCkgPT0gMSk7Ci0gICAgICAgIGlmIChoYWxmX3dpZHRoKQotICAgICAgICAgICAgY2hhcl93aWR0aCAvPSAyOwotICAgICAgICBpZiAocHJ0X2hhbGZfd2lkdGgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghaGFsZl93aWR0aCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBwcnRfaGFsZl93aWR0aCA9IEZBTFNFOwotICAgICAgICAgICAgICAgIHBydF9wb3NfeCArPSBwcnRfY2hhcl93aWR0aC80OwotICAgICAgICAgICAgICAgIHBydF9uZWVkX21vdmV0byA9IFRSVUU7Ci0gICAgICAgICAgICAgICAgcHJ0X2F0dHJpYnV0ZV9jaGFuZ2UgPSBUUlVFOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGhhbGZfd2lkdGgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHBydF9oYWxmX3dpZHRoID0gVFJVRTsKLSAgICAgICAgICAgIHBydF9wb3NfeCArPSBwcnRfY2hhcl93aWR0aC80OwotICAgICAgICAgICAgcHJ0X25lZWRfbW92ZXRvID0gVFJVRTsKLSAgICAgICAgICAgIHBydF9hdHRyaWJ1dGVfY2hhbmdlID0gVFJVRTsKLSAgICAgICAgfQorCWhhbGZfd2lkdGggPSAoKCptYl9wdHIyY2VsbHMpKHApID09IDEpOworCWlmIChoYWxmX3dpZHRoKQorCSAgICBjaGFyX3dpZHRoIC89IDI7CisJaWYgKHBydF9oYWxmX3dpZHRoKQorCXsKKwkgICAgaWYgKCFoYWxmX3dpZHRoKQorCSAgICB7CisJCXBydF9oYWxmX3dpZHRoID0gRkFMU0U7CisJCXBydF9wb3NfeCArPSBwcnRfY2hhcl93aWR0aC80OworCQlwcnRfbmVlZF9tb3ZldG8gPSBUUlVFOworCQlwcnRfYXR0cmlidXRlX2NoYW5nZSA9IFRSVUU7CisJICAgIH0KKwl9CisJZWxzZSBpZiAoaGFsZl93aWR0aCkKKwl7CisJICAgIHBydF9oYWxmX3dpZHRoID0gVFJVRTsKKwkgICAgcHJ0X3Bvc194ICs9IHBydF9jaGFyX3dpZHRoLzQ7CisJICAgIHBydF9uZWVkX21vdmV0byA9IFRSVUU7CisJICAgIHBydF9hdHRyaWJ1dGVfY2hhbmdlID0gVFJVRTsKKwl9CiAgICAgfQogI2VuZGlmCiAKQEAgLTM0NzMsMTQgKzM0NzMsMTQgQEAKIAlpZiAocHJ0X25lZWRfZm9udCkKIAl7CiAjaWZkZWYgRkVBVF9NQllURQotICAgICAgICAgICAgaWYgKCFwcnRfaW5fYXNjaWkpCi0gICAgICAgICAgICAgICAgcHJ0X3dyaXRlX3N0cmluZygiQ0YiKTsKLSAgICAgICAgICAgIGVsc2UKKwkgICAgaWYgKCFwcnRfaW5fYXNjaWkpCisJCXBydF93cml0ZV9zdHJpbmcoIkNGIik7CisJICAgIGVsc2UKICNlbmRpZgotICAgICAgICAgICAgICAgIHBydF93cml0ZV9zdHJpbmcoIkYiKTsKLSAgICAgICAgICAgIHBydF93cml0ZV9pbnQocHJ0X2ZvbnQpOwotICAgICAgICAgICAgcHJ0X3dyaXRlX3N0cmluZygic2ZcbiIpOwotICAgICAgICAgICAgcHJ0X25lZWRfZm9udCA9IEZBTFNFOworCQlwcnRfd3JpdGVfc3RyaW5nKCJGIik7CisJICAgIHBydF93cml0ZV9pbnQocHJ0X2ZvbnQpOworCSAgICBwcnRfd3JpdGVfc3RyaW5nKCJzZlxuIik7CisJICAgIHBydF9uZWVkX2ZvbnQgPSBGQUxTRTsKIAl9CiAJaWYgKHBydF9uZWVkX2ZnY29sKQogCXsKQEAgLTM1MjksNjAgKzM1MjksNjAgQEAKIAogICAgIGlmIChwcnRfb3V0X21ieXRlKQogICAgIHsKLSAgICAgICAgLyogTXVsdGktYnl0ZSBjaGFyYWN0ZXIgc3RyaW5ncyBhcmUgcmVwcmVzZW50ZWQgbW9yZSBlZmZpY2llbnRseSBhcyBoZXgKLSAgICAgICAgICogc3RyaW5ncyB3aGVuIG91dHB1dHRpbmcgY2xlYW4gOCBiaXQgUFMuCi0gICAgICAgICAqLwotICAgICAgICBkbwotICAgICAgICB7Ci0gICAgICAgICAgIGNoID0gcHJ0X2hleGNoYXJbKHVuc2lnbmVkKSgqcCkgPj4gNF07Ci0gICAgICAgICAgIGdhX2FwcGVuZCgmcHJ0X3BzX2J1ZmZlciwgY2gpOwotICAgICAgICAgICBjaCA9IHBydF9oZXhjaGFyWygqcCkgJiAweGZdOwotICAgICAgICAgICBnYV9hcHBlbmQoJnBydF9wc19idWZmZXIsIGNoKTsKLSAgICAgICAgICAgcCsrOwotICAgICAgICB9Ci0gICAgICAgIHdoaWxlICgtLWxlbik7CisJLyogTXVsdGktYnl0ZSBjaGFyYWN0ZXIgc3RyaW5ncyBhcmUgcmVwcmVzZW50ZWQgbW9yZSBlZmZpY2llbnRseSBhcyBoZXgKKwkgKiBzdHJpbmdzIHdoZW4gb3V0cHV0dGluZyBjbGVhbiA4IGJpdCBQUy4KKwkgKi8KKwlkbworCXsKKwkgICAgY2ggPSBwcnRfaGV4Y2hhclsodW5zaWduZWQpKCpwKSA+PiA0XTsKKwkgICAgZ2FfYXBwZW5kKCZwcnRfcHNfYnVmZmVyLCBjaCk7CisJICAgIGNoID0gcHJ0X2hleGNoYXJbKCpwKSAmIDB4Zl07CisJICAgIGdhX2FwcGVuZCgmcHJ0X3BzX2J1ZmZlciwgY2gpOworCSAgICBwKys7CisJfQorCXdoaWxlICgtLWxlbik7CiAgICAgfQogICAgIGVsc2UKICNlbmRpZgogICAgIHsKLSAgICAgICAgLyogQWRkIG5leHQgY2hhcmFjdGVyIHRvIGJ1ZmZlciBvZiBjaGFyYWN0ZXJzIHRvIG91dHB1dC4KLSAgICAgICAgICogTm90ZTogT25lIHByaW50ZWQgY2hhcmFjdGVyIG1heSByZXF1aXJlIHNldmVyYWwgUFMgY2hhcmFjdGVycyB0bwotICAgICAgICAgKiByZXByZXNlbnQgaXQsIGJ1dCB3ZSBvbmx5IGNvdW50IHRoZW0gYXMgb25lIHByaW50ZWQgY2hhcmFjdGVyLgotICAgICAgICAgKi8KLSAgICAgICAgY2ggPSAqcDsKLSAgICAgICAgaWYgKGNoIDwgMzIgfHwgY2ggPT0gJygnIHx8IGNoID09ICcpJyB8fCBjaCA9PSAnXFwnKQotICAgICAgICB7Ci0gICAgICAgICAgICAvKiBDb252ZXJ0IG5vbi1wcmludGluZyBjaGFyYWN0ZXJzIHRvIGVpdGhlciB0aGVpciBlc2NhcGUgb3Igb2N0YWwKLSAgICAgICAgICAgICAqIHNlcXVlbmNlLCBlbnN1cmVzIFBTIHNlbnQgb3ZlciBhIHNlcmlhbCBsaW5lIGRvZXMgbm90IGludGVyZmVyZQotICAgICAgICAgICAgICogd2l0aCB0aGUgY29tbXMgcHJvdG9jb2wuICBOb3RlOiBGb3IgRUJDRElDIHdlIG5lZWQgdG8gd3JpdGUgb3V0Ci0gICAgICAgICAgICAgKiB0aGUgZXNjYXBlIHNlcXVlbmNlcyBhcyBBU0NJSSBjb2RlcyEKKwkvKiBBZGQgbmV4dCBjaGFyYWN0ZXIgdG8gYnVmZmVyIG9mIGNoYXJhY3RlcnMgdG8gb3V0cHV0LgorCSAqIE5vdGU6IE9uZSBwcmludGVkIGNoYXJhY3RlciBtYXkgcmVxdWlyZSBzZXZlcmFsIFBTIGNoYXJhY3RlcnMgdG8KKwkgKiByZXByZXNlbnQgaXQsIGJ1dCB3ZSBvbmx5IGNvdW50IHRoZW0gYXMgb25lIHByaW50ZWQgY2hhcmFjdGVyLgorCSAqLworCWNoID0gKnA7CisJaWYgKGNoIDwgMzIgfHwgY2ggPT0gJygnIHx8IGNoID09ICcpJyB8fCBjaCA9PSAnXFwnKQorCXsKKwkgICAgLyogQ29udmVydCBub24tcHJpbnRpbmcgY2hhcmFjdGVycyB0byBlaXRoZXIgdGhlaXIgZXNjYXBlIG9yIG9jdGFsCisJICAgICAqIHNlcXVlbmNlLCBlbnN1cmVzIFBTIHNlbnQgb3ZlciBhIHNlcmlhbCBsaW5lIGRvZXMgbm90IGludGVyZmVyZQorCSAgICAgKiB3aXRoIHRoZSBjb21tcyBwcm90b2NvbC4gIE5vdGU6IEZvciBFQkNESUMgd2UgbmVlZCB0byB3cml0ZSBvdXQKKwkgICAgICogdGhlIGVzY2FwZSBzZXF1ZW5jZXMgYXMgQVNDSUkgY29kZXMhCiAJICAgICAqIE5vdGUgMjogQ2hhciBjb2RlcyA8IDMyIGFyZSBpZGVudGljYWwgaW4gRUJDRElDIGFuZCBBU0NJSSBBRkFJSyEKIAkgICAgICovCi0gICAgICAgICAgICBnYV9hcHBlbmQoJnBydF9wc19idWZmZXIsIElGX0VCKCdcXCcsIDAxMzQpKTsKLSAgICAgICAgICAgIHN3aXRjaCAoY2gpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBCUzogICBnYV9hcHBlbmQoJnBydF9wc19idWZmZXIsIElGX0VCKCdiJywgMDE0MikpOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIFRBQjogIGdhX2FwcGVuZCgmcHJ0X3BzX2J1ZmZlciwgSUZfRUIoJ3QnLCAwMTY0KSk7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgTkw6ICAgZ2FfYXBwZW5kKCZwcnRfcHNfYnVmZmVyLCBJRl9FQignbicsIDAxNTYpKTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBGRjogICBnYV9hcHBlbmQoJnBydF9wc19idWZmZXIsIElGX0VCKCdmJywgMDE0NikpOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENBUjogIGdhX2FwcGVuZCgmcHJ0X3BzX2J1ZmZlciwgSUZfRUIoJ3InLCAwMTYyKSk7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgJygnOiAgZ2FfYXBwZW5kKCZwcnRfcHNfYnVmZmVyLCBJRl9FQignKCcsIDAwNTApKTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAnKSc6ICBnYV9hcHBlbmQoJnBydF9wc19idWZmZXIsIElGX0VCKCcpJywgMDA1MSkpOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlICdcXCc6IGdhX2FwcGVuZCgmcHJ0X3BzX2J1ZmZlciwgSUZfRUIoJ1xcJywgMDEzNCkpOyBicmVhazsKKwkgICAgZ2FfYXBwZW5kKCZwcnRfcHNfYnVmZmVyLCBJRl9FQignXFwnLCAwMTM0KSk7CisJICAgIHN3aXRjaCAoY2gpCisJICAgIHsKKwkJY2FzZSBCUzogICBnYV9hcHBlbmQoJnBydF9wc19idWZmZXIsIElGX0VCKCdiJywgMDE0MikpOyBicmVhazsKKwkJY2FzZSBUQUI6ICBnYV9hcHBlbmQoJnBydF9wc19idWZmZXIsIElGX0VCKCd0JywgMDE2NCkpOyBicmVhazsKKwkJY2FzZSBOTDogICBnYV9hcHBlbmQoJnBydF9wc19idWZmZXIsIElGX0VCKCduJywgMDE1NikpOyBicmVhazsKKwkJY2FzZSBGRjogICBnYV9hcHBlbmQoJnBydF9wc19idWZmZXIsIElGX0VCKCdmJywgMDE0NikpOyBicmVhazsKKwkJY2FzZSBDQVI6ICBnYV9hcHBlbmQoJnBydF9wc19idWZmZXIsIElGX0VCKCdyJywgMDE2MikpOyBicmVhazsKKwkJY2FzZSAnKCc6ICBnYV9hcHBlbmQoJnBydF9wc19idWZmZXIsIElGX0VCKCcoJywgMDA1MCkpOyBicmVhazsKKwkJY2FzZSAnKSc6ICBnYV9hcHBlbmQoJnBydF9wc19idWZmZXIsIElGX0VCKCcpJywgMDA1MSkpOyBicmVhazsKKwkJY2FzZSAnXFwnOiBnYV9hcHBlbmQoJnBydF9wc19idWZmZXIsIElGX0VCKCdcXCcsIDAxMzQpKTsgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ByaW50ZigoY2hhciAqKWNoX2J1ZmYsICIlMDNvIiwgKHVuc2lnbmVkIGludCljaCk7CisJCWRlZmF1bHQ6CisJCQkgICBzcHJpbnRmKChjaGFyICopY2hfYnVmZiwgIiUwM28iLCAodW5zaWduZWQgaW50KWNoKTsKICNpZmRlZiBFQkNESUMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGViY2RpYzJhc2NpaShjaF9idWZmLCAzKTsKKwkJCSAgIGViY2RpYzJhc2NpaShjaF9idWZmLCAzKTsKICNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FfYXBwZW5kKCZwcnRfcHNfYnVmZmVyLCBjaF9idWZmWzBdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhX2FwcGVuZCgmcHJ0X3BzX2J1ZmZlciwgY2hfYnVmZlsxXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBnYV9hcHBlbmQoJnBydF9wc19idWZmZXIsIGNoX2J1ZmZbMl0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZ2FfYXBwZW5kKCZwcnRfcHNfYnVmZmVyLCBjaCk7CisJCQkgICBnYV9hcHBlbmQoJnBydF9wc19idWZmZXIsIGNoX2J1ZmZbMF0pOworCQkJICAgZ2FfYXBwZW5kKCZwcnRfcHNfYnVmZmVyLCBjaF9idWZmWzFdKTsKKwkJCSAgIGdhX2FwcGVuZCgmcHJ0X3BzX2J1ZmZlciwgY2hfYnVmZlsyXSk7CisJCQkgICBicmVhazsKKwkgICAgfQorCX0KKwllbHNlCisJICAgIGdhX2FwcGVuZCgmcHJ0X3BzX2J1ZmZlciwgY2gpOwogICAgIH0KIAogI2lmZGVmIEZFQVRfTUJZVEUKQEAgLTM1OTcsNyArMzU5Nyw3IEBACiAgICAgLyogVGhlIGRvd25zaWRlIG9mIGZwIC0gdXNlIHJlbGF0aXZlIGVycm9yIG9uIHJpZ2h0IG1hcmdpbiBjaGVjayAqLwogICAgIG5leHRfcG9zID0gcHJ0X3Bvc194ICsgcHJ0X2NoYXJfd2lkdGg7CiAgICAgbmVlZF9icmVhayA9IChuZXh0X3BvcyA+IHBydF9yaWdodF9tYXJnaW4pICYmCi0gICAgICAgICAgICAgICAgICAgICgobmV4dF9wb3MgLSBwcnRfcmlnaHRfbWFyZ2luKSA+IChwcnRfcmlnaHRfbWFyZ2luKjFlLTUpKTsKKwkJICAgICgobmV4dF9wb3MgLSBwcnRfcmlnaHRfbWFyZ2luKSA+IChwcnRfcmlnaHRfbWFyZ2luKjFlLTUpKTsKIAogICAgIGlmIChuZWVkX2JyZWFrKQogCXBydF9mbHVzaF9idWZmZXIoKTsKZGlmZiAtLWdpdCBhL3NyYy9pZl9tenNjaC5jIGIvc3JjL2lmX216c2NoLmMKaW5kZXggNDg3NDg1MS4uNzA2ZjRjYSAxMDA2NDQKLS0tIGEvc3JjL2lmX216c2NoLmMKKysrIGIvc3JjL2lmX216c2NoLmMKQEAgLTgyMyw3ICs4MjMsNyBAQAogCSAgICByZXR1cm4gLTE7CiAJfQogI2VuZGlmCi0gICAgICAgIHN0YXJ0dXBfbXpzY2hlbWUoKTsKKwlzdGFydHVwX216c2NoZW1lKCk7CiAKIAlpZiAobXpzY2hlbWVfaW9faW5pdCgpKQogCSAgICByZXR1cm4gLTE7CkBAIC05MTEsNyArOTExLDcgQEAKICAgICBpZiAoIXZhbHVlKQogICAgIHsKIAl2YWx1ZSA9IGV4dHJhY3RfZXhuX21lc3NhZ2UoZXhuKTsKLSAgICAgICAgLyogR290IGFuIGV4bj8gKi8KKwkvKiBHb3QgYW4gZXhuPyAqLwogCWlmICh2YWx1ZSkKIAl7CiAJICAgIHNjaGVtZV9kaXNwbGF5KHZhbHVlLCBjdXJlcnIpOyAgLyogIFNlbmQgdG8gc3RkZXJyLXZpbSAqLwpAQCAtOTUyLDcgKzk1Miw4IEBACiB7CiAgICAgaWYgKGJ1Zi0+Yl9tenNjaGVtZV9yZWYpCiAgICAgewotICAgICAgICB2aW1fbXpfYnVmZmVyICpicDsKKwl2aW1fbXpfYnVmZmVyICpicDsKKwogCWJwID0gYnVmLT5iX216c2NoZW1lX3JlZjsKIAlicC0+YnVmID0gSU5WQUxJRF9CVUZGRVJfVkFMVUU7CiAJYnVmLT5iX216c2NoZW1lX3JlZiA9IE5VTEw7CkBAIC0xMDgzLDE2ICsxMDg0LDE2IEBACiAgICAgewogCWNoYXIgKmUgPQogCSAgICAiKGxhbWJkYSAodGh1bmspICIKLQkgICAgICAgICIod2l0aC1oYW5kbGVycyAoW3ZvaWQgKGxhbWJkYSAoZXhuKSAoY29ucyAjZiBleG4pKV0pICIKKwkJIih3aXRoLWhhbmRsZXJzIChbdm9pZCAobGFtYmRhIChleG4pIChjb25zICNmIGV4bikpXSkgIgogCQkiKGNvbnMgI3QgKHRodW5rKSkpKSI7CiAKLSAgICAgICAgLyogbWFrZSBzdXJlIHdlIGhhdmUgYSBuYW1lc3BhY2Ugd2l0aCB0aGUgc3RhbmRhcmQgc3ludGF4OiAqLworCS8qIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgbmFtZXNwYWNlIHdpdGggdGhlIHN0YW5kYXJkIHN5bnRheDogKi8KIAlTY2hlbWVfRW52ICplbnYgPSAoU2NoZW1lX0VudiAqKXNjaGVtZV9tYWtlX25hbWVzcGFjZSgwLCBOVUxMKTsKIAlhZGRfdmltX2V4bihlbnYpOwogCi0gICAgICAgIGV4bl9jYXRjaGluZ19hcHBseSA9IHNjaGVtZV9ldmFsX3N0cmluZyhlLCBlbnYpOworCWV4bl9jYXRjaGluZ19hcHBseSA9IHNjaGVtZV9ldmFsX3N0cmluZyhlLCBlbnYpOwogCWV4bl9wID0gc2NoZW1lX2xvb2t1cF9nbG9iYWwoc2NoZW1lX2ludGVybl9zeW1ib2woImV4bj8iKSwgZW52KTsKLSAgICAgICAgZXhuX21lc3NhZ2UgPSBzY2hlbWVfbG9va3VwX2dsb2JhbCgKKwlleG5fbWVzc2FnZSA9IHNjaGVtZV9sb29rdXBfZ2xvYmFsKAogCQlzY2hlbWVfaW50ZXJuX3N5bWJvbCgiZXhuLW1lc3NhZ2UiKSwgZW52KTsKICAgICB9CiB9CkBAIC0xMzQ2LDE0ICsxMzQ3LDE0IEBACiAgICAgY2FzZSAxOgogCXJldHVybiBzY2hlbWVfbWFrZV9pbnRlZ2VyX3ZhbHVlKHZhbHVlKTsKICAgICBjYXNlIDA6Ci0gICAgICAgIHJ2YWwgPSBzY2hlbWVfbWFrZV9zdHJpbmcoc3RydmFsKTsKKwlydmFsID0gc2NoZW1lX21ha2Vfc3RyaW5nKHN0cnZhbCk7CiAJdmltX2ZyZWUoc3RydmFsKTsKIAlyZXR1cm4gcnZhbDsKICAgICBjYXNlIC0xOgogICAgIGNhc2UgLTI6Ci0gICAgICAgIHJhaXNlX3ZpbV9leG4oXygiaGlkZGVuIG9wdGlvbiIpKTsKKwlyYWlzZV92aW1fZXhuKF8oImhpZGRlbiBvcHRpb24iKSk7CiAgICAgY2FzZSAtMzoKLSAgICAgICAgcmFpc2VfdmltX2V4bihfKCJ1bmtub3duIG9wdGlvbiIpKTsKKwlyYWlzZV92aW1fZXhuKF8oInVua25vd24gb3B0aW9uIikpOwogICAgIH0KICAgICAvKiB1bnJlYWNoYWJsZSAqLwogICAgIHJldHVybiBzY2hlbWVfdm9pZDsKQEAgLTE0NDUsNyArMTQ0Niw3IEBACiAgICAgbGlzdCA9IHNjaGVtZV9udWxsOwogCiAgICAgZm9yICh3ID0gZmlyc3R3aW47IHcgIT0gTlVMTDsgdyA9IHctPndfbmV4dCkKLSAgICAgICAgaWYgKHctPndfYnVmZmVyID09IGJ1Zi0+YnVmKQorCWlmICh3LT53X2J1ZmZlciA9PSBidWYtPmJ1ZikKIAkgICAgbGlzdCA9IHNjaGVtZV9tYWtlX3BhaXIod2luZG93X25ldyh3KSwgbGlzdCk7CiAKICAgICByZXR1cm4gbGlzdDsKQEAgLTE1MDYsNyArMTUwNyw3IEBACiAJc2NoZW1lX3NpZ25hbF9lcnJvcihfKCJ3aW5kb3cgaW5kZXggaXMgb3V0IG9mIHJhbmdlIikpOwogCiAgICAgZm9yICh3aW4gPSBmaXJzdHdpbjsgd2luICE9IE5VTEw7IHdpbiA9IHdpbi0+d19uZXh0LCAtLWZudW0pCi0gICAgICAgIGlmIChmbnVtID09IDEpCSAgICAvKiB0byBiZSAxLWJhc2VkICovCisJaWYgKGZudW0gPT0gMSkJICAgIC8qIHRvIGJlIDEtYmFzZWQgKi8KIAkgICAgcmV0dXJuIHdpbmRvd19uZXcod2luKTsKIAogICAgIHJldHVybiBzY2hlbWVfZmFsc2U7CkBAIC0xNjgxLDcgKzE2ODIsNyBAQAogICAgIGZudW0gPSBTQ0hFTUVfSU5UX1ZBTChHVUFSQU5URUVfSU5URUdFUihwcmltLT5uYW1lLCAwKSk7CiAKICAgICBmb3IgKGJ1ZiA9IGZpcnN0YnVmOyBidWY7IGJ1ZiA9IGJ1Zi0+Yl9uZXh0KQotICAgICAgICBpZiAoYnVmLT5iX2ZudW0gPT0gZm51bSkKKwlpZiAoYnVmLT5iX2ZudW0gPT0gZm51bSkKIAkgICAgcmV0dXJuIGJ1ZmZlcl9uZXcoYnVmKTsKIAogICAgIHJldHVybiBzY2hlbWVfZmFsc2U7CkBAIC0xNzg2LDcgKzE3ODcsNyBAQAogICAgICAqIHRoZW4gd2UgY2FuIGdldCBhdCBpdCBpbiBidWZfZnJlZWFsbCgpIGluIHZpbS4KICAgICAgKi8KICAgICBpZiAoYnVmLT5iX216c2NoZW1lX3JlZikKLSAgICAgICAgcmV0dXJuIGJ1Zi0+Yl9tenNjaGVtZV9yZWY7CisJcmV0dXJuIGJ1Zi0+Yl9tenNjaGVtZV9yZWY7CiAKICAgICBzZWxmID0gc2NoZW1lX21hbGxvY19mYWlsX29rKHNjaGVtZV9tYWxsb2MsIHNpemVvZih2aW1fbXpfYnVmZmVyKSk7CiAKQEAgLTE4NjMsMTIgKzE4NjQsMTIgQEAKICAgICAgKiBIYW5kbGUgc29tZSBlcnJvciBjb25kaXRpb25zCiAgICAgICovCiAgICAgaWYgKGxvIDwgMCkKLSAgICAgICAgbG8gPSAwOworCWxvID0gMDsKIAogICAgIGlmIChoaSA8IDApCiAJaGkgPSAwOwogICAgIGlmIChoaSA8IGxvKQotICAgICAgICBoaSA9IGxvOworCWhpID0gbG87CiAKICAgICBuID0gaGkgLSBsbzsKIApAQCAtMTkxOCw3ICsxOTE5LDcgQEAKICNlbmRpZgogICAgIG4gPSBTQ0hFTUVfSU5UX1ZBTChHVUFSQU5URUVfSU5URUdFUihwcmltLT5uYW1lLCAwKSk7CiAgICAgaWYgKCFTQ0hFTUVfU1RSSU5HUChhcmd2WzFdKSAmJiAhU0NIRU1FX0ZBTFNFUChhcmd2WzFdKSkKLSAgICAgICAgc2NoZW1lX3dyb25nX3R5cGUocHJpbS0+bmFtZSwgInN0cmluZyBvciAjZiIsIDEsIGFyZ2MsIGFyZ3YpOworCXNjaGVtZV93cm9uZ190eXBlKHByaW0tPm5hbWUsICJzdHJpbmcgb3IgI2YiLCAxLCBhcmdjLCBhcmd2KTsKICAgICBsaW5lID0gYXJndlsxXTsKICAgICBidWYgPSBnZXRfYnVmZmVyX2FyZyhwcmltLT5uYW1lLCAyLCBhcmdjLCBhcmd2KTsKIApAQCAtMjA3MiwxMSArMjA3MywxMSBAQAogICAgIHJlc3QgPSBsaW5lX2xpc3Q7CiAgICAgZm9yIChpID0gMDsgaSA8IG5ld19sZW47ICsraSkKICAgICB7Ci0gICAgICAgIGxpbmUgPSBTQ0hFTUVfQ0FSKHJlc3QpOworCWxpbmUgPSBTQ0hFTUVfQ0FSKHJlc3QpOwogCXJlc3QgPSBTQ0hFTUVfQ0RSKHJlc3QpOwogCWlmICghU0NIRU1FX1NUUklOR1AobGluZSkpCiAJICAgIHNjaGVtZV93cm9uZ190eXBlKHByaW0tPm5hbWUsICJzdHJpbmctbGlzdCIsIDIsIGFyZ2MsIGFyZ3YpOwotICAgICAgICBhcnJheVtpXSA9IHN0cmluZ190b19saW5lKGxpbmUpOworCWFycmF5W2ldID0gc3RyaW5nX3RvX2xpbmUobGluZSk7CiAgICAgfQogCiAgICAgc2F2ZWJ1ZiA9IGN1cmJ1ZjsKQEAgLTIwODUsNyArMjA4Niw3IEBACiAgICAgaWYgKHVfc2F2ZSgobGluZW5yX1QpKGxvLTEpLCAobGluZW5yX1QpaGkpID09IEZBSUwpCiAgICAgewogCWN1cmJ1ZiA9IHNhdmVidWY7Ci0gICAgICAgIHJhaXNlX3ZpbV9leG4oXygiY2Fubm90IHNhdmUgdW5kbyBpbmZvcm1hdGlvbiIpKTsKKwlyYWlzZV92aW1fZXhuKF8oImNhbm5vdCBzYXZlIHVuZG8gaW5mb3JtYXRpb24iKSk7CiAgICAgfQogCiAgICAgLyoKQEAgLTIxMDAsNyArMjEwMSw3IEBACiAJICAgIGN1cmJ1ZiA9IHNhdmVidWY7CiAJICAgIHJhaXNlX3ZpbV9leG4oXygiY2Fubm90IGRlbGV0ZSBsaW5lIikpOwogCX0KLSAgICAgICAgZXh0cmEtLTsKKwlleHRyYS0tOwogICAgIH0KIAogICAgIC8qCkBAIC0yMTIyLDE0ICsyMTIzLDE0IEBACiAgICAgICovCiAgICAgd2hpbGUgKGkgPCBuZXdfbGVuKQogICAgIHsKLSAgICAgICAgaWYgKG1sX2FwcGVuZCgobGluZW5yX1QpKGxvICsgaSAtIDEpLAorCWlmIChtbF9hcHBlbmQoKGxpbmVucl9UKShsbyArIGkgLSAxKSwKIAkJKGNoYXJfdSAqKWFycmF5W2ldLCAwLCBGQUxTRSkgPT0gRkFJTCkKIAl7CiAJICAgIGN1cmJ1ZiA9IHNhdmVidWY7Ci0gICAgICAgICAgICByYWlzZV92aW1fZXhuKF8oImNhbm5vdCBpbnNlcnQgbGluZSIpKTsKKwkgICAgcmFpc2VfdmltX2V4bihfKCJjYW5ub3QgaW5zZXJ0IGxpbmUiKSk7CiAJfQotICAgICAgICArK2k7Ci0gICAgICAgICsrZXh0cmE7CisJKytpOworCSsrZXh0cmE7CiAgICAgfQogCiAgICAgLyoKQEAgLTIxODYsNyArMjE4Nyw3IEBACiAgICAgYnVmID0gZ2V0X2J1ZmZlcl9hcmcocHJpbS0+bmFtZSwgMiwgYXJnYywgYXJndik7CiAKICAgICBpZiAobiAhPSAwKQkgICAgLyogMCBjYW4gYmUgdXNlZCBpbiBpbnNlcnQgKi8KLSAgICAgICAgY2hlY2tfbGluZV9yYW5nZShuLCBidWYtPmJ1Zik7CisJY2hlY2tfbGluZV9yYW5nZShuLCBidWYtPmJ1Zik7CiAgICAgaWYgKFNDSEVNRV9TVFJJTkdQKGxpc3QpKQogICAgIHsKIAlzdHIgPSBzdHJpbmdfdG9fbGluZShsaXN0KTsKQEAgLTIyMjksOSArMjIzMCw5IEBACiAgICAgcmVzdCA9IGxpc3Q7CiAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICB7Ci0gICAgICAgIGxpbmUgPSBTQ0hFTUVfQ0FSKHJlc3QpOwotICAgICAgICByZXN0ID0gU0NIRU1FX0NEUihyZXN0KTsKLSAgICAgICAgYXJyYXlbaV0gPSBzdHJpbmdfdG9fbGluZShsaW5lKTsKKwlsaW5lID0gU0NIRU1FX0NBUihyZXN0KTsKKwlyZXN0ID0gU0NIRU1FX0NEUihyZXN0KTsKKwlhcnJheVtpXSA9IHN0cmluZ190b19saW5lKGxpbmUpOwogICAgIH0KIAogICAgIHNhdmVidWYgPSBjdXJidWY7CkBAIC0yMjQwLDIwICsyMjQxLDIwIEBACiAgICAgaWYgKHVfc2F2ZSgobGluZW5yX1QpbiwgKGxpbmVucl9UKShuICsgMSkpID09IEZBSUwpCiAgICAgewogCWN1cmJ1ZiA9IHNhdmVidWY7Ci0gICAgICAgIHJhaXNlX3ZpbV9leG4oXygiY2Fubm90IHNhdmUgdW5kbyBpbmZvcm1hdGlvbiIpKTsKKwlyYWlzZV92aW1fZXhuKF8oImNhbm5vdCBzYXZlIHVuZG8gaW5mb3JtYXRpb24iKSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgICAgICBpZiAobWxfYXBwZW5kKChsaW5lbnJfVCkobiArIGkpLCAoY2hhcl91ICopYXJyYXlbaV0sCisJZm9yIChpID0gMDsgaSA8IHNpemU7ICsraSkKKwkgICAgaWYgKG1sX2FwcGVuZCgobGluZW5yX1QpKG4gKyBpKSwgKGNoYXJfdSAqKWFycmF5W2ldLAogCQkJMCwgRkFMU0UpID09IEZBSUwpCiAJICAgIHsKIAkJY3VyYnVmID0gc2F2ZWJ1ZjsKLQkgICAgICAgIHJhaXNlX3ZpbV9leG4oXygiY2Fubm90IGluc2VydCBsaW5lIikpOworCQlyYWlzZV92aW1fZXhuKF8oImNhbm5vdCBpbnNlcnQgbGluZSIpKTsKIAkgICAgfQogCi0gICAgICAgIGlmIChpID4gMCkKLSAgICAgICAgICAgIGFwcGVuZGVkX2xpbmVzX21hcmsoKGxpbmVucl9UKW4sIChsb25nKWkpOworCWlmIChpID4gMCkKKwkgICAgYXBwZW5kZWRfbGluZXNfbWFyaygobGluZW5yX1QpbiwgKGxvbmcpaSk7CiAgICAgfQogCiAgICAgY3VyYnVmID0gc2F2ZWJ1ZjsKZGlmZiAtLWdpdCBhL3NyYy9pZl9weXRob24uYyBiL3NyYy9pZl9weXRob24uYwppbmRleCBkYmJlNjAyLi5lMGZkMzQ4IDEwMDY0NAotLS0gYS9zcmMvaWZfcHl0aG9uLmMKKysrIGIvc3JjL2lmX3B5dGhvbi5jCkBAIC00NTMsMTUgKzQ1MywxNSBAQAogI2lmZGVmIERZTkFNSUNfUFlUSE9OCiAgICAgaWYgKGhpbnN0UHl0aG9uICYmIFB5X0lzSW5pdGlhbGl6ZWQoKSkKICAgICB7Ci0gICAgICAgIFB5dGhvbl9SZXN0b3JlVGhyZWFkKCk7CSAgICAvKiBlbnRlciBweXRob24gKi8KLSAgICAgICAgUHlfRmluYWxpemUoKTsKKwlQeXRob25fUmVzdG9yZVRocmVhZCgpOwkgICAgLyogZW50ZXIgcHl0aG9uICovCisJUHlfRmluYWxpemUoKTsKICAgICB9CiAgICAgZW5kX2R5bmFtaWNfcHl0aG9uKCk7CiAjZWxzZQogICAgIGlmIChQeV9Jc0luaXRpYWxpemVkKCkpCiAgICAgewotICAgICAgICBQeXRob25fUmVzdG9yZVRocmVhZCgpOwkgICAgLyogZW50ZXIgcHl0aG9uICovCi0gICAgICAgIFB5X0ZpbmFsaXplKCk7CisJUHl0aG9uX1Jlc3RvcmVUaHJlYWQoKTsJICAgIC8qIGVudGVyIHB5dGhvbiAqLworCVB5X0ZpbmFsaXplKCk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTExMDUsOSArMTEwNSw5IEBACiAgICAgLyogQXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uICovCiAgICAgaWYgKGRlcHRoID4gMTAwKQogICAgIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXN1bHQgPSBQeV9Ob25lOwotICAgICAgICByZXR1cm4gcmVzdWx0OworCVB5X0lOQ1JFRihQeV9Ob25lKTsKKwlyZXN1bHQgPSBQeV9Ob25lOworCXJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgLyogQ2hlY2sgaWYgd2UgcnVuIGludG8gYSByZWN1cnNpdmUgbG9vcC4gIFRoZSBpdGVtIG11c3QgYmUgaW4gbG9va3VwRGljdApAQCAtMTExNSwyOCArMTExNSwyOCBAQAogICAgIHNwcmludGYocHRyQnVmLCAiJWxkIiwgKGxvbmcpb3VyX3R2KTsKICAgICByZXN1bHQgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhsb29rdXBEaWN0LCBwdHJCdWYpOwogICAgIGlmIChyZXN1bHQgIT0gTlVMTCkKLSAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7CisJUHlfSU5DUkVGKHJlc3VsdCk7CiAgICAgZWxzZSBpZiAob3VyX3R2LT52X3R5cGUgPT0gVkFSX1NUUklORykKICAgICB7Ci0gICAgICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoInMiLCBvdXJfdHYtPnZ2YWwudl9zdHJpbmcpOwotICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhsb29rdXBEaWN0LCBwdHJCdWYsIHJlc3VsdCk7CisJcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgicyIsIG91cl90di0+dnZhbC52X3N0cmluZyk7CisJUHlEaWN0X1NldEl0ZW1TdHJpbmcobG9va3VwRGljdCwgcHRyQnVmLCByZXN1bHQpOwogICAgIH0KICAgICBlbHNlIGlmIChvdXJfdHYtPnZfdHlwZSA9PSBWQVJfTlVNQkVSKQogICAgIHsKLSAgICAgICAgY2hhciBidWZbTlVNQlVGTEVOXTsKKwljaGFyIGJ1ZltOVU1CVUZMRU5dOwogCiAJLyogRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IG51bWJlcnMgYXJlIHN0b3JlZCBhcyBzdHJpbmdzLiAqLwotICAgICAgICBzcHJpbnRmKGJ1ZiwgIiVsZCIsIChsb25nKW91cl90di0+dnZhbC52X251bWJlcik7Ci0gICAgICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoInMiLCBidWYpOwotICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhsb29rdXBEaWN0LCBwdHJCdWYsIHJlc3VsdCk7CisJc3ByaW50ZihidWYsICIlbGQiLCAobG9uZylvdXJfdHYtPnZ2YWwudl9udW1iZXIpOworCXJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoInMiLCBidWYpOworCVB5RGljdF9TZXRJdGVtU3RyaW5nKGxvb2t1cERpY3QsIHB0ckJ1ZiwgcmVzdWx0KTsKICAgICB9CiAgICAgZWxzZSBpZiAob3VyX3R2LT52X3R5cGUgPT0gVkFSX0xJU1QpCiAgICAgewotICAgICAgICBsaXN0X1QJCSpsaXN0ID0gb3VyX3R2LT52dmFsLnZfbGlzdDsKLSAgICAgICAgbGlzdGl0ZW1fVAkqY3VycjsKKwlsaXN0X1QJCSpsaXN0ID0gb3VyX3R2LT52dmFsLnZfbGlzdDsKKwlsaXN0aXRlbV9UCSpjdXJyOwogCi0gICAgICAgIHJlc3VsdCA9IFB5TGlzdF9OZXcoMCk7Ci0gICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGxvb2t1cERpY3QsIHB0ckJ1ZiwgcmVzdWx0KTsKKwlyZXN1bHQgPSBQeUxpc3RfTmV3KDApOworCVB5RGljdF9TZXRJdGVtU3RyaW5nKGxvb2t1cERpY3QsIHB0ckJ1ZiwgcmVzdWx0KTsKIAogCWlmIChsaXN0ICE9IE5VTEwpCiAJewpAQCAtMTE1MCw4ICsxMTUwLDggQEAKICAgICB9CiAgICAgZWxzZSBpZiAob3VyX3R2LT52X3R5cGUgPT0gVkFSX0RJQ1QpCiAgICAgewotICAgICAgICByZXN1bHQgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGxvb2t1cERpY3QsIHB0ckJ1ZiwgcmVzdWx0KTsKKwlyZXN1bHQgPSBQeURpY3RfTmV3KCk7CisJUHlEaWN0X1NldEl0ZW1TdHJpbmcobG9va3VwRGljdCwgcHRyQnVmLCByZXN1bHQpOwogCiAJaWYgKG91cl90di0+dnZhbC52X2RpY3QgIT0gTlVMTCkKIAl7CkBAIC0xMTc2LDggKzExNzYsOCBAQAogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJlc3VsdCA9IFB5X05vbmU7CisJUHlfSU5DUkVGKFB5X05vbmUpOworCXJlc3VsdCA9IFB5X05vbmU7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL3NyYy9pZl9ydWJ5LmMgYi9zcmMvaWZfcnVieS5jCmluZGV4IDc4Y2NjMDAuLjI5YzYyYjggMTAwNjQ0Ci0tLSBhL3NyYy9pZl9ydWJ5LmMKKysrIGIvc3JjL2lmX3J1YnkuYwpAQCAtNTcxLDkgKzU3MSw5IEBACiAKICAgICBmb3IgKGIgPSBmaXJzdGJ1ZjsgYiAhPSBOVUxMOyBiID0gYi0+Yl9uZXh0KQogICAgIHsKLSAgICAgICAgLyogIERlbGV0ZWQgYnVmZmVycyBzaG91bGQgbm90IGJlIGNvdW50ZWQKLSAgICAgICAgICogICAgU2VnUGhhdWx0IC0gMDEvMDcvMDUgKi8KLSAgICAgICAgaWYgKGItPmJfcF9ibCkKKwkvKiAgRGVsZXRlZCBidWZmZXJzIHNob3VsZCBub3QgYmUgY291bnRlZAorCSAqICAgIFNlZ1BoYXVsdCAtIDAxLzA3LzA1ICovCisJaWYgKGItPmJfcF9ibCkKIAkgICAgbisrOwogICAgIH0KIApAQCAtNTg3LDE1ICs1ODcsMTUgQEAKIAogICAgIGZvciAoYiA9IGZpcnN0YnVmOyBiICE9IE5VTEw7IGIgPSBiLT5iX25leHQpCiAgICAgewotICAgICAgICAvKiAgRGVsZXRlZCBidWZmZXJzIHNob3VsZCBub3QgYmUgY291bnRlZAotICAgICAgICAgKiAgICBTZWdQaGF1bHQgLSAwMS8wNy8wNSAqLwotICAgICAgICBpZiAoIWItPmJfcF9ibCkKKwkvKiAgRGVsZXRlZCBidWZmZXJzIHNob3VsZCBub3QgYmUgY291bnRlZAorCSAqICAgIFNlZ1BoYXVsdCAtIDAxLzA3LzA1ICovCisJaWYgKCFiLT5iX3BfYmwpCiAJICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChuID09IDApCisJaWYgKG4gPT0gMCkKIAkgICAgcmV0dXJuIGJ1ZmZlcl9uZXcoYik7CiAKLSAgICAgICAgbi0tOworCW4tLTsKICAgICB9CiAgICAgcmV0dXJuIFFuaWw7CiB9CkBAIC02ODUsOSArNjg1LDkgQEAKIAlpZiAodV9zYXZlZGVsKG4sIDEpID09IE9LKSB7CiAJICAgIG1sX2RlbGV0ZShuLCAwKTsKIAotICAgICAgICAgICAgLyogQ2hhbmdlcyB0byBub24tYWN0aXZlIGJ1ZmZlcnMgc2hvdWxkIHByb3Blcmx5IHJlZnJlc2gKLSAgICAgICAgICAgICAqICAgU2VnUGhhdWx0IC0gMDEvMDkvMDUgKi8KLSAgICAgICAgICAgIGRlbGV0ZWRfbGluZXNfbWFyayhuLCAxTCk7CisJICAgIC8qIENoYW5nZXMgdG8gbm9uLWFjdGl2ZSBidWZmZXJzIHNob3VsZCBwcm9wZXJseSByZWZyZXNoCisJICAgICAqICAgU2VnUGhhdWx0IC0gMDEvMDkvMDUgKi8KKwkgICAgZGVsZXRlZF9saW5lc19tYXJrKG4sIDFMKTsKIAogCSAgICBjaGFuZ2VkKCk7CiAJfQpAQCAtNzEyLDExICs3MTIsMTEgQEAKIAlpZiAodV9pbnNzdWIobiArIDEpID09IE9LKSB7CiAJICAgIG1sX2FwcGVuZChuLCAoY2hhcl91ICopIGxpbmUsIChjb2xucl9UKSAwLCBGQUxTRSk7CiAKLSAgICAgICAgICAgIC8qICBDaGFuZ2VzIHRvIG5vbi1hY3RpdmUgYnVmZmVycyBzaG91bGQgcHJvcGVybHkgcmVmcmVzaCBzY3JlZW4KLSAgICAgICAgICAgICAqICAgIFNlZ1BoYXVsdCAtIDEyLzIwLzA0ICovCi0gICAgICAgICAgICBhcHBlbmRlZF9saW5lc19tYXJrKG4sIDFMKTsKKwkgICAgLyogIENoYW5nZXMgdG8gbm9uLWFjdGl2ZSBidWZmZXJzIHNob3VsZCBwcm9wZXJseSByZWZyZXNoIHNjcmVlbgorCSAgICAgKiAgICBTZWdQaGF1bHQgLSAxMi8yMC8wNCAqLworCSAgICBhcHBlbmRlZF9saW5lc19tYXJrKG4sIDFMKTsKIAotICAgICAgICAgICAgY2hhbmdlZCgpOworCSAgICBjaGFuZ2VkKCk7CiAJfQogCWN1cmJ1ZiA9IHNhdmVidWY7CiAJdXBkYXRlX2N1cmJ1ZihOT1RfVkFMSUQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luc3RhbGxtYW4uc2ggYi9zcmMvaW5zdGFsbG1hbi5zaAppbmRleCA5OTQzMTA5Li4yNWEyNGU2IDEwMDc1NQotLS0gYS9zcmMvaW5zdGFsbG1hbi5zaAorKysgYi9zcmMvaW5zdGFsbG1hbi5zaApAQCAtMywxNiArMywxNiBAQAogIwogIyBhcmd1bWVudHM6CiAjIDEgIHdoYXQ6ICJpbnN0YWxsIiwgInVuaW5zdGFsbCIgb3IgInh4ZCIKLSMgMiAgdGFyZ2V0IGRpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAgICBlLmcuLCAiL3Vzci9sb2NhbC9tYW4vaXQvbWFuMSIKKyMgMiAgdGFyZ2V0IGRpcmVjdG9yeQkJCSAgIGUuZy4sICIvdXNyL2xvY2FsL21hbi9pdC9tYW4xIgogIyAzICBsYW5ndWFnZSBhZGRpdGlvbgkJCSAgIGUuZy4sICIiIG9yICItaXQiCiAjIDQgIHZpbSBsb2NhdGlvbiBhcyB1c2VkIGluIG1hbnVhbCBwYWdlcyAgZS5nLiwgIi91c3IvbG9jYWwvc2hhcmUvdmltIgotIyA1ICBydW50aW1lIGRpciBmb3IgbWVudS52aW0gZXQgYWwuICAgICAgIGUuZy4sICIvdXNyL2xvY2FsL3NoYXJlL3ZpbS92aW03MCIKLSMgNiAgcnVudGltZSBkaXIgZm9yIGdsb2JhbCB2aW1yYyBmaWxlICAgICBlLmcuLCAiL3Vzci9sb2NhbC9zaGFyZS92aW0iCi0jIDcgIHNvdXJjZSBkaXIgZm9yIGhlbHAgZmlsZXMgICAgICAgICAgICAgZS5nLiwgIi4uL3J1bnRpbWUvZG9jIgotIyA4ICBtb2RlIGJpdHMgZm9yIG1hbnBhZ2VzICAgICAgICAgICAgICAgIGUuZy4sICI2NDQiCi0jIDkgIHZpbSBleGUgbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgZS5nLiwgInZpbSIKLSMgMTAgbmFtZSBvZiB2aW1kaWZmIGV4ZSAgICAgICAgICAgICAgICAgICBlLmcuLCAidmltZGlmZiIKLSMgMTEgbmFtZSBvZiBldmltIGV4ZSAgICAgICAgICAgICAgICAgICAgICBlLmcuLCAiZXZpbSIKKyMgNSAgcnVudGltZSBkaXIgZm9yIG1lbnUudmltIGV0IGFsLgkgICBlLmcuLCAiL3Vzci9sb2NhbC9zaGFyZS92aW0vdmltNzAiCisjIDYgIHJ1bnRpbWUgZGlyIGZvciBnbG9iYWwgdmltcmMgZmlsZQkgICBlLmcuLCAiL3Vzci9sb2NhbC9zaGFyZS92aW0iCisjIDcgIHNvdXJjZSBkaXIgZm9yIGhlbHAgZmlsZXMJCSAgIGUuZy4sICIuLi9ydW50aW1lL2RvYyIKKyMgOCAgbW9kZSBiaXRzIGZvciBtYW5wYWdlcwkJICAgZS5nLiwgIjY0NCIKKyMgOSAgdmltIGV4ZSBuYW1lCQkJICAgZS5nLiwgInZpbSIKKyMgMTAgbmFtZSBvZiB2aW1kaWZmIGV4ZQkJICAgZS5nLiwgInZpbWRpZmYiCisjIDExIG5hbWUgb2YgZXZpbSBleGUJCQkgICBlLmcuLCAiZXZpbSIKIAogZXJyc3RhdHVzPTAKIApkaWZmIC0tZ2l0IGEvc3JjL2luc3RhbGxtbC5zaCBiL3NyYy9pbnN0YWxsbWwuc2gKaW5kZXggMGRlNjBhZC4uZTZkYzNkOCAxMDA2NDQKLS0tIGEvc3JjL2luc3RhbGxtbC5zaAorKysgYi9zcmMvaW5zdGFsbG1sLnNoCkBAIC00LDIwICs0LDIwIEBACiAjIGFyZ3VtZW50czoKICMgMSAgd2hhdDogImluc3RhbGwiIG9yICJ1bmluc3RhbGwiCiAjIDIgIGFsc28gZG8gR1VJIHBhZ2VzOiAieWVzIiBvciAiIgotIyAzICB0YXJnZXQgZGlyZWN0b3J5ICAgICAgICAgICAgICAgIGUuZy4sICIvdXNyL2xvY2FsL21hbi9pdC9tYW4xIgotIyA0ICB2aW0gZXhlIG5hbWUgICAgICAgICAgICAgICAgICAgIGUuZy4sICJ2aW0iCi0jIDUgIHZpbWRpZmYgZXhlIG5hbWUgICAgICAgICAgICAgICAgZS5nLiwgInZpbWRpZmYiCi0jIDYgIGV2aW0gZXhlIG5hbWUgICAgICAgICAgICAgICAgICAgZS5nLiwgImV2aW0iCi0jIDcgIGV4IGV4ZSBuYW1lICAgICAgICAgICAgICAgICAgICAgZS5nLiwgImV4IgotIyA4ICB2aWV3IGV4ZSBuYW1lICAgICAgICAgICAgICAgICAgIGUuZy4sICJ2aWV3IgotIyA5ICBydmltIGV4ZSBuYW1lICAgICAgICAgICAgICAgICAgIGUuZy4sICJydmltIgotIyAxMCBydmlldyBleGUgbmFtZSAgICAgICAgICAgICAgICAgIGUuZy4sICJydmlldyIKLSMgMTEgZ3ZpbSBleGUgbmFtZSAgICAgICAgICAgICAgICAgICBlLmcuLCAiZ3ZpbSIKLSMgMTIgZ3ZpZXcgZXhlIG5hbWUgICAgICAgICAgICAgICAgICBlLmcuLCAiZ3ZpZXciCi0jIDEzIHJndmltIGV4ZSBuYW1lICAgICAgICAgICAgICAgICAgZS5nLiwgInJndmltIgotIyAxNCByZ3ZpZXcgZXhlIG5hbWUgICAgICAgICAgICAgICAgIGUuZy4sICJyZ3ZpZXciCi0jIDE1IGd2aW1kaWZmIGV4ZSBuYW1lICAgICAgICAgICAgICAgZS5nLiwgImd2aW1kaWZmIgotIyAxNiBldmlldyBleGUgbmFtZSAgICAgICAgICAgICAgICAgIGUuZy4sICJldmlldyIKKyMgMyAgdGFyZ2V0IGRpcmVjdG9yeQkJICAgICBlLmcuLCAiL3Vzci9sb2NhbC9tYW4vaXQvbWFuMSIKKyMgNCAgdmltIGV4ZSBuYW1lCQkgICAgIGUuZy4sICJ2aW0iCisjIDUgIHZpbWRpZmYgZXhlIG5hbWUJCSAgICAgZS5nLiwgInZpbWRpZmYiCisjIDYgIGV2aW0gZXhlIG5hbWUJCSAgICAgZS5nLiwgImV2aW0iCisjIDcgIGV4IGV4ZSBuYW1lCQkgICAgIGUuZy4sICJleCIKKyMgOCAgdmlldyBleGUgbmFtZQkJICAgICBlLmcuLCAidmlldyIKKyMgOSAgcnZpbSBleGUgbmFtZQkJICAgICBlLmcuLCAicnZpbSIKKyMgMTAgcnZpZXcgZXhlIG5hbWUJCSAgICAgZS5nLiwgInJ2aWV3IgorIyAxMSBndmltIGV4ZSBuYW1lCQkgICAgIGUuZy4sICJndmltIgorIyAxMiBndmlldyBleGUgbmFtZQkJICAgICBlLmcuLCAiZ3ZpZXciCisjIDEzIHJndmltIGV4ZSBuYW1lCQkgICAgIGUuZy4sICJyZ3ZpbSIKKyMgMTQgcmd2aWV3IGV4ZSBuYW1lCQkgICAgIGUuZy4sICJyZ3ZpZXciCisjIDE1IGd2aW1kaWZmIGV4ZSBuYW1lCQkgICAgIGUuZy4sICJndmltZGlmZiIKKyMgMTYgZXZpZXcgZXhlIG5hbWUJCSAgICAgZS5nLiwgImV2aWV3IgogCiBlcnJzdGF0dXM9MAogCmRpZmYgLS1naXQgYS9zcmMvbWJ5dGUuYyBiL3NyYy9tYnl0ZS5jCmluZGV4IDIxMTQ2NTQuLmUxYzU5NDcgMTAwNjQ0Ci0tLSBhL3NyYy9tYnl0ZS5jCisrKyBiL3NyYy9tYnl0ZS5jCkBAIC0yMjAxLDggKzIyMDEsOCBAQAogICAgIGlmIChhIDwgMTI4ICYmIChjbXBfZmxhZ3MgJiBDTVBfS0VFUEFTQ0lJKSkKIAlyZXR1cm4gVE9VUFBFUl9BU0MoYSk7CiAKLSNpZiBkZWZpbmVkKEhBVkVfVE9XVVBQRVIpICYmIGRlZmluZWQoX19TVERDX19JU09fMTA2NDZfXykKLSAgICAvKiBJZiB0b3d1cHBlcigpIGlzIGF2YWlsYmxlIGFuZCBoYW5kbGVzIFVuaWNvZGUsIHVzZSBpdC4gKi8KKyNpZiBkZWZpbmVkKEhBVkVfVE9XVVBQRVIpICYmIGRlZmluZWQoX19TVERDX0lTT18xMDY0Nl9fKQorICAgIC8qIElmIHRvd3VwcGVyKCkgaXMgYXZhaWxhYmxlIGFuZCBoYW5kbGVzIFVuaWNvZGUsIHVzZSBpdC4gKi8KICAgICBpZiAoIShjbXBfZmxhZ3MgJiBDTVBfSU5URVJOQUwpKQogCXJldHVybiB0b3d1cHBlcihhKTsKICNlbmRpZgpAQCAtMjIzNCw3ICsyMjM0LDcgQEAKICAgICBpZiAoYSA8IDEyOCAmJiAoY21wX2ZsYWdzICYgQ01QX0tFRVBBU0NJSSkpCiAJcmV0dXJuIFRPTE9XRVJfQVNDKGEpOwogCi0jaWYgZGVmaW5lZChIQVZFX1RPV0xPV0VSKSAmJiBkZWZpbmVkKF9fU1REQ19fSVNPXzEwNjQ2X18pCisjaWYgZGVmaW5lZChIQVZFX1RPV0xPV0VSKSAmJiBkZWZpbmVkKF9fU1REQ19JU09fMTA2NDZfXykKICAgICAvKiBJZiB0b3dsb3dlcigpIGlzIGF2YWlsYWJsZSBhbmQgaGFuZGxlcyBVbmljb2RlLCB1c2UgaXQuICovCiAgICAgaWYgKCEoY21wX2ZsYWdzICYgQ01QX0lOVEVSTkFMKSkKIAlyZXR1cm4gdG93bG93ZXIoYSk7CmRpZmYgLS1naXQgYS9zcmMvbWVudS5jIGIvc3JjL21lbnUuYwppbmRleCA4YjQ1Mzk1Li5kYWM0NzU0IDEwMDY0NAotLS0gYS9zcmMvbWVudS5jCisrKyBiL3NyYy9tZW51LmMKQEAgLTE0ODksNyArMTQ4OSw3IEBACiAJY2FzZSAnYSc6CQkJLyogYW1lbnUgKi8KIAkgICAgbW9kZXMgPSBNRU5VX0lOU0VSVF9NT0RFIHwgTUVOVV9DTURMSU5FX01PREUgfCBNRU5VX05PUk1BTF9NT0RFCiAJCQkJICAgIHwgTUVOVV9WSVNVQUxfTU9ERSB8IE1FTlVfU0VMRUNUX01PREUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTUVOVV9PUF9QRU5ESU5HX01PREU7CisJCQkJICAgIHwgTUVOVV9PUF9QRU5ESU5HX01PREU7CiAJICAgIGJyZWFrOwogCWNhc2UgJ24nOgogCSAgICBpZiAoKmNtZCAhPSAnbycpCQkvKiBubWVudSwgbm90IG5vcmVtZW51ICovCkBAIC0xNTU1LDEwICsxNTU1LDEwIEBACiAjaWZkZWYgRkVBVF9WSVNVQUwKICAgICBlbHNlIGlmIChWSXN1YWxfYWN0aXZlKQogICAgIHsKLSAgICAgICAgaWYgKFZJc3VhbF9zZWxlY3QpCi0gICAgICAgICAgICBpZHggPSBNRU5VX0lOREVYX1NFTEVDVDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaWR4ID0gTUVOVV9JTkRFWF9WSVNVQUw7CisJaWYgKFZJc3VhbF9zZWxlY3QpCisJICAgIGlkeCA9IE1FTlVfSU5ERVhfU0VMRUNUOworCWVsc2UKKwkgICAgaWR4ID0gTUVOVV9JTkRFWF9WSVNVQUw7CiAgICAgfQogI2VuZGlmCiAgICAgZWxzZSBpZiAoc3RhdGUgPT0gSElUUkVUVVJOIHx8IHN0YXRlID09IEFTS01PUkUpCkBAIC0xNzI3LDggKzE3MjcsOCBAQAogI2lmZGVmIEZFQVRfVklTVUFMCiAgICAgaWYgKFZJc3VhbF9hY3RpdmUpCiAgICAgewotICAgICAgICBpZiAoVklzdWFsX3NlbGVjdCkKLSAgICAgICAgICAgIHJldHVybiBNRU5VX0lOREVYX1NFTEVDVDsKKwlpZiAoVklzdWFsX3NlbGVjdCkKKwkgICAgcmV0dXJuIE1FTlVfSU5ERVhfU0VMRUNUOwogCXJldHVybiBNRU5VX0lOREVYX1ZJU1VBTDsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9tZXNzYWdlLmMgYi9zcmMvbWVzc2FnZS5jCmluZGV4IGM2N2Q0N2QuLmEyNDJhMjYgMTAwNjQ0Ci0tLSBhL3NyYy9tZXNzYWdlLmMKKysrIGIvc3JjL21lc3NhZ2UuYwpAQCAtMzUxOSw5ICszNTE5LDkgQEAKIAllbHNlCiAJewogCSAgICBsZW4gKz0gKGludCkoU1RSTEVOKG1lc3NhZ2UpCi0gICAgICAgICAgICAgICAgICAgICAgICArIDIJCQkvKiBmb3IgdGhlIE5MJ3MgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICsgU1RSTEVOKGJ1dHRvbnMpCi0gICAgICAgICAgICAgICAgICAgICAgICArIDMpOwkgICAgICAgIAkvKiBmb3IgdGhlICI6ICIgYW5kIE5VTCAqLworCQkJKyAyCQkJLyogZm9yIHRoZSBOTCdzICovCisJCQkrIFNUUkxFTihidXR0b25zKQorCQkJKyAzKTsJCQkvKiBmb3IgdGhlICI6ICIgYW5kIE5VTCAqLwogCSAgICBsZW5ob3RrZXkrKzsJCQkvKiBmb3IgdGhlIE5VTCAqLwogCiAJICAgIC8qIElmIG5vIGhvdGtleSBpcyBzcGVjaWZpZWQgZmlyc3QgY2hhciBpcyB1c2VkLiAqLwpAQCAtNDQ1MCwxMCArNDQ1MCwxMCBAQAogCQl6ZXJvX3BhZGRpbmcgPSAwOyAgLyogdHVybiB6ZXJvIHBhZGRpbmcgb2ZmIGZvciBub24tbnVtZXJpYwogCQkJCSAgICAgIGNvbnZlcnMuICovCiAJCWp1c3RpZnlfbGVmdCA9IDE7Ci0JCW1pbl9maWVsZF93aWR0aCA9IDA7ICAgICAgICAgICAgICAgIC8qIHJlc2V0IGZsYWdzICovCisJCW1pbl9maWVsZF93aWR0aCA9IDA7CQkgICAgLyogcmVzZXQgZmxhZ3MgKi8KIAogCQkvKiBkaXNjYXJkIHRoZSB1bnJlY29nbml6ZWQgY29udmVyc2lvbiwganVzdCBrZWVwICoKLQkJICogdGhlIHVucmVjb2duaXplZCBjb252ZXJzaW9uIGNoYXJhY3RlciAgICAgICAgICAqLworCQkgKiB0aGUgdW5yZWNvZ25pemVkIGNvbnZlcnNpb24gY2hhcmFjdGVyCSAgKi8KIAkJc3RyX2FyZyA9IHA7CiAJCXN0cl9hcmdfbCA9IDA7CiAJCWlmICgqcCAhPSBOVUwpCmRpZmYgLS1naXQgYS9zcmMvbWlzYzEuYyBiL3NyYy9taXNjMS5jCmluZGV4IDRmMGVmMDIuLjVjZTExNjcgMTAwNjQ0Ci0tLSBhL3NyYy9taXNjMS5jCisrKyBiL3NyYy9taXNjMS5jCkBAIC01MTQ3LDcgKzUxNDcsNyBAQAogICAgIGlmIChsZW4gPT0gNiAmJiBTVFJOQ01QKHAsICJzdGF0aWMiLCA2KSA9PSAwKQogICAgIHsKIAlwID0gc2tpcHdoaXRlKHAgKyA2KTsKLSAgICAgICAgbGVuID0gKGludCkoc2tpcHRvd2hpdGUocCkgLSBwKTsKKwlsZW4gPSAoaW50KShza2lwdG93aGl0ZShwKSAtIHApOwogICAgIH0KICAgICBpZiAobGVuID09IDYgJiYgU1RSTkNNUChwLCAic3RydWN0IiwgNikgPT0gMCkKIAlwID0gc2tpcHdoaXRlKHAgKyA2KTsKQEAgLTU0NTksNyArNTQ1OSw3IEBACiAgKiAgICBkbwogICogICAgICAgbm90aGluZzsKICAqICAgIHdoaWxlIChmb28KLSAqICAgICAgICAgICAgICYmIGJhcik7ICA8LS0gaGVyZQorICoJICAgICAgICYmIGJhcik7ICA8LS0gaGVyZQogICogQWRqdXN0IHRoZSBjdXJzb3IgdG8gdGhlIGxpbmUgd2l0aCAid2hpbGUiLgogICovCiAgICAgc3RhdGljIGludApAQCAtNTU1OCw3ICs1NTU4LDcgQEAKICAgICAgKiAneycgb3IgJ30nIGFuZCBzdGFydCBiZWxvdyBpdC4gIFRoaXMgaGFuZGxlcyB0aGUgZm9sbG93aW5nIHNpdHVhdGlvbnM6CiAgICAgICoJYSA9IGNvbmQgPwogICAgICAqCSAgICAgIGZ1bmMoKSA6Ci0gICAgICoJICAgICAgICAgICBhc2RmOworICAgICAqCQkgICBhc2RmOwogICAgICAqCWZ1bmM6OmZvbygpCiAgICAgICoJICAgICAgOiBzb21ldGhpbmcKICAgICAgKgl7fQpAQCAtNzU0Miw3ICs3NTQyLDcgQEAKIAkJCSAqIFdoZW4gYSB0ZXJtaW5hdGVkIGxpbmUgc3RhcnRzIHdpdGggImVsc2UiIHNraXAgdG8KIAkJCSAqIHRoZSBtYXRjaGluZyAiaWYiOgogCQkJICogICAgICAgZWxzZSAzOwotCQkJICogICAgICAgICAgIGluZGVudCB0aGlzOworCQkJICoJICAgICBpbmRlbnQgdGhpczsKIAkJCSAqIE5lZWQgdG8gdXNlIHRoZSBzY29wZSBvZiB0aGlzICJlbHNlIi4gIFhYWAogCQkJICogSWYgd2hpbGVsZXZlbCAhPSAwIGNvbnRpbnVlIGxvb2tpbmcgZm9yIGEgImRvIHsiLgogCQkJICovCmRpZmYgLS1naXQgYS9zcmMvb3BzLmMgYi9zcmMvb3BzLmMKaW5kZXggNzMyMzIzZS4uNzFlZGM1ZSAxMDA2NDQKLS0tIGEvc3JjL29wcy5jCisrKyBiL3NyYy9vcHMuYwpAQCAtNDM0OSw3ICs0MzQ5LDExIEBACiAgICAgaW50CQl1c2Vfc2FuZGJveCA9IHdhc19zZXRfaW5zZWN1cmVseSgoY2hhcl91ICopImZvcm1hdGV4cHIiLAogCQkJCQkJCQkgICBPUFRfTE9DQUwpOwogICAgIGludAkJcjsKLSAgICBjaGFyX3UJYnVmW05VTUJVRkxFTl07CisjaWZkZWYgRkVBVF9NQllURQorICAgIGNoYXJfdQlidWZbTUJfTUFYQllURVNdOworI2Vsc2UKKyAgICBjaGFyX3UJYnVmWzJdOworI2VuZGlmCiAKICAgICAvKgogICAgICAqIFNldCB2OmxudW0gdG8gdGhlIGZpcnN0IGxpbmUgbnVtYmVyIGFuZCB2OmNvdW50IHRvIHRoZSBudW1iZXIgb2YgbGluZXMuCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vYnVmZmVyLnBybyBiL3NyYy9wcm90by9idWZmZXIucHJvCmluZGV4IDkxOTM0NDMuLjlkYThjM2UgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9idWZmZXIucHJvCisrKyBiL3NyYy9wcm90by9idWZmZXIucHJvCkBAIC0xLDY5ICsxLDY5IEBACiAvKiBidWZmZXIuYyAqLwotaW50IG9wZW5fYnVmZmVyIF9fQVJHUygoaW50IHJlYWRfc3RkaW4sIGV4YXJnX1QgKmVhcCkpOwotaW50IGJ1Zl92YWxpZCBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKLXZvaWQgY2xvc2VfYnVmZmVyIF9fQVJHUygod2luX1QgKndpbiwgYnVmX1QgKmJ1ZiwgaW50IGFjdGlvbikpOwotdm9pZCBidWZfY2xlYXJfZmlsZSBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKLXZvaWQgYnVmX2ZyZWVhbGwgX19BUkdTKChidWZfVCAqYnVmLCBpbnQgZGVsX2J1ZiwgaW50IHdpcGVfYnVmKSk7Ci12b2lkIGdvdG9fYnVmZmVyIF9fQVJHUygoZXhhcmdfVCAqZWFwLCBpbnQgc3RhcnQsIGludCBkaXIsIGludCBjb3VudCkpOwotdm9pZCBoYW5kbGVfc3dhcF9leGlzdHMgX19BUkdTKChidWZfVCAqb2xkX2N1cmJ1ZikpOwotY2hhcl91ICpkb19idWZkZWwgX19BUkdTKChpbnQgY29tbWFuZCwgY2hhcl91ICphcmcsIGludCBhZGRyX2NvdW50LCBpbnQgc3RhcnRfYm5yLCBpbnQgZW5kX2JuciwgaW50IGZvcmNlaXQpKTsKLWludCBkb19idWZmZXIgX19BUkdTKChpbnQgYWN0aW9uLCBpbnQgc3RhcnQsIGludCBkaXIsIGludCBjb3VudCwgaW50IGZvcmNlaXQpKTsKLXZvaWQgc2V0X2N1cmJ1ZiBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCBhY3Rpb24pKTsKLXZvaWQgZW50ZXJfYnVmZmVyIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwotYnVmX1QgKmJ1Zmxpc3RfbmV3IF9fQVJHUygoY2hhcl91ICpmZm5hbWUsIGNoYXJfdSAqc2ZuYW1lLCBsaW5lbnJfVCBsbnVtLCBpbnQgZmxhZ3MpKTsKLXZvaWQgZnJlZV9idWZfb3B0aW9ucyBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCBmcmVlX3BfZmYpKTsKLWludCBidWZsaXN0X2dldGZpbGUgX19BUkdTKChpbnQgbiwgbGluZW5yX1QgbG51bSwgaW50IG9wdGlvbnMsIGludCBmb3JjZWl0KSk7Ci12b2lkIGJ1Zmxpc3RfZ2V0ZnBvcyBfX0FSR1MoKHZvaWQpKTsKLWJ1Zl9UICpidWZsaXN0X2ZpbmRuYW1lX2V4cCBfX0FSR1MoKGNoYXJfdSAqZm5hbWUpKTsKLWJ1Zl9UICpidWZsaXN0X2ZpbmRuYW1lIF9fQVJHUygoY2hhcl91ICpmZm5hbWUpKTsKLWludCBidWZsaXN0X2ZpbmRwYXQgX19BUkdTKChjaGFyX3UgKnBhdHRlcm4sIGNoYXJfdSAqcGF0dGVybl9lbmQsIGludCB1bmxpc3RlZCwgaW50IGRpZmZtb2RlKSk7Ci1pbnQgRXhwYW5kQnVmbmFtZXMgX19BUkdTKChjaGFyX3UgKnBhdCwgaW50ICpudW1fZmlsZSwgY2hhcl91ICoqKmZpbGUsIGludCBvcHRpb25zKSk7Ci1idWZfVCAqYnVmbGlzdF9maW5kbnIgX19BUkdTKChpbnQgbnIpKTsKLWNoYXJfdSAqYnVmbGlzdF9ucjJuYW1lIF9fQVJHUygoaW50IG4sIGludCBmdWxsbmFtZSwgaW50IGhlbHB0YWlsKSk7Ci12b2lkIGdldF93aW5vcHRzIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwotcG9zX1QgKmJ1Zmxpc3RfZmluZGZwb3MgX19BUkdTKChidWZfVCAqYnVmKSk7Ci1saW5lbnJfVCBidWZsaXN0X2ZpbmRsbnVtIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwotdm9pZCBidWZsaXN0X2xpc3QgX19BUkdTKChleGFyZ19UICplYXApKTsKLWludCBidWZsaXN0X25hbWVfbnIgX19BUkdTKChpbnQgZm51bSwgY2hhcl91ICoqZm5hbWUsIGxpbmVucl9UICpsbnVtKSk7Ci1pbnQgc2V0Zm5hbWUgX19BUkdTKChidWZfVCAqYnVmLCBjaGFyX3UgKmZmbmFtZSwgY2hhcl91ICpzZm5hbWUsIGludCBtZXNzYWdlKSk7Ci12b2lkIGJ1Zl9zZXRfbmFtZSBfX0FSR1MoKGludCBmbnVtLCBjaGFyX3UgKm5hbWUpKTsKLXZvaWQgYnVmX25hbWVfY2hhbmdlZCBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKLWJ1Zl9UICpzZXRhbHRmbmFtZSBfX0FSR1MoKGNoYXJfdSAqZmZuYW1lLCBjaGFyX3UgKnNmbmFtZSwgbGluZW5yX1QgbG51bSkpOwotY2hhcl91ICpnZXRhbHRmbmFtZSBfX0FSR1MoKGludCBlcnJtc2cpKTsKLWludCBidWZsaXN0X2FkZCBfX0FSR1MoKGNoYXJfdSAqZm5hbWUsIGludCBmbGFncykpOwotdm9pZCBidWZsaXN0X3NsYXNoX2FkanVzdCBfX0FSR1MoKHZvaWQpKTsKLXZvaWQgYnVmbGlzdF9hbHRmcG9zIF9fQVJHUygodm9pZCkpOwotaW50IG90aGVyZmlsZSBfX0FSR1MoKGNoYXJfdSAqZmZuYW1lKSk7Ci12b2lkIGJ1Zl9zZXRpbm8gX19BUkdTKChidWZfVCAqYnVmKSk7Ci12b2lkIGZpbGVpbmZvIF9fQVJHUygoaW50IGZ1bGxuYW1lLCBpbnQgc2hvcnRoZWxwLCBpbnQgZG9udF90cnVuY2F0ZSkpOwotdm9pZCBjb2xfcHJpbnQgX19BUkdTKChjaGFyX3UgKmJ1ZiwgaW50IGNvbCwgaW50IHZjb2wpKTsKLXZvaWQgbWFrZXRpdGxlIF9fQVJHUygodm9pZCkpOwotdm9pZCByZXNldHRpdGxlIF9fQVJHUygodm9pZCkpOwotdm9pZCBmcmVlX3RpdGxlcyBfX0FSR1MoKHZvaWQpKTsKLWludCBidWlsZF9zdGxfc3RyX2hsIF9fQVJHUygod2luX1QgKndwLCBjaGFyX3UgKm91dCwgc2l6ZV90IG91dGxlbiwgY2hhcl91ICpmbXQsIGludCB1c2Vfc2FuZGJveCwgaW50IGZpbGxjaGFyLCBpbnQgbWF4d2lkdGgsIHN0cnVjdCBzdGxfaGxyZWMgKmhsdGFiLCBzdHJ1Y3Qgc3RsX2hscmVjICp0YWJ0YWIpKTsKLXZvaWQgZ2V0X3JlbF9wb3MgX19BUkdTKCh3aW5fVCAqd3AsIGNoYXJfdSAqc3RyKSk7Ci1pbnQgYXBwZW5kX2FyZ19udW1iZXIgX19BUkdTKCh3aW5fVCAqd3AsIGNoYXJfdSAqYnVmLCBpbnQgYWRkX2ZpbGUsIGludCBtYXhsZW4pKTsKLWNoYXJfdSAqZml4X2ZuYW1lIF9fQVJHUygoY2hhcl91ICpmbmFtZSkpOwotdm9pZCBmbmFtZV9leHBhbmQgX19BUkdTKChidWZfVCAqYnVmLCBjaGFyX3UgKipmZm5hbWUsIGNoYXJfdSAqKnNmbmFtZSkpOwotY2hhcl91ICphbGlzdF9uYW1lIF9fQVJHUygoYWVudHJ5X1QgKmFlcCkpOwotdm9pZCBkb19hcmdfYWxsIF9fQVJHUygoaW50IGNvdW50LCBpbnQgZm9yY2VpdCwgaW50IGtlZXBfdGFicykpOwotdm9pZCBleF9idWZmZXJfYWxsIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7Ci12b2lkIGRvX21vZGVsaW5lcyBfX0FSR1MoKGludCBmbGFncykpOwotaW50IHJlYWRfdmltaW5mb19idWZmZXJsaXN0IF9fQVJHUygodmlyX1QgKnZpcnAsIGludCB3cml0aW5nKSk7Ci12b2lkIHdyaXRlX3ZpbWluZm9fYnVmZmVybGlzdCBfX0FSR1MoKEZJTEUgKmZwKSk7Ci1jaGFyICpidWZfc3BuYW1lIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwotdm9pZCBidWZfYWRkc2lnbiBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCBpZCwgbGluZW5yX1QgbG51bSwgaW50IHR5cGVucikpOwotaW50IGJ1Zl9jaGFuZ2Vfc2lnbl90eXBlIF9fQVJHUygoYnVmX1QgKmJ1ZiwgaW50IG1hcmtJZCwgaW50IHR5cGVucikpOwotaW50X3UgYnVmX2dldHNpZ250eXBlIF9fQVJHUygoYnVmX1QgKmJ1ZiwgbGluZW5yX1QgbG51bSwgaW50IHR5cGUpKTsKLWxpbmVucl9UIGJ1Zl9kZWxzaWduIF9fQVJHUygoYnVmX1QgKmJ1ZiwgaW50IGlkKSk7Ci1pbnQgYnVmX2ZpbmRzaWduIF9fQVJHUygoYnVmX1QgKmJ1ZiwgaW50IGlkKSk7Ci1pbnQgYnVmX2ZpbmRzaWduX2lkIF9fQVJHUygoYnVmX1QgKmJ1ZiwgbGluZW5yX1QgbG51bSkpOwotaW50IGJ1Zl9maW5kc2lnbnR5cGVfaWQgX19BUkdTKChidWZfVCAqYnVmLCBsaW5lbnJfVCBsbnVtLCBpbnQgdHlwZW5yKSk7Ci1pbnQgYnVmX3NpZ25jb3VudCBfX0FSR1MoKGJ1Zl9UICpidWYsIGxpbmVucl9UIGxudW0pKTsKLXZvaWQgYnVmX2RlbGV0ZV9hbGxfc2lnbnMgX19BUkdTKCh2b2lkKSk7Ci12b2lkIHNpZ25fbGlzdF9wbGFjZWQgX19BUkdTKChidWZfVCAqcmJ1ZikpOwotdm9pZCBzaWduX21hcmtfYWRqdXN0IF9fQVJHUygobGluZW5yX1QgbGluZTEsIGxpbmVucl9UIGxpbmUyLCBsb25nIGFtb3VudCwgbG9uZyBhbW91bnRfYWZ0ZXIpKTsKLXZvaWQgc2V0X2J1Zmxpc3RlZCBfX0FSR1MoKGludCBvbikpOwotaW50IGJ1Zl9jb250ZW50c19jaGFuZ2VkIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwotdm9pZCB3aXBlX2J1ZmZlciBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCBhdWNtZCkpOworZXh0ZXJuIGludCBvcGVuX2J1ZmZlciBfX0FSR1MoKGludCByZWFkX3N0ZGluLCBleGFyZ19UICplYXApKTsKK2V4dGVybiBpbnQgYnVmX3ZhbGlkIF9fQVJHUygoYnVmX1QgKmJ1ZikpOworZXh0ZXJuIHZvaWQgY2xvc2VfYnVmZmVyIF9fQVJHUygod2luX1QgKndpbiwgYnVmX1QgKmJ1ZiwgaW50IGFjdGlvbikpOworZXh0ZXJuIHZvaWQgYnVmX2NsZWFyX2ZpbGUgX19BUkdTKChidWZfVCAqYnVmKSk7CitleHRlcm4gdm9pZCBidWZfZnJlZWFsbCBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCBkZWxfYnVmLCBpbnQgd2lwZV9idWYpKTsKK2V4dGVybiB2b2lkIGdvdG9fYnVmZmVyIF9fQVJHUygoZXhhcmdfVCAqZWFwLCBpbnQgc3RhcnQsIGludCBkaXIsIGludCBjb3VudCkpOworZXh0ZXJuIHZvaWQgaGFuZGxlX3N3YXBfZXhpc3RzIF9fQVJHUygoYnVmX1QgKm9sZF9jdXJidWYpKTsKK2V4dGVybiBjaGFyX3UgKmRvX2J1ZmRlbCBfX0FSR1MoKGludCBjb21tYW5kLCBjaGFyX3UgKmFyZywgaW50IGFkZHJfY291bnQsIGludCBzdGFydF9ibnIsIGludCBlbmRfYm5yLCBpbnQgZm9yY2VpdCkpOworZXh0ZXJuIGludCBkb19idWZmZXIgX19BUkdTKChpbnQgYWN0aW9uLCBpbnQgc3RhcnQsIGludCBkaXIsIGludCBjb3VudCwgaW50IGZvcmNlaXQpKTsKK2V4dGVybiB2b2lkIHNldF9jdXJidWYgX19BUkdTKChidWZfVCAqYnVmLCBpbnQgYWN0aW9uKSk7CitleHRlcm4gdm9pZCBlbnRlcl9idWZmZXIgX19BUkdTKChidWZfVCAqYnVmKSk7CitleHRlcm4gYnVmX1QgKmJ1Zmxpc3RfbmV3IF9fQVJHUygoY2hhcl91ICpmZm5hbWUsIGNoYXJfdSAqc2ZuYW1lLCBsaW5lbnJfVCBsbnVtLCBpbnQgZmxhZ3MpKTsKK2V4dGVybiB2b2lkIGZyZWVfYnVmX29wdGlvbnMgX19BUkdTKChidWZfVCAqYnVmLCBpbnQgZnJlZV9wX2ZmKSk7CitleHRlcm4gaW50IGJ1Zmxpc3RfZ2V0ZmlsZSBfX0FSR1MoKGludCBuLCBsaW5lbnJfVCBsbnVtLCBpbnQgb3B0aW9ucywgaW50IGZvcmNlaXQpKTsKK2V4dGVybiB2b2lkIGJ1Zmxpc3RfZ2V0ZnBvcyBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiBidWZfVCAqYnVmbGlzdF9maW5kbmFtZV9leHAgX19BUkdTKChjaGFyX3UgKmZuYW1lKSk7CitleHRlcm4gYnVmX1QgKmJ1Zmxpc3RfZmluZG5hbWUgX19BUkdTKChjaGFyX3UgKmZmbmFtZSkpOworZXh0ZXJuIGludCBidWZsaXN0X2ZpbmRwYXQgX19BUkdTKChjaGFyX3UgKnBhdHRlcm4sIGNoYXJfdSAqcGF0dGVybl9lbmQsIGludCB1bmxpc3RlZCwgaW50IGRpZmZtb2RlKSk7CitleHRlcm4gaW50IEV4cGFuZEJ1Zm5hbWVzIF9fQVJHUygoY2hhcl91ICpwYXQsIGludCAqbnVtX2ZpbGUsIGNoYXJfdSAqKipmaWxlLCBpbnQgb3B0aW9ucykpOworZXh0ZXJuIGJ1Zl9UICpidWZsaXN0X2ZpbmRuciBfX0FSR1MoKGludCBucikpOworZXh0ZXJuIGNoYXJfdSAqYnVmbGlzdF9ucjJuYW1lIF9fQVJHUygoaW50IG4sIGludCBmdWxsbmFtZSwgaW50IGhlbHB0YWlsKSk7CitleHRlcm4gdm9pZCBnZXRfd2lub3B0cyBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKK2V4dGVybiBwb3NfVCAqYnVmbGlzdF9maW5kZnBvcyBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKK2V4dGVybiBsaW5lbnJfVCBidWZsaXN0X2ZpbmRsbnVtIF9fQVJHUygoYnVmX1QgKmJ1ZikpOworZXh0ZXJuIHZvaWQgYnVmbGlzdF9saXN0IF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7CitleHRlcm4gaW50IGJ1Zmxpc3RfbmFtZV9uciBfX0FSR1MoKGludCBmbnVtLCBjaGFyX3UgKipmbmFtZSwgbGluZW5yX1QgKmxudW0pKTsKK2V4dGVybiBpbnQgc2V0Zm5hbWUgX19BUkdTKChidWZfVCAqYnVmLCBjaGFyX3UgKmZmbmFtZSwgY2hhcl91ICpzZm5hbWUsIGludCBtZXNzYWdlKSk7CitleHRlcm4gdm9pZCBidWZfc2V0X25hbWUgX19BUkdTKChpbnQgZm51bSwgY2hhcl91ICpuYW1lKSk7CitleHRlcm4gdm9pZCBidWZfbmFtZV9jaGFuZ2VkIF9fQVJHUygoYnVmX1QgKmJ1ZikpOworZXh0ZXJuIGJ1Zl9UICpzZXRhbHRmbmFtZSBfX0FSR1MoKGNoYXJfdSAqZmZuYW1lLCBjaGFyX3UgKnNmbmFtZSwgbGluZW5yX1QgbG51bSkpOworZXh0ZXJuIGNoYXJfdSAqZ2V0YWx0Zm5hbWUgX19BUkdTKChpbnQgZXJybXNnKSk7CitleHRlcm4gaW50IGJ1Zmxpc3RfYWRkIF9fQVJHUygoY2hhcl91ICpmbmFtZSwgaW50IGZsYWdzKSk7CitleHRlcm4gdm9pZCBidWZsaXN0X3NsYXNoX2FkanVzdCBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiB2b2lkIGJ1Zmxpc3RfYWx0ZnBvcyBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiBpbnQgb3RoZXJmaWxlIF9fQVJHUygoY2hhcl91ICpmZm5hbWUpKTsKK2V4dGVybiB2b2lkIGJ1Zl9zZXRpbm8gX19BUkdTKChidWZfVCAqYnVmKSk7CitleHRlcm4gdm9pZCBmaWxlaW5mbyBfX0FSR1MoKGludCBmdWxsbmFtZSwgaW50IHNob3J0aGVscCwgaW50IGRvbnRfdHJ1bmNhdGUpKTsKK2V4dGVybiB2b2lkIGNvbF9wcmludCBfX0FSR1MoKGNoYXJfdSAqYnVmLCBpbnQgY29sLCBpbnQgdmNvbCkpOworZXh0ZXJuIHZvaWQgbWFrZXRpdGxlIF9fQVJHUygodm9pZCkpOworZXh0ZXJuIHZvaWQgcmVzZXR0aXRsZSBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiB2b2lkIGZyZWVfdGl0bGVzIF9fQVJHUygodm9pZCkpOworZXh0ZXJuIGludCBidWlsZF9zdGxfc3RyX2hsIF9fQVJHUygod2luX1QgKndwLCBjaGFyX3UgKm91dCwgc2l6ZV90IG91dGxlbiwgY2hhcl91ICpmbXQsIGludCB1c2Vfc2FuZGJveCwgaW50IGZpbGxjaGFyLCBpbnQgbWF4d2lkdGgsIHN0cnVjdCBzdGxfaGxyZWMgKmhsdGFiLCBzdHJ1Y3Qgc3RsX2hscmVjICp0YWJ0YWIpKTsKK2V4dGVybiB2b2lkIGdldF9yZWxfcG9zIF9fQVJHUygod2luX1QgKndwLCBjaGFyX3UgKnN0cikpOworZXh0ZXJuIGludCBhcHBlbmRfYXJnX251bWJlciBfX0FSR1MoKHdpbl9UICp3cCwgY2hhcl91ICpidWYsIGludCBhZGRfZmlsZSwgaW50IG1heGxlbikpOworZXh0ZXJuIGNoYXJfdSAqZml4X2ZuYW1lIF9fQVJHUygoY2hhcl91ICpmbmFtZSkpOworZXh0ZXJuIHZvaWQgZm5hbWVfZXhwYW5kIF9fQVJHUygoYnVmX1QgKmJ1ZiwgY2hhcl91ICoqZmZuYW1lLCBjaGFyX3UgKipzZm5hbWUpKTsKK2V4dGVybiBjaGFyX3UgKmFsaXN0X25hbWUgX19BUkdTKChhZW50cnlfVCAqYWVwKSk7CitleHRlcm4gdm9pZCBkb19hcmdfYWxsIF9fQVJHUygoaW50IGNvdW50LCBpbnQgZm9yY2VpdCwgaW50IGtlZXBfdGFicykpOworZXh0ZXJuIHZvaWQgZXhfYnVmZmVyX2FsbCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOworZXh0ZXJuIHZvaWQgZG9fbW9kZWxpbmVzIF9fQVJHUygoaW50IGZsYWdzKSk7CitleHRlcm4gaW50IHJlYWRfdmltaW5mb19idWZmZXJsaXN0IF9fQVJHUygodmlyX1QgKnZpcnAsIGludCB3cml0aW5nKSk7CitleHRlcm4gdm9pZCB3cml0ZV92aW1pbmZvX2J1ZmZlcmxpc3QgX19BUkdTKChGSUxFICpmcCkpOworZXh0ZXJuIGNoYXIgKmJ1Zl9zcG5hbWUgX19BUkdTKChidWZfVCAqYnVmKSk7CitleHRlcm4gdm9pZCBidWZfYWRkc2lnbiBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCBpZCwgbGluZW5yX1QgbG51bSwgaW50IHR5cGVucikpOworZXh0ZXJuIGludCBidWZfY2hhbmdlX3NpZ25fdHlwZSBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCBtYXJrSWQsIGludCB0eXBlbnIpKTsKK2V4dGVybiBpbnRfdSBidWZfZ2V0c2lnbnR5cGUgX19BUkdTKChidWZfVCAqYnVmLCBsaW5lbnJfVCBsbnVtLCBpbnQgdHlwZSkpOworZXh0ZXJuIGxpbmVucl9UIGJ1Zl9kZWxzaWduIF9fQVJHUygoYnVmX1QgKmJ1ZiwgaW50IGlkKSk7CitleHRlcm4gaW50IGJ1Zl9maW5kc2lnbiBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCBpZCkpOworZXh0ZXJuIGludCBidWZfZmluZHNpZ25faWQgX19BUkdTKChidWZfVCAqYnVmLCBsaW5lbnJfVCBsbnVtKSk7CitleHRlcm4gaW50IGJ1Zl9maW5kc2lnbnR5cGVfaWQgX19BUkdTKChidWZfVCAqYnVmLCBsaW5lbnJfVCBsbnVtLCBpbnQgdHlwZW5yKSk7CitleHRlcm4gaW50IGJ1Zl9zaWduY291bnQgX19BUkdTKChidWZfVCAqYnVmLCBsaW5lbnJfVCBsbnVtKSk7CitleHRlcm4gdm9pZCBidWZfZGVsZXRlX2FsbF9zaWducyBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiB2b2lkIHNpZ25fbGlzdF9wbGFjZWQgX19BUkdTKChidWZfVCAqcmJ1ZikpOworZXh0ZXJuIHZvaWQgc2lnbl9tYXJrX2FkanVzdCBfX0FSR1MoKGxpbmVucl9UIGxpbmUxLCBsaW5lbnJfVCBsaW5lMiwgbG9uZyBhbW91bnQsIGxvbmcgYW1vdW50X2FmdGVyKSk7CitleHRlcm4gdm9pZCBzZXRfYnVmbGlzdGVkIF9fQVJHUygoaW50IG9uKSk7CitleHRlcm4gaW50IGJ1Zl9jb250ZW50c19jaGFuZ2VkIF9fQVJHUygoYnVmX1QgKmJ1ZikpOworZXh0ZXJuIHZvaWQgd2lwZV9idWZmZXIgX19BUkdTKChidWZfVCAqYnVmLCBpbnQgYXVjbWQpKTsKIC8qIHZpbTogc2V0IGZ0PWMgOiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL2NoYXJzZXQucHJvIGIvc3JjL3Byb3RvL2NoYXJzZXQucHJvCmluZGV4IDRiNjg5MGQuLmE2ZjQ4MDIgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9jaGFyc2V0LnBybworKysgYi9zcmMvcHJvdG8vY2hhcnNldC5wcm8KQEAgLTEsNTYgKzEsNTYgQEAKIC8qIGNoYXJzZXQuYyAqLwotaW50IGluaXRfY2hhcnRhYiBfX0FSR1MoKHZvaWQpKTsKLWludCBidWZfaW5pdF9jaGFydGFiIF9fQVJHUygoYnVmX1QgKmJ1ZiwgaW50IGdsb2JhbCkpOwotdm9pZCB0cmFuc19jaGFyYWN0ZXJzIF9fQVJHUygoY2hhcl91ICpidWYsIGludCBidWZzaXplKSk7Ci1jaGFyX3UgKnRyYW5zc3RyIF9fQVJHUygoY2hhcl91ICpzKSk7Ci1jaGFyX3UgKnN0cl9mb2xkY2FzZSBfX0FSR1MoKGNoYXJfdSAqc3RyLCBpbnQgb3JnbGVuLCBjaGFyX3UgKmJ1ZiwgaW50IGJ1ZmxlbikpOwotY2hhcl91ICp0cmFuc2NoYXIgX19BUkdTKChpbnQgYykpOwotY2hhcl91ICp0cmFuc2NoYXJfYnl0ZSBfX0FSR1MoKGludCBjKSk7Ci12b2lkIHRyYW5zY2hhcl9ub25wcmludCBfX0FSR1MoKGNoYXJfdSAqYnVmLCBpbnQgYykpOwotdm9pZCB0cmFuc2NoYXJfaGV4IF9fQVJHUygoY2hhcl91ICpidWYsIGludCBjKSk7Ci1pbnQgYnl0ZTJjZWxscyBfX0FSR1MoKGludCBiKSk7Ci1pbnQgY2hhcjJjZWxscyBfX0FSR1MoKGludCBjKSk7Ci1pbnQgcHRyMmNlbGxzIF9fQVJHUygoY2hhcl91ICpwKSk7Ci1pbnQgdmltX3N0cnNpemUgX19BUkdTKChjaGFyX3UgKnMpKTsKLWludCB2aW1fc3RybnNpemUgX19BUkdTKChjaGFyX3UgKnMsIGludCBsZW4pKTsKLWludCBjaGFydGFic2l6ZSBfX0FSR1MoKGNoYXJfdSAqcCwgY29sbnJfVCBjb2wpKTsKLWludCBsaW5ldGFic2l6ZSBfX0FSR1MoKGNoYXJfdSAqcykpOwotaW50IHdpbl9saW5ldGFic2l6ZSBfX0FSR1MoKHdpbl9UICp3cCwgY2hhcl91ICpwLCBjb2xucl9UIGxlbikpOwotaW50IHZpbV9pc0lEYyBfX0FSR1MoKGludCBjKSk7Ci1pbnQgdmltX2lzd29yZGMgX19BUkdTKChpbnQgYykpOwotaW50IHZpbV9pc3dvcmRwIF9fQVJHUygoY2hhcl91ICpwKSk7Ci1pbnQgdmltX2lzd29yZGNfYnVmIF9fQVJHUygoY2hhcl91ICpwLCBidWZfVCAqYnVmKSk7Ci1pbnQgdmltX2lzZmlsZWMgX19BUkdTKChpbnQgYykpOwotaW50IHZpbV9pc3ByaW50YyBfX0FSR1MoKGludCBjKSk7Ci1pbnQgdmltX2lzcHJpbnRjX3N0cmljdCBfX0FSR1MoKGludCBjKSk7Ci1pbnQgbGJyX2NoYXJ0YWJzaXplIF9fQVJHUygodW5zaWduZWQgY2hhciAqcywgY29sbnJfVCBjb2wpKTsKLWludCBsYnJfY2hhcnRhYnNpemVfYWR2IF9fQVJHUygoY2hhcl91ICoqcywgY29sbnJfVCBjb2wpKTsKLWludCB3aW5fbGJyX2NoYXJ0YWJzaXplIF9fQVJHUygod2luX1QgKndwLCBjaGFyX3UgKnMsIGNvbG5yX1QgY29sLCBpbnQgKmhlYWRwKSk7Ci1pbnQgaW5fd2luX2JvcmRlciBfX0FSR1MoKHdpbl9UICp3cCwgY29sbnJfVCB2Y29sKSk7Ci12b2lkIGdldHZjb2wgX19BUkdTKCh3aW5fVCAqd3AsIHBvc19UICpwb3MsIGNvbG5yX1QgKnN0YXJ0LCBjb2xucl9UICpjdXJzb3IsIGNvbG5yX1QgKmVuZCkpOwotY29sbnJfVCBnZXR2Y29sX25vbGlzdCBfX0FSR1MoKHBvc19UICpwb3NwKSk7Ci12b2lkIGdldHZ2Y29sIF9fQVJHUygod2luX1QgKndwLCBwb3NfVCAqcG9zLCBjb2xucl9UICpzdGFydCwgY29sbnJfVCAqY3Vyc29yLCBjb2xucl9UICplbmQpKTsKLXZvaWQgZ2V0dmNvbHMgX19BUkdTKCh3aW5fVCAqd3AsIHBvc19UICpwb3MxLCBwb3NfVCAqcG9zMiwgY29sbnJfVCAqbGVmdCwgY29sbnJfVCAqcmlnaHQpKTsKLWNoYXJfdSAqc2tpcHdoaXRlIF9fQVJHUygoY2hhcl91ICpwKSk7Ci1jaGFyX3UgKnNraXBkaWdpdHMgX19BUkdTKChjaGFyX3UgKnApKTsKLWNoYXJfdSAqc2tpcGhleCBfX0FSR1MoKGNoYXJfdSAqcCkpOwotY2hhcl91ICpza2lwdG9kaWdpdCBfX0FSR1MoKGNoYXJfdSAqcCkpOwotY2hhcl91ICpza2lwdG9oZXggX19BUkdTKChjaGFyX3UgKnApKTsKLWludCB2aW1faXNkaWdpdCBfX0FSR1MoKGludCBjKSk7Ci1pbnQgdmltX2lzeGRpZ2l0IF9fQVJHUygoaW50IGMpKTsKLWludCB2aW1faXNsb3dlciBfX0FSR1MoKGludCBjKSk7Ci1pbnQgdmltX2lzdXBwZXIgX19BUkdTKChpbnQgYykpOwotaW50IHZpbV90b3VwcGVyIF9fQVJHUygoaW50IGMpKTsKLWludCB2aW1fdG9sb3dlciBfX0FSR1MoKGludCBjKSk7Ci1jaGFyX3UgKnNraXB0b3doaXRlIF9fQVJHUygoY2hhcl91ICpwKSk7Ci1jaGFyX3UgKnNraXB0b3doaXRlX2VzYyBfX0FSR1MoKGNoYXJfdSAqcCkpOwotbG9uZyBnZXRkaWdpdHMgX19BUkdTKChjaGFyX3UgKipwcCkpOwotaW50IHZpbV9pc2JsYW5rbGluZSBfX0FSR1MoKGNoYXJfdSAqbGJ1ZikpOwotdm9pZCB2aW1fc3RyMm5yIF9fQVJHUygoY2hhcl91ICpzdGFydCwgaW50ICpoZXhwLCBpbnQgKmxlbiwgaW50IGRvb2N0LCBpbnQgZG9oZXgsIGxvbmcgKm5wdHIsIHVuc2lnbmVkIGxvbmcgKnVucHRyKSk7Ci1pbnQgaGV4Mm5yIF9fQVJHUygoaW50IGMpKTsKLWludCBoZXhoZXgybnIgX19BUkdTKChjaGFyX3UgKnApKTsKLWludCByZW1fYmFja3NsYXNoIF9fQVJHUygoY2hhcl91ICpzdHIpKTsKLXZvaWQgYmFja3NsYXNoX2hhbHZlIF9fQVJHUygoY2hhcl91ICpwKSk7Ci1jaGFyX3UgKmJhY2tzbGFzaF9oYWx2ZV9zYXZlIF9fQVJHUygoY2hhcl91ICpwKSk7Ci12b2lkIGViY2RpYzJhc2NpaSBfX0FSR1MoKGNoYXJfdSAqYnVmZmVyLCBpbnQgbGVuKSk7CitleHRlcm4gaW50IGluaXRfY2hhcnRhYiBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiBpbnQgYnVmX2luaXRfY2hhcnRhYiBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCBnbG9iYWwpKTsKK2V4dGVybiB2b2lkIHRyYW5zX2NoYXJhY3RlcnMgX19BUkdTKChjaGFyX3UgKmJ1ZiwgaW50IGJ1ZnNpemUpKTsKK2V4dGVybiBjaGFyX3UgKnRyYW5zc3RyIF9fQVJHUygoY2hhcl91ICpzKSk7CitleHRlcm4gY2hhcl91ICpzdHJfZm9sZGNhc2UgX19BUkdTKChjaGFyX3UgKnN0ciwgaW50IG9yZ2xlbiwgY2hhcl91ICpidWYsIGludCBidWZsZW4pKTsKK2V4dGVybiBjaGFyX3UgKnRyYW5zY2hhciBfX0FSR1MoKGludCBjKSk7CitleHRlcm4gY2hhcl91ICp0cmFuc2NoYXJfYnl0ZSBfX0FSR1MoKGludCBjKSk7CitleHRlcm4gdm9pZCB0cmFuc2NoYXJfbm9ucHJpbnQgX19BUkdTKChjaGFyX3UgKmJ1ZiwgaW50IGMpKTsKK2V4dGVybiB2b2lkIHRyYW5zY2hhcl9oZXggX19BUkdTKChjaGFyX3UgKmJ1ZiwgaW50IGMpKTsKK2V4dGVybiBpbnQgYnl0ZTJjZWxscyBfX0FSR1MoKGludCBiKSk7CitleHRlcm4gaW50IGNoYXIyY2VsbHMgX19BUkdTKChpbnQgYykpOworZXh0ZXJuIGludCBwdHIyY2VsbHMgX19BUkdTKChjaGFyX3UgKnApKTsKK2V4dGVybiBpbnQgdmltX3N0cnNpemUgX19BUkdTKChjaGFyX3UgKnMpKTsKK2V4dGVybiBpbnQgdmltX3N0cm5zaXplIF9fQVJHUygoY2hhcl91ICpzLCBpbnQgbGVuKSk7CitleHRlcm4gaW50IGNoYXJ0YWJzaXplIF9fQVJHUygoY2hhcl91ICpwLCBjb2xucl9UIGNvbCkpOworZXh0ZXJuIGludCBsaW5ldGFic2l6ZSBfX0FSR1MoKGNoYXJfdSAqcykpOworZXh0ZXJuIGludCB3aW5fbGluZXRhYnNpemUgX19BUkdTKCh3aW5fVCAqd3AsIGNoYXJfdSAqcCwgY29sbnJfVCBsZW4pKTsKK2V4dGVybiBpbnQgdmltX2lzSURjIF9fQVJHUygoaW50IGMpKTsKK2V4dGVybiBpbnQgdmltX2lzd29yZGMgX19BUkdTKChpbnQgYykpOworZXh0ZXJuIGludCB2aW1faXN3b3JkcCBfX0FSR1MoKGNoYXJfdSAqcCkpOworZXh0ZXJuIGludCB2aW1faXN3b3JkY19idWYgX19BUkdTKChjaGFyX3UgKnAsIGJ1Zl9UICpidWYpKTsKK2V4dGVybiBpbnQgdmltX2lzZmlsZWMgX19BUkdTKChpbnQgYykpOworZXh0ZXJuIGludCB2aW1faXNwcmludGMgX19BUkdTKChpbnQgYykpOworZXh0ZXJuIGludCB2aW1faXNwcmludGNfc3RyaWN0IF9fQVJHUygoaW50IGMpKTsKK2V4dGVybiBpbnQgbGJyX2NoYXJ0YWJzaXplIF9fQVJHUygodW5zaWduZWQgY2hhciAqcywgY29sbnJfVCBjb2wpKTsKK2V4dGVybiBpbnQgbGJyX2NoYXJ0YWJzaXplX2FkdiBfX0FSR1MoKGNoYXJfdSAqKnMsIGNvbG5yX1QgY29sKSk7CitleHRlcm4gaW50IHdpbl9sYnJfY2hhcnRhYnNpemUgX19BUkdTKCh3aW5fVCAqd3AsIGNoYXJfdSAqcywgY29sbnJfVCBjb2wsIGludCAqaGVhZHApKTsKK2V4dGVybiBpbnQgaW5fd2luX2JvcmRlciBfX0FSR1MoKHdpbl9UICp3cCwgY29sbnJfVCB2Y29sKSk7CitleHRlcm4gdm9pZCBnZXR2Y29sIF9fQVJHUygod2luX1QgKndwLCBwb3NfVCAqcG9zLCBjb2xucl9UICpzdGFydCwgY29sbnJfVCAqY3Vyc29yLCBjb2xucl9UICplbmQpKTsKK2V4dGVybiBjb2xucl9UIGdldHZjb2xfbm9saXN0IF9fQVJHUygocG9zX1QgKnBvc3ApKTsKK2V4dGVybiB2b2lkIGdldHZ2Y29sIF9fQVJHUygod2luX1QgKndwLCBwb3NfVCAqcG9zLCBjb2xucl9UICpzdGFydCwgY29sbnJfVCAqY3Vyc29yLCBjb2xucl9UICplbmQpKTsKK2V4dGVybiB2b2lkIGdldHZjb2xzIF9fQVJHUygod2luX1QgKndwLCBwb3NfVCAqcG9zMSwgcG9zX1QgKnBvczIsIGNvbG5yX1QgKmxlZnQsIGNvbG5yX1QgKnJpZ2h0KSk7CitleHRlcm4gY2hhcl91ICpza2lwd2hpdGUgX19BUkdTKChjaGFyX3UgKnApKTsKK2V4dGVybiBjaGFyX3UgKnNraXBkaWdpdHMgX19BUkdTKChjaGFyX3UgKnApKTsKK2V4dGVybiBjaGFyX3UgKnNraXBoZXggX19BUkdTKChjaGFyX3UgKnApKTsKK2V4dGVybiBjaGFyX3UgKnNraXB0b2RpZ2l0IF9fQVJHUygoY2hhcl91ICpwKSk7CitleHRlcm4gY2hhcl91ICpza2lwdG9oZXggX19BUkdTKChjaGFyX3UgKnApKTsKK2V4dGVybiBpbnQgdmltX2lzZGlnaXQgX19BUkdTKChpbnQgYykpOworZXh0ZXJuIGludCB2aW1faXN4ZGlnaXQgX19BUkdTKChpbnQgYykpOworZXh0ZXJuIGludCB2aW1faXNsb3dlciBfX0FSR1MoKGludCBjKSk7CitleHRlcm4gaW50IHZpbV9pc3VwcGVyIF9fQVJHUygoaW50IGMpKTsKK2V4dGVybiBpbnQgdmltX3RvdXBwZXIgX19BUkdTKChpbnQgYykpOworZXh0ZXJuIGludCB2aW1fdG9sb3dlciBfX0FSR1MoKGludCBjKSk7CitleHRlcm4gY2hhcl91ICpza2lwdG93aGl0ZSBfX0FSR1MoKGNoYXJfdSAqcCkpOworZXh0ZXJuIGNoYXJfdSAqc2tpcHRvd2hpdGVfZXNjIF9fQVJHUygoY2hhcl91ICpwKSk7CitleHRlcm4gbG9uZyBnZXRkaWdpdHMgX19BUkdTKChjaGFyX3UgKipwcCkpOworZXh0ZXJuIGludCB2aW1faXNibGFua2xpbmUgX19BUkdTKChjaGFyX3UgKmxidWYpKTsKK2V4dGVybiB2b2lkIHZpbV9zdHIybnIgX19BUkdTKChjaGFyX3UgKnN0YXJ0LCBpbnQgKmhleHAsIGludCAqbGVuLCBpbnQgZG9vY3QsIGludCBkb2hleCwgbG9uZyAqbnB0ciwgdW5zaWduZWQgbG9uZyAqdW5wdHIpKTsKK2V4dGVybiBpbnQgaGV4Mm5yIF9fQVJHUygoaW50IGMpKTsKK2V4dGVybiBpbnQgaGV4aGV4Mm5yIF9fQVJHUygoY2hhcl91ICpwKSk7CitleHRlcm4gaW50IHJlbV9iYWNrc2xhc2ggX19BUkdTKChjaGFyX3UgKnN0cikpOworZXh0ZXJuIHZvaWQgYmFja3NsYXNoX2hhbHZlIF9fQVJHUygoY2hhcl91ICpwKSk7CitleHRlcm4gY2hhcl91ICpiYWNrc2xhc2hfaGFsdmVfc2F2ZSBfX0FSR1MoKGNoYXJfdSAqcCkpOworZXh0ZXJuIHZvaWQgZWJjZGljMmFzY2lpIF9fQVJHUygoY2hhcl91ICpidWZmZXIsIGludCBsZW4pKTsKIC8qIHZpbTogc2V0IGZ0PWMgOiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL2V4X2dldGxuLnBybyBiL3NyYy9wcm90by9leF9nZXRsbi5wcm8KaW5kZXggZjVmZWIyMC4uNmRkMDZmZiAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL2V4X2dldGxuLnBybworKysgYi9zcmMvcHJvdG8vZXhfZ2V0bG4ucHJvCkBAIC0xLDU2ICsxLDU2IEBACiAvKiBleF9nZXRsbi5jICovCi1jaGFyX3UgKmdldGNtZGxpbmUgX19BUkdTKChpbnQgZmlyc3RjLCBsb25nIGNvdW50LCBpbnQgaW5kZW50KSk7Ci1jaGFyX3UgKmdldGNtZGxpbmVfcHJvbXB0IF9fQVJHUygoaW50IGZpcnN0YywgY2hhcl91ICpwcm9tcHQsIGludCBhdHRyLCBpbnQgeHBfY29udGV4dCwgY2hhcl91ICp4cF9hcmcpKTsKLWludCB0ZXh0X2xvY2tlZCBfX0FSR1MoKHZvaWQpKTsKLXZvaWQgdGV4dF9sb2NrZWRfbXNnIF9fQVJHUygodm9pZCkpOwotaW50IGN1cmJ1Zl9sb2NrZWQgX19BUkdTKCh2b2lkKSk7Ci1jaGFyX3UgKmdldGV4bGluZSBfX0FSR1MoKGludCBjLCB2b2lkICpkdW1teSwgaW50IGluZGVudCkpOwotY2hhcl91ICpnZXRleG1vZGVsaW5lIF9fQVJHUygoaW50IHByb21wdGMsIHZvaWQgKmR1bW15LCBpbnQgaW5kZW50KSk7Ci1pbnQgY21kbGluZV9vdmVyc3RyaWtlIF9fQVJHUygodm9pZCkpOwotaW50IGNtZGxpbmVfYXRfZW5kIF9fQVJHUygodm9pZCkpOwotY29sbnJfVCBjbWRsaW5lX2dldHZjb2xfY3Vyc29yIF9fQVJHUygodm9pZCkpOwotdm9pZCBmcmVlX2NtZGxpbmVfYnVmIF9fQVJHUygodm9pZCkpOwotdm9pZCBwdXRjbWRsaW5lIF9fQVJHUygoaW50IGMsIGludCBzaGlmdCkpOwotdm9pZCB1bnB1dGNtZGxpbmUgX19BUkdTKCh2b2lkKSk7Ci1pbnQgcHV0X29uX2NtZGxpbmUgX19BUkdTKChjaGFyX3UgKnN0ciwgaW50IGxlbiwgaW50IHJlZHJhdykpOwotY2hhcl91ICpzYXZlX2NtZGxpbmVfYWxsb2MgX19BUkdTKCh2b2lkKSk7Ci12b2lkIHJlc3RvcmVfY21kbGluZV9hbGxvYyBfX0FSR1MoKGNoYXJfdSAqcCkpOwotdm9pZCBjbWRsaW5lX3Bhc3RlX3N0ciBfX0FSR1MoKGNoYXJfdSAqcywgaW50IGxpdGVyYWxseSkpOwotdm9pZCByZWRyYXdjbWRsaW5lIF9fQVJHUygodm9pZCkpOwotdm9pZCByZWRyYXdjbWQgX19BUkdTKCh2b2lkKSk7Ci12b2lkIGNvbXB1dGVfY21kcm93IF9fQVJHUygodm9pZCkpOwotdm9pZCBnb3RvY21kbGluZSBfX0FSR1MoKGludCBjbHIpKTsKLWNoYXJfdSAqRXhwYW5kT25lIF9fQVJHUygoZXhwYW5kX1QgKnhwLCBjaGFyX3UgKnN0ciwgY2hhcl91ICpvcmlnLCBpbnQgb3B0aW9ucywgaW50IG1vZGUpKTsKLXZvaWQgRXhwYW5kSW5pdCBfX0FSR1MoKGV4cGFuZF9UICp4cCkpOwotdm9pZCBFeHBhbmRDbGVhbnVwIF9fQVJHUygoZXhwYW5kX1QgKnhwKSk7Ci12b2lkIEV4cGFuZEVzY2FwZSBfX0FSR1MoKGV4cGFuZF9UICp4cCwgY2hhcl91ICpzdHIsIGludCBudW1maWxlcywgY2hhcl91ICoqZmlsZXMsIGludCBvcHRpb25zKSk7Ci12b2lkIHRpbGRlX3JlcGxhY2UgX19BUkdTKChjaGFyX3UgKm9yaWdfcGF0LCBpbnQgbnVtX2ZpbGVzLCBjaGFyX3UgKipmaWxlcykpOwotY2hhcl91ICpzbV9nZXR0YWlsIF9fQVJHUygoY2hhcl91ICpzKSk7Ci1jaGFyX3UgKmFkZHN0YXIgX19BUkdTKChjaGFyX3UgKmZuYW1lLCBpbnQgbGVuLCBpbnQgY29udGV4dCkpOwotdm9pZCBzZXRfY21kX2NvbnRleHQgX19BUkdTKChleHBhbmRfVCAqeHAsIGNoYXJfdSAqc3RyLCBpbnQgbGVuLCBpbnQgY29sKSk7Ci1pbnQgZXhwYW5kX2NtZGxpbmUgX19BUkdTKChleHBhbmRfVCAqeHAsIGNoYXJfdSAqc3RyLCBpbnQgY29sLCBpbnQgKm1hdGNoY291bnQsIGNoYXJfdSAqKiptYXRjaGVzKSk7Ci1pbnQgRXhwYW5kR2VuZXJpYyBfX0FSR1MoKGV4cGFuZF9UICp4cCwgcmVnbWF0Y2hfVCAqcmVnbWF0Y2gsIGludCAqbnVtX2ZpbGUsIGNoYXJfdSAqKipmaWxlLCBjaGFyX3UgKigoKmZ1bmMpKGV4cGFuZF9UICosIGludCkpKSk7Ci1jaGFyX3UgKmdsb2JwYXRoIF9fQVJHUygoY2hhcl91ICpwYXRoLCBjaGFyX3UgKmZpbGUpKTsKLXZvaWQgaW5pdF9oaXN0b3J5IF9fQVJHUygodm9pZCkpOwotaW50IGdldF9oaXN0dHlwZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwotdm9pZCBhZGRfdG9faGlzdG9yeSBfX0FSR1MoKGludCBoaXN0eXBlLCBjaGFyX3UgKm5ld19lbnRyeSwgaW50IGluX21hcCwgaW50IHNlcCkpOwotaW50IGdldF9oaXN0b3J5X2lkeCBfX0FSR1MoKGludCBoaXN0eXBlKSk7Ci1jaGFyX3UgKmdldF9jbWRsaW5lX3N0ciBfX0FSR1MoKHZvaWQpKTsKLWludCBnZXRfY21kbGluZV9wb3MgX19BUkdTKCh2b2lkKSk7Ci1pbnQgc2V0X2NtZGxpbmVfcG9zIF9fQVJHUygoaW50IHBvcykpOwotaW50IGdldF9jbWRsaW5lX3R5cGUgX19BUkdTKCh2b2lkKSk7Ci1jaGFyX3UgKmdldF9oaXN0b3J5X2VudHJ5IF9fQVJHUygoaW50IGhpc3R5cGUsIGludCBpZHgpKTsKLWludCBjbHJfaGlzdG9yeSBfX0FSR1MoKGludCBoaXN0eXBlKSk7Ci1pbnQgZGVsX2hpc3RvcnlfZW50cnkgX19BUkdTKChpbnQgaGlzdHlwZSwgY2hhcl91ICpzdHIpKTsKLWludCBkZWxfaGlzdG9yeV9pZHggX19BUkdTKChpbnQgaGlzdHlwZSwgaW50IGlkeCkpOwotdm9pZCByZW1vdmVfa2V5X2Zyb21faGlzdG9yeSBfX0FSR1MoKHZvaWQpKTsKLWludCBnZXRfbGlzdF9yYW5nZSBfX0FSR1MoKGNoYXJfdSAqKnN0ciwgaW50ICpudW0xLCBpbnQgKm51bTIpKTsKLXZvaWQgZXhfaGlzdG9yeSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotdm9pZCBwcmVwYXJlX3ZpbWluZm9faGlzdG9yeSBfX0FSR1MoKGludCBhc2tsZW4pKTsKLWludCByZWFkX3ZpbWluZm9faGlzdG9yeSBfX0FSR1MoKHZpcl9UICp2aXJwKSk7Ci12b2lkIGZpbmlzaF92aW1pbmZvX2hpc3RvcnkgX19BUkdTKCh2b2lkKSk7Ci12b2lkIHdyaXRlX3ZpbWluZm9faGlzdG9yeSBfX0FSR1MoKEZJTEUgKmZwKSk7Ci12b2lkIGNtZF9wY2hhciBfX0FSR1MoKGludCBjLCBpbnQgb2Zmc2V0KSk7Ci1pbnQgY21kX2djaGFyIF9fQVJHUygoaW50IG9mZnNldCkpOwotY2hhcl91ICpzY3JpcHRfZ2V0IF9fQVJHUygoZXhhcmdfVCAqZWFwLCBjaGFyX3UgKmNtZCkpOworZXh0ZXJuIGNoYXJfdSAqZ2V0Y21kbGluZSBfX0FSR1MoKGludCBmaXJzdGMsIGxvbmcgY291bnQsIGludCBpbmRlbnQpKTsKK2V4dGVybiBjaGFyX3UgKmdldGNtZGxpbmVfcHJvbXB0IF9fQVJHUygoaW50IGZpcnN0YywgY2hhcl91ICpwcm9tcHQsIGludCBhdHRyLCBpbnQgeHBfY29udGV4dCwgY2hhcl91ICp4cF9hcmcpKTsKK2V4dGVybiBpbnQgdGV4dF9sb2NrZWQgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gdm9pZCB0ZXh0X2xvY2tlZF9tc2cgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gaW50IGN1cmJ1Zl9sb2NrZWQgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gY2hhcl91ICpnZXRleGxpbmUgX19BUkdTKChpbnQgYywgdm9pZCAqZHVtbXksIGludCBpbmRlbnQpKTsKK2V4dGVybiBjaGFyX3UgKmdldGV4bW9kZWxpbmUgX19BUkdTKChpbnQgcHJvbXB0Yywgdm9pZCAqZHVtbXksIGludCBpbmRlbnQpKTsKK2V4dGVybiBpbnQgY21kbGluZV9vdmVyc3RyaWtlIF9fQVJHUygodm9pZCkpOworZXh0ZXJuIGludCBjbWRsaW5lX2F0X2VuZCBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiBjb2xucl9UIGNtZGxpbmVfZ2V0dmNvbF9jdXJzb3IgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gdm9pZCBmcmVlX2NtZGxpbmVfYnVmIF9fQVJHUygodm9pZCkpOworZXh0ZXJuIHZvaWQgcHV0Y21kbGluZSBfX0FSR1MoKGludCBjLCBpbnQgc2hpZnQpKTsKK2V4dGVybiB2b2lkIHVucHV0Y21kbGluZSBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiBpbnQgcHV0X29uX2NtZGxpbmUgX19BUkdTKChjaGFyX3UgKnN0ciwgaW50IGxlbiwgaW50IHJlZHJhdykpOworZXh0ZXJuIGNoYXJfdSAqc2F2ZV9jbWRsaW5lX2FsbG9jIF9fQVJHUygodm9pZCkpOworZXh0ZXJuIHZvaWQgcmVzdG9yZV9jbWRsaW5lX2FsbG9jIF9fQVJHUygoY2hhcl91ICpwKSk7CitleHRlcm4gdm9pZCBjbWRsaW5lX3Bhc3RlX3N0ciBfX0FSR1MoKGNoYXJfdSAqcywgaW50IGxpdGVyYWxseSkpOworZXh0ZXJuIHZvaWQgcmVkcmF3Y21kbGluZSBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiB2b2lkIHJlZHJhd2NtZCBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiB2b2lkIGNvbXB1dGVfY21kcm93IF9fQVJHUygodm9pZCkpOworZXh0ZXJuIHZvaWQgZ290b2NtZGxpbmUgX19BUkdTKChpbnQgY2xyKSk7CitleHRlcm4gY2hhcl91ICpFeHBhbmRPbmUgX19BUkdTKChleHBhbmRfVCAqeHAsIGNoYXJfdSAqc3RyLCBjaGFyX3UgKm9yaWcsIGludCBvcHRpb25zLCBpbnQgbW9kZSkpOworZXh0ZXJuIHZvaWQgRXhwYW5kSW5pdCBfX0FSR1MoKGV4cGFuZF9UICp4cCkpOworZXh0ZXJuIHZvaWQgRXhwYW5kQ2xlYW51cCBfX0FSR1MoKGV4cGFuZF9UICp4cCkpOworZXh0ZXJuIHZvaWQgRXhwYW5kRXNjYXBlIF9fQVJHUygoZXhwYW5kX1QgKnhwLCBjaGFyX3UgKnN0ciwgaW50IG51bWZpbGVzLCBjaGFyX3UgKipmaWxlcywgaW50IG9wdGlvbnMpKTsKK2V4dGVybiB2b2lkIHRpbGRlX3JlcGxhY2UgX19BUkdTKChjaGFyX3UgKm9yaWdfcGF0LCBpbnQgbnVtX2ZpbGVzLCBjaGFyX3UgKipmaWxlcykpOworZXh0ZXJuIGNoYXJfdSAqc21fZ2V0dGFpbCBfX0FSR1MoKGNoYXJfdSAqcykpOworZXh0ZXJuIGNoYXJfdSAqYWRkc3RhciBfX0FSR1MoKGNoYXJfdSAqZm5hbWUsIGludCBsZW4sIGludCBjb250ZXh0KSk7CitleHRlcm4gdm9pZCBzZXRfY21kX2NvbnRleHQgX19BUkdTKChleHBhbmRfVCAqeHAsIGNoYXJfdSAqc3RyLCBpbnQgbGVuLCBpbnQgY29sKSk7CitleHRlcm4gaW50IGV4cGFuZF9jbWRsaW5lIF9fQVJHUygoZXhwYW5kX1QgKnhwLCBjaGFyX3UgKnN0ciwgaW50IGNvbCwgaW50ICptYXRjaGNvdW50LCBjaGFyX3UgKioqbWF0Y2hlcykpOworZXh0ZXJuIGludCBFeHBhbmRHZW5lcmljIF9fQVJHUygoZXhwYW5kX1QgKnhwLCByZWdtYXRjaF9UICpyZWdtYXRjaCwgaW50ICpudW1fZmlsZSwgY2hhcl91ICoqKmZpbGUsIGNoYXJfdSAqKCgqZnVuYykoZXhwYW5kX1QgKiwgaW50KSkpKTsKK2V4dGVybiBjaGFyX3UgKmdsb2JwYXRoIF9fQVJHUygoY2hhcl91ICpwYXRoLCBjaGFyX3UgKmZpbGUpKTsKK2V4dGVybiB2b2lkIGluaXRfaGlzdG9yeSBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiBpbnQgZ2V0X2hpc3R0eXBlIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7CitleHRlcm4gdm9pZCBhZGRfdG9faGlzdG9yeSBfX0FSR1MoKGludCBoaXN0eXBlLCBjaGFyX3UgKm5ld19lbnRyeSwgaW50IGluX21hcCwgaW50IHNlcCkpOworZXh0ZXJuIGludCBnZXRfaGlzdG9yeV9pZHggX19BUkdTKChpbnQgaGlzdHlwZSkpOworZXh0ZXJuIGNoYXJfdSAqZ2V0X2NtZGxpbmVfc3RyIF9fQVJHUygodm9pZCkpOworZXh0ZXJuIGludCBnZXRfY21kbGluZV9wb3MgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gaW50IHNldF9jbWRsaW5lX3BvcyBfX0FSR1MoKGludCBwb3MpKTsKK2V4dGVybiBpbnQgZ2V0X2NtZGxpbmVfdHlwZSBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiBjaGFyX3UgKmdldF9oaXN0b3J5X2VudHJ5IF9fQVJHUygoaW50IGhpc3R5cGUsIGludCBpZHgpKTsKK2V4dGVybiBpbnQgY2xyX2hpc3RvcnkgX19BUkdTKChpbnQgaGlzdHlwZSkpOworZXh0ZXJuIGludCBkZWxfaGlzdG9yeV9lbnRyeSBfX0FSR1MoKGludCBoaXN0eXBlLCBjaGFyX3UgKnN0cikpOworZXh0ZXJuIGludCBkZWxfaGlzdG9yeV9pZHggX19BUkdTKChpbnQgaGlzdHlwZSwgaW50IGlkeCkpOworZXh0ZXJuIHZvaWQgcmVtb3ZlX2tleV9mcm9tX2hpc3RvcnkgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gaW50IGdldF9saXN0X3JhbmdlIF9fQVJHUygoY2hhcl91ICoqc3RyLCBpbnQgKm51bTEsIGludCAqbnVtMikpOworZXh0ZXJuIHZvaWQgZXhfaGlzdG9yeSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOworZXh0ZXJuIHZvaWQgcHJlcGFyZV92aW1pbmZvX2hpc3RvcnkgX19BUkdTKChpbnQgYXNrbGVuKSk7CitleHRlcm4gaW50IHJlYWRfdmltaW5mb19oaXN0b3J5IF9fQVJHUygodmlyX1QgKnZpcnApKTsKK2V4dGVybiB2b2lkIGZpbmlzaF92aW1pbmZvX2hpc3RvcnkgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gdm9pZCB3cml0ZV92aW1pbmZvX2hpc3RvcnkgX19BUkdTKChGSUxFICpmcCkpOworZXh0ZXJuIHZvaWQgY21kX3BjaGFyIF9fQVJHUygoaW50IGMsIGludCBvZmZzZXQpKTsKK2V4dGVybiBpbnQgY21kX2djaGFyIF9fQVJHUygoaW50IG9mZnNldCkpOworZXh0ZXJuIGNoYXJfdSAqc2NyaXB0X2dldCBfX0FSR1MoKGV4YXJnX1QgKmVhcCwgY2hhcl91ICpjbWQpKTsKIC8qIHZpbTogc2V0IGZ0PWMgOiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL2dldGNoYXIucHJvIGIvc3JjL3Byb3RvL2dldGNoYXIucHJvCmluZGV4IDcxODNlYWYuLmIxZjAyZmEgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9nZXRjaGFyLnBybworKysgYi9zcmMvcHJvdG8vZ2V0Y2hhci5wcm8KQEAgLTEsNjUgKzEsNjUgQEAKIC8qIGdldGNoYXIuYyAqLwotdm9pZCBmcmVlX2J1ZmYgX19BUkdTKChzdHJ1Y3QgYnVmZmhlYWRlciAqYnVmKSk7Ci1jaGFyX3UgKmdldF9yZWNvcmRlZCBfX0FSR1MoKHZvaWQpKTsKLWNoYXJfdSAqZ2V0X2luc2VydGVkIF9fQVJHUygodm9pZCkpOwotaW50IHN0dWZmX2VtcHR5IF9fQVJHUygodm9pZCkpOwotdm9pZCB0eXBlYWhlYWRfbm9mbHVzaCBfX0FSR1MoKGludCBjKSk7Ci12b2lkIGZsdXNoX2J1ZmZlcnMgX19BUkdTKChpbnQgdHlwZWFoZWFkKSk7Ci12b2lkIFJlc2V0UmVkb2J1ZmYgX19BUkdTKCh2b2lkKSk7Ci12b2lkIHNhdmVSZWRvYnVmZiBfX0FSR1MoKHZvaWQpKTsKLXZvaWQgcmVzdG9yZVJlZG9idWZmIF9fQVJHUygodm9pZCkpOwotdm9pZCBBcHBlbmRUb1JlZG9idWZmIF9fQVJHUygoY2hhcl91ICpzKSk7Ci12b2lkIEFwcGVuZFRvUmVkb2J1ZmZMaXQgX19BUkdTKChjaGFyX3UgKnN0ciwgaW50IGxlbikpOwotdm9pZCBBcHBlbmRDaGFyVG9SZWRvYnVmZiBfX0FSR1MoKGludCBjKSk7Ci12b2lkIEFwcGVuZE51bWJlclRvUmVkb2J1ZmYgX19BUkdTKChsb25nIG4pKTsKLXZvaWQgc3R1ZmZSZWFkYnVmZiBfX0FSR1MoKGNoYXJfdSAqcykpOwotdm9pZCBzdHVmZlJlYWRidWZmTGVuIF9fQVJHUygoY2hhcl91ICpzLCBsb25nIGxlbikpOwotdm9pZCBzdHVmZlJlYWRidWZmU3BlYyBfX0FSR1MoKGNoYXJfdSAqcykpOwotdm9pZCBzdHVmZmNoYXJSZWFkYnVmZiBfX0FSR1MoKGludCBjKSk7Ci12b2lkIHN0dWZmbnVtUmVhZGJ1ZmYgX19BUkdTKChsb25nIG4pKTsKLWludCBzdGFydF9yZWRvIF9fQVJHUygobG9uZyBjb3VudCwgaW50IG9sZF9yZWRvKSk7Ci1pbnQgc3RhcnRfcmVkb19pbnMgX19BUkdTKCh2b2lkKSk7Ci12b2lkIHN0b3BfcmVkb19pbnMgX19BUkdTKCh2b2lkKSk7Ci1pbnQgaW5zX3R5cGVidWYgX19BUkdTKChjaGFyX3UgKnN0ciwgaW50IG5vcmVtYXAsIGludCBvZmZzZXQsIGludCBub3R0eXBlZCwgaW50IHNpbGVudCkpOwotdm9pZCBpbnNfY2hhcl90eXBlYnVmIF9fQVJHUygoaW50IGMpKTsKLWludCB0eXBlYnVmX2NoYW5nZWQgX19BUkdTKChpbnQgdGJfY2hhbmdlX2NudCkpOwotaW50IHR5cGVidWZfdHlwZWQgX19BUkdTKCh2b2lkKSk7Ci1pbnQgdHlwZWJ1Zl9tYXBsZW4gX19BUkdTKCh2b2lkKSk7Ci12b2lkIGRlbF90eXBlYnVmIF9fQVJHUygoaW50IGxlbiwgaW50IG9mZnNldCkpOwotaW50IGFsbG9jX3R5cGVidWYgX19BUkdTKCh2b2lkKSk7Ci12b2lkIGZyZWVfdHlwZWJ1ZiBfX0FSR1MoKHZvaWQpKTsKLWludCBzYXZlX3R5cGVidWYgX19BUkdTKCh2b2lkKSk7Ci12b2lkIHNhdmVfdHlwZWFoZWFkIF9fQVJHUygodGFzYXZlX1QgKnRwKSk7Ci12b2lkIHJlc3RvcmVfdHlwZWFoZWFkIF9fQVJHUygodGFzYXZlX1QgKnRwKSk7Ci12b2lkIG9wZW5zY3JpcHQgX19BUkdTKChjaGFyX3UgKm5hbWUsIGludCBkaXJlY3RseSkpOwotdm9pZCBjbG9zZV9hbGxfc2NyaXB0cyBfX0FSR1MoKHZvaWQpKTsKLWludCB1c2luZ19zY3JpcHQgX19BUkdTKCh2b2lkKSk7Ci12b2lkIGJlZm9yZV9ibG9ja2luZyBfX0FSR1MoKHZvaWQpKTsKLXZvaWQgdXBkYXRlc2NyaXB0IF9fQVJHUygoaW50IGMpKTsKLWludCB2Z2V0YyBfX0FSR1MoKHZvaWQpKTsKLWludCBzYWZlX3ZnZXRjIF9fQVJHUygodm9pZCkpOwotaW50IHZwZWVrYyBfX0FSR1MoKHZvaWQpKTsKLWludCB2cGVla2Nfbm9tYXAgX19BUkdTKCh2b2lkKSk7Ci1pbnQgdnBlZWtjX2FueSBfX0FSR1MoKHZvaWQpKTsKLWludCBjaGFyX2F2YWlsIF9fQVJHUygodm9pZCkpOwotdm9pZCB2dW5nZXRjIF9fQVJHUygoaW50IGMpKTsKLWludCBpbmNoYXIgX19BUkdTKChjaGFyX3UgKmJ1ZiwgaW50IG1heGxlbiwgbG9uZyB3YWl0X3RpbWUsIGludCB0Yl9jaGFuZ2VfY250KSk7Ci1pbnQgZml4X2lucHV0X2J1ZmZlciBfX0FSR1MoKGNoYXJfdSAqYnVmLCBpbnQgbGVuLCBpbnQgc2NyaXB0KSk7Ci1pbnQgaW5wdXRfYXZhaWxhYmxlIF9fQVJHUygodm9pZCkpOwotaW50IGRvX21hcCBfX0FSR1MoKGludCBtYXB0eXBlLCBjaGFyX3UgKmFyZywgaW50IG1vZGUsIGludCBhYmJyZXYpKTsKLWludCBnZXRfbWFwX21vZGUgX19BUkdTKChjaGFyX3UgKipjbWRwLCBpbnQgZm9yY2VpdCkpOwotdm9pZCBtYXBfY2xlYXIgX19BUkdTKChjaGFyX3UgKmNtZHAsIGNoYXJfdSAqYXJnLCBpbnQgZm9yY2VpdCwgaW50IGFiYnIpKTsKLXZvaWQgbWFwX2NsZWFyX2ludCBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCBtb2RlLCBpbnQgbG9jYWwsIGludCBhYmJyKSk7Ci1pbnQgbWFwX3RvX2V4aXN0cyBfX0FSR1MoKGNoYXJfdSAqc3RyLCBjaGFyX3UgKm1vZGVjaGFycywgaW50IGFiYnIpKTsKLWludCBtYXBfdG9fZXhpc3RzX21vZGUgX19BUkdTKChjaGFyX3UgKnJocywgaW50IG1vZGUsIGludCBhYmJyKSk7Ci1jaGFyX3UgKnNldF9jb250ZXh0X2luX21hcF9jbWQgX19BUkdTKChleHBhbmRfVCAqeHAsIGNoYXJfdSAqY21kLCBjaGFyX3UgKmFyZywgaW50IGZvcmNlaXQsIGludCBpc2FiYnJldiwgaW50IGlzdW5tYXAsIGNtZGlkeF9UIGNtZGlkeCkpOwotaW50IEV4cGFuZE1hcHBpbmdzIF9fQVJHUygocmVnbWF0Y2hfVCAqcmVnbWF0Y2gsIGludCAqbnVtX2ZpbGUsIGNoYXJfdSAqKipmaWxlKSk7Ci1pbnQgY2hlY2tfYWJiciBfX0FSR1MoKGludCBjLCBjaGFyX3UgKnB0ciwgaW50IGNvbCwgaW50IG1pbmNvbCkpOwotY2hhcl91ICp2aW1fc3Ryc2F2ZV9lc2NhcGVfY3NpIF9fQVJHUygoY2hhcl91ICpwKSk7Ci1pbnQgbWFrZW1hcCBfX0FSR1MoKEZJTEUgKmZkLCBidWZfVCAqYnVmKSk7Ci1pbnQgcHV0X2VzY3N0ciBfX0FSR1MoKEZJTEUgKmZkLCBjaGFyX3UgKnN0cnN0YXJ0LCBpbnQgd2hhdCkpOwotdm9pZCBjaGVja19tYXBfa2V5Y29kZXMgX19BUkdTKCh2b2lkKSk7Ci1jaGFyX3UgKmNoZWNrX21hcCBfX0FSR1MoKGNoYXJfdSAqa2V5cywgaW50IG1vZGUsIGludCBleGFjdCwgaW50IGlnbl9tb2QsIGludCBhYmJyKSk7Ci12b2lkIGluaXRfbWFwcGluZ3MgX19BUkdTKCh2b2lkKSk7Ci12b2lkIGFkZF9tYXAgX19BUkdTKChjaGFyX3UgKm1hcCwgaW50IG1vZGUpKTsKK2V4dGVybiB2b2lkIGZyZWVfYnVmZiBfX0FSR1MoKHN0cnVjdCBidWZmaGVhZGVyICpidWYpKTsKK2V4dGVybiBjaGFyX3UgKmdldF9yZWNvcmRlZCBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiBjaGFyX3UgKmdldF9pbnNlcnRlZCBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiBpbnQgc3R1ZmZfZW1wdHkgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gdm9pZCB0eXBlYWhlYWRfbm9mbHVzaCBfX0FSR1MoKGludCBjKSk7CitleHRlcm4gdm9pZCBmbHVzaF9idWZmZXJzIF9fQVJHUygoaW50IHR5cGVhaGVhZCkpOworZXh0ZXJuIHZvaWQgUmVzZXRSZWRvYnVmZiBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiB2b2lkIHNhdmVSZWRvYnVmZiBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiB2b2lkIHJlc3RvcmVSZWRvYnVmZiBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiB2b2lkIEFwcGVuZFRvUmVkb2J1ZmYgX19BUkdTKChjaGFyX3UgKnMpKTsKK2V4dGVybiB2b2lkIEFwcGVuZFRvUmVkb2J1ZmZMaXQgX19BUkdTKChjaGFyX3UgKnN0ciwgaW50IGxlbikpOworZXh0ZXJuIHZvaWQgQXBwZW5kQ2hhclRvUmVkb2J1ZmYgX19BUkdTKChpbnQgYykpOworZXh0ZXJuIHZvaWQgQXBwZW5kTnVtYmVyVG9SZWRvYnVmZiBfX0FSR1MoKGxvbmcgbikpOworZXh0ZXJuIHZvaWQgc3R1ZmZSZWFkYnVmZiBfX0FSR1MoKGNoYXJfdSAqcykpOworZXh0ZXJuIHZvaWQgc3R1ZmZSZWFkYnVmZkxlbiBfX0FSR1MoKGNoYXJfdSAqcywgbG9uZyBsZW4pKTsKK2V4dGVybiB2b2lkIHN0dWZmUmVhZGJ1ZmZTcGVjIF9fQVJHUygoY2hhcl91ICpzKSk7CitleHRlcm4gdm9pZCBzdHVmZmNoYXJSZWFkYnVmZiBfX0FSR1MoKGludCBjKSk7CitleHRlcm4gdm9pZCBzdHVmZm51bVJlYWRidWZmIF9fQVJHUygobG9uZyBuKSk7CitleHRlcm4gaW50IHN0YXJ0X3JlZG8gX19BUkdTKChsb25nIGNvdW50LCBpbnQgb2xkX3JlZG8pKTsKK2V4dGVybiBpbnQgc3RhcnRfcmVkb19pbnMgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gdm9pZCBzdG9wX3JlZG9faW5zIF9fQVJHUygodm9pZCkpOworZXh0ZXJuIGludCBpbnNfdHlwZWJ1ZiBfX0FSR1MoKGNoYXJfdSAqc3RyLCBpbnQgbm9yZW1hcCwgaW50IG9mZnNldCwgaW50IG5vdHR5cGVkLCBpbnQgc2lsZW50KSk7CitleHRlcm4gdm9pZCBpbnNfY2hhcl90eXBlYnVmIF9fQVJHUygoaW50IGMpKTsKK2V4dGVybiBpbnQgdHlwZWJ1Zl9jaGFuZ2VkIF9fQVJHUygoaW50IHRiX2NoYW5nZV9jbnQpKTsKK2V4dGVybiBpbnQgdHlwZWJ1Zl90eXBlZCBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiBpbnQgdHlwZWJ1Zl9tYXBsZW4gX19BUkdTKCh2b2lkKSk7CitleHRlcm4gdm9pZCBkZWxfdHlwZWJ1ZiBfX0FSR1MoKGludCBsZW4sIGludCBvZmZzZXQpKTsKK2V4dGVybiBpbnQgYWxsb2NfdHlwZWJ1ZiBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiB2b2lkIGZyZWVfdHlwZWJ1ZiBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiBpbnQgc2F2ZV90eXBlYnVmIF9fQVJHUygodm9pZCkpOworZXh0ZXJuIHZvaWQgc2F2ZV90eXBlYWhlYWQgX19BUkdTKCh0YXNhdmVfVCAqdHApKTsKK2V4dGVybiB2b2lkIHJlc3RvcmVfdHlwZWFoZWFkIF9fQVJHUygodGFzYXZlX1QgKnRwKSk7CitleHRlcm4gdm9pZCBvcGVuc2NyaXB0IF9fQVJHUygoY2hhcl91ICpuYW1lLCBpbnQgZGlyZWN0bHkpKTsKK2V4dGVybiB2b2lkIGNsb3NlX2FsbF9zY3JpcHRzIF9fQVJHUygodm9pZCkpOworZXh0ZXJuIGludCB1c2luZ19zY3JpcHQgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gdm9pZCBiZWZvcmVfYmxvY2tpbmcgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gdm9pZCB1cGRhdGVzY3JpcHQgX19BUkdTKChpbnQgYykpOworZXh0ZXJuIGludCB2Z2V0YyBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiBpbnQgc2FmZV92Z2V0YyBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiBpbnQgdnBlZWtjIF9fQVJHUygodm9pZCkpOworZXh0ZXJuIGludCB2cGVla2Nfbm9tYXAgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gaW50IHZwZWVrY19hbnkgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gaW50IGNoYXJfYXZhaWwgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gdm9pZCB2dW5nZXRjIF9fQVJHUygoaW50IGMpKTsKK2V4dGVybiBpbnQgaW5jaGFyIF9fQVJHUygoY2hhcl91ICpidWYsIGludCBtYXhsZW4sIGxvbmcgd2FpdF90aW1lLCBpbnQgdGJfY2hhbmdlX2NudCkpOworZXh0ZXJuIGludCBmaXhfaW5wdXRfYnVmZmVyIF9fQVJHUygoY2hhcl91ICpidWYsIGludCBsZW4sIGludCBzY3JpcHQpKTsKK2V4dGVybiBpbnQgaW5wdXRfYXZhaWxhYmxlIF9fQVJHUygodm9pZCkpOworZXh0ZXJuIGludCBkb19tYXAgX19BUkdTKChpbnQgbWFwdHlwZSwgY2hhcl91ICphcmcsIGludCBtb2RlLCBpbnQgYWJicmV2KSk7CitleHRlcm4gaW50IGdldF9tYXBfbW9kZSBfX0FSR1MoKGNoYXJfdSAqKmNtZHAsIGludCBmb3JjZWl0KSk7CitleHRlcm4gdm9pZCBtYXBfY2xlYXIgX19BUkdTKChjaGFyX3UgKmNtZHAsIGNoYXJfdSAqYXJnLCBpbnQgZm9yY2VpdCwgaW50IGFiYnIpKTsKK2V4dGVybiB2b2lkIG1hcF9jbGVhcl9pbnQgX19BUkdTKChidWZfVCAqYnVmLCBpbnQgbW9kZSwgaW50IGxvY2FsLCBpbnQgYWJicikpOworZXh0ZXJuIGludCBtYXBfdG9fZXhpc3RzIF9fQVJHUygoY2hhcl91ICpzdHIsIGNoYXJfdSAqbW9kZWNoYXJzLCBpbnQgYWJicikpOworZXh0ZXJuIGludCBtYXBfdG9fZXhpc3RzX21vZGUgX19BUkdTKChjaGFyX3UgKnJocywgaW50IG1vZGUsIGludCBhYmJyKSk7CitleHRlcm4gY2hhcl91ICpzZXRfY29udGV4dF9pbl9tYXBfY21kIF9fQVJHUygoZXhwYW5kX1QgKnhwLCBjaGFyX3UgKmNtZCwgY2hhcl91ICphcmcsIGludCBmb3JjZWl0LCBpbnQgaXNhYmJyZXYsIGludCBpc3VubWFwLCBjbWRpZHhfVCBjbWRpZHgpKTsKK2V4dGVybiBpbnQgRXhwYW5kTWFwcGluZ3MgX19BUkdTKChyZWdtYXRjaF9UICpyZWdtYXRjaCwgaW50ICpudW1fZmlsZSwgY2hhcl91ICoqKmZpbGUpKTsKK2V4dGVybiBpbnQgY2hlY2tfYWJiciBfX0FSR1MoKGludCBjLCBjaGFyX3UgKnB0ciwgaW50IGNvbCwgaW50IG1pbmNvbCkpOworZXh0ZXJuIGNoYXJfdSAqdmltX3N0cnNhdmVfZXNjYXBlX2NzaSBfX0FSR1MoKGNoYXJfdSAqcCkpOworZXh0ZXJuIGludCBtYWtlbWFwIF9fQVJHUygoRklMRSAqZmQsIGJ1Zl9UICpidWYpKTsKK2V4dGVybiBpbnQgcHV0X2VzY3N0ciBfX0FSR1MoKEZJTEUgKmZkLCBjaGFyX3UgKnN0cnN0YXJ0LCBpbnQgd2hhdCkpOworZXh0ZXJuIHZvaWQgY2hlY2tfbWFwX2tleWNvZGVzIF9fQVJHUygodm9pZCkpOworZXh0ZXJuIGNoYXJfdSAqY2hlY2tfbWFwIF9fQVJHUygoY2hhcl91ICprZXlzLCBpbnQgbW9kZSwgaW50IGV4YWN0LCBpbnQgaWduX21vZCwgaW50IGFiYnIpKTsKK2V4dGVybiB2b2lkIGluaXRfbWFwcGluZ3MgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gdm9pZCBhZGRfbWFwIF9fQVJHUygoY2hhcl91ICptYXAsIGludCBtb2RlKSk7CiAvKiB2aW06IHNldCBmdD1jIDogKi8KZGlmZiAtLWdpdCBhL3NyYy9wcm90by9ub3JtYWwucHJvIGIvc3JjL3Byb3RvL25vcm1hbC5wcm8KaW5kZXggNTVlODE2My4uODI4MGU0NSAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL25vcm1hbC5wcm8KKysrIGIvc3JjL3Byb3RvL25vcm1hbC5wcm8KQEAgLTEsMjYgKzEsMjYgQEAKIC8qIG5vcm1hbC5jICovCi12b2lkIGluaXRfbm9ybWFsX2NtZHMgX19BUkdTKCh2b2lkKSk7Ci12b2lkIG5vcm1hbF9jbWQgX19BUkdTKChvcGFyZ19UICpvYXAsIGludCB0b3BsZXZlbCkpOwotdm9pZCBkb19wZW5kaW5nX29wZXJhdG9yIF9fQVJHUygoY21kYXJnX1QgKmNhcCwgaW50IG9sZF9jb2wsIGludCBndWlfeWFuaykpOwotaW50IGRvX21vdXNlIF9fQVJHUygob3BhcmdfVCAqb2FwLCBpbnQgYywgaW50IGRpciwgbG9uZyBjb3VudCwgaW50IGZpeGluZGVudCkpOwotdm9pZCBjaGVja192aXN1YWxfaGlnaGxpZ2h0IF9fQVJHUygodm9pZCkpOwotdm9pZCBlbmRfdmlzdWFsX21vZGUgX19BUkdTKCh2b2lkKSk7Ci12b2lkIHJlc2V0X1ZJc3VhbF9hbmRfcmVzZWwgX19BUkdTKCh2b2lkKSk7Ci12b2lkIHJlc2V0X1ZJc3VhbCBfX0FSR1MoKHZvaWQpKTsKLWludCBmaW5kX2lkZW50X3VuZGVyX2N1cnNvciBfX0FSR1MoKGNoYXJfdSAqKnN0cmluZywgaW50IGZpbmRfdHlwZSkpOwotaW50IGZpbmRfaWRlbnRfYXRfcG9zIF9fQVJHUygod2luX1QgKndwLCBsaW5lbnJfVCBsbnVtLCBjb2xucl9UIHN0YXJ0Y29sLCBjaGFyX3UgKipzdHJpbmcsIGludCBmaW5kX3R5cGUpKTsKLXZvaWQgY2xlYXJfc2hvd2NtZCBfX0FSR1MoKHZvaWQpKTsKLWludCBhZGRfdG9fc2hvd2NtZCBfX0FSR1MoKGludCBjKSk7Ci12b2lkIGFkZF90b19zaG93Y21kX2MgX19BUkdTKChpbnQgYykpOwotdm9pZCBwdXNoX3Nob3djbWQgX19BUkdTKCh2b2lkKSk7Ci12b2lkIHBvcF9zaG93Y21kIF9fQVJHUygodm9pZCkpOwotdm9pZCBkb19jaGVja19zY3JvbGxiaW5kIF9fQVJHUygoaW50IGNoZWNrKSk7Ci12b2lkIGNoZWNrX3Njcm9sbGJpbmQgX19BUkdTKChsaW5lbnJfVCB0b3BsaW5lX2RpZmYsIGxvbmcgbGVmdGNvbF9kaWZmKSk7Ci1pbnQgZmluZF9kZWNsIF9fQVJHUygoY2hhcl91ICpwdHIsIGludCBsZW4sIGludCBsb2NhbGx5LCBpbnQgdGhpc2Jsb2NrLCBpbnQgc2VhcmNoZmxhZ3MpKTsKLXZvaWQgc2Nyb2xsX3JlZHJhdyBfX0FSR1MoKGludCB1cCwgbG9uZyBjb3VudCkpOwotdm9pZCBoYW5kbGVfdGFibWVudSBfX0FSR1MoKHZvaWQpKTsKLXZvaWQgZG9fbnZfaWRlbnQgX19BUkdTKChpbnQgYzEsIGludCBjMikpOwotaW50IGdldF92aXN1YWxfdGV4dCBfX0FSR1MoKGNtZGFyZ19UICpjYXAsIGNoYXJfdSAqKnBwLCBpbnQgKmxlbnApKTsKLXZvaWQgc3RhcnRfc2VsZWN0aW9uIF9fQVJHUygodm9pZCkpOwotdm9pZCBtYXlfc3RhcnRfc2VsZWN0IF9fQVJHUygoaW50IGMpKTsKK2V4dGVybiB2b2lkIGluaXRfbm9ybWFsX2NtZHMgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gdm9pZCBub3JtYWxfY21kIF9fQVJHUygob3BhcmdfVCAqb2FwLCBpbnQgdG9wbGV2ZWwpKTsKK2V4dGVybiB2b2lkIGRvX3BlbmRpbmdfb3BlcmF0b3IgX19BUkdTKChjbWRhcmdfVCAqY2FwLCBpbnQgb2xkX2NvbCwgaW50IGd1aV95YW5rKSk7CitleHRlcm4gaW50IGRvX21vdXNlIF9fQVJHUygob3BhcmdfVCAqb2FwLCBpbnQgYywgaW50IGRpciwgbG9uZyBjb3VudCwgaW50IGZpeGluZGVudCkpOworZXh0ZXJuIHZvaWQgY2hlY2tfdmlzdWFsX2hpZ2hsaWdodCBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiB2b2lkIGVuZF92aXN1YWxfbW9kZSBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiB2b2lkIHJlc2V0X1ZJc3VhbF9hbmRfcmVzZWwgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gdm9pZCByZXNldF9WSXN1YWwgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gaW50IGZpbmRfaWRlbnRfdW5kZXJfY3Vyc29yIF9fQVJHUygoY2hhcl91ICoqc3RyaW5nLCBpbnQgZmluZF90eXBlKSk7CitleHRlcm4gaW50IGZpbmRfaWRlbnRfYXRfcG9zIF9fQVJHUygod2luX1QgKndwLCBsaW5lbnJfVCBsbnVtLCBjb2xucl9UIHN0YXJ0Y29sLCBjaGFyX3UgKipzdHJpbmcsIGludCBmaW5kX3R5cGUpKTsKK2V4dGVybiB2b2lkIGNsZWFyX3Nob3djbWQgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gaW50IGFkZF90b19zaG93Y21kIF9fQVJHUygoaW50IGMpKTsKK2V4dGVybiB2b2lkIGFkZF90b19zaG93Y21kX2MgX19BUkdTKChpbnQgYykpOworZXh0ZXJuIHZvaWQgcHVzaF9zaG93Y21kIF9fQVJHUygodm9pZCkpOworZXh0ZXJuIHZvaWQgcG9wX3Nob3djbWQgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gdm9pZCBkb19jaGVja19zY3JvbGxiaW5kIF9fQVJHUygoaW50IGNoZWNrKSk7CitleHRlcm4gdm9pZCBjaGVja19zY3JvbGxiaW5kIF9fQVJHUygobGluZW5yX1QgdG9wbGluZV9kaWZmLCBsb25nIGxlZnRjb2xfZGlmZikpOworZXh0ZXJuIGludCBmaW5kX2RlY2wgX19BUkdTKChjaGFyX3UgKnB0ciwgaW50IGxlbiwgaW50IGxvY2FsbHksIGludCB0aGlzYmxvY2ssIGludCBzZWFyY2hmbGFncykpOworZXh0ZXJuIHZvaWQgc2Nyb2xsX3JlZHJhdyBfX0FSR1MoKGludCB1cCwgbG9uZyBjb3VudCkpOworZXh0ZXJuIHZvaWQgaGFuZGxlX3RhYm1lbnUgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gdm9pZCBkb19udl9pZGVudCBfX0FSR1MoKGludCBjMSwgaW50IGMyKSk7CitleHRlcm4gaW50IGdldF92aXN1YWxfdGV4dCBfX0FSR1MoKGNtZGFyZ19UICpjYXAsIGNoYXJfdSAqKnBwLCBpbnQgKmxlbnApKTsKK2V4dGVybiB2b2lkIHN0YXJ0X3NlbGVjdGlvbiBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiB2b2lkIG1heV9zdGFydF9zZWxlY3QgX19BUkdTKChpbnQgYykpOwogLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vb3BzLnBybyBiL3NyYy9wcm90by9vcHMucHJvCmluZGV4IGQxNjY5YTAuLmQ2MjE2YjkgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9vcHMucHJvCisrKyBiL3NyYy9wcm90by9vcHMucHJvCkBAIC0xLDYxICsxLDYxIEBACiAvKiBvcHMuYyAqLwotaW50IGdldF9vcF90eXBlIF9fQVJHUygoaW50IGNoYXIxLCBpbnQgY2hhcjIpKTsKLWludCBvcF9vbl9saW5lcyBfX0FSR1MoKGludCBvcCkpOwotaW50IGdldF9vcF9jaGFyIF9fQVJHUygoaW50IG9wdHlwZSkpOwotaW50IGdldF9leHRyYV9vcF9jaGFyIF9fQVJHUygoaW50IG9wdHlwZSkpOwotdm9pZCBvcF9zaGlmdCBfX0FSR1MoKG9wYXJnX1QgKm9hcCwgaW50IGN1cnNfdG9wLCBpbnQgYW1vdW50KSk7Ci12b2lkIHNoaWZ0X2xpbmUgX19BUkdTKChpbnQgbGVmdCwgaW50IHJvdW5kLCBpbnQgYW1vdW50KSk7Ci12b2lkIG9wX3JlaW5kZW50IF9fQVJHUygob3BhcmdfVCAqb2FwLCBpbnQgKCpob3cpKHZvaWQpKSk7Ci1pbnQgZ2V0X2V4cHJfcmVnaXN0ZXIgX19BUkdTKCh2b2lkKSk7Ci12b2lkIHNldF9leHByX2xpbmUgX19BUkdTKChjaGFyX3UgKm5ld19saW5lKSk7Ci1jaGFyX3UgKmdldF9leHByX2xpbmUgX19BUkdTKCh2b2lkKSk7Ci1jaGFyX3UgKmdldF9leHByX2xpbmVfc3JjIF9fQVJHUygodm9pZCkpOwotaW50IHZhbGlkX3lhbmtfcmVnIF9fQVJHUygoaW50IHJlZ25hbWUsIGludCB3cml0aW5nKSk7Ci12b2lkIGdldF95YW5rX3JlZ2lzdGVyIF9fQVJHUygoaW50IHJlZ25hbWUsIGludCB3cml0aW5nKSk7Ci1pbnQgbWF5X2dldF9zZWxlY3Rpb24gX19BUkdTKChpbnQgcmVnbmFtZSkpOwotdm9pZCAqZ2V0X3JlZ2lzdGVyIF9fQVJHUygoaW50IG5hbWUsIGludCBjb3B5KSk7Ci12b2lkIHB1dF9yZWdpc3RlciBfX0FSR1MoKGludCBuYW1lLCB2b2lkICpyZWcpKTsKLWludCB5YW5rX3JlZ2lzdGVyX21saW5lIF9fQVJHUygoaW50IHJlZ25hbWUpKTsKLWludCBkb19yZWNvcmQgX19BUkdTKChpbnQgYykpOwotaW50IGRvX2V4ZWNyZWcgX19BUkdTKChpbnQgcmVnbmFtZSwgaW50IGNvbG9uLCBpbnQgYWRkY3IpKTsKLWludCBpbnNlcnRfcmVnIF9fQVJHUygoaW50IHJlZ25hbWUsIGludCBsaXRlcmFsbHkpKTsKLWludCBnZXRfc3BlY19yZWcgX19BUkdTKChpbnQgcmVnbmFtZSwgY2hhcl91ICoqYXJncCwgaW50ICphbGxvY2F0ZWQsIGludCBlcnJtc2cpKTsKLWludCBjbWRsaW5lX3Bhc3RlX3JlZyBfX0FSR1MoKGludCByZWduYW1lLCBpbnQgbGl0ZXJhbGx5KSk7Ci12b2lkIGFkanVzdF9jbGlwX3JlZyBfX0FSR1MoKGludCAqcnApKTsKLWludCBvcF9kZWxldGUgX19BUkdTKChvcGFyZ19UICpvYXApKTsKLWludCBvcF9yZXBsYWNlIF9fQVJHUygob3BhcmdfVCAqb2FwLCBpbnQgYykpOwotdm9pZCBvcF90aWxkZSBfX0FSR1MoKG9wYXJnX1QgKm9hcCkpOwotaW50IHN3YXBjaGFyIF9fQVJHUygoaW50IG9wX3R5cGUsIHBvc19UICpwb3MpKTsKLXZvaWQgb3BfaW5zZXJ0IF9fQVJHUygob3BhcmdfVCAqb2FwLCBsb25nIGNvdW50MSkpOwotaW50IG9wX2NoYW5nZSBfX0FSR1MoKG9wYXJnX1QgKm9hcCkpOwotdm9pZCBpbml0X3lhbmsgX19BUkdTKCh2b2lkKSk7Ci12b2lkIGNsZWFyX3JlZ2lzdGVycyBfX0FSR1MoKHZvaWQpKTsKLWludCBvcF95YW5rIF9fQVJHUygob3BhcmdfVCAqb2FwLCBpbnQgZGVsZXRpbmcsIGludCBtZXNzKSk7Ci12b2lkIGRvX3B1dCBfX0FSR1MoKGludCByZWduYW1lLCBpbnQgZGlyLCBsb25nIGNvdW50LCBpbnQgZmxhZ3MpKTsKLXZvaWQgYWRqdXN0X2N1cnNvcl9lb2wgX19BUkdTKCh2b2lkKSk7Ci1pbnQgcHJlcHJvY3NfbGVmdCBfX0FSR1MoKHZvaWQpKTsKLWludCBnZXRfcmVnaXN0ZXJfbmFtZSBfX0FSR1MoKGludCBudW0pKTsKLXZvaWQgZXhfZGlzcGxheSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOwotdm9pZCBkb19kb19qb2luIF9fQVJHUygobG9uZyBjb3VudCwgaW50IGluc2VydF9zcGFjZSkpOwotaW50IGRvX2pvaW4gX19BUkdTKChpbnQgaW5zZXJ0X3NwYWNlKSk7Ci12b2lkIG9wX2Zvcm1hdCBfX0FSR1MoKG9wYXJnX1QgKm9hcCwgaW50IGtlZXBfY3Vyc29yKSk7Ci12b2lkIG9wX2Zvcm1hdGV4cHIgX19BUkdTKChvcGFyZ19UICpvYXApKTsKLWludCBmZXhfZm9ybWF0IF9fQVJHUygobGluZW5yX1QgbG51bSwgbG9uZyBjb3VudCwgaW50IGMpKTsKLXZvaWQgZm9ybWF0X2xpbmVzIF9fQVJHUygobGluZW5yX1QgbGluZV9jb3VudCkpOwotaW50IHBhcmFncmFwaF9zdGFydCBfX0FSR1MoKGxpbmVucl9UIGxudW0pKTsKLWludCBkb19hZGRzdWIgX19BUkdTKChpbnQgY29tbWFuZCwgbGluZW5yX1QgUHJlbnVtMSkpOwotaW50IHJlYWRfdmltaW5mb19yZWdpc3RlciBfX0FSR1MoKHZpcl9UICp2aXJwLCBpbnQgZm9yY2UpKTsKLXZvaWQgd3JpdGVfdmltaW5mb19yZWdpc3RlcnMgX19BUkdTKChGSUxFICpmcCkpOwotdm9pZCB4MTFfZXhwb3J0X2ZpbmFsX3NlbGVjdGlvbiBfX0FSR1MoKHZvaWQpKTsKLXZvaWQgY2xpcF9mcmVlX3NlbGVjdGlvbiBfX0FSR1MoKFZpbUNsaXBib2FyZCAqY2JkKSk7Ci12b2lkIGNsaXBfZ2V0X3NlbGVjdGlvbiBfX0FSR1MoKFZpbUNsaXBib2FyZCAqY2JkKSk7Ci12b2lkIGNsaXBfeWFua19zZWxlY3Rpb24gX19BUkdTKChpbnQgdHlwZSwgY2hhcl91ICpzdHIsIGxvbmcgbGVuLCBWaW1DbGlwYm9hcmQgKmNiZCkpOwotaW50IGNsaXBfY29udmVydF9zZWxlY3Rpb24gX19BUkdTKChjaGFyX3UgKipzdHIsIGxvbmdfdSAqbGVuLCBWaW1DbGlwYm9hcmQgKmNiZCkpOwotdm9pZCBkbmRfeWFua19kcmFnX2RhdGEgX19BUkdTKChjaGFyX3UgKnN0ciwgbG9uZyBsZW4pKTsKLWNoYXJfdSBnZXRfcmVnX3R5cGUgX19BUkdTKChpbnQgcmVnbmFtZSwgbG9uZyAqcmVnbGVuKSk7Ci1jaGFyX3UgKmdldF9yZWdfY29udGVudHMgX19BUkdTKChpbnQgcmVnbmFtZSwgaW50IGFsbG93ZXhwciwgaW50IGV4cHJfc3JjKSk7Ci12b2lkIHdyaXRlX3JlZ19jb250ZW50cyBfX0FSR1MoKGludCBuYW1lLCBjaGFyX3UgKnN0ciwgaW50IG1heGxlbiwgaW50IG11c3RfYXBwZW5kKSk7Ci12b2lkIHdyaXRlX3JlZ19jb250ZW50c19leCBfX0FSR1MoKGludCBuYW1lLCBjaGFyX3UgKnN0ciwgaW50IG1heGxlbiwgaW50IG11c3RfYXBwZW5kLCBpbnQgeWFua190eXBlLCBsb25nIGJsb2NrX2xlbikpOwotdm9pZCBjbGVhcl9vcGFyZyBfX0FSR1MoKG9wYXJnX1QgKm9hcCkpOwotdm9pZCBjdXJzb3JfcG9zX2luZm8gX19BUkdTKCh2b2lkKSk7CitleHRlcm4gaW50IGdldF9vcF90eXBlIF9fQVJHUygoaW50IGNoYXIxLCBpbnQgY2hhcjIpKTsKK2V4dGVybiBpbnQgb3Bfb25fbGluZXMgX19BUkdTKChpbnQgb3ApKTsKK2V4dGVybiBpbnQgZ2V0X29wX2NoYXIgX19BUkdTKChpbnQgb3B0eXBlKSk7CitleHRlcm4gaW50IGdldF9leHRyYV9vcF9jaGFyIF9fQVJHUygoaW50IG9wdHlwZSkpOworZXh0ZXJuIHZvaWQgb3Bfc2hpZnQgX19BUkdTKChvcGFyZ19UICpvYXAsIGludCBjdXJzX3RvcCwgaW50IGFtb3VudCkpOworZXh0ZXJuIHZvaWQgc2hpZnRfbGluZSBfX0FSR1MoKGludCBsZWZ0LCBpbnQgcm91bmQsIGludCBhbW91bnQpKTsKK2V4dGVybiB2b2lkIG9wX3JlaW5kZW50IF9fQVJHUygob3BhcmdfVCAqb2FwLCBpbnQgKCpob3cpKHZvaWQpKSk7CitleHRlcm4gaW50IGdldF9leHByX3JlZ2lzdGVyIF9fQVJHUygodm9pZCkpOworZXh0ZXJuIHZvaWQgc2V0X2V4cHJfbGluZSBfX0FSR1MoKGNoYXJfdSAqbmV3X2xpbmUpKTsKK2V4dGVybiBjaGFyX3UgKmdldF9leHByX2xpbmUgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gY2hhcl91ICpnZXRfZXhwcl9saW5lX3NyYyBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiBpbnQgdmFsaWRfeWFua19yZWcgX19BUkdTKChpbnQgcmVnbmFtZSwgaW50IHdyaXRpbmcpKTsKK2V4dGVybiB2b2lkIGdldF95YW5rX3JlZ2lzdGVyIF9fQVJHUygoaW50IHJlZ25hbWUsIGludCB3cml0aW5nKSk7CitleHRlcm4gaW50IG1heV9nZXRfc2VsZWN0aW9uIF9fQVJHUygoaW50IHJlZ25hbWUpKTsKK2V4dGVybiB2b2lkICpnZXRfcmVnaXN0ZXIgX19BUkdTKChpbnQgbmFtZSwgaW50IGNvcHkpKTsKK2V4dGVybiB2b2lkIHB1dF9yZWdpc3RlciBfX0FSR1MoKGludCBuYW1lLCB2b2lkICpyZWcpKTsKK2V4dGVybiBpbnQgeWFua19yZWdpc3Rlcl9tbGluZSBfX0FSR1MoKGludCByZWduYW1lKSk7CitleHRlcm4gaW50IGRvX3JlY29yZCBfX0FSR1MoKGludCBjKSk7CitleHRlcm4gaW50IGRvX2V4ZWNyZWcgX19BUkdTKChpbnQgcmVnbmFtZSwgaW50IGNvbG9uLCBpbnQgYWRkY3IpKTsKK2V4dGVybiBpbnQgaW5zZXJ0X3JlZyBfX0FSR1MoKGludCByZWduYW1lLCBpbnQgbGl0ZXJhbGx5KSk7CitleHRlcm4gaW50IGdldF9zcGVjX3JlZyBfX0FSR1MoKGludCByZWduYW1lLCBjaGFyX3UgKiphcmdwLCBpbnQgKmFsbG9jYXRlZCwgaW50IGVycm1zZykpOworZXh0ZXJuIGludCBjbWRsaW5lX3Bhc3RlX3JlZyBfX0FSR1MoKGludCByZWduYW1lLCBpbnQgbGl0ZXJhbGx5KSk7CitleHRlcm4gdm9pZCBhZGp1c3RfY2xpcF9yZWcgX19BUkdTKChpbnQgKnJwKSk7CitleHRlcm4gaW50IG9wX2RlbGV0ZSBfX0FSR1MoKG9wYXJnX1QgKm9hcCkpOworZXh0ZXJuIGludCBvcF9yZXBsYWNlIF9fQVJHUygob3BhcmdfVCAqb2FwLCBpbnQgYykpOworZXh0ZXJuIHZvaWQgb3BfdGlsZGUgX19BUkdTKChvcGFyZ19UICpvYXApKTsKK2V4dGVybiBpbnQgc3dhcGNoYXIgX19BUkdTKChpbnQgb3BfdHlwZSwgcG9zX1QgKnBvcykpOworZXh0ZXJuIHZvaWQgb3BfaW5zZXJ0IF9fQVJHUygob3BhcmdfVCAqb2FwLCBsb25nIGNvdW50MSkpOworZXh0ZXJuIGludCBvcF9jaGFuZ2UgX19BUkdTKChvcGFyZ19UICpvYXApKTsKK2V4dGVybiB2b2lkIGluaXRfeWFuayBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiB2b2lkIGNsZWFyX3JlZ2lzdGVycyBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiBpbnQgb3BfeWFuayBfX0FSR1MoKG9wYXJnX1QgKm9hcCwgaW50IGRlbGV0aW5nLCBpbnQgbWVzcykpOworZXh0ZXJuIHZvaWQgZG9fcHV0IF9fQVJHUygoaW50IHJlZ25hbWUsIGludCBkaXIsIGxvbmcgY291bnQsIGludCBmbGFncykpOworZXh0ZXJuIHZvaWQgYWRqdXN0X2N1cnNvcl9lb2wgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gaW50IHByZXByb2NzX2xlZnQgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gaW50IGdldF9yZWdpc3Rlcl9uYW1lIF9fQVJHUygoaW50IG51bSkpOworZXh0ZXJuIHZvaWQgZXhfZGlzcGxheSBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOworZXh0ZXJuIHZvaWQgZG9fZG9fam9pbiBfX0FSR1MoKGxvbmcgY291bnQsIGludCBpbnNlcnRfc3BhY2UpKTsKK2V4dGVybiBpbnQgZG9fam9pbiBfX0FSR1MoKGludCBpbnNlcnRfc3BhY2UpKTsKK2V4dGVybiB2b2lkIG9wX2Zvcm1hdCBfX0FSR1MoKG9wYXJnX1QgKm9hcCwgaW50IGtlZXBfY3Vyc29yKSk7CitleHRlcm4gdm9pZCBvcF9mb3JtYXRleHByIF9fQVJHUygob3BhcmdfVCAqb2FwKSk7CitleHRlcm4gaW50IGZleF9mb3JtYXQgX19BUkdTKChsaW5lbnJfVCBsbnVtLCBsb25nIGNvdW50LCBpbnQgYykpOworZXh0ZXJuIHZvaWQgZm9ybWF0X2xpbmVzIF9fQVJHUygobGluZW5yX1QgbGluZV9jb3VudCkpOworZXh0ZXJuIGludCBwYXJhZ3JhcGhfc3RhcnQgX19BUkdTKChsaW5lbnJfVCBsbnVtKSk7CitleHRlcm4gaW50IGRvX2FkZHN1YiBfX0FSR1MoKGludCBjb21tYW5kLCBsaW5lbnJfVCBQcmVudW0xKSk7CitleHRlcm4gaW50IHJlYWRfdmltaW5mb19yZWdpc3RlciBfX0FSR1MoKHZpcl9UICp2aXJwLCBpbnQgZm9yY2UpKTsKK2V4dGVybiB2b2lkIHdyaXRlX3ZpbWluZm9fcmVnaXN0ZXJzIF9fQVJHUygoRklMRSAqZnApKTsKK2V4dGVybiB2b2lkIHgxMV9leHBvcnRfZmluYWxfc2VsZWN0aW9uIF9fQVJHUygodm9pZCkpOworZXh0ZXJuIHZvaWQgY2xpcF9mcmVlX3NlbGVjdGlvbiBfX0FSR1MoKFZpbUNsaXBib2FyZCAqY2JkKSk7CitleHRlcm4gdm9pZCBjbGlwX2dldF9zZWxlY3Rpb24gX19BUkdTKChWaW1DbGlwYm9hcmQgKmNiZCkpOworZXh0ZXJuIHZvaWQgY2xpcF95YW5rX3NlbGVjdGlvbiBfX0FSR1MoKGludCB0eXBlLCBjaGFyX3UgKnN0ciwgbG9uZyBsZW4sIFZpbUNsaXBib2FyZCAqY2JkKSk7CitleHRlcm4gaW50IGNsaXBfY29udmVydF9zZWxlY3Rpb24gX19BUkdTKChjaGFyX3UgKipzdHIsIGxvbmdfdSAqbGVuLCBWaW1DbGlwYm9hcmQgKmNiZCkpOworZXh0ZXJuIHZvaWQgZG5kX3lhbmtfZHJhZ19kYXRhIF9fQVJHUygoY2hhcl91ICpzdHIsIGxvbmcgbGVuKSk7CitleHRlcm4gY2hhcl91IGdldF9yZWdfdHlwZSBfX0FSR1MoKGludCByZWduYW1lLCBsb25nICpyZWdsZW4pKTsKK2V4dGVybiBjaGFyX3UgKmdldF9yZWdfY29udGVudHMgX19BUkdTKChpbnQgcmVnbmFtZSwgaW50IGFsbG93ZXhwciwgaW50IGV4cHJfc3JjKSk7CitleHRlcm4gdm9pZCB3cml0ZV9yZWdfY29udGVudHMgX19BUkdTKChpbnQgbmFtZSwgY2hhcl91ICpzdHIsIGludCBtYXhsZW4sIGludCBtdXN0X2FwcGVuZCkpOworZXh0ZXJuIHZvaWQgd3JpdGVfcmVnX2NvbnRlbnRzX2V4IF9fQVJHUygoaW50IG5hbWUsIGNoYXJfdSAqc3RyLCBpbnQgbWF4bGVuLCBpbnQgbXVzdF9hcHBlbmQsIGludCB5YW5rX3R5cGUsIGxvbmcgYmxvY2tfbGVuKSk7CitleHRlcm4gdm9pZCBjbGVhcl9vcGFyZyBfX0FSR1MoKG9wYXJnX1QgKm9hcCkpOworZXh0ZXJuIHZvaWQgY3Vyc29yX3Bvc19pbmZvIF9fQVJHUygodm9pZCkpOwogLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vd2luZG93LnBybyBiL3NyYy9wcm90by93aW5kb3cucHJvCmluZGV4IDQ1YTkwYjguLmFkNDBhNTIgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by93aW5kb3cucHJvCisrKyBiL3NyYy9wcm90by93aW5kb3cucHJvCkBAIC0xLDYyICsxLDYyIEBACiAvKiB3aW5kb3cuYyAqLwotdm9pZCBkb193aW5kb3cgX19BUkdTKChpbnQgbmNoYXIsIGxvbmcgUHJlbnVtLCBpbnQgeGNoYXIpKTsKLWludCB3aW5fc3BsaXQgX19BUkdTKChpbnQgc2l6ZSwgaW50IGZsYWdzKSk7Ci1pbnQgd2luX3ZhbGlkIF9fQVJHUygod2luX1QgKndpbikpOwotaW50IHdpbl9jb3VudCBfX0FSR1MoKHZvaWQpKTsKLWludCBtYWtlX3dpbmRvd3MgX19BUkdTKChpbnQgY291bnQsIGludCB2ZXJ0aWNhbCkpOwotdm9pZCB3aW5fbW92ZV9hZnRlciBfX0FSR1MoKHdpbl9UICp3aW4xLCB3aW5fVCAqd2luMikpOwotdm9pZCB3aW5fZXF1YWwgX19BUkdTKCh3aW5fVCAqbmV4dF9jdXJ3aW4sIGludCBjdXJyZW50LCBpbnQgZGlyKSk7Ci12b2lkIGNsb3NlX3dpbmRvd3MgX19BUkdTKChidWZfVCAqYnVmLCBpbnQga2VlcF9jdXJ3aW4pKTsKLXZvaWQgd2luX2Nsb3NlIF9fQVJHUygod2luX1QgKndpbiwgaW50IGZyZWVfYnVmKSk7Ci12b2lkIHdpbl9jbG9zZV9vdGhlcnRhYiBfX0FSR1MoKHdpbl9UICp3aW4sIGludCBmcmVlX2J1ZiwgdGFicGFnZV9UICp0cCkpOwotdm9pZCB3aW5fZnJlZV9hbGwgX19BUkdTKCh2b2lkKSk7Ci12b2lkIGNsb3NlX290aGVycyBfX0FSR1MoKGludCBtZXNzYWdlLCBpbnQgZm9yY2VpdCkpOwotdm9pZCBjdXJ3aW5faW5pdCBfX0FSR1MoKHZvaWQpKTsKLWludCB3aW5fYWxsb2NfZmlyc3QgX19BUkdTKCh2b2lkKSk7Ci12b2lkIHdpbl9pbml0X3NpemUgX19BUkdTKCh2b2lkKSk7Ci12b2lkIGZyZWVfdGFicGFnZSBfX0FSR1MoKHRhYnBhZ2VfVCAqdHApKTsKLWludCB3aW5fbmV3X3RhYnBhZ2UgX19BUkdTKChpbnQgYWZ0ZXIpKTsKLWludCBtYXlfb3Blbl90YWJwYWdlIF9fQVJHUygodm9pZCkpOwotaW50IG1ha2VfdGFicGFnZXMgX19BUkdTKChpbnQgbWF4Y291bnQpKTsKLWludCB2YWxpZF90YWJwYWdlIF9fQVJHUygodGFicGFnZV9UICp0cGMpKTsKLXRhYnBhZ2VfVCAqZmluZF90YWJwYWdlIF9fQVJHUygoaW50IG4pKTsKLWludCB0YWJwYWdlX2luZGV4IF9fQVJHUygodGFicGFnZV9UICpmdHApKTsKLXZvaWQgZ290b190YWJwYWdlIF9fQVJHUygoaW50IG4pKTsKLXZvaWQgZ290b190YWJwYWdlX3RwIF9fQVJHUygodGFicGFnZV9UICp0cCkpOwotdm9pZCBnb3RvX3RhYnBhZ2Vfd2luIF9fQVJHUygodGFicGFnZV9UICp0cCwgd2luX1QgKndwKSk7Ci12b2lkIHRhYnBhZ2VfbW92ZSBfX0FSR1MoKGludCBucikpOwotdm9pZCB3aW5fZ290byBfX0FSR1MoKHdpbl9UICp3cCkpOwotd2luX1QgKndpbl9maW5kX25yIF9fQVJHUygoaW50IHdpbm5yKSk7Ci12b2lkIHdpbl9lbnRlciBfX0FSR1MoKHdpbl9UICp3cCwgaW50IHVuZG9fc3luYykpOwotd2luX1QgKmJ1Zl9qdW1wX29wZW5fd2luIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwotd2luX1QgKmJ1Zl9qdW1wX29wZW5fdGFiIF9fQVJHUygoYnVmX1QgKmJ1ZikpOwotaW50IHdpbl9hbGxvY19saW5lcyBfX0FSR1MoKHdpbl9UICp3cCkpOwotdm9pZCB3aW5fZnJlZV9sc2l6ZSBfX0FSR1MoKHdpbl9UICp3cCkpOwotdm9pZCBzaGVsbF9uZXdfcm93cyBfX0FSR1MoKHZvaWQpKTsKLXZvaWQgc2hlbGxfbmV3X2NvbHVtbnMgX19BUkdTKCh2b2lkKSk7Ci12b2lkIHdpbl9zaXplX3NhdmUgX19BUkdTKChnYXJyYXlfVCAqZ2FwKSk7Ci12b2lkIHdpbl9zaXplX3Jlc3RvcmUgX19BUkdTKChnYXJyYXlfVCAqZ2FwKSk7Ci1pbnQgd2luX2NvbXBfcG9zIF9fQVJHUygodm9pZCkpOwotdm9pZCB3aW5fc2V0aGVpZ2h0IF9fQVJHUygoaW50IGhlaWdodCkpOwotdm9pZCB3aW5fc2V0aGVpZ2h0X3dpbiBfX0FSR1MoKGludCBoZWlnaHQsIHdpbl9UICp3aW4pKTsKLXZvaWQgd2luX3NldHdpZHRoIF9fQVJHUygoaW50IHdpZHRoKSk7Ci12b2lkIHdpbl9zZXR3aWR0aF93aW4gX19BUkdTKChpbnQgd2lkdGgsIHdpbl9UICp3cCkpOwotdm9pZCB3aW5fc2V0bWluaGVpZ2h0IF9fQVJHUygodm9pZCkpOwotdm9pZCB3aW5fZHJhZ19zdGF0dXNfbGluZSBfX0FSR1MoKHdpbl9UICpkcmFnd2luLCBpbnQgb2Zmc2V0KSk7Ci12b2lkIHdpbl9kcmFnX3ZzZXBfbGluZSBfX0FSR1MoKHdpbl9UICpkcmFnd2luLCBpbnQgb2Zmc2V0KSk7Ci12b2lkIHdpbl9jb21wX3Njcm9sbCBfX0FSR1MoKHdpbl9UICp3cCkpOwotdm9pZCBjb21tYW5kX2hlaWdodCBfX0FSR1MoKHZvaWQpKTsKLXZvaWQgbGFzdF9zdGF0dXMgX19BUkdTKChpbnQgbW9yZXdpbikpOwotaW50IHRhYmxpbmVfaGVpZ2h0IF9fQVJHUygodm9pZCkpOwotY2hhcl91ICpncmFiX2ZpbGVfbmFtZSBfX0FSR1MoKGxvbmcgY291bnQsIGxpbmVucl9UICpmaWxlX2xudW0pKTsKLWNoYXJfdSAqZmlsZV9uYW1lX2F0X2N1cnNvciBfX0FSR1MoKGludCBvcHRpb25zLCBsb25nIGNvdW50LCBsaW5lbnJfVCAqZmlsZV9sbnVtKSk7Ci1jaGFyX3UgKmZpbGVfbmFtZV9pbl9saW5lIF9fQVJHUygoY2hhcl91ICpsaW5lLCBpbnQgY29sLCBpbnQgb3B0aW9ucywgbG9uZyBjb3VudCwgY2hhcl91ICpyZWxfZm5hbWUsIGxpbmVucl9UICpmaWxlX2xudW0pKTsKLWNoYXJfdSAqZmluZF9maWxlX25hbWVfaW5fcGF0aCBfX0FSR1MoKGNoYXJfdSAqcHRyLCBpbnQgbGVuLCBpbnQgb3B0aW9ucywgbG9uZyBjb3VudCwgY2hhcl91ICpyZWxfZm5hbWUpKTsKLWludCBwYXRoX3dpdGhfdXJsIF9fQVJHUygoY2hhcl91ICpmbmFtZSkpOwotaW50IHZpbV9pc0Fic05hbWUgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKLWludCB2aW1fRnVsbE5hbWUgX19BUkdTKChjaGFyX3UgKmZuYW1lLCBjaGFyX3UgKmJ1ZiwgaW50IGxlbiwgaW50IGZvcmNlKSk7Ci1pbnQgbWluX3Jvd3MgX19BUkdTKCh2b2lkKSk7Ci1pbnQgb25seV9vbmVfd2luZG93IF9fQVJHUygodm9pZCkpOwotdm9pZCBjaGVja19sbnVtcyBfX0FSR1MoKGludCBkb19jdXJ3aW4pKTsKLWludCB3aW5faGFzdmVydHNwbGl0IF9fQVJHUygodm9pZCkpOworZXh0ZXJuIHZvaWQgZG9fd2luZG93IF9fQVJHUygoaW50IG5jaGFyLCBsb25nIFByZW51bSwgaW50IHhjaGFyKSk7CitleHRlcm4gaW50IHdpbl9zcGxpdCBfX0FSR1MoKGludCBzaXplLCBpbnQgZmxhZ3MpKTsKK2V4dGVybiBpbnQgd2luX3ZhbGlkIF9fQVJHUygod2luX1QgKndpbikpOworZXh0ZXJuIGludCB3aW5fY291bnQgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gaW50IG1ha2Vfd2luZG93cyBfX0FSR1MoKGludCBjb3VudCwgaW50IHZlcnRpY2FsKSk7CitleHRlcm4gdm9pZCB3aW5fbW92ZV9hZnRlciBfX0FSR1MoKHdpbl9UICp3aW4xLCB3aW5fVCAqd2luMikpOworZXh0ZXJuIHZvaWQgd2luX2VxdWFsIF9fQVJHUygod2luX1QgKm5leHRfY3Vyd2luLCBpbnQgY3VycmVudCwgaW50IGRpcikpOworZXh0ZXJuIHZvaWQgY2xvc2Vfd2luZG93cyBfX0FSR1MoKGJ1Zl9UICpidWYsIGludCBrZWVwX2N1cndpbikpOworZXh0ZXJuIHZvaWQgd2luX2Nsb3NlIF9fQVJHUygod2luX1QgKndpbiwgaW50IGZyZWVfYnVmKSk7CitleHRlcm4gdm9pZCB3aW5fY2xvc2Vfb3RoZXJ0YWIgX19BUkdTKCh3aW5fVCAqd2luLCBpbnQgZnJlZV9idWYsIHRhYnBhZ2VfVCAqdHApKTsKK2V4dGVybiB2b2lkIHdpbl9mcmVlX2FsbCBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiB2b2lkIGNsb3NlX290aGVycyBfX0FSR1MoKGludCBtZXNzYWdlLCBpbnQgZm9yY2VpdCkpOworZXh0ZXJuIHZvaWQgY3Vyd2luX2luaXQgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gaW50IHdpbl9hbGxvY19maXJzdCBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiB2b2lkIHdpbl9pbml0X3NpemUgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gdm9pZCBmcmVlX3RhYnBhZ2UgX19BUkdTKCh0YWJwYWdlX1QgKnRwKSk7CitleHRlcm4gaW50IHdpbl9uZXdfdGFicGFnZSBfX0FSR1MoKGludCBhZnRlcikpOworZXh0ZXJuIGludCBtYXlfb3Blbl90YWJwYWdlIF9fQVJHUygodm9pZCkpOworZXh0ZXJuIGludCBtYWtlX3RhYnBhZ2VzIF9fQVJHUygoaW50IG1heGNvdW50KSk7CitleHRlcm4gaW50IHZhbGlkX3RhYnBhZ2UgX19BUkdTKCh0YWJwYWdlX1QgKnRwYykpOworZXh0ZXJuIHRhYnBhZ2VfVCAqZmluZF90YWJwYWdlIF9fQVJHUygoaW50IG4pKTsKK2V4dGVybiBpbnQgdGFicGFnZV9pbmRleCBfX0FSR1MoKHRhYnBhZ2VfVCAqZnRwKSk7CitleHRlcm4gdm9pZCBnb3RvX3RhYnBhZ2UgX19BUkdTKChpbnQgbikpOworZXh0ZXJuIHZvaWQgZ290b190YWJwYWdlX3RwIF9fQVJHUygodGFicGFnZV9UICp0cCkpOworZXh0ZXJuIHZvaWQgZ290b190YWJwYWdlX3dpbiBfX0FSR1MoKHRhYnBhZ2VfVCAqdHAsIHdpbl9UICp3cCkpOworZXh0ZXJuIHZvaWQgdGFicGFnZV9tb3ZlIF9fQVJHUygoaW50IG5yKSk7CitleHRlcm4gdm9pZCB3aW5fZ290byBfX0FSR1MoKHdpbl9UICp3cCkpOworZXh0ZXJuIHdpbl9UICp3aW5fZmluZF9uciBfX0FSR1MoKGludCB3aW5ucikpOworZXh0ZXJuIHZvaWQgd2luX2VudGVyIF9fQVJHUygod2luX1QgKndwLCBpbnQgdW5kb19zeW5jKSk7CitleHRlcm4gd2luX1QgKmJ1Zl9qdW1wX29wZW5fd2luIF9fQVJHUygoYnVmX1QgKmJ1ZikpOworZXh0ZXJuIHdpbl9UICpidWZfanVtcF9vcGVuX3RhYiBfX0FSR1MoKGJ1Zl9UICpidWYpKTsKK2V4dGVybiBpbnQgd2luX2FsbG9jX2xpbmVzIF9fQVJHUygod2luX1QgKndwKSk7CitleHRlcm4gdm9pZCB3aW5fZnJlZV9sc2l6ZSBfX0FSR1MoKHdpbl9UICp3cCkpOworZXh0ZXJuIHZvaWQgc2hlbGxfbmV3X3Jvd3MgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gdm9pZCBzaGVsbF9uZXdfY29sdW1ucyBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiB2b2lkIHdpbl9zaXplX3NhdmUgX19BUkdTKChnYXJyYXlfVCAqZ2FwKSk7CitleHRlcm4gdm9pZCB3aW5fc2l6ZV9yZXN0b3JlIF9fQVJHUygoZ2FycmF5X1QgKmdhcCkpOworZXh0ZXJuIGludCB3aW5fY29tcF9wb3MgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gdm9pZCB3aW5fc2V0aGVpZ2h0IF9fQVJHUygoaW50IGhlaWdodCkpOworZXh0ZXJuIHZvaWQgd2luX3NldGhlaWdodF93aW4gX19BUkdTKChpbnQgaGVpZ2h0LCB3aW5fVCAqd2luKSk7CitleHRlcm4gdm9pZCB3aW5fc2V0d2lkdGggX19BUkdTKChpbnQgd2lkdGgpKTsKK2V4dGVybiB2b2lkIHdpbl9zZXR3aWR0aF93aW4gX19BUkdTKChpbnQgd2lkdGgsIHdpbl9UICp3cCkpOworZXh0ZXJuIHZvaWQgd2luX3NldG1pbmhlaWdodCBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiB2b2lkIHdpbl9kcmFnX3N0YXR1c19saW5lIF9fQVJHUygod2luX1QgKmRyYWd3aW4sIGludCBvZmZzZXQpKTsKK2V4dGVybiB2b2lkIHdpbl9kcmFnX3ZzZXBfbGluZSBfX0FSR1MoKHdpbl9UICpkcmFnd2luLCBpbnQgb2Zmc2V0KSk7CitleHRlcm4gdm9pZCB3aW5fY29tcF9zY3JvbGwgX19BUkdTKCh3aW5fVCAqd3ApKTsKK2V4dGVybiB2b2lkIGNvbW1hbmRfaGVpZ2h0IF9fQVJHUygodm9pZCkpOworZXh0ZXJuIHZvaWQgbGFzdF9zdGF0dXMgX19BUkdTKChpbnQgbW9yZXdpbikpOworZXh0ZXJuIGludCB0YWJsaW5lX2hlaWdodCBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiBjaGFyX3UgKmdyYWJfZmlsZV9uYW1lIF9fQVJHUygobG9uZyBjb3VudCwgbGluZW5yX1QgKmZpbGVfbG51bSkpOworZXh0ZXJuIGNoYXJfdSAqZmlsZV9uYW1lX2F0X2N1cnNvciBfX0FSR1MoKGludCBvcHRpb25zLCBsb25nIGNvdW50LCBsaW5lbnJfVCAqZmlsZV9sbnVtKSk7CitleHRlcm4gY2hhcl91ICpmaWxlX25hbWVfaW5fbGluZSBfX0FSR1MoKGNoYXJfdSAqbGluZSwgaW50IGNvbCwgaW50IG9wdGlvbnMsIGxvbmcgY291bnQsIGNoYXJfdSAqcmVsX2ZuYW1lLCBsaW5lbnJfVCAqZmlsZV9sbnVtKSk7CitleHRlcm4gY2hhcl91ICpmaW5kX2ZpbGVfbmFtZV9pbl9wYXRoIF9fQVJHUygoY2hhcl91ICpwdHIsIGludCBsZW4sIGludCBvcHRpb25zLCBsb25nIGNvdW50LCBjaGFyX3UgKnJlbF9mbmFtZSkpOworZXh0ZXJuIGludCBwYXRoX3dpdGhfdXJsIF9fQVJHUygoY2hhcl91ICpmbmFtZSkpOworZXh0ZXJuIGludCB2aW1faXNBYnNOYW1lIF9fQVJHUygoY2hhcl91ICpuYW1lKSk7CitleHRlcm4gaW50IHZpbV9GdWxsTmFtZSBfX0FSR1MoKGNoYXJfdSAqZm5hbWUsIGNoYXJfdSAqYnVmLCBpbnQgbGVuLCBpbnQgZm9yY2UpKTsKK2V4dGVybiBpbnQgbWluX3Jvd3MgX19BUkdTKCh2b2lkKSk7CitleHRlcm4gaW50IG9ubHlfb25lX3dpbmRvdyBfX0FSR1MoKHZvaWQpKTsKK2V4dGVybiB2b2lkIGNoZWNrX2xudW1zIF9fQVJHUygoaW50IGRvX2N1cndpbikpOworZXh0ZXJuIGludCB3aW5faGFzdmVydHNwbGl0IF9fQVJHUygodm9pZCkpOwogLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvcXVpY2tmaXguYyBiL3NyYy9xdWlja2ZpeC5jCmluZGV4IDczOWI4OTQuLjk1Y2Y4ZjcgMTAwNjQ0Ci0tLSBhL3NyYy9xdWlja2ZpeC5jCisrKyBiL3NyYy9xdWlja2ZpeC5jCkBAIC0zMDcxLDkgKzMwNzEsOSBAQAogCQkJCXJlZ21hdGNoLnN0YXJ0cG9zWzBdLmNvbCArIDEsCiAJCQkJRkFMU0UsICAgICAgLyogdmlzX2NvbCAqLwogCQkJCU5VTEwsCSAgICAvKiBzZWFyY2ggcGF0dGVybiAqLwotCQkJCTAsICAgICAgICAgIC8qIG5yICovCi0JCQkJMCwgICAgICAgICAgLyogdHlwZSAqLwotCQkJCVRSVUUgICAgICAgIC8qIHZhbGlkICovCisJCQkJMCwJICAgIC8qIG5yICovCisJCQkJMCwJICAgIC8qIHR5cGUgKi8KKwkJCQlUUlVFCSAgICAvKiB2YWxpZCAqLwogCQkJCSkgPT0gRkFJTCkKIAkJICAgIHsKIAkJCWdvdF9pbnQgPSBUUlVFOwpkaWZmIC0tZ2l0IGEvc3JjL3JlZ2V4cC5jIGIvc3JjL3JlZ2V4cC5jCmluZGV4IDJjZDMxMjAuLjNiNWExNDggMTAwNjQ0Ci0tLSBhL3NyYy9yZWdleHAuYworKysgYi9zcmMvcmVnZXhwLmMKQEAgLTEwMSw4ICsxMDEsOCBAQAogICoJCSAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAqCQkgICAgICAgVgkJICAgICAgfAogICogPGFhPlwrCUJSQU5DSCA8YWE+IC0tPiBCUkFOQ0ggLS0+IEJBQ0sgIEJSQU5DSCAtLT4gTk9USElORyAtLT4gRU5ECi0gKgkJICAgICB8CSAgICAgICAgICAgICB8CSAgICAgICAgIF4JCSAgICAgICAgXgotICoJCSAgICAgfAkgICAgICAgICAgICAgKy0tLS0tLS0tLS0tKwkJICAgICAgICB8CisgKgkJICAgICB8CQkgICAgIHwJCSBeCQkJXgorICoJCSAgICAgfAkJICAgICArLS0tLS0tLS0tLS0rCQkJfAogICoJCSAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICoKICAqCkBAIC0xOTMwLDcgKzE5MzAsNyBAQAogCQkJICAgICAgfQogCiAJCQkgICAgICBpZiAoaSA8IDApCi0JCQkgICAgICAgICAgRU1TR19NX1JFVF9OVUxMKAorCQkJCSAgRU1TR19NX1JFVF9OVUxMKAogCQkJCQlfKCJFNjc4OiBJbnZhbGlkIGNoYXJhY3RlciBhZnRlciAlcyUlW2R4b3VVXSIpLAogCQkJCQlyZWdfbWFnaWMgPT0gTUFHSUNfQUxMKTsKICNpZmRlZiBGRUFUX01CWVRFCkBAIC0yODM0LDcgKzI4MzQsNyBAQAogICogUmV0dXJuIC0xIGlmIHRoZXJlIGlzIG5vIHZhbGlkIGhleCBudW1iZXIuCiAgKiBUaGUgcG9zaXRpb24gaXMgdXBkYXRlZDoKICAqICAgICBibGFoYmxhaFwleDIwYXNkZgotICogICAgICAgICBiZWZvcmUtXiBeLWFmdGVyCisgKgkgICBiZWZvcmUtXiBeLWFmdGVyCiAgKiBUaGUgcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBpbnB1dCBjaGFyYWN0ZXJzLiBUaGlzIHdpbGwgYmUKICAqIDIgd2hlbiByZWFkaW5nIGEgXCV4MjAgc2VxdWVuY2UgYW5kIDQgd2hlbiByZWFkaW5nIGEgXCV1MjBBQyBzZXF1ZW5jZS4KICAqLwpAQCAtMjg5Myw3ICsyODkzLDcgQEAKICAqIG51bWJlcnMgPiAzNzcgY29ycmVjdGx5IChmb3IgZXhhbXBsZSwgNDAwIGlzIHRyZWF0ZWQgYXMgNDApIGFuZCBkb2Vzbid0CiAgKiB0cmVhdCA4IG9yIDkgYXMgcmVjb2duaXNlZCBjaGFyYWN0ZXJzLiBQb3NpdGlvbiBpcyB1cGRhdGVkOgogICogICAgIGJsYWhibGFoXCVvMjEwYXNkZgotICogICAgICAgICBiZWZvcmUtXiAgXi1hZnRlcgorICoJICAgYmVmb3JlLV4gIF4tYWZ0ZXIKICAqLwogICAgIHN0YXRpYyBpbnQKIGdldG9jdGNocnMoKQpkaWZmIC0tZ2l0IGEvc3JjL3NjcmVlbi5jIGIvc3JjL3NjcmVlbi5jCmluZGV4IDhjNTJhYWQuLmY1N2FkYzA0IDEwMDY0NAotLS0gYS9zcmMvc2NyZWVuLmMKKysrIGIvc3JjL3NjcmVlbi5jCkBAIC05MzM1LDggKzkzMzUsOCBAQAogICAgIG4gPSAwOwogICAgIGRvCiAgICAgewotICAgICAgICBsbnVtIC89IDEwOwotICAgICAgICArK247CisJbG51bSAvPSAxMDsKKwkrK247CiAgICAgfSB3aGlsZSAobG51bSA+IDApOwogCiAgICAgLyogJ251bWJlcndpZHRoJyBnaXZlcyB0aGUgbWluaW1hbCB3aWR0aCBwbHVzIG9uZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RkaXIvTWFrZV9hbWlnYS5tYWsgYi9zcmMvdGVzdGRpci9NYWtlX2FtaWdhLm1hawppbmRleCAzYmJkOTY0Li4yNmJhMzBjIDEwMDY0NAotLS0gYS9zcmMvdGVzdGRpci9NYWtlX2FtaWdhLm1haworKysgYi9zcmMvdGVzdGRpci9NYWtlX2FtaWdhLm1hawpAQCAtMjUsNyArMjUsNyBAQAogCQl0ZXN0NDMub3V0IHRlc3Q0NC5vdXQgdGVzdDQ1Lm91dCB0ZXN0NDYub3V0IHRlc3Q0Ny5vdXQgXAogCQl0ZXN0NDgub3V0IHRlc3Q1MS5vdXQgdGVzdDUzLm91dCB0ZXN0NTQub3V0IHRlc3Q1NS5vdXQgXAogCQl0ZXN0NTYub3V0IHRlc3Q1Ny5vdXQgdGVzdDU4Lm91dCB0ZXN0NTkub3V0IHRlc3Q2MC5vdXQgXAotCQl0ZXN0NjEub3V0CisJCXRlc3Q2MS5vdXQgdGVzdDYyLm91dAogCiAuU1VGRklYRVM6IC5pbiAub3V0CiAKQEAgLTEwNiwzICsxMDYsNCBAQAogdGVzdDU5Lm91dDogdGVzdDU5LmluCiB0ZXN0NjAub3V0OiB0ZXN0NjAuaW4KIHRlc3Q2MS5vdXQ6IHRlc3Q2MS5pbgordGVzdDYyLm91dDogdGVzdDYyLmluCmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci9NYWtlX2Rvcy5tYWsgYi9zcmMvdGVzdGRpci9NYWtlX2Rvcy5tYWsKaW5kZXggZWVjMWY5Yi4uOTlkODlmNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3RkaXIvTWFrZV9kb3MubWFrCisrKyBiL3NyYy90ZXN0ZGlyL01ha2VfZG9zLm1hawpAQCAtMTksNyArMTksNyBAQAogCQl0ZXN0NDQub3V0IHRlc3Q0NS5vdXQgdGVzdDQ2Lm91dCB0ZXN0NDcub3V0IFwKIAkJdGVzdDQ4Lm91dCB0ZXN0NTEub3V0IHRlc3Q1My5vdXQgdGVzdDU0Lm91dCBcCiAJCXRlc3Q1NS5vdXQgdGVzdDU2Lm91dCB0ZXN0NTcub3V0IHRlc3Q1OC5vdXQgdGVzdDU5Lm91dCBcCi0JCXRlc3Q2MC5vdXQgdGVzdDYxLm91dAorCQl0ZXN0NjAub3V0IHRlc3Q2MS5vdXQgdGVzdDYyLm91dAogCiBTQ1JJUFRTID0JdGVzdDMub3V0IHRlc3Q0Lm91dCB0ZXN0NS5vdXQgdGVzdDYub3V0IHRlc3Q3Lm91dCBcCiAJCXRlc3Q4Lm91dCB0ZXN0OS5vdXQgdGVzdDExLm91dCB0ZXN0MTMub3V0IHRlc3QxNC5vdXQgXApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RkaXIvTWFrZV9vczIubWFrIGIvc3JjL3Rlc3RkaXIvTWFrZV9vczIubWFrCmluZGV4IDE1ZjhkMzMuLjQyM2ZjODAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0ZGlyL01ha2Vfb3MyLm1haworKysgYi9zcmMvdGVzdGRpci9NYWtlX29zMi5tYWsKQEAgLTI1LDcgKzI1LDcgQEAKIAkJdGVzdDQzLm91dCB0ZXN0NDQub3V0IHRlc3Q0NS5vdXQgdGVzdDQ2Lm91dCB0ZXN0NDcub3V0IFwKIAkJdGVzdDQ4Lm91dCB0ZXN0NTEub3V0IHRlc3Q1My5vdXQgdGVzdDU0Lm91dCB0ZXN0NTUub3V0IFwKIAkJdGVzdDU2Lm91dCB0ZXN0NTcub3V0IHRlc3Q1OC5vdXQgdGVzdDU5Lm91dCB0ZXN0NjAub3V0IFwKLQkJdGVzdDYxLm91dAorCQl0ZXN0NjEub3V0IHRlc3Q2Mi5vdXQKIAogLlNVRkZJWEVTOiAuaW4gLm91dAogCmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci9NYWtlX3Ztcy5tbXMgYi9zcmMvdGVzdGRpci9NYWtlX3Ztcy5tbXMKaW5kZXggNTcxMDFmYy4uY2VmMDdlOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3RkaXIvTWFrZV92bXMubW1zCisrKyBiL3NyYy90ZXN0ZGlyL01ha2Vfdm1zLm1tcwpAQCAtNCw3ICs0LDcgQEAKICMgQXV0aG9yczoJWm9sdGFuIEFycGFkZmZ5LCA8YXJwYWRmZnlAcG9sYXJob21lLmNvbT4KICMJCVNhbmRvciBLb3BhbnlpLCAgPHNhbmRvci5rb3BhbnlpQG1haWxib3guaHU+CiAjCi0jIExhc3QgY2hhbmdlOiAgMjAwNiBNYXIgMTUKKyMgTGFzdCBjaGFuZ2U6ICAyMDA2IEFwciAzMAogIwogIyBUaGlzIGhhcyBiZWVuIHRlc3RlZCBvbiBWTVMgNi4yIHRvIDcuMiBvbiBERUMgQWxwaGEgYW5kIFZBWC4KICMgRWRpdCB0aGUgbGluZXMgaW4gdGhlIENvbmZpZ3VyYXRpb24gc2VjdGlvbiBiZWxvdyB0byBzZWxlY3QuCkBAIC01OSw3ICs1OSw3IEBACiAJIHRlc3Q0My5vdXQgdGVzdDQ0Lm91dCB0ZXN0NDUub3V0IHRlc3Q0Ni5vdXQgXAogCSB0ZXN0NDgub3V0IHRlc3Q1MS5vdXQgdGVzdDUzLm91dCB0ZXN0NTQub3V0IHRlc3Q1NS5vdXQgXAogCSB0ZXN0NTYub3V0IHRlc3Q1Ny5vdXQgdGVzdDU4Lm91dCB0ZXN0NTkub3V0IHRlc3Q2MC5vdXQgXAotCSB0ZXN0NjEub3V0CisJIHRlc3Q2MS5vdXQgdGVzdDYyLm91dAogCiAuSUZERUYgV0FOVF9HVUkKIFNDUklQVF9HVUkgPSB0ZXN0MTYub3V0CmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci9NYWtlZmlsZSBiL3NyYy90ZXN0ZGlyL01ha2VmaWxlCmluZGV4IDQwNjRjYzEuLjc0N2IxODcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0ZGlyL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0ZGlyL01ha2VmaWxlCkBAIC0xNSw3ICsxNSw3IEBACiAJCXRlc3Q0My5vdXQgdGVzdDQ0Lm91dCB0ZXN0NDUub3V0IHRlc3Q0Ni5vdXQgdGVzdDQ3Lm91dCBcCiAJCXRlc3Q0OC5vdXQgdGVzdDQ5Lm91dCB0ZXN0NTEub3V0IHRlc3Q1Mi5vdXQgdGVzdDUzLm91dCBcCiAJCXRlc3Q1NC5vdXQgdGVzdDU1Lm91dCB0ZXN0NTYub3V0IHRlc3Q1Ny5vdXQgdGVzdDU4Lm91dCBcCi0JCXRlc3Q1OS5vdXQgdGVzdDYwLm91dCB0ZXN0NjEub3V0CisJCXRlc3Q1OS5vdXQgdGVzdDYwLm91dCB0ZXN0NjEub3V0IHRlc3Q2Mi5vdXQKIAogU0NSSVBUU19HVUkgPSB0ZXN0MTYub3V0CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0ZGlyL3Rlc3QzNC5pbiBiL3NyYy90ZXN0ZGlyL3Rlc3QzNC5pbgppbmRleCA2NzYwNzAwLi40NzgxZmVjIDEwMDY0NAotLS0gYS9zcmMvdGVzdGRpci90ZXN0MzQuaW4KKysrIGIvc3JjL3Rlc3RkaXIvdGVzdDM0LmluCkBAIC0xLDQgKzEsNSBAQAotVGVzdCBmb3IgdXNlciBmdW5jdGlvbnMKK1Rlc3QgZm9yIHVzZXIgZnVuY3Rpb25zLgorQWxzbyB0ZXN0IGFuIDxleHByPiBtYXBwaW5nIGNhbGxpbmcgYSBmdW5jdGlvbi4KIAogU1RBUlRURVNUCiA6c28gc21hbGwudmltCkBAIC0xOCw2ICsxOSwyNyBAQAogOiAgZXhlICJsZXQgZzoiIC4gYTpkaXZuYW1lIC4gIiA9ICIuIGE6bjEgLyBhOm4yCiA6ICByZXR1cm4gIm9rIgogOmVuZGZ1bmN0aW9uCis6ZnVuYyBFeHByMSgpCis6ICBub3JtYWwhIHYKKzogIHJldHVybiAiMTExIgorOmVuZGZ1bmMKKzpmdW5jIEV4cHIyKCkKKzogIGNhbGwgc2VhcmNoKCdYWCcsICdiJykKKzogIHJldHVybiAiMjIyIgorOmVuZGZ1bmMKKzpmdW5jIExpc3RJdGVtKCkKKzogIGxldCBnOmNvdW50ZXIgKz0gMQorOiAgcmV0dXJuIGc6Y291bnRlciAuICcuICcKKzplbmRmdW5jCis6ZnVuYyBMaXN0UmVzZXQoKQorOiAgbGV0IGc6Y291bnRlciA9IDAKKzogIHJldHVybiAnJworOmVuZGZ1bmMKKzpsZXQgY291bnRlciA9IDAKKzppbm9yZW1hcCA8ZXhwcj4gKCBMaXN0SXRlbSgpCis6aW5vcmVtYXAgPGV4cHI+IFsgTGlzdFJlc2V0KCkKKzppbWFwIDxleHByPiArIEV4cHIxKCkKKzppbWFwIDxleHByPiAqIEV4cHIyKCkKIDpsZXQgcmV0dmFsID0gIm5vcCIKIC9eaGVyZQogQxI9VGFibGUoInh4eCIsIDQsICJhc2RmIikKQEAgLTI1LDcgKzQ3LDEyIEBACiAgEj1yZXR2YWwKICASPUNvbXB1dGUoNDUsIDUsICJyZXR2YWwiKQogIBI9cmV0dmFsCi0bOi53cSEgdGVzdC5vdXQKKworWFgrLVhYCistLS0qLS0tCisob25lCisodHdvCitbKG9uZSBhZ2Fpbhs6JC01LCR3cSEgdGVzdC5vdXQKIEVORFRFU1QKIAogaGVyZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RkaXIvdGVzdDM0Lm9rIGIvc3JjL3Rlc3RkaXIvdGVzdDM0Lm9rCmluZGV4IDZkYWI1MmYuLjM2OGFlMTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0ZGlyL3Rlc3QzNC5vaworKysgYi9zcmMvdGVzdGRpci90ZXN0MzQub2sKQEAgLTEgKzEsNiBAQAogeHh4NGFzZGYgZmFpbCBub3Agb2sgOQorWFgxMTFYWAorLS0tMjIyLS0tCisxLiBvbmUKKzIuIHR3bworMS4gb25lIGFnYWluCmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci90ZXN0NjIuaW4gYi9zcmMvdGVzdGRpci90ZXN0NjIuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUwN2M2YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0ZGlyL3Rlc3Q2Mi5pbgpAQCAtMCwwICsxLDMyIEBACitUZXN0cyBmb3IgdGFiIHBhZ2VzCisKK1NUQVJUVEVTVAorOnNvIHNtYWxsLnZpbQorOiIgU2ltcGxlIHRlc3QgZm9yIG9wZW5pbmcgYW5kIGNsb3NpbmcgYSB0YWIgcGFnZQorOnRhYm5ldworOmxldCBuciA9IHRhYnBhZ2VucigpCis6cQorOmNhbGwgYXBwZW5kKGxpbmUoJyQnKSwgJ3RhYiBwYWdlICcgLiBucikKKzoiCis6IiBPcGVuIHRocmVlIHRhYiBwYWdlcyBhbmQgdXNlICI6dGFiZG8iCis6MHRhYm5ldworOjF0YWJuZXcKKzo4ODh0YWJuZXcKKzp0YWJkbyBjYWxsIGFwcGVuZChsaW5lKCckJyksICd0aGlzIGlzIHRhYiBwYWdlICcgLiB0YWJwYWdlbnIoKSkKKzp0YWJjbG9zZSEgMgorOnRhYnJld2luZAorOmxldCBsaW5lMSA9IGdldGxpbmUoJyQnKQorOnVuZG8KKzpxCis6dGFibGFzdAorOmxldCBsaW5lMiA9IGdldGxpbmUoJyQnKQorOnEhCis6Y2FsbCBhcHBlbmQobGluZSgnJCcpLCBsaW5lMSkKKzpjYWxsIGFwcGVuZChsaW5lKCckJyksIGxpbmUyKQorOiIKKzoiCis6L15SZXN1bHRzLywkdyEgdGVzdC5vdXQKKzpxYSEKK0VORFRFU1QKKworUmVzdWx0czoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0ZGlyL3Rlc3Q2Mi5vayBiL3NyYy90ZXN0ZGlyL3Rlc3Q2Mi5vawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzQzOGVkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3RkaXIvdGVzdDYyLm9rCkBAIC0wLDAgKzEsNSBAQAorUmVzdWx0czoKK3RhYiBwYWdlIDIKK3RoaXMgaXMgdGFiIHBhZ2UgMwordGhpcyBpcyB0YWIgcGFnZSAxCit0aGlzIGlzIHRhYiBwYWdlIDQKZGlmZiAtLWdpdCBhL3NyYy92ZXJzaW9uLmggYi9zcmMvdmVyc2lvbi5oCmluZGV4IDkzOWExMTguLjAyNDNkZjkgMTAwNjQ0Ci0tLSBhL3NyYy92ZXJzaW9uLmgKKysrIGIvc3JjL3ZlcnNpb24uaApAQCAtMTksOSArMTksOSBAQAogI2RlZmluZSBWSU1fVkVSU0lPTl9NSU5PUl9TVFIJCSIwIgogI2RlZmluZSBWSU1fVkVSU0lPTl8xMDAJICAgIChWSU1fVkVSU0lPTl9NQUpPUiAqIDEwMCArIFZJTV9WRVJTSU9OX01JTk9SKQogCi0jZGVmaW5lIFZJTV9WRVJTSU9OX0JVSUxECQkgMjYwCi0jZGVmaW5lIFZJTV9WRVJTSU9OX0JVSUxEX0JDRAkJMHgxMDQKLSNkZWZpbmUgVklNX1ZFUlNJT05fQlVJTERfU1RSCQkiMjYwIgorI2RlZmluZSBWSU1fVkVSU0lPTl9CVUlMRAkJIDI2MQorI2RlZmluZSBWSU1fVkVSU0lPTl9CVUlMRF9CQ0QJCTB4MTA1CisjZGVmaW5lIFZJTV9WRVJTSU9OX0JVSUxEX1NUUgkJIjI2MSIKICNkZWZpbmUgVklNX1ZFUlNJT05fUEFUQ0hMRVZFTAkJIDAKICNkZWZpbmUgVklNX1ZFUlNJT05fUEFUQ0hMRVZFTF9TVFIJIjAiCiAvKiBVc2VkIGJ5IE1hY09TIHBvcnQgc2hvdWxkIGJlIG9uZSBvZjogZGV2ZWxvcG1lbnQsIGFscGhhLCBiZXRhLCBmaW5hbCAqLwpAQCAtMzMsOCArMzMsOCBAQAogICogVklNX1ZFUlNJT05fTUVESVVNIGlzIHVzZWQgZm9yIHRoZSBzdGFydHVwLXNjcmVlbi4KICAqIFZJTV9WRVJTSU9OX0xPTkcgaXMgdXNlZCBmb3IgdGhlICI6dmVyc2lvbiIgY29tbWFuZCBhbmQgIlZpbSAtaCIuCiAgKi8KLSNkZWZpbmUgVklNX1ZFUlNJT05fTk9ET1QJInZpbTcwZiIKLSNkZWZpbmUgVklNX1ZFUlNJT05fU0hPUlQJIjcuMGYiCi0jZGVmaW5lIFZJTV9WRVJTSU9OX01FRElVTQkiNy4wZjA1IEJFVEEiCi0jZGVmaW5lIFZJTV9WRVJTSU9OX0xPTkcJIlZJTSAtIFZpIElNcHJvdmVkIDcuMGYwNSBCRVRBICgyMDA2IEFwciAyOSkiCi0jZGVmaW5lIFZJTV9WRVJTSU9OX0xPTkdfREFURQkiVklNIC0gVmkgSU1wcm92ZWQgNy4wZjA1IEJFVEEgKDIwMDYgQXByIDI5LCBjb21waWxlZCAiCisjZGVmaW5lIFZJTV9WRVJTSU9OX05PRE9UCSJ2aW03MGciCisjZGVmaW5lIFZJTV9WRVJTSU9OX1NIT1JUCSI3LjBnIgorI2RlZmluZSBWSU1fVkVSU0lPTl9NRURJVU0JIjcuMGcgQkVUQSIKKyNkZWZpbmUgVklNX1ZFUlNJT05fTE9ORwkiVklNIC0gVmkgSU1wcm92ZWQgNy4wZyBCRVRBICgyMDA2IEFwciAzMCkiCisjZGVmaW5lIFZJTV9WRVJTSU9OX0xPTkdfREFURQkiVklNIC0gVmkgSU1wcm92ZWQgNy4wZyBCRVRBICgyMDA2IEFwciAzMCwgY29tcGlsZWQgIgpkaWZmIC0tZ2l0IGEvc3JjL3ZpbS5oIGIvc3JjL3ZpbS5oCmluZGV4IDkzN2ZjNmEuLjNlZTEyYmYgMTAwNjQ0Ci0tLSBhL3NyYy92aW0uaAorKysgYi9zcmMvdmltLmgKQEAgLTI1Myw3ICsyNTMsNyBAQAogLyogaWYgd2UncmUgY29tcGlsaW5nIGluIEMrKyAoY3VycmVudGx5IG9ubHkgS1ZpbSksIHRoZSBzeXN0ZW0KICAqIGhlYWRlcnMgbXVzdCBoYXZlIHRoZSBjb3JyZWN0IHByb3RvdHlwZXMgb3Igbm90aGluZyB3aWxsIGJ1aWxkLgogICogY29udmVyc2VseSwgb3VyIHByb3RvdHlwZXMgbWlnaHQgY2xhc2ggZHVlIHRvIHRocm93KCkgc3BlY2lmaWVycyBhbmQKLSAqIGNhdXNlIGNvbXBpbGF0aW9uIGZhaWx1cmVzIGV2ZW4gdGhvdWdoIHRoZSBoZWFkZXJzIGFyZSBjb3JyZWN0LiAgZm9yCisgKiBjYXVzZSBjb21waWxhdGlvbiBmYWlsdXJlcyBldmVuIHRob3VnaCB0aGUgaGVhZGVycyBhcmUgY29ycmVjdC4gIEZvcgogICogYSBjb25jcmV0ZSBleGFtcGxlLCBnY2MtMy4yIGVuZm9yY2VzIGV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9ucywgYW5kCiAgKiBnbGliYy0yLjIuNSBoYXMgdGhlbSBpbiB0aGVpciBzeXN0ZW0gaGVhZGVycy4KICAqLwpAQCAtMzUyLDcgKzM1Miw3IEBACiAjIGRlZmluZSBQUklOVEZfSEVYX0xPTkdfVSAiMHglSXgiCiAjZWxzZQogdHlwZWRlZiB1bnNpZ25lZCBsb25nCWxvbmdfdTsKLXR5cGVkZWYJICAgICAgICAgbG9uZwlsb25nX2k7Cit0eXBlZGVmCQkgbG9uZwlsb25nX2k7CiAjIGRlZmluZSBTQ0FORl9IRVhfTE9OR19VICAiJWx4IgogIyBkZWZpbmUgUFJJTlRGX0hFWF9MT05HX1UgIjB4JWx4IgogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvd2luZG93LmMgYi9zcmMvd2luZG93LmMKaW5kZXggNzE4Y2UyZS4uN2JhOWUyMiAxMDA2NDQKLS0tIGEvc3JjL3dpbmRvdy5jCisrKyBiL3NyYy93aW5kb3cuYwpAQCAtMTk5NSw3ICsxOTk1LDYgQEAKICAgICBpbnQJCWZyZWVfYnVmOwogewogICAgIHdpbl9UCSp3cDsKLSAgICBidWZfVAkqb2xkX2N1cmJ1ZiA9IGN1cmJ1ZjsKICNpZmRlZiBGRUFUX0FVVE9DTUQKICAgICBpbnQJCW90aGVyX2J1ZmZlciA9IEZBTFNFOwogI2VuZGlmCkBAIC0yMDEwLDYgKzIwMDksMzAgQEAKIAlyZXR1cm47CiAgICAgfQogCisgICAgLyoKKyAgICAgKiBXaGVuIGNsb3NpbmcgdGhlIGxhc3Qgd2luZG93IGluIGEgdGFiIHBhZ2UgZmlyc3QgZ28gdG8gYW5vdGhlciB0YWIKKyAgICAgKiBwYWdlIGFuZCB0aGVuIGNsb3NlIHRoZSB3aW5kb3cgYW5kIHRoZSB0YWIgcGFnZS4gIFRoaXMgYXZvaWRzIHRoYXQKKyAgICAgKiBjdXJ3aW4gYW5kIGN1cnRhYiBhcmUgbm90IGludmFsaWQgd2hpbGUgd2UgYXJlIGZyZWVpbmcgbWVtb3J5LCB0aGV5IG1heQorICAgICAqIGJlIHVzZWQgaW4gR1VJIGV2ZW50cy4KKyAgICAgKi8KKyAgICBpZiAoZmlyc3R3aW4gPT0gbGFzdHdpbikKKyAgICB7CisJZ290b190YWJwYWdlX3RwKGFsdF90YWJwYWdlKCkpOworCXJlZHJhd190YWJsaW5lID0gVFJVRTsKKworCS8qIFNhZmV0eSBjaGVjazogQXV0b2NvbW1hbmRzIG1heSBoYXZlIGNsb3NlZCB0aGUgd2luZG93IHdoZW4ganVtcGluZworCSAqIHRvIHRoZSBvdGhlciB0YWIgcGFnZS4gKi8KKwlpZiAodmFsaWRfdGFicGFnZShwcmV2X2N1cnRhYikgJiYgcHJldl9jdXJ0YWItPnRwX2ZpcnN0d2luID09IHdpbikKKwl7CisJICAgIGludAkgICAgaCA9IHRhYmxpbmVfaGVpZ2h0KCk7CisKKwkgICAgd2luX2Nsb3NlX290aGVydGFiKHdpbiwgZnJlZV9idWYsIHByZXZfY3VydGFiKTsKKwkgICAgaWYgKGggIT0gdGFibGluZV9oZWlnaHQoKSkKKwkJc2hlbGxfbmV3X3Jvd3MoKTsKKwl9CisJcmV0dXJuOworICAgIH0KKwogICAgIC8qIFdoZW4gY2xvc2luZyB0aGUgaGVscCB3aW5kb3csIHRyeSByZXN0b3JpbmcgYSBzbmFwc2hvdCBhZnRlciBjbG9zaW5nCiAgICAgICogdGhlIHdpbmRvdy4gIE90aGVyd2lzZSBjbGVhciB0aGUgc25hcHNob3QsIGl0J3Mgbm93IGludmFsaWQuICovCiAgICAgaWYgKHdpbi0+d19idWZmZXItPmJfaGVscCkKQEAgLTIwNTcsNDAgKzIwODAsNiBAQAogICAgIGlmICghd2luX3ZhbGlkKHdpbikgfHwgbGFzdF93aW5kb3coKSB8fCBjdXJ0YWIgIT0gcHJldl9jdXJ0YWIpCiAJcmV0dXJuOwogCi0gICAgLyogV2hlbiBjbG9zaW5nIHRoZSBsYXN0IHdpbmRvdyBpbiBhIHRhYiBwYWdlIGdvIHRvIGFub3RoZXIgdGFiIHBhZ2UuIFRoaXMKLSAgICAgKiBtdXN0IGJlIGRvbmUgYmVmb3JlIGZyZWVpbmcgbWVtb3J5IHRvIGF2b2lkIHRoYXQgInRvcGZyYW1lIiBiZWNvbWVzCi0gICAgICogaW52YWxpZCAoaXQgbWF5IGJlIHVzZWQgaW4gR1VJIGV2ZW50cykuICovCi0gICAgaWYgKGZpcnN0d2luID09IGxhc3R3aW4pCi0gICAgewotCXRhYnBhZ2VfVCAgICpwdHAgPSBOVUxMOwotCXRhYnBhZ2VfVCAgICp0cDsKLQl0YWJwYWdlX1QgICAqYXRwID0gYWx0X3RhYnBhZ2UoKTsKLQotCS8qIFdlIGRvbid0IGRvIHRoZSB3aW5kb3cgcmVzaXppbmcgc3R1ZmYsIGxldCBlbnRlcl90YWJwYWdlKCkgdGFrZQotCSAqIGNhcmUgb2YgZW50ZXJpbmcgYSB3aW5kb3cgaW4gYW5vdGhlciB0YWIgcGFnZS4gKi8KLQllbnRlcl90YWJwYWdlKGF0cCwgb2xkX2N1cmJ1Zik7Ci0KLQlmb3IgKHRwID0gZmlyc3RfdGFicGFnZTsgdHAgIT0gTlVMTCAmJiB0cCAhPSBwcmV2X2N1cnRhYjsKLQkJCQkJCQkgICAgIHRwID0gdHAtPnRwX25leHQpCi0JICAgIHB0cCA9IHRwOwotCWlmICh0cCAhPSBwcmV2X2N1cnRhYiB8fCB0cC0+dHBfZmlyc3R3aW4gIT0gd2luKQotCXsKLQkgICAgLyogQXV0b2NvbW1hbmRzIG11c3QgaGF2ZSBjbG9zZWQgaXQgd2hlbiBqdW1waW5nIHRvIHRoZSBvdGhlciB0YWIKLQkgICAgICogcGFnZS4gKi8KLQkgICAgcmV0dXJuOwotCX0KLQotCSh2b2lkKXdpbl9mcmVlX21lbSh3aW4sICZkaXIsIHRwKTsKLQotCWlmIChwdHAgPT0gTlVMTCkKLQkgICAgZmlyc3RfdGFicGFnZSA9IHRwLT50cF9uZXh0OwotCWVsc2UKLQkgICAgcHRwLT50cF9uZXh0ID0gdHAtPnRwX25leHQ7Ci0JZnJlZV90YWJwYWdlKHRwKTsKLQotCXJldHVybjsKLSAgICB9Ci0KICAgICAvKiBGcmVlIHRoZSBtZW1vcnkgdXNlZCBmb3IgdGhlIHdpbmRvdy4gKi8KICAgICB3cCA9IHdpbl9mcmVlX21lbSh3aW4sICZkaXIsIE5VTEwpOwogCkBAIC0yMTc0LDcgKzIxNjMsOCBAQAogICogQ2xvc2Ugd2luZG93ICJ3aW4iIGluIHRhYiBwYWdlICJ0cCIsIHdoaWNoIGlzIG5vdCB0aGUgY3VycmVudCB0YWIgcGFnZS4KICAqIFRoaXMgbWF5IGJlIHRoZSBsYXN0IHdpbmRvdyBpaCB0aGF0IHRhYiBwYWdlIGFuZCByZXN1bHQgaW4gY2xvc2luZyB0aGUgdGFiLAogICogdGh1cyAidHAiIG1heSBiZWNvbWUgaW52YWxpZCEKLSAqIENhbGxlZCBtdXN0IGNoZWNrIGlmIGJ1ZmZlciBpcyBoaWRkZW4uCisgKiBDYWxsZXIgbXVzdCBjaGVjayBpZiBidWZmZXIgaXMgaGlkZGVuIGFuZCB3aGV0aGVyIHRoZSB0YWJsaW5lIG5lZWRzIHRvIGJlCisgKiB1cGRhdGVkLgogICovCiAgICAgdm9pZAogd2luX2Nsb3NlX290aGVydGFiKHdpbiwgZnJlZV9idWYsIHRwKQpkaWZmIC0tZ2l0IGEvc3JjL3h4ZC94eGQuYyBiL3NyYy94eGQveHhkLmMKaW5kZXggNDJiY2RhYS4uNzcwMGVjZiAxMDA2NDQKLS0tIGEvc3JjL3h4ZC94eGQuYworKysgYi9zcmMveHhkL3h4ZC5jCkBAIC0yNzgsNyArMjc4LDcgQEAKICNpZiAwCS8qIHRoaXMgZG9lc24ndCB3b3JrIHdoZW4gdGhlcmUgaXMgbm9ybWFsIHRleHQgYWZ0ZXIgdGhlIGhleCBjb2RlcyBpbgogCSAgIHRoZSBsYXN0IGxpbmUgdGhhdCBsb29rcyBsaWtlIGhleCAqLwogICAgICAgaWYgKGMgPT0gJyAnIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdcdCcpICAvKiBhbGxvdyBtdWx0aXBsZSBzcGFjZXMgKi8KLSAgICAgICAgY29udGludWU7CisJY29udGludWU7CiAjZW5kaWYKIAogICAgICAgbjMgPSBuMjsK