ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZHZiL1JFQURNRS5kaWJ1c2IgYi9Eb2N1bWVudGF0aW9uL2R2Yi9SRUFETUUuZGlidXNiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhOWU5NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2R2Yi9SRUFETUUuZGlidXNiCkBAIC0wLDAgKzEsMjg1IEBACitEb2N1bWVudGF0aW9uIGZvciBkaWIzMDAwKiBmcm9udGVuZCBkcml2ZXJzIGFuZCBkaWJ1c2IgZGV2aWNlIGRyaXZlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQ29weXJpZ2h0IChDKSAyMDA0LTUgUGF0cmljayBCb2V0dGNoZXIgKHBhdHJpY2suYm9ldHRjaGVyQGRlc3kuZGUpLAorCitkaWJ1c2IgYW5kIGRpYjMwMDBtYi9tYyBkcml2ZXJzIGJhc2VkIG9uIEdQTCBjb2RlLCB3aGljaCBoYXMKKworQ29weXJpZ2h0IChDKSAyMDA0IEFtYXVyeSBEZW1vbCBmb3IgRGlCY29tIChhZGVtb2xAZGliY29tLmZyKQorCitUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCittb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHZlcnNpb24gMi4KKworCitTdXBwb3J0ZWQgZGV2aWNlcyBVU0IxLjEKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitQcm9kdWNlZCBhbmQgcmVzZWxsZWQgYnkgVHdpbmhhbjoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLSBUd2luaGFuRFRWIFVTQi1UZXIgRFZCLVQgRGV2aWNlIChWUDcwNDEpCisJaHR0cDovL3d3dy50d2luaGFuLmNvbS9wcm9kdWN0X3RlcnJlc3RyaWFsXzMuYXNwCisKKy0gVHdpbmhhbkRUViBNYWdpYyBCb3ggKFZQNzA0MWUpCisJaHR0cDovL3d3dy50d2luaGFuLmNvbS9wcm9kdWN0X3RlcnJlc3RyaWFsXzQuYXNwCisKKy0gSEFNQSBEVkItVCBVU0IgZGV2aWNlCisJaHR0cDovL3d3dy5oYW1hLmRlL3BvcnRhbC9hcnRpY2xlSWQqMTEwNjIwL2FjdGlvbioyNTk4CisKKy0gQ1RTIFBvcnRhYmxlIChDaGluZXNlIFRlbGV2aXNpb24gU3lzdGVtKSAoMikKKwlodHRwOi8vd3d3LjJjdHMudHYvY3RzcG9ydGFibGUvCisKKy0gVW5rbm93biBVU0IgRFZCLVQgZGV2aWNlIHdpdGggdmVuZG9yIElEIEh5cGVyLVBhbHRlaworCisKK1Byb2R1Y2VkIGFuZCByZXNlbGxlZCBieSBLV29ybGQ6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLSBLV29ybGQgVi1TdHJlYW0gWFBFUlQgRFRWIERWQi1UIFVTQgorCWh0dHA6Ly93d3cua3dvcmxkLmNvbS50dy9lbi9wcm9kdWN0L0RWQlQtVVNCL0RWQlQtVVNCLmh0bWwKKworLSBKZXRXYXkgRFRWIERWQi1UIFVTQgorCWh0dHA6Ly93d3cuamV0d2F5LmNvbS50dy9ldmlzbi9wcm9kdWN0L2xjZC10di9EVlQtVVNCL2R0di11c2IuaHRtCisKKy0gQURTVGVjaCBJbnN0YW50IFRWIERWQi1UIFVTQgorCWh0dHA6Ly93d3cuYWRzdGVjaC5jb20vcHJvZHVjdHMvUFRWLTMzMy9pbnRyby9QVFYtMzMzX2ludHJvLmFzcD9waWQ9UFRWLTMzMworCisKK090aGVyczoKKy0tLS0tLS0KKy0gVWx0aW1hIEVsZWN0cm9uaWMvQXJ0ZWMgVDEgVVNCIFRWQk9YIChBTjIxMzUsIEFOMjIzNSwgQU4yMjM1IHdpdGggUGFuYXNvbmljIFR1bmVyKQorCWh0dHA6Ly84Mi4xNjEuMjQ2LjI0OS9wcm9kdWN0cy10dmJveC5odG1sCisKKy0gQ29tcHJvIFZpZGVvbWF0ZSBEVkItVTIwMDAgLSBEVkItVCBVU0IgKDIpCisJaHR0cDovL3d3dy5jb21wcm91c2EuY29tL3Byb2R1Y3RzL3ZtdTIwMDAuaHRtCisKKy0gR3JhbmR0ZWMgVVNCIERWQi1UCisJaHR0cDovL3d3dy5ncmFuZC5jb20udHcvCisKKy0gQXZlcm1lZGlhIEF2ZXJUViBEVkJUIFVTQiAoMikKKwlodHRwOi8vd3d3LmF2ZXJtZWRpYS5jb20vCisKKy0gRGlCY29tIFVTQiBEVkItVCByZWZlcmVuY2UgZGV2aWNlIChub24tcHVibGljKQorCisKK1N1cHBvcnRlZCBkZXZpY2VzIFVTQjIuMAorPT09PT09PT09PT09PT09PT09PT09PT09CistIFR3aW5oYW4gTWFnaWNCb3ggSUkgKDIpCisJaHR0cDovL3d3dy50d2luaGFuLmNvbS9wcm9kdWN0X3RlcnJlc3RyaWFsXzcuYXNwCisKKy0gSGFuZnRlayBVTVQtMDEwICgxKQorCWh0dHA6Ly93d3cuZ2xvYmFsc291cmNlcy5jb20vc2kvNjAwODgxOTc1NzA4Mi9Qcm9kdWN0RGV0YWlsL0RpZ2l0YWwtVFYvcHJvZHVjdF9pZC0xMDAwNDY1MjkKKworLSBUeXBob29uL1lha3Vtby9IQU1BIERWQi1UIG1vYmlsZSBVU0IyLjAgKDEpCisJaHR0cDovL3d3dy55YWt1bW8uZGUvcHJvZHVrdGUvaW5kZXgucGhwP3BpZD0xJmFnPURWQi1UCisKKy0gQXJ0ZWMgVDEgVVNCIFRWQk9YIChGWDIpICgyKQorCistIEhhdXBwYXVnZSBXaW5UViBOT1ZBLVQgVVNCMgorCWh0dHA6Ly93d3cuaGF1cHBhdWdlLmNvbS8KKworLSBLV29ybGQvQURTVGVjaCBJbnN0YW50IERWQi1UIFVTQjIuMCAoRGlCMzAwME0tQikKKworLSBEaUJjb20gVVNCMi4wIERWQi1UIHJlZmVyZW5jZSBkZXZpY2UgKG5vbi1wdWJsaWMpCisKKzEpIEl0IGlzIHdvcmtpbmcgYWxtb3N0LgorMikgTm8gdGVzdCByZXBvcnRzIHJlY2VpdmVkIHlldC4KKworCiswLiBORVdTOgorICAyMDA1LTAyLTExIC0gYWRkZWQgc3VwcG9ydCBmb3IgdGhlIEtXb3JsZC9BRFNUZWNoIEluc3RhbnQgRFZCLVQgVVNCMi4wLiBUaGFua3MgYSBsb3QgdG8gSm9hY2hpbSB2b24gQ2Fyb24KKyAgMjAwNS0wMi0wMiAtIGFkZGVkIHN1cHBvcnQgZm9yIHRoZSBIYXVwcGF1Z2UgV2luLVRWIE5vdmEtVCBVU0IyCisgIDIwMDUtMDEtMzEgLSBkaXN0b3J0ZWQgc3RyZWFtaW5nIGlzIGZpbmFsbHkgZ29uZSBmb3IgVVNCMS4xIGRldmljZXMKKyAgMjAwNS0wMS0xMyAtIG1vdmVkIHRoZSBtaXJyb3JlZCBwaWRfZmlsdGVyX3RhYmxlIGJhY2sgdG8gZHZiLWRpYnVzYgorICAgICAgICAgICAgIC0gZmlyc3QgYWxtb3N0IHdvcmtpbmcgdmVyc2lvbiBmb3IgSGFuZlRlayBVTVQtMDEwCisgICAgICAgICAgICAgLSBmb3VuZCBvdXQsIHRoYXQgWWFrdW1vL0hBTUEvVHlwaG9vbiBhcmUgcHJlZGVzc29ycyBvZiB0aGUgSGFuZlRlayBVTVQtMDEwCisgIDIwMDUtMDEtMTAgLSByZWZhY3RvcmluZyBjb21wbGV0ZWQsIG5vdyBldmVyeXRoaW5nIGlzIHZlcnkgZGVsaWdodGZ1bAorICAgICAgICAgICAgIC0gdHVuZXIgcXVpcmtzIGZvciBzb21lIHdlaXJkIGRldmljZXMgKEFydGVjIFQxIEFOMjIzNSBkZXZpY2UgaGFzIHNvbWV0aW1lcyBhCisgICAgICAgICAgICAgICBQYW5hc29uaWMgVHVuZXIgYXNzZW1ibGVkKS4gVHVuZXJwcm9iaW5nIGltcGxlbWVudGVkLiBUaGFua3MgYSBsb3QgdG8gR3VubmFyIFdpdHRpY2guCisgIDIwMDQtMTItMjkgLSBhZnRlciBzZXZlcmFsIGRheXMgb2Ygc3RydWdnbGluZyBhcm91bmQgYnVnIG9mIG5vIHJldHVybmluZyBVUkJzIGZpeGVkLgorICAyMDA0LTEyLTI2IC0gcmVmYWN0b3JlZCB0aGUgZGlidXNiLWRyaXZlciwgc3BsaXR0ZWQgaW50byBzZXBhcmF0ZSBmaWxlcworICAgICAgICAgICAgIC0gaTJjLXByb2JpbmcgZW5hYmxlZAorICAyMDA0LTEyLTA2IC0gcG9zc2liaWxpdHkgZm9yIGRlbW9kIGkyYy1hZGRyZXNzIHByb2JpbmcKKyAgICAgICAgICAgICAtIG5ldyB1c2IgSURzIChDb21wcm8sQXJ0ZWMpCisgIDIwMDQtMTEtMjMgLSBtZXJnZWQgY2hhbmdlcyBmcm9tIERpQjMwMDBNQ192ZXIyLjEKKyAgICAgICAgICAgICAtIHJldmlzZWQgdGhlIGRlYnVnZ2luZworICAgICAgICAgICAgIC0gcG9zc2liaWxpdHkgdG8gZGVsaXZlciB0aGUgY29tcGxldGUgVFMgZm9yIFVTQjIuMAorICAyMDA0LTExLTIxIC0gZmlyc3Qgd29ya2luZyB2ZXJzaW9uIG9mIHRoZSBkaWIzMDAwbWMvcCBmcm9udGVuZCBkcml2ZXIuCisgIDIwMDQtMTEtMTIgLSBhZGRlZCBhZGRpdGlvbmFsIHJlbW90ZSBjb250cm9sIGtleXMuIFRoYW5rcyB0byBVd2UgSGFua2UuCisgIDIwMDQtMTEtMDcgLSBhZGRlZCByZW1vdGUgY29udHJvbCBzdXBwb3J0LiBUaGFua3MgdG8gRGF2aWQgTWF0dGhld3MuCisgIDIwMDQtMTEtMDUgLSBhZGRlZCBzdXBwb3J0IGZvciBhIG5ldyBkZXZpY2VzIChHcmFuZHRlYy9BdmVybWVkaWEvQXJ0ZWMpCisgICAgICAgICAgICAgLSBtZXJnZWQgbXkgY2hhbmdlcyAoZm9yIGRpYjMwMDBtYi9kaWJ1c2IpIHRvIHRoZSBGRV9SRUZBQ1RPUklORywgYmVjYXVzZSBpdCBiZWNhbWUgSEVBRAorICAgICAgICAgICAgIC0gbW92ZWQgdHJhbnNmZXIgY29udHJvbCAocGlkIGZpbHRlciwgZmlmbyBjb250cm9sKSBmcm9tIHVzYiBkcml2ZXIgdG8gZnJvbnRlbmQsIGl0IHNlZW1zCisgICAgICAgICAgICAgICBiZXR0ZXIgc2V0dGxlZCB0aGVyZSAoYWRkZWQgeGZlcl9vcHMtc3RydWN0KQorICAgICAgICAgICAgIC0gY3JlYXRlZCBhIGNvbW1vbiBmaWxlcyBmb3IgZnJvbnRlbmRzIChtYy9wL21iKQorICAyMDA0LTA5LTI4IC0gYWRkZWQgc3VwcG9ydCBmb3IgYSBuZXcgZGV2aWNlIChVbmtvd24sIHZlbmRvciBJRCBpcyBIeXBlci1QYWx0ZWspCisgIDIwMDQtMDktMjAgLSBhZGRlZCBzdXBwb3J0IGZvciBhIG5ldyBkZXZpY2UgKENvbXBybyBEVkItVTIwMDApLCB0aGFua3MKKyAgICAgICAgICAgICAgIHRvIEFtYXVyeSBEZW1vbCBmb3IgcmVwb3J0aW5nCisgICAgICAgICAgICAgLSBjaGFuZ2VkIHVzYiBUUyB0cmFuc2ZlciBtZXRob2QgKHNldmVyYWwgdXJicywgc3RvcHBpbmcgdHJhbnNmZXIKKyAgICAgICAgICAgICAgIGJlZm9yZSBzZXR0aW5nIGEgbmV3IHBpZCkKKyAgMjAwNC0wOS0xMyAtIGFkZGVkIHN1cHBvcnQgZm9yIGEgbmV3IGRldmljZSAoQXJ0ZWMgVDEgVVNCIFRWQk9YKSwgdGhhbmtzCisgICAgICAgICAgICAgICB0byBDaHJpc3RpYW4gTW90c2Noa2UgZm9yIHJlcG9ydGluZworICAyMDA0LTA5LTA1IC0gcmVsZWFzZWQgdGhlIGRpYnVzYiBkZXZpY2UgYW5kIGRpYjMwMDBtYi1mcm9udGVuZCBkcml2ZXIKKworICAob2xkIG5ld3MgZm9yIHZwNzA0MS5jKQorICAyMDA0LTA3LTE1IC0gZm91bmQgb3V0LCBieSBhY2NpZGVudCwgdGhhdCB0aGUgZGV2aWNlIGhhcyBhIFRVQTYwMTBYUyBmb3IKKyAgICAgICAgICAgICAgIFBMTAorICAyMDA0LTA3LTEyIC0gZmlndXJlZCBvdXQsIHRoYXQgdGhlIGRyaXZlciBzaG91bGQgYWxzbyB3b3JrIHdpdGggdGhlCisgICAgICAgICAgICAgICBDVFMgUG9ydGFibGUgKENoaW5lc2UgVGVsZXZpc2lvbiBTeXN0ZW0pCisgIDIwMDQtMDctMDggLSBmaXJtd2FyZS1leHRyYWN0aW9uLTIuNDIyLXByb2JsZW0gc29sdmVkLCBkcml2ZXIgaXMgbm93IHdvcmtpbmcKKyAgICAgICAgICAgICAgIHByb3Blcmx5IHdpdGggZmlybXdhcmUgZXh0cmFjdGVkIGZyb20gMi40MjIKKwkJCSAtICNpZiBmb3IgMi42LjQgKGR2YiksIGNvbXBpbGUgaXNzdWUKKwkJCSAtIGNoYW5nZWQgZmlybXdhcmUgaGFuZGxpbmcsIHNlZSB2cDcwNDEudHh0IHNlYyAxLjEKKyAgMjAwNC0wNy0wMiAtIHNvbWUgdHVuZXIgbW9kaWZpY2F0aW9ucywgdjAuMSwgY2xlYW51cHMsIGZpcnN0IHB1YmxpYworICAyMDA0LTA2LTI4IC0gbm93IHVzaW5nIHRoZSBkdmJfZG14X3N3ZmlsdGVyX3BhY2tldHMsIGV2ZXJ5dGhpbmcKKyAgICAgICAgICAgICAgIHJ1bnMgZmluZSBub3cKKyAgMjAwNC0wNi0yNyAtIGFibGUgdG8gd2F0Y2ggYW5kIHN3aXRjaGluZyBjaGFubmVscyAocHJlLWFscGhhKQorICAgICAgICAgICAgIC0gbm8gc2VjdGlvbiBmaWx0ZXJpbmcgeWV0CisgIDIwMDQtMDYtMDYgLSBmaXJzdCBUUyByZWNlaXZlZCwgYnV0IGtlcm5lbCBvb3BzIDovCisgIDIwMDQtMDUtMTQgLSBmaXJtd2FyZSBsb2FkZXIgaXMgd29ya2luZworICAyMDA0LTA1LTExIC0gc3RhcnQgd3JpdGluZyB0aGUgZHJpdmVyCisKKzEuIEhvdyB0byB1c2U/CitOT1RFOiBUaGlzIGRyaXZlciB3YXMgZGV2ZWxvcGVkIHVzaW5nIExpbnV4IDIuNi42LiwKK2l0IGlzIHdvcmtpbmcgd2l0aCAyLjYuNyBhbmQgYWJvdmUuCisKK0xpbnV4IDIuNC54IHN1cHBvcnQgaXMgbm90IHBsYW5uZWQsIGJ1dCBwYXRjaGVzIGFyZSB2ZXJ5IHdlbGNvbWUuCisKK05PVEU6IEknbSB1c2luZyBEZWJpYW4gdGVzdGluZywgc28gdGhlIGZvbGxvd2luZyBleHBsYWluYXRpb24gKGVzcGVjaWFsbHkKK3RoZSBob3RwbHVnLXBhdGgpIG5lZWRuJ3QgbWF0Y2ggeW91ciBzeXN0ZW0sIGJ1dCBwcm9iYWJseSBpdCB3aWxsIDopLgorCitUaGUgZHJpdmVyIGlzIGluY2x1ZGVkIGluIHRoZSBrZXJuZWwgc2luY2UgTGludXggMi42LjEwLgorCisxLjEuIEZpcm13YXJlCisKK1RoZSBVU0IgZHJpdmVyIG5lZWRzIHRvIGRvd25sb2FkIGEgZmlybXdhcmUgdG8gc3RhcnQgd29ya2luZy4KKworWW91IGNhbiBlaXRoZXIgdXNlICJnZXRfZHZiX2Zpcm13YXJlIGRpYnVzYiIgdG8gZG93bmxvYWQgdGhlIGZpcm13YXJlIG9yIHlvdQorY2FuIGdldCBpdCBkaXJlY3RseSB2aWEKKworZm9yIFVTQjEuMSAoQU4yMTM1KQoraHR0cDovL3d3dy5saW51eHR2Lm9yZy9kb3dubG9hZHMvZmlybXdhcmUvZHZiLWRpYnVzYi01LjAuMC4xMS5mdworCitmb3IgVVNCMS4xIChBTjIyMzUpIChhIGZldyBBcnRlYyBUMSBkZXZpY2VzKQoraHR0cDovL3d3dy5saW51eHR2Lm9yZy9kb3dubG9hZHMvZmlybXdhcmUvZHZiLWRpYnVzYi1hbjIyMzUtMS5mdworCitmb3IgVVNCMi4wIChGWDIpIEhhdXBwYXVnZSwgRGlCY29tCitodHRwOi8vd3d3LmxpbnV4dHYub3JnL2Rvd25sb2Fkcy9maXJtd2FyZS9kdmItZGlidXNiLTYuMC4wLjUuZncKKworZm9yIFVTQjIuMCBBRFNUZWNoL0t3b3JsZCBVU0IyLjAKK2h0dHA6Ly93d3cubGludXh0di5vcmcvZG93bmxvYWRzL2Zpcm13YXJlL2R2Yi1kaWJ1c2ItYWRzdGVjaC11c2IyLTEuZncKKworZm9yIFVTQjIuMCBIYW5mVGVrCitodHRwOi8vd3d3LmxpbnV4dHYub3JnL2Rvd25sb2Fkcy9maXJtd2FyZS9kdmItZGlidXNiLWFuMjIzNS0xLmZ3CisKKworMS4yLiBDb21waWxpbmcKKworU2luY2UgdGhlIGRyaXZlciBpcyBpbiB0aGUgbGludXgga2VybmVsLCBhY3RpdmF0aW5nIHRoZSBkcml2ZXIgaW4KK3lvdXIgZmF2b3JpdGUgY29uZmlnLWVudmlyb25tZW50IHNob3VsZCBzdWZmaWNpZW50LiBJIHJlY29tbWVuZAordG8gY29tcGlsZSB0aGUgZHJpdmVyIGFzIG1vZHVsZS4gSG90cGx1ZyBkb2VzIHRoZSByZXN0LgorCisxLjMuIExvYWRpbmcgdGhlIGRyaXZlcnMKKworSG90cGx1ZyBpcyBhYmxlIHRvIGxvYWQgdGhlIGRyaXZlciwgd2hlbiBpdCBpcyBuZWVkZWQgKGJlY2F1c2UgeW91IHBsdWdnZWQKK2luIHRoZSBkZXZpY2UpLgorCitJZiB5b3Ugd2FudCB0byBlbmFibGUgZGVidWcgb3V0cHV0LCB5b3UgaGF2ZSB0byBsb2FkIHRoZSBkcml2ZXIgbWFudWFsbHkgYW5kCitmcm9tIHdpdGhpbmcgdGhlIGR2Yi1rZXJuZWwgY3ZzIHJlcG9zaXRvcnkuCisKK2ZpcnN0IGhhdmUgYSBsb29rLCB3aGljaCBkZWJ1ZyBsZXZlbCBhcmUgYXZhaWxhYmxlOgorCittb2RpbmZvIGRpYjMwMDBtYgorbW9kaW5mbyBkaWIzMDAwLWNvbW1vbgorbW9kaW5mbyBkaWIzMDAwbWMKK21vZGluZm8gZHZiLWRpYnVzYgorCittb2Rwcm9iZSBkaWIzMDAwLWNvbW1vbiBkZWJ1Zz08bGV2ZWw+Cittb2Rwcm9iZSBkaWIzMDAwbWIgZGVidWc9PGxldmVsPgorbW9kcHJvYmUgZGliMzAwMG1jIGRlYnVnPTxsZXZlbD4KK21vZHByb2JlIGR2Yi1kaWJ1c2IgZGVidWc9PGxldmVsPgorCitzaG91bGQgZG8gdGhlIHRyaWNrLgorCitXaGVuIHRoZSBkcml2ZXIgaXMgbG9hZGVkIHN1Y2Nlc3NmdWxseSwgdGhlIGZpcm13YXJlIGZpbGUgd2FzIGluCit0aGUgcmlnaHQgcGxhY2UgYW5kIHRoZSBkZXZpY2UgaXMgY29ubmVjdGVkLCB0aGUgIlBvd2VyIi1MRUQgc2hvdWxkIGJlCit0dXJuZWQgb24uCisKK0F0IHRoaXMgcG9pbnQgeW91IHNob3VsZCBiZSBhYmxlIHRvIHN0YXJ0IGEgZHZiLWNhcGFibGUgYXBwbGljYXRpb24uIEZvciBteXNlbGYKK0kgdXNlZCBtcGxheWVyLCBkdmJzY2FuLCB0emFwIGFuZCBrYXh0diwgdGhleSBhcmUgd29ya2luZy4gVXNpbmcgdGhlIGRldmljZQoraW4gdmRyIGlzIHdvcmtpbmcgbm93IGFsc28uCisKKzIuIEtub3duIHByb2JsZW1zIGFuZCBidWdzCisKKy0gRG9uJ3QgcmVtb3ZlIHRoZSBVU0IgZGV2aWNlIHdoaWxlIHJ1bm5pbmcgYW4gRFZCIGFwcGxpY2F0aW9uLCB5b3VyIHN5c3RlbSB3aWxsIGRpZS4KKworMi4xLiBBZGRpbmcgc3VwcG9ydCBmb3IgZGV2aWNlcworCitJdCBpcyBub3QgcG9zc2libGUgdG8gZGV0ZXJtaW5lIHRoZSByYW5nZSBvZiBkZXZpY2VzIGJhc2VkIG9uIHRoZSBEaUJjb20KK3JlZmVyZW5jZSBkZXNpZ25zLiBUaGlzIGlzIGJlY2F1c2UgdGhlIHJlZmVyZW5jZSBkZXNpZ24gb2YgRGlCY29tIGNhbiBiZSBzb2xkCit0byB0aGlyZHMsIHdpdGhvdXQgdGVsbGluZyBEaUJjb20gKHNvIGRvbmUgd2l0aCB0aGUgVHdpbmhhbiBWUDcwNDEgYW5kCit0aGUgSEFNQSBkZXZpY2UpLgorCitXaGVuIHlvdSB0aGluayB5b3UgaGF2ZSBhIGRldmljZSBsaWtlIHRoaXMgYW5kIHRoZSBkcml2ZXIgZG9lcyBub3QgcmVjb2duaXplcyBpdCwKK3BsZWFzZSBzZW5kIHRoZSAqKioqbG9hZCouaW5mIGFuZCB0aGUgKioqKmNhcCouaW5mIG9mIHRoZSBXaW5kb3dzIGRyaXZlciB0byBtZS4KKworU29tZXRpbWVzIHRoZSBWZW5kb3Igb3IgUHJvZHVjdCBJRCBpcyBpZGVudGljYWwgdG8gdGhlIG9uZXMgb2YgVHdpbmhhbiwgZXZlbgordGhvdWdoIGl0IGlzIG5vdCBhIFR3aW5oYW4gZGV2aWNlIChlLmcuIEhBTUEpLCB0aGVuIHBsZWFzZSBzZW5kIG1lIHRoZSBuYW1lCitvZiB0aGUgZGV2aWNlLiBJIHdpbGwgYWRkIGl0IHRvIHRoaXMgbGlzdCBpbiBvcmRlciB0byBtYWtlIHRoaXMgY2xlYXIgdG8KK290aGVycy4KKworSWYgeW91IGFyZSBmYW1pbGFyIHdpdGggQyB5b3UgY2FuIGFsc28gYWRkIHRoZSBWSUQgYW5kIFBJRCBvZiB0aGUgZGV2aWNlIHRvCit0aGUgZHZiLWRpYnVzYi1jb3JlLmMtZmlsZSBhbmQgY3JlYXRlIGEgcGF0Y2ggYW5kIHNlbmQgaXQgb3ZlciB0byBtZSBvciB0bwordGhlIGxpbnV4LWR2YiBtYWlsaW5nIGxpc3QsIF9hZnRlcl8geW91IGhhdmUgdHJpZWQgY29tcGlsaW5nIGFuZCBtb2Rwcm9iaW5nCitpdC4KKworMi4yLiBVU0IxLjEgQmFuZHdpZHRoIGxpbWl0YXRpb24KKworTW9zdCBvZiB0aGUgY3VycmVudGx5IHN1cHBvcnRlZCBkZXZpY2VzIGFyZSBVU0IxLjEgYW5kIHRodXMgdGhleSBoYXZlIGEKK21heGltdW0gYmFuZHdpZHRoIG9mIGFib3V0IDUtNiBNQml0L3Mgd2hlbiBjb25uZWN0ZWQgdG8gYSBVU0IyLjAgaHViLgorVGhpcyBpcyBub3QgZW5vdWdoIGZvciByZWNlaXZpbmcgdGhlIGNvbXBsZXRlIHRyYW5zcG9ydCBzdHJlYW0gb2YgYQorRFZCLVQgY2hhbm5lbCAod2hpY2ggY2FuIGJlIGFib3V0IDE2IE1CaXQvcykuIE5vcm1hbGx5IHRoaXMgaXMgbm90IGEKK3Byb2JsZW0sIGlmIHlvdSBvbmx5IHdhbnQgdG8gd2F0Y2ggVFYgKHRoaXMgZG9lcyBub3QgYXBwbHkgZm9yIEhEVFYpLAorYnV0IHdhdGNoaW5nIGEgY2hhbm5lbCB3aGlsZSByZWNvcmRpbmcgYW5vdGhlciBjaGFubmVsIG9uIHRoZSBzYW1lCitmcmVxdWVuY3kgc2ltcGx5IGRvZXMgbm90IHdvcmsgdmVyeSB3ZWxsLiBUaGlzIGFwcGxpZXMgdG8gYWxsIFVTQjEuMQorRFZCLVQgZGV2aWNlcywgbm90IGp1c3QgZGlidXNiKQorCitVcGRhdGU6IEZvciB0aGUgVVNCMS4xIGFuZCBWRFIgc29tZSB3b3JrIGhhcyBiZWVuIGRvbmUgKHBhdGNoZXMgYW5kIGNvbW1lbnRzCithcmUgc3RpbGwgdmVyeSB3ZWxjb21lKS4gTWF5YmUgdGhlIHByb2JsZW0gaXMgc29sdmVkIGluIHRoZSBtZWFudGltZSBiZWNhdXNlIEkKK25vdyB1c2UgdGhlIGRteF9zd19maWx0ZXIgZnVuY3Rpb24gaW5zdGVhZCBvZiBkbXhfc3dfZmlsdGVyX3BhY2tldC4gSSBob3BlIHRoZQorbGludXgtZHZiIHNvZnR3YXJlIGZpbHRlciBpcyBhYmxlIHRvIGdldCB0aGUgYmVzdCBvZiB0aGUgZ2FyYmxlZCBUUy4KKworVGhlIGJ1Zywgd2hlcmUgdGhlIFRTIGlzIGRpc3RvcnRlZCBieSBhIGhlYXZ5IHVzYWdlIG9mIHRoZSBkZXZpY2UgaXMgZ29uZQorZGVmaW5pdGVseS4gQWxsIGRpYnVzYi1kZXZpY2VzIEkgd2FzIHVzaW5nIChUd2luaGFuLCBLd29ybGQsIERpQmNvbSkgYXJlCit3b3JraW5nIGxpa2UgY2hhcm0gbm93IHdpdGggVkRSLiBTb21ldGltZXMgSSBldmVuIHdhcyBhYmxlIHRvIHJlY29yZCBhIGNoYW5uZWwKK2FuZCB3YXRjaCBhbm90aGVyIG9uZS4KKworMi4zLiBDb21tZW50cworCitQYXRjaGVzLCBjb21tZW50cyBhbmQgc3VnZ2VzdGlvbnMgYXJlIHZlcnkgdmVyeSB3ZWxjb21lLgorCiszLiBBY2tub3dsZWRnZW1lbnRzCisJQW1hdXJ5IERlbW9sIChhZGVtb2xAZGliY29tLmZyKSBhbmQgRnJhbmNvaXMgS2Fub3Vubmlrb2ZmIGZyb20gRGlCY29tIGZvcgorICAgIHByb3ZpZGluZyBzcGVjcywgY29kZSBhbmQgaGVscCwgb24gd2hpY2ggdGhlIGR2Yi1kaWJ1c2IsIGRpYjMwMDBtYiBhbmQKKyAgICBkaWIzMDAwbWMgYXJlIGJhc2VkLgorCisgICBEYXZpZCBNYXR0aGV3cyBmb3IgaWRlbnRpZnlpbmcgYSBuZXcgZGV2aWNlIHR5cGUgKEFydGVjIFQxIHdpdGggQU4yMjM1KQorICAgIGFuZCBmb3IgZXh0ZW5kaW5nIGRpYnVzYiB3aXRoIHJlbW90ZSBjb250cm9sIGV2ZW50IGhhbmRsaW5nLiBUaGFuayB5b3UuCisKKyAgIEFsZXggV29vZHMgZm9yIGZyZXF1ZW50bHkgYW5zd2VyaW5nIHF1ZXN0aW9uIGFib3V0IHVzYiBhbmQgZHZiCisgICAgc3R1ZmYsIGEgYmlnIHRoYW5rIHlvdS4KKworICAgQmVybmQgV2FnbmVyIGZvciBoZWxwaW5nIHdpdGggaHVnZSBidWcgcmVwb3J0cyBhbmQgZGlzY3Vzc2lvbnMuCisKKyAgIEd1bm5hciBXaXR0aWNoIGFuZCBKb2FjaGltIHZvbiBDYXJvbiBmb3IgdGhlaXIgdHJ1c3QgZm9yIGdpdmluZyBtZQorICAgIHJvb3Qtc2hlbGxzIG9uIHRoZWlyIG1hY2hpbmVzIHRvIGltcGxlbWVudCBzdXBwb3J0IGZvciBuZXcgZGV2aWNlcy4KKworICAgU29tZSBndXlzIG9uIHRoZSBsaW51eC1kdmIgbWFpbGluZyBsaXN0IGZvciBlbmNvdXJhZ2luZyBtZQorCisgICBQZXRlciBTY2hpbGRtYW5uID5wZXRlci5zY2hpbGRtYW5uLW5vc3BhbS1hdC13ZWIuZGU8IGZvciBoaXMKKyAgICB1c2VyLWxldmVsIGZpcm13YXJlIGxvYWRlciwgd2hpY2ggc2F2ZXMgYSBsb3Qgb2YgdGltZQorICAgICh3aGVuIHdyaXRpbmcgdGhlIHZwNzA0MSBkcml2ZXIpCisKKyAgIFVsZiBIZXJtZW5hdSBmb3IgaGVscGluZyBtZSBvdXQgd2l0aCB0cmFkaXRpb25hbCBjaGluZXNlLgorCisgICBBbmRy6SBTbW9rdHVuIGFuZCBDaHJpc3RpYW4gRnL2bW1lbCBmb3Igc3VwcG9ydGluZyBtZSB3aXRoCisgICAgaGFyZHdhcmUgYW5kIGxpc3RlbmluZyB0byBteSBwcm9ibGVtcyB2ZXJ5IHBhdGllbnQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZHZiL2F2ZXJtZWRpYS50eHQgYi9Eb2N1bWVudGF0aW9uL2R2Yi9hdmVybWVkaWEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5MDIwZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2R2Yi9hdmVybWVkaWEudHh0CkBAIC0wLDAgKzEsMzA0IEBACisKK0hPV1RPOiBHZXQgQW4gQXZlcm1lZGlhIERWQi1UIHdvcmtpbmcgdW5kZXIgTGludXgKKyAgICAgICAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworCisgICBUYWJsZSBvZiBDb250ZW50cworICAgQXNzdW1wdGlvbnMgYW5kIEludHJvZHVjdGlvbgorICAgVGhlIEF2ZXJtZWRpYSBEVkItVAorICAgR2V0dGluZyB0aGUgY2FyZCBnb2luZworICAgUmVjZWl2aW5nIERWQi1UIGluIEF1c3RyYWxpYQorICAgS25vd24gTGltaXRhdGlvbnMKKyAgIEZ1cnRoZXIgVXBkYXRlCisKK0Fzc3VtcHRpb25zIGFuZCBJbnRyb2R1Y3Rpb24KKworICAgSXQgIGlzIGFzc3VtZWQgdGhhdCB0aGUgcmVhZGVyIHVuZGVyc3RhbmRzIHRoZSBiYXNpYyBzdHJ1Y3R1cmUKKyAgIG9mICB0aGUgTGludXggS2VybmVsIERWQiBkcml2ZXJzIGFuZCB0aGUgZ2VuZXJhbCBwcmluY2lwbGVzIG9mCisgICBEaWdpdGFsIFRWLgorCisgICBPbmUgIHNpZ25pZmljYW50IGRpZmZlcmVuY2UgYmV0d2VlbiBEaWdpdGFsIFRWIGFuZCBBbmFsb2d1ZSBUVgorICAgdGhhdCAgdGhlICB1bndhcnkgIChsaWtlICBteXNlbGYpICBzaG91bGQgIGNvbnNpZGVyICBpcyAgdGhhdCwKKyAgIGFsdGhvdWdoICB0aGUgIGNvbXBvbmVudCAgc3RydWN0dXJlICBvZiBidWRnZXQgRFZCLVQgY2FyZHMgYXJlCisgICBzdWJzdGFudGlhbGx5ICBzaW1pbGFyICB0byBBbmFsb2d1ZSBUViBjYXJkcywgdGhleSBmdW5jdGlvbiBpbgorICAgc3Vic3RhbnRpYWxseSBkaWZmZXJlbnQgd2F5cy4KKworICAgVGhlICBwdXJwb3NlICBvZiAgYW4gIEFuYWxvZ3VlIFRWIGlzIHRvIHJlY2VpdmUgYW5kIGRpc3BsYXkgYW4KKyAgIEFuYWxvZ3VlICBUZWxldmlzaW9uICBzaWduYWwuIEFuIEFuYWxvZ3VlIFRWIHNpZ25hbCAob3RoZXJ3aXNlCisgICBrbm93biAgYXMgIGNvbXBvc2l0ZSAgdmlkZW8pICBpcyAgYW4gIGFuYWxvZ3VlICBlbmNvZGluZyAgb2YgYQorICAgc2VxdWVuY2UgIG9mICBpbWFnZSBmcmFtZXMgKDI1IHBlciBzZWNvbmQpIHJhc3RlcmlzZWQgdXNpbmcgYW4KKyAgIGludGVybGFjaW5nICAgdGVjaG5pcXVlLiAgIEludGVybGFjaW5nICB0YWtlcyAgdHdvICBmaWVsZHMgIHRvCisgICByZXByZXNlbnQgIG9uZSAgZnJhbWUuICBDb21wdXRlcnMgdG9kYXkgYXJlIGF0IHRoZWlyIGJlc3Qgd2hlbgorICAgZGVhbGluZyAgd2l0aCAgZGlnaXRhbCAgc2lnbmFscywgIG5vdCAgYW5hbG9ndWUgIHNpZ25hbHMgYW5kIGEKKyAgIGNvbXBvc2l0ZSAgdmlkZW8gc2lnbmFsIGlzIGFib3V0IGFzIGZhciByZW1vdmVkIGZyb20gYSBkaWdpdGFsCisgICBkYXRhIHN0cmVhbSBhcyB5b3UgY2FuIGdldC4gVGhlcmVmb3JlLCBhbiBBbmFsb2d1ZSBUViBjYXJkIGZvcgorICAgYSBQQyBoYXMgdGhlIGZvbGxvd2luZyBwdXJwb3NlOgorCisgICAgICogVHVuZSB0aGUgcmVjZWl2ZXIgdG8gcmVjZWl2ZSBhIGJyb2FkY2FzdCBzaWduYWwKKyAgICAgKiBkZW1vZHVsYXRlIHRoZSBicm9hZGNhc3Qgc2lnbmFsCisgICAgICogZGVtdWx0aXBsZXggIHRoZSAgYW5hbG9ndWUgdmlkZW8gc2lnbmFsIGFuZCBhbmFsb2d1ZSBhdWRpbworICAgICAgIHNpZ25hbCAgKG5vdGUgc29tZSBjb3VudHJpZXMgZW1wbG95IGEgZGlnaXRhbCBhdWRpbyBzaWduYWwKKyAgICAgICBlbWJlZGRlZCAgd2l0aGluIHRoZSBtb2R1bGF0ZWQgY29tcG9zaXRlIGFuYWxvZ3VlIHNpZ25hbCAtCisgICAgICAgTklDQU0uKQorICAgICAqIGRpZ2l0aXplICB0aGUgYW5hbG9ndWUgdmlkZW8gc2lnbmFsIGFuZCBtYWtlIHRoZSByZXN1bHRpbmcKKyAgICAgICBkYXRhc3RyZWFtIGF2YWlsYWJsZSB0byB0aGUgZGF0YSBidXMuCisKKyAgIFRoZSAgZGlnaXRhbCAgZGF0YXN0cmVhbSBmcm9tIGFuIEFuYWxvZ3VlIFRWIGNhcmQgaXMgZ2VuZXJhdGVkCisgICBieSAgY2lyY3VpdHJ5IG9uIHRoZSBjYXJkIGFuZCBpcyBvZnRlbiBwcmVzZW50ZWQgdW5jb21wcmVzc2VkLgorICAgRm9yICBhIFBBTCBUViBzaWduYWwgZW5jb2RlZCBhdCBhIHJlc29sdXRpb24gb2YgNzY4eDU3NiAyNC1iaXQKKyAgIGNvbG9yIHBpeGVscyBvdmVyIDI1IGZyYW1lcyBwZXIgc2Vjb25kIC0gYSBmYWlyIGFtb3VudCBvZiBkYXRhCisgICBpcyAgZ2VuZXJhdGVkIGFuZCBtdXN0IGJlIHByb2NlZXNlZCBieSB0aGUgUEMgYmVmb3JlIGl0IGNhbiBiZQorICAgZGlzcGxheWVkICBvbiB0aGUgdmlkZW8gbW9uaXRvciBzY3JlZW4uIFNvbWUgQW5hbG9ndWUgVFYgY2FyZHMKKyAgIGZvciAgUEMncyAgaGF2ZSAgb25ib2FyZCAgTVBFRzIgIGVuY29kZXJzIHdoaWNoIHBlcm1pdCB0aGUgcmF3CisgICBkaWdpdGFsICBkYXRhICBzdHJlYW0gIHRvIGJlIHByZXNlbnRlZCB0byB0aGUgUEMgaW4gYW4gZW5jb2RlZAorICAgYW5kICBjb21wcmVzc2VkICBmb3JtICAtICBzaW1pbGFyICB0byB0aGUgZm9ybSB0aGF0IGlzIHVzZWQgaW4KKyAgIERpZ2l0YWwgVFYuCisKKyAgIFRoZSAgcHVycG9zZSBvZiBhIHNpbXBsZSBidWRnZXQgZGlnaXRhbCBUViBjYXJkIChEVkItVCxDIG9yIFMpCisgICBpcyB0byBzaW1wbHk6CisKKyAgICAgKiBUdW5lIHRoZSByZWNlaXZlZCB0byByZWNlaXZlIGEgYnJvYWRjYXN0IHNpZ25hbC4KKyAgICAgKiBFeHRyYWN0ICB0aGUgZW5jb2RlZCBkaWdpdGFsIGRhdGFzdHJlYW0gZnJvbSB0aGUgYnJvYWRjYXN0CisgICAgICAgc2lnbmFsLgorICAgICAqIE1ha2UgIHRoZSAgZW5jb2RlZCBkaWdpdGFsIGRhdGFzdHJlYW0gKE1QRUcyKSBhdmFpbGFibGUgdG8KKyAgICAgICB0aGUgZGF0YSBidXMuCisKKyAgIFRoZSAgc2lnbmlmaWNhbnQgIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIGlzIHRoYXQgdGhlIHR1bmVyCisgICBvbiAgdGhlIGFuYWxvZ3VlIFRWIGNhcmQgc3BpdHMgb3V0IGFuIEFuYWxvZ3VlIHNpZ25hbCwgd2hlcmVhcworICAgdGhlICB0dW5lciAgb24gIHRoZSAgZGlnaXRhbCAgVFYgIGNhcmQgIHNwaXRzIG91dCBhIGNvbXByZXNzZWQKKyAgIGVuY29kZWQgICBkaWdpdGFsICAgZGF0YXN0cmVhbS4gICBBcyAgdGhlICBzaWduYWwgIGlzICBhbHJlYWR5CisgICBkaWdpdGlzZWQsICBpdCAgaXMgIHRyaXZpYWwgIHRvIHBhc3MgdGhpcyBkYXRhc3RyZWFtIHRvIHRoZSBQQworICAgZGF0YWJ1cyAgd2l0aCAgbWluaW1hbCAgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGFuZCB0aGVuIGV4dHJhY3QKKyAgIHRoZSAgZGlnaXRhbCAgdmlkZW8gIGFuZCBhdWRpbyBkYXRhc3RyZWFtcyBwYXNzaW5nIHRoZW0gdG8gdGhlCisgICBhcHByb3ByaWF0ZSBzb2Z0d2FyZSBvciBoYXJkd2FyZSBmb3IgZGVjb2RpbmcgYW5kIHZpZXdpbmcuCisgICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworCitUaGUgQXZlcm1lZGlhIERWQi1UCisKKyAgIFRoZSBBdmVybWVkaWEgRFZCLVQgaXMgYSBidWRnZXQgUENJIERWQiBjYXJkLiBJdCBoYXMgMyBpbnB1dHM6CisKKyAgICAgKiBSRiBUdW5lciBJbnB1dAorICAgICAqIENvbXBvc2l0ZSBWaWRlbyBJbnB1dCAoUkNBIEphY2spCisgICAgICogU1ZJREVPIElucHV0IChNaW5pLURJTikKKworICAgVGhlICBSRiAgVHVuZXIgIElucHV0ICBpcyB0aGUgaW5wdXQgdG8gdGhlIHR1bmVyIG1vZHVsZSBvZiB0aGUKKyAgIGNhcmQuICBUaGUgIFR1bmVyICBpcyAgb3RoZXJ3aXNlIGtub3duIGFzIHRoZSAiRnJvbnRlbmQiIC4gVGhlCisgICBGcm9udGVuZCBvZiB0aGUgQXZlcm1lZGlhIERWQi1UIGlzIGEgTWljcm90dW5lIDcyMDJELiBBIHRpbWVseQorICAgcG9zdCAgdG8gIHRoZSAgbGludXgtZHZiICBtYWlsaW5nICBsaXN0ICBhc2NlcnRhaW5lZCAgdGhhdCB0aGUKKyAgIE1pY3JvdHVuZSAgNzIwMkQgIGlzICBzdXBwb3J0ZWQgIGJ5IHRoZSBzcDg4N3ggZHJpdmVyIHdoaWNoIGlzCisgICBmb3VuZCBpbiB0aGUgZHZiLWh3IENWUyBtb2R1bGUuCisKKyAgIFRoZSAgRFZCLVQgY2FyZCBpcyBiYXNlZCBhcm91bmQgdGhlIEJUODc4IGNoaXAgd2hpY2ggaXMgYSB2ZXJ5CisgICBjb21tb24gbXVsdGltZWRpYSBicmlkZ2UgYW5kIG9mdGVuIGZvdW5kIG9uIEFuYWxvZ3VlIFRWIGNhcmRzLgorICAgVGhlcmUgaXMgbm8gb24tYm9hcmQgTVBFRzIgZGVjb2Rlciwgd2hpY2ggbWVhbnMgdGhhdCBhbGwgTVBFRzIKKyAgIGRlY29kaW5nICBtdXN0ICBiZSBkb25lIGluIHNvZnR3YXJlLCBvciBpZiB5b3UgaGF2ZSBvbmUsIG9uIGFuCisgICBNUEVHMiBoYXJkd2FyZSBkZWNvZGluZyBjYXJkIG9yIGNoaXBzZXQuCisgICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworCitHZXR0aW5nIHRoZSBjYXJkIGdvaW5nCisKKyAgIEluIG9yZGVyIHRvIGZpcmUgdXAgdGhlIGNhcmQsIGl0IGlzIG5lY2Vzc2FyeSB0byBsb2FkIGEgbnVtYmVyCisgICBvZiBtb2R1bGVzIGZyb20gdGhlIERWQiBkcml2ZXIgc2V0LiBQcmlvciB0byB0aGlzIGl0IHdpbGwgaGF2ZQorICAgYmVlbiAgbmVjZXNzYXJ5IHRvIGRvd25sb2FkIHRoZXNlIGRyaXZlcnMgZnJvbSB0aGUgbGludXh0diBDVlMKKyAgIHNlcnZlciBhbmQgY29tcGlsZSB0aGVtIHN1Y2Nlc3NmdWxseS4KKworICAgRGVwZW5kaW5nIG9uIHRoZSBjYXJkJ3MgZmVhdHVyZSBzZXQsIHRoZSBEZXZpY2UgRHJpdmVyIEFQSSBmb3IKKyAgIERWQiB1bmRlciBMaW51eCB3aWxsIGV4cG9zZSBzb21lIG9mIHRoZSBmb2xsb3dpbmcgZGV2aWNlIGZpbGVzCisgICBpbiB0aGUgL2RldiB0cmVlOgorCisgICAgICogL2Rldi9kdmIvYWRhcHRlcjAvYXVkaW8wCisgICAgICogL2Rldi9kdmIvYWRhcHRlcjAvY2EwCisgICAgICogL2Rldi9kdmIvYWRhcHRlcjAvZGVtdXgwCisgICAgICogL2Rldi9kdmIvYWRhcHRlcjAvZHZyMAorICAgICAqIC9kZXYvZHZiL2FkYXB0ZXIwL2Zyb250ZW5kMAorICAgICAqIC9kZXYvZHZiL2FkYXB0ZXIwL25ldDAKKyAgICAgKiAvZGV2L2R2Yi9hZGFwdGVyMC9vc2QwCisgICAgICogL2Rldi9kdmIvYWRhcHRlcjAvdmlkZW8wCisKKyAgIFRoZSAgcHJpbWFyeSAgZGV2aWNlICBub2RlcyB0aGF0IHdlIGFyZSBpbnRlcmVzdGVkIGluIChhdCB0aGlzCisgICBzdGFnZSkgZm9yIHRoZSBBdmVybWVkaWEgRFZCLVQgYXJlOgorCisgICAgICogL2Rldi9kdmIvYWRhcHRlcjAvZHZyMAorICAgICAqIC9kZXYvZHZiL2FkYXB0ZXIwL2Zyb250ZW5kMAorCisgICBUaGUgZHZyMCBkZXZpY2Ugbm9kZSBpcyB1c2VkIHRvIHJlYWQgdGhlIE1QRUcyIERhdGEgU3RyZWFtIGFuZAorICAgdGhlIGZyb250ZW5kMCBub2RlIGlzIHVzZWQgdG8gdHVuZSB0aGUgZnJvbnRlbmQgdHVuZXIgbW9kdWxlLgorCisgICBBdCAgdGhpcyAgc3RhZ2UsICBpdCAgaGFzICBub3QgIGJlZW4gIGFibGUgIHRvICBhc2NlcnRhaW4gIHRoZQorICAgZnVuY3Rpb25hbGl0eSAgb2YgdGhlIHJlbWFpbmluZyBkZXZpY2Ugbm9kZXMgaW4gcmVzcGVjdCBvZiB0aGUKKyAgIEF2ZXJtZWRpYSAgRFZCVC4gIEhvd2V2ZXIsICBmdWxsICBmdW5jdGlvbmFsaXR5ICBpbiByZXNwZWN0IG9mCisgICB0dW5pbmcsICByZWNlaXZpbmcgIGFuZCAgc3VwcGx5aW5nICB0aGUgIE1QRUcyICBkYXRhIHN0cmVhbSBpcworICAgcG9zc2libGUgIHdpdGggdGhlIGN1cnJlbnRseSBhdmFpbGFibGUgdmVyc2lvbnMgb2YgdGhlIGRyaXZlci4KKyAgIEl0ICBtYXkgYmUgcG9zc2libGUgdGhhdCBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkgaXMgYXZhaWxhYmxlCisgICBmcm9tICB0aGUgIGNhcmQgIChpLmUuICB2aWV3aW5nIHRoZSBhZGRpdGlvbmFsIGFuYWxvZ3VlIGlucHV0cworICAgdGhhdCAgdGhlIGNhcmQgcHJlc2VudHMpLCBidXQgdGhpcyBoYXMgbm90IGJlZW4gdGVzdGVkIHlldC4gSWYKKyAgIEkgZ2V0IGFyb3VuZCB0byB0aGlzLCBJJ2xsIHVwZGF0ZSB0aGUgZG9jdW1lbnQgd2l0aCB3aGF0ZXZlciBJCisgICBmaW5kLgorCisgICBUbyAgcG93ZXIgIHVwICB0aGUgIGNhcmQsICBsb2FkICB0aGUgIGZvbGxvd2luZyBtb2R1bGVzIGluIHRoZQorICAgZm9sbG93aW5nIG9yZGVyOgorCisgICAgICogaW5zbW9kIGR2Yi1jb3JlLm8KKyAgICAgKiBtb2Rwcm9iZSBidHR2Lm8KKyAgICAgKiBpbnNtb2QgYnQ4NzgubworICAgICAqIGluc21vZCBkdmItYnQ4eHgubworICAgICAqIGluc21vZCBzcDg4N3gubworCisgICBJbnNlcnRpb24gIG9mICB0aGVzZSAgbW9kdWxlcyAgaW50byAgdGhlICBydW5uaW5nICBrZXJuZWwgd2lsbAorICAgYWN0aXZhdGUgdGhlIGFwcHJvcHJpYXRlIERWQiBkZXZpY2Ugbm9kZXMuIEl0IGlzIHRoZW4gcG9zc2libGUKKyAgIHRvIHN0YXJ0IGFjY2Vzc2luZyB0aGUgY2FyZCB3aXRoIHV0aWxpdGllcyBzdWNoIGFzIHNjYW4sIHR6YXAsCisgICBkdmJzdHJlYW0gZXRjLgorCisgICBUaGUgZnJvbnRlbmQgbW9kdWxlIHNwODg3eC5vLCByZXF1aXJlcyBhbiBleHRlcm5hbCAgIGZpcm13YXJlLgorICAgUGxlYXNlIHVzZSAgdGhlICBjb21tYW5kICJnZXRfZHZiX2Zpcm13YXJlIHNwODg3eCIgdG8gZG93bmxvYWQKKyAgIGl0LiBUaGVuIGNvcHkgaXQgdG8gL3Vzci9saWIvaG90cGx1Zy9maXJtd2FyZS4KKworUmVjZWl2aW5nIERWQi1UIGluIEF1c3RyYWxpYQorCisgICBJICBoYXZlICBubyAgZXhwZXJpZW5jZSBvZiBEVkItVCBpbiBvdGhlciBjb3VudHJpZXMgb3RoZXIgdGhhbgorICAgQXVzdHJhbGlhLCAgc28gIEkgd2lsbCBhdHRlbXB0IHRvIGV4cGxhaW4gaG93IGl0IHdvcmtzIGhlcmUgaW4KKyAgIE1lbGJvdXJuZSAgYW5kIGhvdyB0aGlzIGFmZmVjdHMgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIERWQi1UCisgICBjYXJkLgorCisgICBUaGUgIERpZ2l0YWwgIEJyb2FkY2FzdGluZyAgQXVzdHJhbGlhICB3ZWJzaXRlIGhhcyBhIFJlY2VwdGlvbgorICAgbG9jYXRvcnRvb2wgd2hpY2ggcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gdHJhbnNwb25kZXIgY2hhbm5lbHMKKyAgIGFuZCAgZnJlcXVlbmNpZXMuICBNeSAgbG9jYWwgIHRyYW5zbWl0dGVyICBoYXBwZW5zIHRvIGJlIE1vdW50CisgICBEYW5kZW5vbmcuCisKKyAgIFRoZSBmcmVxdWVuY2llcyBicm9hZGNhc3QgYnkgTW91bnQgRGFuZGVub25nIGFyZToKKworICAgVGFibGUgMS4gVHJhbnNwb25kZXIgRnJlcXVlbmNpZXMgTW91bnQgRGFuZGVub25nLCBWaWMsIEF1cy4KKyAgIEJyb2FkY2FzdGVyIENoYW5uZWwgRnJlcXVlbmN5CisgICBBQkMgICAgICAgICBWSEYgMTIgIDIyNi41IE1IegorICAgVEVOICAgICAgICAgVkhGIDExICAyMTkuNSBNSHoKKyAgIE5JTkUgICAgICAgIFZIRiA4ICAgMTkxLjYyNSBNSHoKKyAgIFNFVkVOICAgICAgIFZIRiA2ICAgMTc3LjUgTUh6CisgICBTQlMgICAgICAgICBVSEYgMjkgIDUzNi41IE1IegorCisgICBUaGUgU2NhbiB1dGlsaXR5IGhhcyBhIHNldCBvZiBjb21waWxlZC1pbiBkZWZhdWx0cyBmb3IgdmFyaW91cworICAgY291bnRyaWVzIGFuZCByZWdpb25zLCBidXQgaWYgdGhleSBkbyBub3Qgc3VpdCwgb3IgaWYgeW91IGhhdmUKKyAgIGEgcHJlLWNvbXBpbGVkIHNjYW4gYmluYXJ5LCB5b3UgY2FuIHNwZWNpZnkgYSBkYXRhIGZpbGUgb24gdGhlCisgICBjb21tYW5kICBsaW5lIHdoaWNoIGNvbnRhaW5zIHRoZSB0cmFuc3BvbmRlciBmcmVxdWVuY2llcy4gSGVyZQorICAgaXMgYSBzYW1wbGUgZmlsZSBmb3IgdGhlIGFib3ZlIGNoYW5uZWwgdHJhbnNwb25kZXJzOgorIyBEYXRhIGZpbGUgZm9yIERWQiBzY2FuIHByb2dyYW0KKyMKKyMgQyBGcmVxdWVuY3kgU3ltYm9sUmF0ZSBGRUMgUUFNCisjIFMgRnJlcXVlbmN5IFBvbGFyaXNhdGlvbiBTeW1ib2xSYXRlIEZFQworIyBUIEZyZXF1ZW5jeSBCYW5kd2lkdGggRkVDIEZFQzIgUUFNIE1vZGUgR3VhcmQgSGllcgorVCAyMjY1MDAwMDAgN01IeiAyLzMgTk9ORSBRQU02NCA4ayAxLzggTk9ORQorVCAxOTE2MjUwMDAgN01IeiAyLzMgTk9ORSBRQU02NCA4ayAxLzggTk9ORQorVCAyMTk1MDAwMDAgN01IeiAyLzMgTk9ORSBRQU02NCA4ayAxLzggTk9ORQorVCAxNzc1MDAwMDAgN01IeiAyLzMgTk9ORSBRQU02NCA4ayAxLzggTk9ORQorVCA1MzY1MDAwMDAgN01IeiAyLzMgTk9ORSBRQU02NCA4ayAxLzggTk9ORQorCisgICBUaGUgICBkZWZhdWx0cyAgIGZvciAgIHRoZSAgdHJhbnNwb25kZXIgIGZyZXF1ZW5jeSAgYW5kICBvdGhlcgorICAgbW9kdWxhdGlvbiBwYXJhbWV0ZXJzIHdlcmUgb2J0YWluZWQgZnJvbSB3d3cuZGJhLm9yZy5hdS4KKworICAgV2hlbiAgU2NhbiAgcnVucywgaXQgd2lsbCBvdXRwdXQgY2hhbm5lbHMuY29uZiBpbmZvcm1hdGlvbiBmb3IKKyAgIGFueSAgY2hhbm5lbCdzIHRyYW5zcG9uZGVycyB3aGljaCB0aGUgY2FyZCdzIGZyb250ZW5kIGNhbiBsb2NrCisgICBvbnRvLiAgKGkuZS4gIGFueSAgd2hvc2UgIHNpZ25hbCAgaXMgIHN0cm9uZyAgZW5vdWdoICBhdCAgeW91cgorICAgYW50ZW5uYSkuCisKKyAgIEhlcmUncyBteSBjaGFubmVscy5jb25mIGZpbGUgZm9yIGFueW9uZSB3aG8ncyBpbnRlcmVzdGVkOgorQUJDIEhEVFY6MjI2NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18zXzQ6RkVDXzNfNDpRQU1fNjQKKzpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzE2OkhJRVJBUkNIWV9OT05FOjIzMDc6MDo1NjAKK0FCQyBUViBNZWxib3VybmU6MjI2NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18zXzQ6RkVDXzNfCis0OlFBTV82NDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzE2OkhJRVJBUkNIWV9OT05FOjUxMjo2NQorMDo1NjEKK0FCQyBUViAyOjIyNjUwMDAwMDpJTlZFUlNJT05fT0ZGOkJBTkRXSURUSF83X01IWjpGRUNfM180OkZFQ18zXzQ6UUFNXzY0Cis6VFJBTlNNSVNTSU9OX01PREVfOEs6R1VBUkRfSU5URVJWQUxfMV8xNjpISUVSQVJDSFlfTk9ORTo1MTI6NjUwOjU2MgorQUJDIFRWIDM6MjI2NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18zXzQ6RkVDXzNfNDpRQU1fNjQKKzpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzE2OkhJRVJBUkNIWV9OT05FOjUxMjo2NTA6NTYzCitBQkMgVFYgNDoyMjY1MDAwMDA6SU5WRVJTSU9OX09GRjpCQU5EV0lEVEhfN19NSFo6RkVDXzNfNDpGRUNfM180OlFBTV82NAorOlRSQU5TTUlTU0lPTl9NT0RFXzhLOkdVQVJEX0lOVEVSVkFMXzFfMTY6SElFUkFSQ0hZX05PTkU6NTEyOjY1MDo1NjQKK0FCQyBEaUcgUmFkaW86MjI2NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18zXzQ6RkVDXzNfNDpRCitBTV82NDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzE2OkhJRVJBUkNIWV9OT05FOjA6MjMxMTo1NgorNgorVEVOIERpZ2l0YWw6MjE5NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18zXzQ6RkVDXzFfMjpRQU0KK182NDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzE2OkhJRVJBUkNIWV9OT05FOjUxMjo2NTA6MTU4Cis1CitURU4gRGlnaXRhbCAxOjIxOTUwMDAwMDpJTlZFUlNJT05fT0ZGOkJBTkRXSURUSF83X01IWjpGRUNfM180OkZFQ18xXzI6UQorQU1fNjQ6VFJBTlNNSVNTSU9OX01PREVfOEs6R1VBUkRfSU5URVJWQUxfMV8xNjpISUVSQVJDSFlfTk9ORTo1MTI6NjUwOjEKKzU4NgorVEVOIERpZ2l0YWwgMjoyMTk1MDAwMDA6SU5WRVJTSU9OX09GRjpCQU5EV0lEVEhfN19NSFo6RkVDXzNfNDpGRUNfMV8yOlEKK0FNXzY0OlRSQU5TTUlTU0lPTl9NT0RFXzhLOkdVQVJEX0lOVEVSVkFMXzFfMTY6SElFUkFSQ0hZX05PTkU6NTEyOjY1MDoxCis1ODcKK1RFTiBEaWdpdGFsIDM6MjE5NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18zXzQ6RkVDXzFfMjpRCitBTV82NDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzE2OkhJRVJBUkNIWV9OT05FOjUxMjo2NTA6MQorNTg4CitURU4gRGlnaXRhbDoyMTk1MDAwMDA6SU5WRVJTSU9OX09GRjpCQU5EV0lEVEhfN19NSFo6RkVDXzNfNDpGRUNfMV8yOlFBTQorXzY0OlRSQU5TTUlTU0lPTl9NT0RFXzhLOkdVQVJEX0lOVEVSVkFMXzFfMTY6SElFUkFSQ0hZX05PTkU6NTEyOjY1MDoxNTgKKzkKK1RFTiBEaWdpdGFsIDQ6MjE5NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18zXzQ6RkVDXzFfMjpRCitBTV82NDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzE2OkhJRVJBUkNIWV9OT05FOjUxMjo2NTA6MQorNTkwCitURU4gRGlnaXRhbDoyMTk1MDAwMDA6SU5WRVJTSU9OX09GRjpCQU5EV0lEVEhfN19NSFo6RkVDXzNfNDpGRUNfMV8yOlFBTQorXzY0OlRSQU5TTUlTU0lPTl9NT0RFXzhLOkdVQVJEX0lOVEVSVkFMXzFfMTY6SElFUkFSQ0hZX05PTkU6NTEyOjY1MDoxNTkKKzEKK1RFTiBIRDoyMTk1MDAwMDA6SU5WRVJTSU9OX09GRjpCQU5EV0lEVEhfN19NSFo6RkVDXzNfNDpGRUNfMV8yOlFBTV82NDpUCitSQU5TTUlTU0lPTl9NT0RFXzhLOkdVQVJEX0lOVEVSVkFMXzFfMTY6SElFUkFSQ0hZX05PTkU6NTE0OjA6MTU5MgorVEVOIERpZ2l0YWw6MjE5NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18zXzQ6RkVDXzFfMjpRQU0KK182NDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzE2OkhJRVJBUkNIWV9OT05FOjUxMjo2NTA6MTU5CiszCitOaW5lIERpZ2l0YWw6MTkxNjI1MDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18zXzQ6RkVDXzFfMjpRQQorTV82NDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzE2OkhJRVJBUkNIWV9OT05FOjUxMzo2NjA6MTAKKzcyCitOaW5lIERpZ2l0YWwgSEQ6MTkxNjI1MDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18zXzQ6RkVDXzFfMgorOlFBTV82NDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzE2OkhJRVJBUkNIWV9OT05FOjUxMjowOjEKKzA3MworTmluZSBHdWlkZToxOTE2MjUwMDA6SU5WRVJTSU9OX09GRjpCQU5EV0lEVEhfN19NSFo6RkVDXzNfNDpGRUNfMV8yOlFBTV8KKzY0OlRSQU5TTUlTU0lPTl9NT0RFXzhLOkdVQVJEX0lOVEVSVkFMXzFfMTY6SElFUkFSQ0hZX05PTkU6NTE0OjY3MDoxMDc0Cis3IERpZ2l0YWw6MTc3NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18yXzM6RkVDXzJfMzpRQU1fNgorNDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzg6SElFUkFSQ0hZX05PTkU6NzY5Ojc3MDoxMzI4Cis3IERpZ2l0YWwgMToxNzc1MDAwMDA6SU5WRVJTSU9OX09GRjpCQU5EV0lEVEhfN19NSFo6RkVDXzJfMzpGRUNfMl8zOlFBTQorXzY0OlRSQU5TTUlTU0lPTl9NT0RFXzhLOkdVQVJEX0lOVEVSVkFMXzFfODpISUVSQVJDSFlfTk9ORTo3Njk6NzcwOjEzMjkKKzcgRGlnaXRhbCAyOjE3NzUwMDAwMDpJTlZFUlNJT05fT0ZGOkJBTkRXSURUSF83X01IWjpGRUNfMl8zOkZFQ18yXzM6UUFNCitfNjQ6VFJBTlNNSVNTSU9OX01PREVfOEs6R1VBUkRfSU5URVJWQUxfMV84OkhJRVJBUkNIWV9OT05FOjc2OTo3NzA6MTMzMAorNyBEaWdpdGFsIDM6MTc3NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18yXzM6RkVDXzJfMzpRQU0KK182NDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzg6SElFUkFSQ0hZX05PTkU6NzY5Ojc3MDoxMzMxCis3IEhEIERpZ2l0YWw6MTc3NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18yXzM6RkVDXzJfMzpRQQorTV82NDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzg6SElFUkFSQ0hZX05PTkU6ODMzOjgzNDoxMzMKKzIKKzcgUHJvZ3JhbSBHdWlkZToxNzc1MDAwMDA6SU5WRVJTSU9OX09GRjpCQU5EV0lEVEhfN19NSFo6RkVDXzJfMzpGRUNfMl8zCis6UUFNXzY0OlRSQU5TTUlTU0lPTl9NT0RFXzhLOkdVQVJEX0lOVEVSVkFMXzFfODpISUVSQVJDSFlfTk9ORTo4NjU6ODY2OgorMTMzNAorU0JTIEhEOjUzNjUwMDAwMDpJTlZFUlNJT05fT0ZGOkJBTkRXSURUSF83X01IWjpGRUNfMl8zOkZFQ18yXzM6UUFNXzY0OlQKK1JBTlNNSVNTSU9OX01PREVfOEs6R1VBUkRfSU5URVJWQUxfMV84OkhJRVJBUkNIWV9OT05FOjEwMjoxMDM6Nzg0CitTQlMgRElHSVRBTCAxOjUzNjUwMDAwMDpJTlZFUlNJT05fT0ZGOkJBTkRXSURUSF83X01IWjpGRUNfMl8zOkZFQ18yXzM6UQorQU1fNjQ6VFJBTlNNSVNTSU9OX01PREVfOEs6R1VBUkRfSU5URVJWQUxfMV84OkhJRVJBUkNIWV9OT05FOjE2MTo4MTo3ODUKK1NCUyBESUdJVEFMIDI6NTM2NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18yXzM6RkVDXzJfMzpRCitBTV82NDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzg6SElFUkFSQ0hZX05PTkU6MTYyOjgzOjc4NgorU0JTIEVQRzo1MzY1MDAwMDA6SU5WRVJTSU9OX09GRjpCQU5EV0lEVEhfN19NSFo6RkVDXzJfMzpGRUNfMl8zOlFBTV82NDoKK1RSQU5TTUlTU0lPTl9NT0RFXzhLOkdVQVJEX0lOVEVSVkFMXzFfODpISUVSQVJDSFlfTk9ORToxNjM6ODU6Nzg3CitTQlMgUkFESU8gMTo1MzY1MDAwMDA6SU5WRVJTSU9OX09GRjpCQU5EV0lEVEhfN19NSFo6RkVDXzJfMzpGRUNfMl8zOlFBTQorXzY0OlRSQU5TTUlTU0lPTl9NT0RFXzhLOkdVQVJEX0lOVEVSVkFMXzFfODpISUVSQVJDSFlfTk9ORTowOjIwMTo3OTgKK1NCUyBSQURJTyAyOjUzNjUwMDAwMDpJTlZFUlNJT05fT0ZGOkJBTkRXSURUSF83X01IWjpGRUNfMl8zOkZFQ18yXzM6UUFNCitfNjQ6VFJBTlNNSVNTSU9OX01PREVfOEs6R1VBUkRfSU5URVJWQUxfMV84OkhJRVJBUkNIWV9OT05FOjA6MjAyOjc5OQorICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKworS25vd24gTGltaXRhdGlvbnMKKworICAgQXQgIHByZXNlbnQgIEkgY2FuIHNheSB3aXRoIGNvbmZpZGVuY2UgdGhhdCB0aGUgZnJvbnRlbmQgdHVuZXMKKyAgIHZpYSAvZGV2L2R2Yi9hZGFwdGVye3h9L2Zyb250ZW5kMCBhbmQgc3VwcGxpZXMgYW4gTVBFRzIgc3RyZWFtCisgICB2aWEgICAvZGV2L2R2Yi9hZGFwdGVye3h9L2R2cjAuICAgSSAgIGhhdmUgICBub3QgICB0ZXN0ZWQgIHRoZQorICAgZnVuY3Rpb25hbGl0eSAgb2YgYW55IG90aGVyIHBhcnQgb2YgdGhlIGNhcmQgeWV0LiBJIHdpbGwgZG8gc28KKyAgIG92ZXIgdGltZSBhbmQgdXBkYXRlIHRoaXMgZG9jdW1lbnQuCisKKyAgIFRoZXJlICBhcmUgc29tZSBsaW1pdGF0aW9ucyBpbiB0aGUgaTJjIGxheWVyIGR1ZSB0byBhIHJldHVybmVkCisgICBlcnJvciBtZXNzYWdlIGluY29uc2lzdGVuY3kuIEFsdGhvdWdoIHRoaXMgZ2VuZXJhdGVzIGVycm9ycyBpbgorICAgZG1lc2cgIGFuZCAgdGhlICBzeXN0ZW0gbG9ncywgaXQgZG9lcyBub3QgYXBwZWFyIHRvIGFmZmVjdCB0aGUKKyAgIGFiaWxpdHkgb2YgdGhlIGZyb250ZW5kIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4KKyAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisKK0Z1cnRoZXIgVXBkYXRlCisKKyAgIGR2YnN0cmVhbSAgYW5kICBWaWRlb0xBTiAgQ2xpZW50IG9uIHdpbmRvd3Mgd29ya3MgYSB0cmVhdCB3aXRoCisgICBEVkIsICBpbiAgZmFjdCAgdGhpcyAgaXMgIGN1cnJlbnRseSAgc2VydmluZyBhcyBteSBtYWluIHdheSBvZgorICAgdmlld2luZyAgRFZCLVQgIGF0ICB0aGUgIG1vbWVudC4gIEFkZGl0aW9uYWxseSwgVkxDIGlzIGhhcHBpbHkKKyAgIGRlY29kaW5nICBIRFRWICBzaWduYWxzLCAgYWx0aG91Z2ggIHRoZSBQQyBpcyBkcm9wcGluZyB0aGUgb2RkCisgICBmcmFtZSBoZXJlIGFuZCB0aGVyZSAtIEkgYXNzdW1lIGR1ZSB0byBwcm9jZXNzaW5nIGNhcGFiaWxpdHkgLQorICAgYXMgYWxsIHRoZSBkZWNvZGluZyBpcyBiZWluZyBkb25lIHVuZGVyIHdpbmRvd3MgaW4gc29mdHdhcmUuCisKKyAgIE1hbnkgIHRoYW5rcyB0byBOaWdlbCBQZWFyc29uIGZvciB0aGUgdXBkYXRlcyB0byB0aGlzIGRvY3VtZW50CisgICBzaW5jZSB0aGUgcmVjZW50IHJldmlzaW9uIG9mIHRoZSBkcml2ZXIuCisKKyAgIEphbnVhcnkgMjl0aCAyMDA0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2R2Yi9idDh4eC50eHQgYi9Eb2N1bWVudGF0aW9uL2R2Yi9idDh4eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNjYWNmNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZHZiL2J0OHh4LnR4dApAQCAtMCwwICsxLDkwIEBACitIb3cgdG8gZ2V0IHRoZSBOZWJ1bGEsIFBDVFYgYW5kIFR3aW5oYW4gRFNUIGNhcmRzIHdvcmtpbmcKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGNsYXNzIG9mIGNhcmRzIGhhcyBhIGJ0ODc4YSBhcyB0aGUgUENJIGludGVyZmFjZSwgYW5kCityZXF1aXJlIHRoZSBidHR2IGRyaXZlci4KKworUGxlYXNlIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIHdhcm5pbmcgYWJvdXQgdGhlIGJ0dHYgbW9kdWxlCitvcHRpb25zIGJlbG93IGZvciB0aGUgRFNUIGNhcmQuCisKKzEpIEdlbmVyYWwgaW5mb3JtYXRpb25zCis9PT09PT09PT09PT09PT09PT09PT09PQorCitUaGVzZSBkcml2ZXJzIHJlcXVpcmUgdGhlIGJ0dHYgZHJpdmVyIHRvIHByb3ZpZGUgdGhlIG1lYW5zIHRvIGFjY2VzcwordGhlIGkyYyBidXMgYW5kIHRoZSBncGlvIHBpbnMgb2YgdGhlIGJ0OHh4IGNoaXBzZXQuCisKK0JlY2F1c2Ugb2YgdGhpcywgeW91IG5lZWQgdG8gZW5hYmxlCisiRGV2aWNlIGRyaXZlcnMiID0+ICJNdWx0aW1lZGlhIGRldmljZXMiCisgID0+ICJWaWRlbyBGb3IgTGludXgiID0+ICJCVDg0OCBWaWRlbyBGb3IgTGludXgiCisKKzIpIExvYWRpbmcgTW9kdWxlcworPT09PT09PT09PT09PT09PT09CisKK0luIGdlbmVyYWwgeW91IG5lZWQgdG8gbG9hZCB0aGUgYnR0diBkcml2ZXIsIHdoaWNoIHdpbGwgaGFuZGxlIHRoZSBncGlvIGFuZAoraTJjIGNvbW11bmljYXRpb24gZm9yIHVzLiBOZXh0IHlvdSBuZWVkIHRoZSBjb21tb24gZHZiLWJ0OHh4IGRldmljZSBkcml2ZXIKK2FuZCBvbmUgZnJvbnRlbmQgZHJpdmVyLgorCitUaGUgYnR0diBkcml2ZXIgd2lsbCBIQU5HIFlPVVIgU1lTVEVNIElGIFlPVSBETyBOT1QgU1BFQ0lGWSBUSEUgQ09SUkVDVCAKK0NBUkQgSUQhCisKKyhJZiB5b3UgZG9uJ3QgZ2V0IHlvdXIgY2FyZCBydW5uaW5nIGFuZCB5b3Ugc3VzcGVjdCB0aGF0IHRoZSBjYXJkIGlkIHlvdSdyZQordXNpbmcgaXMgd3JvbmcsIGhhdmUgYSBsb29rIGF0ICJidHR2LWNhcmRzLmMiIGZvciBhIGxpc3Qgb2YgcG9zc2libGUgY2FyZAoraWRzLikKKworUGF5IGF0dGVudGlvbiB0byBmYWlsdXJlcyB3aGVuIHlvdSBsb2FkIHRoZSBmcm9udGVuZCBkcml2ZXJzCisoZS5nLiBkbWVzZywgL3Zhci9sb2cvbWVzc2FnZXMpLgorCiszYSkgTmVidWxhIC8gUGlubmFjbGUgUENUVgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgJCBtb2Rwcm9iZSBidHR2IGkyY19odz0xIGNhcmQ9MHg2OAorICAgJCBtb2Rwcm9iZSBkdmItYnQ4eHgKKyAgIAorRm9yIE5lYnVsYSBjYXJkcyB1c2UgdGhlICJueHQ2MDAwIiBmcm9udGVuZCBkcml2ZXI6CisgICAkIG1vZHByb2JlIG54dDYwMDAKKworRm9yIFBpbm5hY2xlIFBDVFYgY2FyZHMgdXNlIHRoZSAiY3gyNDExMCIgZnJvbnRlbmQgZHJpdmVyOgorICAgJCBtb2Rwcm9iZSBjeDI0MTEwCisKKzNiKSBUd2luSGFuCistLS0tLS0tLS0tLQorCisgICAkIG1vZHByb2JlIGJ0dHYgaTJjX2h3PTEgY2FyZD0weDcxCisgICAkIG1vZHByb2JlIGR2Yi1idDh4eAorICAgJCBtb2Rwcm9iZSBkc3QKKworVGhlIHZhbHVlIDB4NzEgd2lsbCBvdmVycmlkZSB0aGUgUENJIHR5cGUgZGV0ZWN0aW9uIGZvciBkdmItYnQ4eHgsIHdoaWNoIAoraXMgbmVjZXNzYXJ5IGZvciBUd2luSGFuIGNhcmRzLiMKKworSWYgeW91J3JlIGhhdmluZyBhbiBvbGRlciBjYXJkIChibHVlIGNvbG9yIGNpcmN1aXQpIGFuZCBjYXJkPTB4NzEgbG9ja3MgeW91cgorbWFjaGluZSwgdHJ5IHVzaW5nIDB4NjgsIHRvby4gSWYgdGhhdCBkb2VzIG5vdCB3b3JrLCBhc2sgb24gdGhlIERWQiBtYWlsaW5nIGxpc3QuCisKK1RoZSBEU1QgbW9kdWxlIHRha2VzIGEgY291cGxlIG9mIHVzZWZ1bCBwYXJhbWV0ZXJzLCBpbiBjYXNlIHRoZQorZHN0IGRyaXZlcnMgZmFpbHMgdG8gZGV0ZWN0IHlvdXIgdHlwZSBvZiBjYXJkIGNvcnJlY3RseS4KKworZHN0X3R5cGUgdGFrZXMgdmFsdWVzIDAgKHNhdGVsbGl0ZSksIDEgKHRlcnJlc3RpYWwgVFYpLCAyIChjYWJsZSkuCisKK2RzdF90eXBlX2ZsYWdzIHRha2VzIGJpdCBjb21iaW5lZCB2YWx1ZXM6CisxID0gbmV3IHR1bmVyIHR5cGUgcGFja2V0cy4gWW91IGNhbiB1c2UgdGhpcyBpZiB5b3VyIGNhcmQgaXMgZGV0ZWN0ZWQKKyAgICBhbmQgeW91IGhhdmUgZGVidWcgYW5kIHlvdSBjb250aW51YWxseSBzZWUgdGhlIHR1bmVyIHBhY2tldHMgbm90CisgICAgd29ya2luZyAobWFrZSBzdXJlIG5vdCBhIGJhc2ljIHByb2JsZW0gbGlrZSBkaXNoIGFsaWdubWVudCBldGMuKQorCisyID0gVFMgMjA0LiBJZiB5b3VyIGNhcmQgdHVuZXMgT0ssIGJ1dCB0aGUgcGljdHVyZSBpcyB0ZXJyaWJsZSwgc2VlbWluZ2x5CisgICAgYnJlYWtpbmcgdXAgaW4gb25lIGhhbGYgY29udGludWFsbHksIGFuZCBjcmMgZmFpbHMgYSBsb3QsIHRoZW4KKyAgICB0aGlzIGlzIHdvcnRoIGEgdHJ5IChvciB0cnlpbmcgdG8gdHVybiBvZmYpCisKKzQgPSBoYXMgc3ltZGl2LiBTb21lIGNhcmRzLCBtb3N0bHkgd2l0aG91dCBuZXcgdHVuZXIgcGFja2V0cywgcmVxdWlyZQorICAgIGEgc3ltYm9sIGRpdmlzaW9uIGFsZ29yaXRobS4gRG9lc24ndCBhcHBseSB0byB0ZXJyZXN0aWFsIFRWLgorCitZb3UgY2FuIGFsc28gc3BlY2lmeSBhIHZhbHVlIHRvIGhhdmUgdGhlIGF1dG9kZXRlY3RlZCB2YWx1ZXMgdHVybmVkIG9mZgorKGUuZy4gMCkuIFRoZSBhdXRvZGVjdGVkIHZhbHVlcyBhcmUgZGV0ZXJtaW5lZCBieXRoZSBjYXJkcyAncmVzcG9uc2UKK3N0cmluZycgd2hpY2ggeW91IGNhbiBzZWUgaW4geW91ciBsb2dzIGUuZy4KKworZHN0X2NoZWNrX2NpOiByZWNvZ25pemUgRFNULU1PVAorCitvciAKKworZHN0X2NoZWNrX2NpOiB1bmFibGUgdG8gcmVjb2duaXplIERTVFhDSSBvciBTVFhDSQorCistLQorQXV0aG9yczogUmljaGFyZCBXYWxrZXIsIEphbWllIEhvbmFuLCBNaWNoYWVsIEh1bm9sZApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kdmIvY2FyZHMudHh0IGIvRG9jdW1lbnRhdGlvbi9kdmIvY2FyZHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZGM0ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2R2Yi9jYXJkcy50eHQKQEAgLTAsMCArMSw4NSBAQAorSGFyZHdhcmUgc3VwcG9ydGVkIGJ5IHRoZSBsaW51eHR2Lm9yZyBEVkIgZHJpdmVycworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgIEdlbmVyYWxseSwgdGhlIERWQiBoYXJkd2FyZSBtYW51ZmFjdHVyZXJzIGZyZXF1ZW50bHkgY2hhbmdlIHRoZQorICBmcm9udGVuZHMgKGkuZS4gdHVuZXIgLyBkZW1vZHVsYXRvciB1bml0cykgdXNlZCwgdXN1YWxseSB3aXRob3V0CisgIGNoYW5naW5nIHRoZSBwcm9kdWN0IG5hbWUsIHJldmlzaW9uIG51bWJlciBvciBzcGVjcy4gU29tZSBjYXJkcworICBhcmUgYWxzbyBhdmFpbGFibGUgaW4gdmVyc2lvbnMgd2l0aCBkaWZmZXJlbnQgZnJvbnRlbmRzIGZvcgorICBEVkItUy9EVkItQy9EVkItVC4gVGh1cyB0aGUgZnJvbnRlbmQgZHJpdmVycyBhcmUgbGlzdGVkIHNlcGVyYXRlbHkuCisKKyAgTm90ZSAxOiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBldmVyeSBmcm9udGVuZCBkcml2ZXIgd29ya3MKKyAgb3V0IG9mIHRoZSBib3ggd2l0aCBldmVyeSBjYXJkLCBiZWNhdXNlIG9mIGRpZmZlcmVudCB3aXJpbmcuCisKKyAgTm90ZSAyOiBUaGUgZGVtb2R1bGF0b3IgY2hpcHMgY2FuIGJlIHVzZWQgd2l0aCBhIHZhcmlldHkgb2YKKyAgdHVuZXIvUExMIGNoaXBzLCBhbmQgbm90IGFsbCBjb21iaW5hdGlvbnMgYXJlIHN1cHBvcnRlZC4gT2Z0ZW4KKyAgdGhlIGRlbW9kdWxhdG9yIGFuZCB0dW5lci9QTEwgY2hpcCBhcmUgaW5zaWRlIGEgbWV0YWwgYm94IGZvcgorICBzaGllbGRpbmcsIGFuZCB0aGUgd2hvbGUgbWV0YWwgYm94IGhhcyBpdHMgb3duIHBhcnQgbnVtYmVyLgorCisKK28gRnJvbnRlbmRzIGRyaXZlcnM6IAorICAtIGR2Yl9kdW1teV9mZTogZm9yIHRlc3RpbmcuLi4KKyAgRFZCLVM6CisgICAtIHZlczF4OTMJCTogQWxwcyBCU1JWMiAodmVzMTg5MyBkZW1vZHVsYXRvcikgYW5kIGRib3gyICh2ZXMxOTkzKQorICAgLSBjeDI0MTEwCQk6IENvbmV4YW50IEhNMTIyMS9ITTE4MTEgKGN4MjQxMTAgb3IgY3gyNDEwNiBkZW1vZCwgY3gyNDEwOCBQTEwpCisgICAtIGdydW5kaWdfMjk1MDQtNDkxCTogR3J1bmRpZyAyOTUwNC00OTEgKFBoaWxpcHMgVERBODA4MyBkZW1vZHVsYXRvciksIHRzYTU1MjIgUExMCisgICAtIG10MzEyCQk6IFphcmxpbmsgbXQzMTIgb3IgTWl0ZWwgdnAzMTAgZGVtb2R1bGF0b3IsIHNsMTkzNSBvciB0c2E1MDU5IFBMTAorICAgLSBzdHYwMjk5CQk6IEFscHMgQlNSVTYgKHRzYTUwNTkgUExMKSwgTEcgVERRQi1TMDB4ICh0c2E1MDU5IFBMTCksCisgICAJCQkgIExHIFREUUYtUzAwMUYgKHNsMTkzNSBQTEwpLCBQaGlsaXBzIFNVMTI3OCAodHVhNjEwMCBQTEwpLCAKKwkJCSAgUGhpbGlwcyBTVTEyNzhTSCAodHNhNTA1OSBQTEwpLCBTYW1zdW5nIFRCTVUyNDExMklNQgorICBEVkItQzoKKyAgIC0gdmVzMTgyMAkJOiB2YXJpb3VzICh2ZXMxODIwIGRlbW9kdWxhdG9yLCBzcDU2NTljIG9yIHNwWFhYWCBQTEwpCisgICAtIGF0NzZjNjUxCQk6IEF0bWVsIEFUNzZjNjUxKEIpIHdpdGggREFUNzAyMSBQTEwKKyAgRFZCLVQ6CisgICAtIGFscHNfdGRsYjcJCTogQWxwcyBURExCNyAoc3A4ODcwIGRlbW9kdWxhdG9yLCBzcDU2NTkgUExMKQorICAgLSBhbHBzX3RkbWI3CQk6IEFscHMgVERNQjcgKGN4MjI3MDAgZGVtb2R1bGF0b3IpCisgICAtIGdydW5kaWdfMjk1MDQtNDAxCTogR3J1bmRpZyAyOTUwNC00MDEgKExTSSBMNjQ3ODEgZGVtb2R1bGF0b3IpLCB0c2E1MDYwIFBMTAorICAgLSB0ZGExMDA0eAkJOiBQaGlsaXBzIHRkYTEwMDQ1aCAodGQxMzQ0IG9yIHRkbTEzMTZsIFBMTCkKKyAgIC0gbnh0NjAwMCAJCTogQWxwcyBURE1FNyAoTUlURUwgU1A1NjU5IFBMTCksIEFscHMgVERFRDQgKFRJIEFMUDUxMCBQTEwpLAorICAgICAgICAgICAgICAgCQkgIENvbXRlY2ggRFZCVC02azA3IChTUDU3MzAgUExMKQorICAgICAgICAgICAgICAgCQkgIChOeHRXYXZlIENvbW11bmljYXRpb25zIE5YVDYwMDAgZGVtb2R1bGF0b3IpCisgICAtIHNwODg3eAkJOiBNaWNyb3R1bmUgNzIwMkQKKyAgIC0gZGliMzAwMG1iCTogRGlCY29tIDMwMDAtTUIgZGVtb2R1bGF0b3IKKyAgRFZCLVMvQy9UOgorICAgLSBkc3QJCTogVHdpbkhhbiBEU1QgRnJvbnRlbmQKKworCitvIENhcmRzIGJhc2VkIG9uIHRoZSBQaGlsbGlwcyBzYWE3MTQ2IG11bHRpbWVkaWEgUENJIGJyaWRnZSBjaGlwOgorICAtIFRJIEFWNzExMCBiYXNlZCBjYXJkcyAoaS5lLiB3aXRoIGhhcmR3YXJlIE1QRUcgZGVjb2Rlcik6CisgICAgLSBTaWVtZW5zL1RlY2hub3RyZW5kL0hhdXBwYXVnZSBQQ0kgRFZCIGNhcmQgcmV2aXNpb24gMS4xLCAxLjMsIDEuNSwgMS42LCAyLjEKKyAgICAgIChha2EgSGF1cHBhdWdlIE5leHVzKQorICAtICJidWRnZXQiIGNhcmRzIChpLmUuIHdpdGhvdXQgaGFyZHdhcmUgTVBFRyBkZWNvZGVyKToKKyAgICAtIFRlY2hub3RyZW5kIEJ1ZGdldCAvIEhhdXBwYXVnZSBXaW5UVi1Ob3ZhIFBDSSBDYXJkcworICAgIC0gU0FURUxDTyBNdWx0aW1lZGlhIFBDSQorICAgIC0gS05DMSBEVkItUywgVHlwaG9vbiBEVkItUywgVGVycmF0ZWMgQ2luZXJneSAxMjAwIERWQi1TIChubyBDSSBzdXBwb3J0KQorICAgIC0gVHlwaG9vbiBEVkItUyBidWRnZXQKKyAgICAtIEZ1aml0c3UtU2llbWVucyBBY3RpdnkgRFZCLVMgYnVkZ2V0IGNhcmQKKworbyBDYXJkcyBiYXNlZCBvbiB0aGUgQjJDMiBJbmMuIEZsZXhDb3BJSS9JSWIvSUlJOgorICAtIFRlY2huaXNhdCBTa3lTdGFyMiBQQ0kgRFZCIGNhcmQgcmV2aXNpb24gMi4zLCAyLjZCLCAyLjZDCisKK28gQ2FyZHMgYmFzZWQgb24gdGhlIENvbmV4YW50IEJ0OHh4IFBDSSBicmlkZ2U6CisgIC0gUGlubmFjbGUgUENUViBTYXQgRFZCCisgIC0gTmVidWxhIEVsZWN0cm9uaWNzIERpZ2lUVgorICAtIFR3aW5IYW4gRFNUCisgIC0gQXZlcm1lZGlhIERWQi1UCisKK28gVGVjaG5vdHJlbmQgLyBIYXVwcGF1Z2UgRFZCIFVTQiBkZXZpY2VzOgorICAtIE5vdmEgVVNCCisgIC0gREVDIDIwMDAtVCwgMzAwMC1TLCAyNTQwLVQKKworbyBEaUJjb20gRFZCLVQgVVNCIGJhc2VkIGRldmljZXM6CisgIC0gVHdpbmhhbiBWaXNpb25QbHVzIFZpc2lvbkRUViBVU0ItVGVyIERWQi1UIERldmljZQorICAtIEhBTUEgRFZCLVQgVVNCIGRldmljZQorICAtIENUUyBQb3J0YWJsZSAoQ2hpbmVzZSBUZWxldmlzaW9uIFN5c3RlbSkKKyAgLSBLV29ybGQgVi1TdHJlYW0gWFBFUlQgRFRWIERWQi1UIFVTQgorICAtIEpldFdheSBEVFYgRFZCLVQgVVNCCisgIC0gQURTVGVjaCBJbnN0YW50IFRWIERWQi1UIFVTQgorICAtIFVsdGltYSBFbGVjdHJvbmljL0FydGVjIFQxIFVTQiBUVkJPWCAoQU4yMTM1IGFuZCBBTjIyMzUpCisgIC0gQ29tcHJvIFZpZGVvbWF0ZSBEVkItVTIwMDAgLSBEVkItVCBVU0IKKyAgLSBHcmFuZHRlYyBVU0IgRFZCLVQKKyAgLSBBdmVybWVkaWEgQXZlclRWIERWQlQgVVNCCisgIC0gRGlCY29tIFVTQiBEVkItVCByZWZlcmVuY2UgZGV2aWNlIChub24tcHVibGljKQorICAtIFlha3VtbyBEVkItVCBtb2JpbGUgVVNCMi4wCisgIC0gRGlCY29tIFVTQjIuMCBEVkItVCByZWZlcmVuY2UgZGV2aWNlIChub24tcHVibGljKQorCitvIEV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciB0aGUgYW5hbG9nIG1vZHVsZSBvZiB0aGUgU2llbWVucyBEVkItQyBQQ0kgY2FyZApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kdmIvY29udHJpYnV0b3JzLnR4dCBiL0RvY3VtZW50YXRpb24vZHZiL2NvbnRyaWJ1dG9ycy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzlkNWNlMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZHZiL2NvbnRyaWJ1dG9ycy50eHQKQEAgLTAsMCArMSw3OSBAQAorVGhhbmtzIGdvIHRvIHRoZSBmb2xsb3dpbmcgcGVvcGxlIGZvciBwYXRjaGVzIGFuZCBjb250cmlidXRpb25zOgorCitNaWNoYWVsIEh1bm9sZCA8bS5odW5vbGRAZ214LmRlPgorICBmb3IgdGhlIGluaXRpYWwgc2FhNzE0NiBkcml2ZXIgYW5kIGl0J3MgcmVjZW50IG92ZXJoYXVsCisKK0NocmlzdGlhbiBUaGVpc3MKKyAgZm9yIGhpcyB3b3JrIG9uIHRoZSBpbml0aWFsIExpbnV4IERWQiBkcml2ZXIKKworTWFyY3VzIE1ldHpsZXIgPG1vY21AbWV0emxlcmJyb3MuZGU+CitSYWxwaCBNZXR6bGVyIDxyamttQG1ldHpsZXJicm9zLmRlPgorICBmb3IgdGhlaXIgY29udGludWluZyB3b3JrIG9uIHRoZSBEVkIgZHJpdmVyCisKK01pY2hhZWwgSG9senQgPGtqdUBkZWJpYW4ub3JnPgorICBmb3IgaGlzIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIGR2Yi1uZXQgZHJpdmVyCisKK0RpZWdvIFBpY2NpYW5pIDxkLnBpY2NpYW5pQG5vdmFjb21wLml0PgorICBmb3IgQ3liZXJMb2dpbiBmb3IgTGludXggd2hpY2ggYWxsb3dzIGxvZ2dpbmcgb250byBFT04KKyAgKGluIGNhc2UgeW91IGFyZSB3b25kZXJpbmcgd2hlcmUgQ3liZXJMb2dpbiBpcywgRU9OIGNoYW5nZWQgaXRzIGxvZ2luIAorICBwcm9jZWR1cmUgYW5kIEN5YmVyTG9naW4gaXMgbm8gbG9uZ2VyIHVzZWQuKQorCitNYXJ0aW4gU2NoYWxsZXIgPG1hcnRpbkBzbXVyZi5mcmFua2VuLmRlPgorICBmb3IgcGF0Y2hpbmcgdGhlIGNhYmxlIGNhcmQgZGVjb2RlciBkcml2ZXIKKworS2xhdXMgU2NobWlkaW5nZXIgPEtsYXVzLlNjaG1pZGluZ2VyQGNhZHNvZnQuZGU+CisgIGZvciB2YXJpb3VzIGZpeGVzIHJlZ2FyZGluZyB0dW5pbmcsIE9TRCBhbmQgQ0kgc3R1ZmYgYW5kIGhpcyB3b3JrIG9uIFZEUgorCitTdGV2ZSBCcm93biA8c2Jyb3duQGNvcnRsYW5kLmNvbT4KKyAgZm9yIGhpcyBBRkMga2VybmVsIHRocmVhZAorCitDaHJpc3RvcGggTWFydGluIDxtYXJ0aW5AdW5pLW1haW56LmRlPgorICBmb3IgaGlzIExJUkMgaW5mcmFyZWQgaGFuZGxlcgorCitBbmRyZWFzIE9iZXJyaXR0ZXIgPG9iaUBsaW51eHR2Lm9yZz4KK0Rlbm5pcyBOb2VybWFubiA8ZGVubmlzLm5vZXJtYW5uQG5vZXJuZXQuZGU+CitGZWxpeCBEb21rZSA8dG1iaW5jQGVsaXRlZHZiLm5ldD4KK0Zsb3JpYW4gU2NoaXJtZXIgPGpvbHRAdHV4Ym94Lm9yZz4KK1Jvbm55IFN0cnV0eiA8M2Rlc0BlbGl0ZWR2Yi5kZT4KK1dvbGZyYW0gSm9vc3QgPGRib3gyQGZyb2thc2Nod2VpLmRlPgorLi4uYW5kIGFsbCB0aGUgb3RoZXIgZGJveDIgcGVvcGxlCisgIGZvciBtYW55IGJ1Z2ZpeGVzIGluIHRoZSBnZW5lcmljIERWQiBDb3JlLCBmcm9udGVuZCBkcml2ZXJzIGFuZAorICB0aGVpciB3b3JrIG9uIHRoZSBkYm94MiBwb3J0IG9mIHRoZSBEVkIgZHJpdmVyCisKK09saXZlciBFbmRyaXNzIDxvLmVuZHJpc3NAZ214LmRlPgorICBmb3IgbWFueSBidWdmaXhlcworCitBbmRyZXcgZGUgUXVpbmNleSA8YWRxX2R2YkBsaWRza2lhbGYubmV0PgorICBmb3IgdGhlIHRkYTEwMDR4IGZyb250ZW5kIGRyaXZlciwgYW5kIHZhcmlvdXMgYnVnZml4ZXMKKworUGV0ZXIgU2NoaWxkbWFubiA8cGV0ZXIuc2NoaWxkbWFubkB3ZWIuZGU+CisgIGZvciB0aGUgZHJpdmVyIGZvciB0aGUgVGVjaG5pc2F0IFNreVN0YXIyIFBDSSBEVkIgY2FyZAorCitWYWRpbSBDYXRhbmEgPHNreXN0YXJAbW9sZG92YS5jYz4KK1JvYmVydG8gUmFndXNhIDxyLnJhZ3VzYUBsaWJlcm8uaXQ+CitBdWd1c3RvIENhcmRvc28gPGF1Z3VzdG9AY2FyaGlsLm5ldD4KKyAgZm9yIGFsbCB0aGUgd29yayBmb3IgdGhlIEZsZXhDb3BJSSBjaGlwc2V0IGJ5IEIyQzIsSW5jLgorCitEYXZvciBFbWFyZCA8ZW1hcmRAc29mdGhvbWUubmV0PgorICBmb3IgaGlzIHdvcmsgb24gdGhlIGJ1ZGdldCBkcml2ZXJzLCB0aGUgZGVtdXggY29kZSwKKyAgdGhlIG1vZHVsZSB1bmxvYWRpbmcgcHJvYmxlbXMsIC4uLgorICAKK0hhbnMtRnJpZWRlciBWb2d0IDxoZnZvZ3RAYXJjb3IuZGU+CisgIGZvciBoaXMgd29yayBvbiBjYWxjdWxhdGluZyBhbmQgY2hlY2tpbmcgdGhlIGNyYydzIGZvciB0aGUKKyAgVGVjaG5vVHJlbmQvSGF1cHBhdWdlIERFQyBkcml2ZXIgZmlybXdhcmUKKworTWljaGFlbCBEcmVoZXIgPG1pY2hhZWxANWRvdDEuZGU+CitBbmRyZWFzICdyYW5keScgV2VpbmJlcmdlcgorICBmb3IgdGhlIHN1cHBvcnQgb2YgdGhlIEZ1aml0c3UtU2llbWVucyBBY3RpdnkgYnVkZ2V0IERWQi1TCisKK0tlbm5ldGggQWFmbPh5IDxrZS1hYUBmcmlzdXJmLm5vPgorICBmb3IgYWRkaW5nIHN1cHBvcnQgZm9yIFR5cGhvb24gRFZCLVMgYnVkZ2V0IGNhcmQKKworRXJuc3QgUGVpbmxpY2ggPGUucGVpbmxpY2hAaW5vZGUuYXQ+CisgIGZvciB0dW5pbmcvRGlTRXFDIHN1cHBvcnQgZm9yIHRoZSBERUMgMzAwMC1zCisKK1BldGVyIEJldXRuZXIgPHAuYmV1dG5lckBnbXgubmV0PgorICBmb3IgdGhlIElSIGNvZGUgZm9yIHRoZSB0dHVzYi1kZWMgZHJpdmVyCisKKyhJZiB5b3UgdGhpbmsgeW91IHNob3VsZCBiZSBpbiB0aGlzIGxpc3QsIGJ1dCB5b3UgYXJlIG5vdCwgZHJvcCBhCisgbGluZSB0byB0aGUgRFZCIG1haWxpbmcgbGlzdCkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZHZiL2ZhcS50eHQgYi9Eb2N1bWVudGF0aW9uL2R2Yi9mYXEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiZjUxZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2R2Yi9mYXEudHh0CkBAIC0wLDAgKzEsMTYwIEBACitTb21lIHZlcnkgZnJlcXVlbnRseSBhc2tlZCBxdWVzdGlvbnMgYWJvdXQgbGludXh0di1kdmIKKworMS4gVGhlIHNpZ25hbCBzZWVtcyB0byBkaWUgYSBmZXcgc2Vjb25kcyBhZnRlciB0dW5pbmcuCisKKwlJdCdzIG5vdCBhIGJ1ZywgaXQncyBhIGZlYXR1cmUuIEJlY2F1c2UgdGhlIGZyb250ZW5kcyBoYXZlCisJc2lnbmlmaWNhbnQgcG93ZXIgcmVxdWlyZW1lbnRzIChhbmQgaGVuY2UgZ2V0IHZlcnkgaG90KSwgdGhleQorCWFyZSBwb3dlcmVkIGRvd24gaWYgdGhleSBhcmUgdW51c2VkIChpLmUuIGlmIHRoZSBmcm9udGVuZCBkZXZpY2UKKwlpcyBjbG9zZWQpLiBUaGUgZHZiLWNvcmUubyBtb2R1bGUgcGFyYW10ZXIgImR2Yl9zaHV0ZG93bl90aW1lb3V0IgorCWFsbG93IHlvdSB0byBjaGFuZ2UgdGhlIHRpbWVvdXQgKGRlZmF1bHQgNSBzZWNvbmRzKS4gU2V0dGluZyB0aGUKKwl0aW1lb3V0IHRvIDAgZGlzYWJsZXMgdGhlIHRpbWVvdXQgZmVhdHVyZS4KKworMi4gSG93IGNhbiBJIHdhdGNoIFRWPworCisJVGhlIGRyaXZlciBkaXN0cmlidXRpb24gaW5jbHVkZXMgc29tZSBzaW1wbGUgdXRpbGl0aWVzIHdoaWNoCisJYXJlIG1haW5seSBpbnRlbmRlZCBmb3IgdGVzdGluZyBhbmQgdG8gZGVtb25zdHJhdGUgaG93IHRoZQorCURWQiBBUEkgd29ya3MuCisKKwlEZXBlbmRpbmcgb24gd2hldGhlciB5b3UgaGF2ZSBhIERWQi1TLCBEVkItQyBvciBEVkItVCBjYXJkLCB1c2UKKwlhcHBzL3N6YXAvc3phcCwgY3phcCBvciB0emFwLiBZb3UgbXVzdCBzdXBwbHkgYSBjaGFubmVsIGxpc3QKKwlpbiB+Ly5bc2N0XXphcC9jaGFubmVscy5jb25mLiBJZiB5b3UgYXJlIGx1Y2t5IHlvdSBjYW4ganVzdCBjb3B5CisJb25lIG9mIHRoZSBzdXBwbGllZCBjaGFubmVsIGxpc3RzLCBvciB5b3UgY2FuIGNyZWF0ZSBhIG5ldyBvbmUKKwlieSBydW5uaW5nIGFwcHMvc2Nhbi9zY2FuLiBJZiB5b3UgcnVuIHNjYW4gb24gYW4gdW5rbm93biBuZXR3b3JrCisJeW91IG1pZ2h0IGhhdmUgdG8gc3VwcGx5IHNvbWUgc3RhcnQgZGF0YSBpbiBhcHBzL3NjYW4vaW5pdGlhbC5oLgorCisJSWYgeW91IGhhdmUgYSBjYXJkIHdpdGggYSBidWlsdC1pbiBoYXJkd2FyZSBNUEVHLWRlY29kZXIgdGhlCisJZHJpdmVycyBjcmVhdGUgYSB2aWRlbzRsaW51eCBkZXZpY2UgKC9kZXYvdjRsL3ZpZGVvMCkgd2hpY2gKKwl5b3UgY2FuIHVzZSB0byB3YXRjaCBUViB3aXRoIGFueSB2NGwgYXBwbGljYXRpb24uIHhhd3R2IGlzIGtub3duCisJdG8gd29yay4gTm90ZSB0aGF0IHlvdSBjYW5ub3QgY2hhbmdlIGNoYW5uZWxzIHdpdGggeGF3dHYsIHlvdQorCWhhdmUgdG8gemFwIHVzaW5nIFtzY3RdemFwLiBJZiB5b3Ugd2FudCBhIG5pY2UgYXBwbGljYXRpb24gZm9yCisJVFYgd2F0Y2hpbmcgYW5kIHJlY29yZC9wbGF5YmFjaywgaGF2ZSBhIGxvb2sgYXQgVkRSLgorCisJSWYgeW91ciBjYXJkIGRvZXMgbm90IGhhdmUgYSBoYXJkd2FyZSBNUEVHIGRlY29kZXIgeW91IG5lZWQKKwlhIHNvZnR3YXJlIE1QRUcgZGVjb2Rlci4gTXBsYXllciBvciB4aW5lIGFyZSBrbm93biB0byB3b3JrLgorCU5ld3NmbGFzaDogTXl0aFRWIGFsc28gaGFzIERWQiBzdXBwb3J0IG5vdy4KKwlOb3RlOiBPbmx5IHZlcnkgcmVjZW50IHZlcnNpb25zIG9mIE1wbGF5ZXIgYW5kIHhpbmUgY2FuIGRlY29kZS4KKwlNUEVHMiB0cmFuc3BvcnQgc3RyZWFtcyAoVFMpIGRpcmVjdGx5LiBUaGVuLCBydW4KKwknW3NjdF16YXAgY2hhbm5lbG5hbWUgLXInIGluIG9uZSB4dGVybSwgYW5kIGtlZXAgaXQgcnVubmluZywKKwlhbmQgc3RhcnQgJ21wbGF5ZXIgLSA8IC9kZXYvZHZiL2FkYXB0ZXIwL2R2cjAnIG9yCisJJ3hpbmUgc3RkaW46Ly9tcGVnMiA8IC9kZXYvZHZiL2FkYXB0ZXIwL2R2cjAnIGluIGEgc2Vjb25kIHh0ZXJtLgorCVRoYXQncyBhbGwgZmFyIGZyb20gcGVyZmVjdCwgYnV0IGl0IHNlZW1zIG5vIG9uZSBoYXMgd3JpdHRlbgorCWEgbmljZSBEVkIgYXBwbGljYXRpb24gd2hpY2ggaW5jbHVkZXMgYSBidWlsdGluIHNvZnR3YXJlIE1QRUcKKwlkZWNvZGVyIHlldC4KKworCU5ld3NmbGFzaDogTmV3ZXN0IHhpbmUgZGlyZWN0bHkgc3VwcG9ydHMgRFZCLiBKdXN0IGNvcHkgeW91cgorCWNoYW5uZWxzLmNvbmYgdG8gfi8ueGluZSBhbmQgc3RhcnQgJ3hpbmUgZHZiOi8vJywgb3Igc2VsZWN0CisJdGhlIERWQiBidXR0b24gaW4gdGhlIHhpbmUgR1VJLiBDaGFubmVsIHN3aXRjaGluZyB3b3JrcyB1c2luZyB0aGUKKwludW1wYWQgcGd1cC9wZ2Rvd24gKE5QOSAvIE5QMykga2V5cyB0byBzY3JvbGwgdGhyb3VnaCB0aGUgY2hhbm5lbCBvc2QKKwltZW51IGFuZCBwcmVzc2luZyBudW1wYWQtZW50ZXIgdG8gc3dpdGNoIHRvIHRoZSBzZWxlY3RlZCBjaGFubmVsLgorCisJTm90ZTogT2xkZXIgdmVyc2lvbnMgb2YgeGluZSBhbmQgbXBsYXllciB1bmRlcnN0YW5kIE1QRUcgcHJvZ3JhbQorCXN0cmVhbXMgKFBTKSBvbmx5LCBhbmQgY2FuIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKKwl0czJwcyB0b29sIGZyb20gdGhlIE1ldHpsZXIgQnJvdGhlcidzIGR2Yi1tcGVndG9vbHMgcGFja2FnZS4KKworMy4gV2hpY2ggb3RoZXIgRFZCIGFwcGxpY2F0aW9ucyBleGlzdD8KKworCWh0dHA6Ly93d3cuY2Fkc29mdC5kZS9wZW9wbGUva2xzL3Zkci8KKwkJS2xhdXMgU2NobWlkaW5nZXIncyBWaWRlbyBEaXNrIFJlY29yZGVyCisKKwlodHRwOi8vd3d3Lm1ldHpsZXJicm9zLm9yZy9kdmIvCisJCU1ldHpsZXIgQnJvcy4gRFZCIGRldmVsb3BtZW50OyBhbHRlcm5hdGUgZHJpdmVycyBhbmQKKwkJRFZCIHV0aWxpdGllcywgaW5jbHVkZSBkdmItbXBlZ3Rvb2xzIGFuZCB0dXh6YXAuCisKKwlodHRwOi8vd3d3LmxpbnV4c3RiLm9yZy8KKwlodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2R2YnRvb2xzLworCQlEYXZlIENoYXBtYW4ncyBkdmJ0b29scyBwYWNrYWdlLCBpbmNsdWRpbmcKKwkJZHZic3RyZWFtIGFuZCBkdmJ0dW5lCisKKwlodHRwOi8vd3d3LmxpbnV4ZHZiLnR2LworCQlIZW5uaW5nIEhvbHRzY2huZWlkZXIncyBzaXRlIHdpdGggbWFueSBpbnRlcmVzdGluZworCQlsaW5rcyBhbmQgZG9jcworCisJaHR0cDovL3d3dy5kYm94Mi5pbmZvLworCQlMaW51eERWQiBvbiB0aGUgZEJveDIKKworCWh0dHA6Ly93d3cudHV4Ym94Lm9yZy8KKwlodHRwOi8vY3ZzLnR1eGJveC5vcmcvCisJCXRoZSBUdXhCb3ggQ1ZTIG1hbnkgaW50ZXJlc3RpbmcgRFZCIGFwcGxpY2F0aW9ucyBhbmQgdGhlIGRCb3gyCisJCURWQiBzb3VyY2UKKworCWh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZHZic2FrLworCQlEVkIgU3dpc3MgQXJteSBLbmlmZSBsaWJyYXJ5IGFuZCB1dGlsaXRpZXMKKworCWh0dHA6Ly93d3cubmVuaWUub3JnL21pc2MvbXBzeXMvCisJCU1QU1lTOiBhIE1QRUcyIHN5c3RlbSBsaWJyYXJ5IGFuZCB0b29scworCisJaHR0cDovL21wbGF5ZXJocS5odS8KKwkJbXBsYXllcgorCisJaHR0cDovL3hpbmUuc291cmNlZm9yZ2UubmV0LworCWh0dHA6Ly94aW5laHEuZGUvCisJCXhpbmUKKworCWh0dHA6Ly93d3cubXl0aHR2Lm9yZy8KKwkJTXl0aFRWIC0gYW5hbG9nIFRWIFBWUiwgYnV0IG5vdyB3aXRoIERWQiBzdXBwb3J0LCB0b28KKwkJKHdpdGggc29mdHdhcmUgTVBFRyBkZWNvZGUpCisKKwlodHRwOi8vZHZic25vb3Auc291cmNlZm9yZ2UubmV0LworCQlEVkIgc25pZmZlciBwcm9ncmFtIHRvIG1vbml0b3IsIGFuYWx5emUsIGRlYnVnLCBkdW1wCisJCW9yIHZpZXcgZHZiL21wZWcvZHNtLWNjL21ocCBzdHJlYW0gaW5mb3JtYXRpb24gKFRTLAorCQlQRVMsIFNFQ1RJT04pCisKKzQuIENhbid0IGdldCBhIHNpZ25hbCB0dW5lZCBjb3JyZWN0bHkKKworCUlmIHlvdSBhcmUgdXNpbmcgYSBUZWNobm90cmVuZC9IYXVwcGF1Z2UgRFZCLUMgY2FyZCAqd2l0aG91dCogYW5hbG9nCisJbW9kdWxlLCB5b3UgbWlnaHQgaGF2ZSB0byB1c2UgbW9kdWxlIHBhcmFtZXRlciBhZGFjPS0xIChkdmItdHRwY2kubykuCisKKzUuIFRoZSBkdmJfbmV0IGRldmljZSBkb2Vzbid0IGdpdmUgbWUgYW55IHBhY2tldHMgYXQgYWxsCisKKwlSdW4gdGNwZHVtcCBvbiB0aGUgZHZiMF8wIGludGVyZmFjZS4gVGhpcyBzZXRzIHRoZSBpbnRlcmZhY2UKKwlpbnRvIHByb21pc2NvdXMgbW9kZSBzbyBpdCBhY2NlcHRzIGFueSBwYWNrZXRzIGZyb20gdGhlIFBJRAorCXlvdSBoYXZlIGNvbmZpZ3VyZWQgd2l0aCB0aGUgZHZibmV0IHV0aWxpdHkuIENoZWNrIGlmIHRoZXJlCisJYXJlIGFueSBwYWNrZXRzIHdpdGggdGhlIElQIGFkZHIgYW5kIE1BQyBhZGRyIHlvdSBoYXZlCisJY29uZmlndXJlZCB3aXRoIGlmY29uZmlnLgorCisJSWYgdGNwZHVtcCBkb2Vzbid0IGdpdmUgeW91IGFueSBvdXRwdXQsIGNoZWNrIHRoZSBzdGF0aXN0aWNzCisJd2hpY2ggaWZjb25maWcgb3V0cHV0cy4gKE5vdGU6IElmIHRoZSBNQUMgYWRkcmVzcyBpcyB3cm9uZywKKwlkdmJfbmV0IHdvbid0IGdldCBhbnkgaW5wdXQ7IHRodXMgeW91IGhhdmUgdG8gcnVuIHRjcGR1bXAKKwliZWZvcmUgY2hlY2tpbmcgdGhlIHN0YXRpc3RpY3MuKSBJZiB0aGVyZSBhcmUgbm8gcGFja2V0cyBhdAorCWFsbCB0aGVuIG1heWJlIHRoZSBQSUQgaXMgd3JvbmcuIElmIHRoZXJlIGFyZSBlcnJvciBwYWNrZXRzLAorCXRoZW4gZWl0aGVyIHRoZSBQSUQgaXMgd3Jvbmcgb3IgdGhlIHN0cmVhbSBkb2VzIG5vdCBjb25mb3JtIHRvCisJdGhlIE1QRSBzdGFuZGFyZCAoRU4gMzAxIDE5MiwgaHR0cDovL3d3dy5ldHNpLm9yZy8pLiBZb3UgY2FuCisJdXNlIGUuZy4gZHZic25vb3AgZm9yIGRlYnVnZ2luZy4KKworNi4gVGhlIGR2Yl9uZXQgZGV2aWNlIGRvZXNuJ3QgZ2l2ZSBtZSBhbnkgbXVsdGljYXN0IHBhY2tldHMKKworCUNoZWNrIHlvdXIgcm91dGVzIGlmIHRoZXkgaW5jbHVkZSB0aGUgbXVsdGljYXN0IGFkZHJlc3MgcmFuZ2UuCisJQWRkaXRpb25hbGx5IG1ha2Ugc3VyZSB0aGF0ICJzb3VyY2UgdmFsaWRhdGlvbiBieSByZXZlcnNlZCBwYXRoCisJbG9va3VwIiBpcyBkaXNhYmxlZDoKKwkgICQgImVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9jb25mL2R2YjAvcnBfZmlsdGVyIgorCis3LiBXaGF0IHRoZSBoZWxsIGFyZSBhbGwgdGhvc2UgbW9kdWxlcyB0aGF0IG5lZWQgdG8gYmUgbG9hZGVkPworCisJRm9yIGEgZHZiLXR0cGNpIGF2NzExMCBiYXNlZCBmdWxsLWZlYXR1cmVkIGNhcmQgdGhlIGZvbGxvd2luZworCW1vZHVsZXMgYXJlIGxvYWRlZDoKKworCS0gdmlkZW9kZXY6IFZpZGVvNExpbnV4IGNvcmUgbW9kdWxlLiBUaGlzIGlzIHRoZSBiYXNlIG1vZHVsZSB0aGF0CisJICBnaXZlcyB5b3UgYWNjZXNzIHRvIHRoZSAiYW5hbG9nIiB0diBwaWN0dXJlIG9mIHRoZSBhdjcxMTAgbXBlZzIKKwkgIGRlY29kZXIuCisKKwktIHY0bDItY29tbW9uOiBjb21tb24gZnVuY3Rpb25zIGZvciBWaWRlbzRMaW51eC0yIGRyaXZlcnMKKworCS0gdjRsMS1jb21wYXQ6IGJhY2t3YXJkIGNvbXBhdGlibGl0eSBsYXllciBmb3IgVmlkZW80TGludXgtMSBsZWdhY3kKKwkgIGFwcGxpY2F0aW9ucworCisJLSBkdmItY29yZTogRFZCIGNvcmUgbW9kdWxlLiBUaGlzIHByb3ZpZGVzIHlvdSB3aXRoIHRoZQorCSAgL2Rldi9kdmIvYWRhcHRlciBlbnRyaWVzCisKKwktIHNhYTcxNDY6IFNBQTcxNDYgY29yZSBkcml2ZXIuIFRoaXMgaXMgbmVlZCB0byBhY2Nlc3MgYW55IFNBQTcxNDYKKwkgIGJhc2VkIGNhcmQgaW4geW91ciBzeXN0ZW0uCisKKwktIHNhYTcxNDZfdnY6IFNBQTcxNDYgdmlkZW8gYW5kIHZiaSBmdW5jdGlvbnMuIFRoZXNlIGFyZSBvbmx5IG5lZWRlZAorCSAgZm9yIGZ1bGwtZmVhdHVyZWQgY2FyZHMuCisKKwktIHZpZGVvLWJ1ZjogY2FwdHVyZSBoZWxwZXIgbW9kdWxlIGZvciB0aGUgc2FhNzE0Nl92diBkcml2ZXIuIFRoaXMKKwkgIG9uZSBpcyByZXNwb25zaWJsZSB0byBoYW5kbGUgY2FwdHVyZSBidWZmZXJzLgorCisJLSBkdmItdHRwY2k6IFRoZSBtYWluIGRyaXZlciBmb3IgQVY3MTEwIGJhc2VkLCBmdWxsLWZlYXR1ZWQKKwkgIERWQi1TL0MvVCBjYXJkcworCitlb2YKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZHZiL2dldF9kdmJfZmlybXdhcmUgYi9Eb2N1bWVudGF0aW9uL2R2Yi9nZXRfZHZiX2Zpcm13YXJlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmZmRjYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2R2Yi9nZXRfZHZiX2Zpcm13YXJlCkBAIC0wLDAgKzEsMzk3IEBACisjIS91c3IvYmluL3BlcmwKKyMgICAgIERWQiBmaXJtd2FyZSBleHRyYWN0b3IKKyMKKyMgICAgIChjKSAyMDA0IEFuZHJldyBkZSBRdWluY2V5CisjCisjICAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyAgICAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyAgICAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAgICAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyAgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjICAgICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjICAgICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMKKyMgICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjICAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyAgICAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyAgICAgICBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKwordXNlIEZpbGU6OlRlbXAgcXcvIHRlbXBkaXIgLzsKK3VzZSBJTzo6SGFuZGxlOworCitAY29tcG9uZW50cyA9ICggInNwODg3MCIsICJzcDg4N3giLCAidGRhMTAwNDUiLCAidGRhMTAwNDYiLCAiYXY3MTEwIiwgImRlYzIwMDB0IiwKKwkJImRlYzI1NDB0IiwgImRlYzMwMDBzIiwgInZwNzA0MSIsICJkaWJ1c2IiLCAibnh0MjAwMiIsCisJCSJvcjUxMjExIiwgIm9yNTExMzJfcWFtIiwgIm9yNTExMzJfdnNiIik7CisKKyMgQ2hlY2sgYXJncworc3ludGF4KCkgaWYgKHNjYWxhcihAQVJHVikgIT0gMSk7CiskY2lkID0gJEFSR1ZbMF07CisKKyMgRG8gaXQhCitmb3IgKCRpPTA7ICRpIDwgc2NhbGFyKEBjb21wb25lbnRzKTsgJGkrKykgeworICAgIGlmICgkY2lkIGVxICRjb21wb25lbnRzWyRpXSkgeworCSRvdXRmaWxlID0gZXZhbCgkY2lkKTsKKwlkaWUgJEAgaWYgJEA7CisJcHJpbnQgU1RERVJSICJGaXJtd2FyZSAkb3V0ZmlsZSBleHRyYWN0ZWQgc3VjY2Vzc2Z1bGx5LiBOb3cgY29weSBpdCB0byBlaXRoZXIgL2xpYi9maXJtd2FyZSBvciAvdXNyL2xpYi9ob3RwbHVnL2Zpcm13YXJlLyAoZGVwZW5kaW5nIG9uIHlvdXIgaG90cGx1ZyB2ZXJzaW9uKS5cbiI7CisJZXhpdCgwKTsKKyAgICB9Cit9CisKKyMgSWYgd2UgZ2V0IGhlcmUsIGl0IHdhc24ndCBmb3VuZAorcHJpbnQgU1RERVJSICJVbmtub3duIGNvbXBvbmVudCBcIiRjaWRcIlxuIjsKK3N5bnRheCgpOworCisKKworCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBGaXJtd2FyZS1zcGVjaWZpYyBleHRyYWN0aW9uIHN1YnJvdXRpbmVzCisKK3N1YiBzcDg4NzAgeworICAgIG15ICRzb3VyY2VmaWxlID0gInR0X1ByZW1pdW1fMjE3Zy56aXAiOworICAgIG15ICR1cmwgPSAiaHR0cDovL3d3dy50ZWNobm90cmVuZC5kZS9uZXcvMjE3Zy8kc291cmNlZmlsZSI7CisgICAgbXkgJGhhc2ggPSAiNTM5NzBlYzE3YTUzODk0NWE2ZDhjYjYwOGE3YjM4OTkiOworICAgIG15ICRvdXRmaWxlID0gImR2Yi1mZS1zcDg4NzAuZnciOworICAgIG15ICR0bXBkaXIgPSB0ZW1wZGlyKERJUiA9PiAiL3RtcCIsIENMRUFOVVAgPT4gMSk7CisKKyAgICBjaGVja3N0YW5kYXJkKCk7CisKKyAgICB3Z2V0ZmlsZSgkc291cmNlZmlsZSwgJHVybCk7CisgICAgdW56aXAoJHNvdXJjZWZpbGUsICR0bXBkaXIpOworICAgIHZlcmlmeSgiJHRtcGRpci9zb2Z0d2FyZS9PRU0vSEUvQXBwL2Jvb3QvU0NfTUFJTi5NQyIsICRoYXNoKTsKKyAgICBjb3B5KCIkdG1wZGlyL3NvZnR3YXJlL09FTS9IRS9BcHAvYm9vdC9TQ19NQUlOLk1DIiwgJG91dGZpbGUpOworCisgICAgJG91dGZpbGU7Cit9CisKK3N1YiBzcDg4N3ggeworICAgIG15ICRzb3VyY2VmaWxlID0gIkR2YnQxLjMuNTcuNi56aXAiOworICAgIG15ICR1cmwgPSAiaHR0cDovL3d3dy5hdmVybWVkaWEuY29tL3NvZnR3YXJlLyRzb3VyY2VmaWxlIjsKKyAgICBteSAkY2FiZmlsZSA9ICJEVkJUIE5ldCAgVmVyMS4zLjU3LjYvZGlzazEvZGF0YTEuY2FiIjsKKyAgICBteSAkaGFzaCA9ICIyMzc5MzhkNTNhN2Y4MzRjMDVjNDJiODk0Y2E2OGFjMyI7CisgICAgbXkgJG91dGZpbGUgPSAiZHZiLWZlLXNwODg3eC5mdyI7CisgICAgbXkgJHRtcGRpciA9IHRlbXBkaXIoRElSID0+ICIvdG1wIiwgQ0xFQU5VUCA9PiAxKTsKKworICAgIGNoZWNrc3RhbmRhcmQoKTsKKyAgICBjaGVja3Vuc2hpZWxkKCk7CisKKyAgICB3Z2V0ZmlsZSgkc291cmNlZmlsZSwgJHVybCk7CisgICAgdW56aXAoJHNvdXJjZWZpbGUsICR0bXBkaXIpOworICAgIHVuc2hpZWxkKCIkdG1wZGlyLyRjYWJmaWxlIiwgJHRtcGRpcik7CisgICAgdmVyaWZ5KCIkdG1wZGlyL1pFbmdsaXNoL3NjX21haW4ubWMiLCAkaGFzaCk7CisgICAgY29weSgiJHRtcGRpci9aRW5nbGlzaC9zY19tYWluLm1jIiwgJG91dGZpbGUpOworCisgICAgJG91dGZpbGU7Cit9CisKK3N1YiB0ZGExMDA0NSB7CisgICAgbXkgJHNvdXJjZWZpbGUgPSAidHRfYnVkZ2V0XzIxN2cuemlwIjsKKyAgICBteSAkdXJsID0gImh0dHA6Ly93d3cudGVjaG5vdHJlbmQuZGUvbmV3LzIxN2cvJHNvdXJjZWZpbGUiOworICAgIG15ICRoYXNoID0gIjIxMDVmZDViZjM3ODQyZmJjZGZhNGJmZDU4ZjM1OTRhIjsKKyAgICBteSAkb3V0ZmlsZSA9ICJkdmItZmUtdGRhMTAwNDUuZnciOworICAgIG15ICR0bXBkaXIgPSB0ZW1wZGlyKERJUiA9PiAiL3RtcCIsIENMRUFOVVAgPT4gMSk7CisKKyAgICBjaGVja3N0YW5kYXJkKCk7CisKKyAgICB3Z2V0ZmlsZSgkc291cmNlZmlsZSwgJHVybCk7CisgICAgdW56aXAoJHNvdXJjZWZpbGUsICR0bXBkaXIpOworICAgIGV4dHJhY3QoIiR0bXBkaXIvc29mdHdhcmUvT0VNL1BDSS9BcHAvdHRsY2RhY2MuZGxsIiwgMHgzN2VmOSwgMzA1NTUsICIkdG1wZGlyL2Z3dG1wIik7CisgICAgdmVyaWZ5KCIkdG1wZGlyL2Z3dG1wIiwgJGhhc2gpOworICAgIGNvcHkoIiR0bXBkaXIvZnd0bXAiLCAkb3V0ZmlsZSk7CisKKyAgICAkb3V0ZmlsZTsKK30KKworc3ViIHRkYTEwMDQ2IHsKKyAgICBteSAkc291cmNlZmlsZSA9ICJ0dF9idWRnZXRfMjE3Zy56aXAiOworICAgIG15ICR1cmwgPSAiaHR0cDovL3d3dy50ZWNobm90cmVuZC5kZS9uZXcvMjE3Zy8kc291cmNlZmlsZSI7CisgICAgbXkgJGhhc2ggPSAiYTI1YjU3OWUzNzEwOWFmNjBmNGEzNmMzNzg5Mzk1N2MiOworICAgIG15ICRvdXRmaWxlID0gImR2Yi1mZS10ZGExMDA0Ni5mdyI7CisgICAgbXkgJHRtcGRpciA9IHRlbXBkaXIoRElSID0+ICIvdG1wIiwgQ0xFQU5VUCA9PiAxKTsKKworICAgIGNoZWNrc3RhbmRhcmQoKTsKKworICAgIHdnZXRmaWxlKCRzb3VyY2VmaWxlLCAkdXJsKTsKKyAgICB1bnppcCgkc291cmNlZmlsZSwgJHRtcGRpcik7CisgICAgZXh0cmFjdCgiJHRtcGRpci9zb2Z0d2FyZS9PRU0vUENJL0FwcC90dGxjZGFjYy5kbGwiLCAweDNmNzMxLCAyNDQ3OSwgIiR0bXBkaXIvZnd0bXAiKTsKKyAgICB2ZXJpZnkoIiR0bXBkaXIvZnd0bXAiLCAkaGFzaCk7CisgICAgY29weSgiJHRtcGRpci9md3RtcCIsICRvdXRmaWxlKTsKKworICAgICRvdXRmaWxlOworfQorCitzdWIgYXY3MTEwIHsKKyAgICBteSAkc291cmNlZmlsZSA9ICJkdmItdHRwY2ktMDEuZnctMjYxZCI7CisgICAgbXkgJHVybCA9ICJodHRwOi8vd3d3LmxpbnV4dHYub3JnL2Rvd25sb2Fkcy9maXJtd2FyZS8kc291cmNlZmlsZSI7CisgICAgbXkgJGhhc2ggPSAiNjAzNDMxYjYyNTk3MTVhOGU4OGYzNzZhNTNiNjRlMmYiOworICAgIG15ICRvdXRmaWxlID0gImR2Yi10dHBjaS0wMS5mdyI7CisKKyAgICBjaGVja3N0YW5kYXJkKCk7CisKKyAgICB3Z2V0ZmlsZSgkc291cmNlZmlsZSwgJHVybCk7CisgICAgdmVyaWZ5KCRzb3VyY2VmaWxlLCAkaGFzaCk7CisgICAgY29weSgkc291cmNlZmlsZSwgJG91dGZpbGUpOworCisgICAgJG91dGZpbGU7Cit9CisKK3N1YiBkZWMyMDAwdCB7CisgICAgbXkgJHNvdXJjZWZpbGUgPSAiZGVjMjE3Zy5leGUiOworICAgIG15ICR1cmwgPSAiaHR0cDovL2hhdXBwYXVnZS5saWdodHBhdGgubmV0L2RlLyRzb3VyY2VmaWxlIjsKKyAgICBteSAkaGFzaCA9ICJiZDg2ZjQ1OGNlZTRhOGYwYThjZTJkMjBjNjYyMTVhOSI7CisgICAgbXkgJG91dGZpbGUgPSAiZHZiLXR0dXNiLWRlYy0yMDAwdC5mdyI7CisgICAgbXkgJHRtcGRpciA9IHRlbXBkaXIoRElSID0+ICIvdG1wIiwgQ0xFQU5VUCA9PiAxKTsKKworICAgIGNoZWNrc3RhbmRhcmQoKTsKKworICAgIHdnZXRmaWxlKCRzb3VyY2VmaWxlLCAkdXJsKTsKKyAgICB1bnppcCgkc291cmNlZmlsZSwgJHRtcGRpcik7CisgICAgdmVyaWZ5KCIkdG1wZGlyL3NvZnR3YXJlL09FTS9TVEIvQXBwL0Jvb3QvU1RCX1BDX1QuYmluIiwgJGhhc2gpOworICAgIGNvcHkoIiR0bXBkaXIvc29mdHdhcmUvT0VNL1NUQi9BcHAvQm9vdC9TVEJfUENfVC5iaW4iLCAkb3V0ZmlsZSk7CisKKyAgICAkb3V0ZmlsZTsKK30KKworc3ViIGRlYzI1NDB0IHsKKyAgICBteSAkc291cmNlZmlsZSA9ICJkZWMyMTdnLmV4ZSI7CisgICAgbXkgJHVybCA9ICJodHRwOi8vaGF1cHBhdWdlLmxpZ2h0cGF0aC5uZXQvZGUvJHNvdXJjZWZpbGUiOworICAgIG15ICRoYXNoID0gIjUzZTU4ZjRmNWI1YzI5MzBiZWVlNzRhNzY4MWZlZDkyIjsKKyAgICBteSAkb3V0ZmlsZSA9ICJkdmItdHR1c2ItZGVjLTI1NDB0LmZ3IjsKKyAgICBteSAkdG1wZGlyID0gdGVtcGRpcihESVIgPT4gIi90bXAiLCBDTEVBTlVQID0+IDEpOworCisgICAgY2hlY2tzdGFuZGFyZCgpOworCisgICAgd2dldGZpbGUoJHNvdXJjZWZpbGUsICR1cmwpOworICAgIHVuemlwKCRzb3VyY2VmaWxlLCAkdG1wZGlyKTsKKyAgICB2ZXJpZnkoIiR0bXBkaXIvc29mdHdhcmUvT0VNL1NUQi9BcHAvQm9vdC9TVEJfUENfWC5iaW4iLCAkaGFzaCk7CisgICAgY29weSgiJHRtcGRpci9zb2Z0d2FyZS9PRU0vU1RCL0FwcC9Cb290L1NUQl9QQ19YLmJpbiIsICRvdXRmaWxlKTsKKworICAgICRvdXRmaWxlOworfQorCitzdWIgZGVjMzAwMHMgeworICAgIG15ICRzb3VyY2VmaWxlID0gImRlYzIxN2cuZXhlIjsKKyAgICBteSAkdXJsID0gImh0dHA6Ly9oYXVwcGF1Z2UubGlnaHRwYXRoLm5ldC9kZS8kc291cmNlZmlsZSI7CisgICAgbXkgJGhhc2ggPSAiYjAxM2VjZWNlYTgzZjRkNmQ4ZDJhMjlhYzdjMWI0NDgiOworICAgIG15ICRvdXRmaWxlID0gImR2Yi10dHVzYi1kZWMtMzAwMHMuZnciOworICAgIG15ICR0bXBkaXIgPSB0ZW1wZGlyKERJUiA9PiAiL3RtcCIsIENMRUFOVVAgPT4gMSk7CisKKyAgICBjaGVja3N0YW5kYXJkKCk7CisKKyAgICB3Z2V0ZmlsZSgkc291cmNlZmlsZSwgJHVybCk7CisgICAgdW56aXAoJHNvdXJjZWZpbGUsICR0bXBkaXIpOworICAgIHZlcmlmeSgiJHRtcGRpci9zb2Z0d2FyZS9PRU0vU1RCL0FwcC9Cb290L1NUQl9QQ19TLmJpbiIsICRoYXNoKTsKKyAgICBjb3B5KCIkdG1wZGlyL3NvZnR3YXJlL09FTS9TVEIvQXBwL0Jvb3QvU1RCX1BDX1MuYmluIiwgJG91dGZpbGUpOworCisgICAgJG91dGZpbGU7Cit9CisKK3N1YiB2cDcwNDEgeworICAgIG15ICRzb3VyY2VmaWxlID0gIjIuNDIyLnppcCI7CisgICAgbXkgJHVybCA9ICJodHRwOi8vd3d3LnR3aW5oYW4uY29tL2ZpbGVzL2RyaXZlci9VU0ItVGVyLyRzb3VyY2VmaWxlIjsKKyAgICBteSAkaGFzaCA9ICJlODhjOTM3MmQxZjY2NjA5YTNlN2IwNzJjNTNmYmNmZSI7CisgICAgbXkgJG91dGZpbGUgPSAiZHZiLXZwNzA0MS0yLjQyMi5mdyI7CisgICAgbXkgJHRtcGRpciA9IHRlbXBkaXIoRElSID0+ICIvdG1wIiwgQ0xFQU5VUCA9PiAxKTsKKworICAgIGNoZWNrc3RhbmRhcmQoKTsKKworICAgIHdnZXRmaWxlKCRzb3VyY2VmaWxlLCAkdXJsKTsKKyAgICB1bnppcCgkc291cmNlZmlsZSwgJHRtcGRpcik7CisgICAgZXh0cmFjdCgiJHRtcGRpci9WaXNpb25EVFYvRHJpdmVycy9XaW4ySyZYUC9VRFRUbG9hZC5zeXMiLCAxMjUwMywgMzAzNiwgIiR0bXBkaXIvZnd0bXAxIik7CisgICAgZXh0cmFjdCgiJHRtcGRpci9WaXNpb25EVFYvRHJpdmVycy9XaW4ySyZYUC9VRFRUbG9hZC5zeXMiLCAyMjA3LCAxMDI3NCwgIiR0bXBkaXIvZnd0bXAyIik7CisKKyAgICBteSAkQ01EID0gIlwwMDBcMDAxXDAwMFwyMjJcMTc3XDAwMCI7CisgICAgbXkgJFBBRCA9ICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAiOworICAgIG15ICgkRlcpOworICAgIG9wZW4gJEZXLCAiPiR0bXBkaXIvZnd0bXAzIjsKKyAgICBwcmludCAkRlcgIiRDTURcMDAxJFBBRCI7CisgICAgcHJpbnQgJEZXICIkQ01EXDAwMSRQQUQiOworICAgIGFwcGVuZGZpbGUoJEZXLCAiJHRtcGRpci9md3RtcDEiKTsKKyAgICBwcmludCAkRlcgIiRDTURcMDAwJFBBRCI7CisgICAgcHJpbnQgJEZXICIkQ01EXDAwMSRQQUQiOworICAgIGFwcGVuZGZpbGUoJEZXLCAiJHRtcGRpci9md3RtcDIiKTsKKyAgICBwcmludCAkRlcgIiRDTURcMDAxJFBBRCI7CisgICAgcHJpbnQgJEZXICIkQ01EXDAwMCRQQUQiOworICAgIGNsb3NlKCRGVyk7CisKKyAgICB2ZXJpZnkoIiR0bXBkaXIvZnd0bXAzIiwgJGhhc2gpOworICAgIGNvcHkoIiR0bXBkaXIvZnd0bXAzIiwgJG91dGZpbGUpOworCisgICAgJG91dGZpbGU7Cit9CisKK3N1YiBkaWJ1c2IgeworCW15ICR1cmwgPSAiaHR0cDovL3d3dy5saW51eHR2Lm9yZy9kb3dubG9hZHMvZmlybXdhcmUvZHZiLWRpYnVzYi01LjAuMC4xMS5mdyI7CisJbXkgJG91dGZpbGUgPSAiZHZiLWRpYnVzYi01LjAuMC4xMS5mdyI7CisJbXkgJGhhc2ggPSAiZmE0OTAyOTVhNTI3MzYwY2ExNmRjZGYzMjI0Y2EyNDMiOworCisJY2hlY2tzdGFuZGFyZCgpOworCisJd2dldGZpbGUoJG91dGZpbGUsICR1cmwpOworCXZlcmlmeSgkb3V0ZmlsZSwkaGFzaCk7CisKKwkkb3V0ZmlsZTsKK30KKworc3ViIG54dDIwMDIgeworICAgIG15ICRzb3VyY2VmaWxlID0gIkJyb2FkYmFuZDRQQ180XzJfMTEuemlwIjsKKyAgICBteSAkdXJsID0gImh0dHA6Ly93d3cuYmJ0aS51cy9kb3dubG9hZC93aW5kb3dzLyRzb3VyY2VmaWxlIjsKKyAgICBteSAkaGFzaCA9ICJjNmQyZWE0N2E4ZjQ1NmQ4ODdhZGEwY2ZiNzE4ZmYyYSI7CisgICAgbXkgJG91dGZpbGUgPSAiZHZiLWZlLW54dDIwMDIuZnciOworICAgIG15ICR0bXBkaXIgPSB0ZW1wZGlyKERJUiA9PiAiL3RtcCIsIENMRUFOVVAgPT4gMSk7CisKKyAgICBjaGVja3N0YW5kYXJkKCk7CisgICAgCisgICAgd2dldGZpbGUoJHNvdXJjZWZpbGUsICR1cmwpOworICAgIHVuemlwKCRzb3VyY2VmaWxlLCAkdG1wZGlyKTsKKyAgICB2ZXJpZnkoIiR0bXBkaXIvU2t5TkVUVS5zeXMiLCAkaGFzaCk7CisgICAgZXh0cmFjdCgiJHRtcGRpci9Ta3lORVRVLnN5cyIsIDM3NTgzMiwgNTkwOCwgJG91dGZpbGUpOworCisgICAgJG91dGZpbGU7Cit9CisKK3N1YiBvcjUxMjExIHsKKyAgICBteSAkZndmaWxlID0gImR2Yi1mZS1vcjUxMjExLmZ3IjsKKyAgICBteSAkdXJsID0gImh0dHA6Ly9saW51eHR2Lm9yZy9kb3dubG9hZHMvZmlybXdhcmUvJGZ3ZmlsZSI7CisgICAgbXkgJGhhc2ggPSAiZDgzMDk0OWM3NzFhMjg5NTA1YmY5ZWFmYzIyNWQ0OTEiOworCisgICAgY2hlY2tzdGFuZGFyZCgpOworCisgICAgd2dldGZpbGUoJGZ3ZmlsZSwgJHVybCk7CisgICAgdmVyaWZ5KCRmd2ZpbGUsICRoYXNoKTsKKworICAgICRmd2ZpbGU7Cit9CisKK3N1YiBvcjUxMTMyX3FhbSB7CisgICAgbXkgJGZ3ZmlsZSA9ICJkdmItZmUtb3I1MTEzMi1xYW0uZnciOworICAgIG15ICR1cmwgPSAiaHR0cDovL2xpbnV4dHYub3JnL2Rvd25sb2Fkcy9maXJtd2FyZS8kZndmaWxlIjsKKyAgICBteSAkaGFzaCA9ICI3NzAyZTg5Mzg2MTJkZTQ2Y2NhZGZlOWI0MTNjYjNiNSI7CisKKyAgICBjaGVja3N0YW5kYXJkKCk7CisKKyAgICB3Z2V0ZmlsZSgkZndmaWxlLCAkdXJsKTsKKyAgICB2ZXJpZnkoJGZ3ZmlsZSwgJGhhc2gpOworCisgICAgJGZ3ZmlsZTsKK30KKworc3ViIG9yNTExMzJfdnNiIHsKKyAgICBteSAkZndmaWxlID0gImR2Yi1mZS1vcjUxMTMyLXZzYi5mdyI7CisgICAgbXkgJHVybCA9ICJodHRwOi8vbGludXh0di5vcmcvZG93bmxvYWRzL2Zpcm13YXJlLyRmd2ZpbGUiOworICAgIG15ICRoYXNoID0gImMxNjIwOGUwMmYzNmZjNDM5YTU1N2FkNGM2MTMzNjRhIjsKKworICAgIGNoZWNrc3RhbmRhcmQoKTsKKworICAgIHdnZXRmaWxlKCRmd2ZpbGUsICR1cmwpOworICAgIHZlcmlmeSgkZndmaWxlLCAkaGFzaCk7CisKKyAgICAkZndmaWxlOworfQorCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBVdGlsaXRpZXMKKworc3ViIGNoZWNrc3RhbmRhcmQgeworICAgIGlmIChzeXN0ZW0oIndoaWNoIHVuemlwID4gL2Rldi9udWxsIDI+JjEiKSkgeworCWRpZSAiVGhpcyBmaXJtd2FyZSByZXF1aXJlcyB0aGUgdW56aXAgY29tbWFuZCAtIHNlZSBmdHA6Ly9mdHAuaW5mby16aXAub3JnL3B1Yi9pbmZvemlwL1VuWmlwLmh0bWxcbiI7CisgICAgfQorICAgIGlmIChzeXN0ZW0oIndoaWNoIG1kNXN1bSA+IC9kZXYvbnVsbCAyPiYxIikpIHsKKwlkaWUgIlRoaXMgZmlybXdhcmUgcmVxdWlyZXMgdGhlIG1kNXN1bSBjb21tYW5kIC0gc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9jb3JldXRpbHMvXG4iOworICAgIH0KKyAgICBpZiAoc3lzdGVtKCJ3aGljaCB3Z2V0ID4gL2Rldi9udWxsIDI+JjEiKSkgeworCWRpZSAiVGhpcyBmaXJtd2FyZSByZXF1aXJlcyB0aGUgd2dldCBjb21tYW5kIC0gc2VlIGh0dHA6Ly93Z2V0LnN1bnNpdGUuZGsvXG4iOworICAgIH0KK30KKworc3ViIGNoZWNrdW5zaGllbGQgeworICAgIGlmIChzeXN0ZW0oIndoaWNoIHVuc2hpZWxkID4gL2Rldi9udWxsIDI+JjEiKSkgeworCWRpZSAiVGhpcyBmaXJtd2FyZSByZXF1aXJlcyB0aGUgdW5zaGllbGQgY29tbWFuZCAtIHNlZSBodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3N5bmNlL1xuIjsKKyAgICB9Cit9CisKK3N1YiB3Z2V0ZmlsZSB7CisgICAgbXkgKCRzb3VyY2VmaWxlLCAkdXJsKSA9IEBfOworCisgICAgaWYgKCEgLWYgJHNvdXJjZWZpbGUpIHsKKwlzeXN0ZW0oIndnZXQgLU8gXCIkc291cmNlZmlsZVwiIFwiJHVybFwiIikgYW5kIGRpZSAid2dldCBmYWlsZWQgLSB1bmFibGUgdG8gZG93bmxvYWQgZmlybXdhcmUiOworICAgIH0KK30KKworc3ViIHVuemlwIHsKKyAgICBteSAoJHNvdXJjZWZpbGUsICR0b2RpcikgPSBAXzsKKworICAgICRzdGF0dXMgPSBzeXN0ZW0oInVuemlwIC1xIC1vIC1kIFwiJHRvZGlyXCIgXCIkc291cmNlZmlsZVwiIDI+L2Rldi9udWxsIiApOworICAgIGlmICgoKCRzdGF0dXMgPj4gOCkgPiAyKSB8fCAoKCRzdGF0dXMgJiAweGZmKSAhPSAwKSkgeworCWRpZSAoInVuemlwIGZhaWxlZCAtIHVuYWJsZSB0byBleHRyYWN0IGZpcm13YXJlIik7CisgICAgfQorfQorCitzdWIgdW5zaGllbGQgeworICAgIG15ICgkc291cmNlZmlsZSwgJHRvZGlyKSA9IEBfOworCisgICAgc3lzdGVtKCJ1bnNoaWVsZCB4IC1kIFwiJHRvZGlyXCIgXCIkc291cmNlZmlsZVwiID4gL2Rldi9udWxsIiApIGFuZCBkaWUgKCJ1bnNoaWVsZCBmYWlsZWQgLSB1bmFibGUgdG8gZXh0cmFjdCBmaXJtd2FyZSIpOworfQorCitzdWIgdmVyaWZ5IHsKKyAgICBteSAoJGZpbGVuYW1lLCAkaGFzaCkgPSBAXzsKKyAgICBteSAoJHRlc3RoYXNoKTsKKworICAgIG9wZW4oQ01ELCAibWQ1c3VtIFwiJGZpbGVuYW1lXCJ8Iik7CisgICAgJHRlc3RoYXNoID0gPENNRD47CisgICAgJHRlc3RoYXNoID1+IC8oW2EtekEtWjAtOV0qKS87CisgICAgJHRlc3RoYXNoID0gJDE7CisgICAgY2xvc2UgQ01EOworICAgIGRpZSAiSGFzaCBvZiBleHRyYWN0ZWQgZmlsZSBkb2VzIG5vdCBtYXRjaCFcbiIgaWYgKCR0ZXN0aGFzaCBuZSAkaGFzaCk7Cit9CisKK3N1YiBjb3B5IHsKKyAgICBteSAoJGZyb20sICR0bykgPSBAXzsKKworICAgIHN5c3RlbSgiY3AgLWYgXCIkZnJvbVwiIFwiJHRvXCIiKSBhbmQgZGllICgiY3AgZmFpbGVkIik7Cit9CisKK3N1YiBleHRyYWN0IHsKKyAgICBteSAoJGluZmlsZSwgJG9mZnNldCwgJGxlbmd0aCwgJG91dGZpbGUpID0gQF87CisgICAgbXkgKCRjaHVua2xlbmd0aCwgJGJ1ZiwgJHJjb3VudCk7CisKKyAgICBvcGVuIElORklMRSwgIjwkaW5maWxlIjsKKyAgICBvcGVuIE9VVEZJTEUsICI+JG91dGZpbGUiOworICAgIHN5c3NlZWsoSU5GSUxFLCAkb2Zmc2V0LCBTRUVLX1NFVCk7CisgICAgd2hpbGUoJGxlbmd0aCA+IDApIHsKKwkjIENhbGMgY2h1bmsgc2l6ZQorCSRjaHVua2xlbmd0aCA9IDIwNDg7CisJJGNodW5rbGVuZ3RoID0gJGxlbmd0aCBpZiAoJGNodW5rbGVuZ3RoID4gJGxlbmd0aCk7CisKKwkkcmNvdW50ID0gc3lzcmVhZChJTkZJTEUsICRidWYsICRjaHVua2xlbmd0aCk7CisJZGllICJSYW4gb3V0IG9mIGRhdGFcbiIgaWYgKCRyY291bnQgIT0gJGNodW5rbGVuZ3RoKTsKKwlzeXN3cml0ZShPVVRGSUxFLCAkYnVmKTsKKwkkbGVuZ3RoIC09ICRyY291bnQ7CisgICAgfQorICAgIGNsb3NlIElORklMRTsKKyAgICBjbG9zZSBPVVRGSUxFOworfQorCitzdWIgYXBwZW5kZmlsZSB7CisgICAgbXkgKCRGSCwgJGluZmlsZSkgPSBAXzsKKyAgICBteSAoJGJ1Zik7CisKKyAgICBvcGVuIElORklMRSwgIjwkaW5maWxlIjsKKyAgICB3aGlsZSgxKSB7CisJJHJjb3VudCA9IHN5c3JlYWQoSU5GSUxFLCAkYnVmLCAyMDQ4KTsKKwlsYXN0IGlmICgkcmNvdW50ID09IDApOworCXByaW50ICRGSCAkYnVmOworICAgIH0KKyAgICBjbG9zZShJTkZJTEUpOworfQorCitzdWIgc3ludGF4KCkgeworICAgIHByaW50IFNUREVSUiAic3ludGF4OiBnZXRfZHZiX2Zpcm13YXJlIDxjb21wb25lbnQ+XG4iOworICAgIHByaW50IFNUREVSUiAiU3VwcG9ydGVkIGNvbXBvbmVudHM6XG4iOworICAgIGZvcigkaT0wOyAkaSA8IHNjYWxhcihAY29tcG9uZW50cyk7ICRpKyspIHsKKwlwcmludCBTVERFUlIgIlx0IiAuICRjb21wb25lbnRzWyRpXSAuICJcbiI7CisgICAgfQorICAgIGV4aXQoMSk7Cit9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2R2Yi9yZWFkbWUudHh0IGIvRG9jdW1lbnRhdGlvbi9kdmIvcmVhZG1lLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTRjOThjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kdmIvcmVhZG1lLnR4dApAQCAtMCwwICsxLDUyIEBACitMaW51eCBEaWdpdGFsIFZpZGVvIEJyb2FkY2FzdCAoRFZCKSBzdWJzeXN0ZW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgbWFpbiBkZXZlbG9wbWVudCBzaXRlIGFuZCBDVlMgcmVwb3NpdG9yeSBmb3IgdGhlc2UKK2RyaXZlcnMgaXMgaHR0cDovL2xpbnV4dHYub3JnLy4KKworVGhlIGRldmVsb3BlciBtYWlsaW5nIGxpc3QgbGludXgtZHZiIGlzIGFsc28gaG9zdGVkIHRoZXJlLAorc2VlIGh0dHA6Ly9saW51eHR2Lm9yZy9saXN0cy5waHAuIFBsZWFzZSBjaGVjawordGhlIGFyY2hpdmUgaHR0cDovL2xpbnV4dHYub3JnL3BpcGVybWFpbC9saW51eC1kdmIvCithbmQgdGhlIFdpa2kgaHR0cDovL2xpbnV4dHYub3JnL3dpa2kvCitiZWZvcmUgYXNraW5nIG5ld2JpZSBxdWVzdGlvbnMgb24gdGhlIGxpc3QuCisKK0FQSSBkb2N1bWVudGF0aW9uLCB1dGlsaXRpZXMgYW5kIHRlc3QvZXhhbXBsZSBwcm9ncmFtcworYXJlIGF2YWlsYWJsZSBhcyBwYXJ0IG9mIHRoZSBvbGQgZHJpdmVyIHBhY2thZ2UgZm9yIExpbnV4IDIuNAorKGxpbnV4dHYtZHZiLTEuMC54LnRhci5neiksIG9yIGZyb20gQ1ZTIChtb2R1bGUgRFZCKS4KK1dlIHBsYW4gdG8gc3BsaXQgdGhpcyBpbnRvIHNlcGFyYXRlIHBhY2thZ2VzLCBidXQgaXQncyBub3QKK2JlZW4gZG9uZSB5ZXQuCisKK2h0dHA6Ly9saW51eHR2Lm9yZy9kb3dubG9hZHMvCisKK1doYXQncyBpbnNpZGUgdGhpcyBkaXJlY3Rvcnk6CisKKyJjYXJkcy50eHQiIAorY29udGFpbnMgYSBsaXN0IG9mIHN1cHBvcnRlZCBoYXJkd2FyZS4KKworImNvbnRyaWJ1dG9ycy50eHQiCitpcyB0aGUgd2hvLWlzLXdobyBvZiBEVkIgZGV2ZWxvcG1lbnQKKworImZhcS50eHQiCitjb250YWlucyBmcmVxdWVudGx5IGFza2VkIHF1ZXN0aW9ucyBhbmQgdGhlaXIgYW5zd2Vycy4KKworImdldF9kdmJfZmlybXdhcmUiCitzY3JpcHQgdG8gZG93bmxvYWQgYW5kIGV4dHJhY3QgZmlybXdhcmUgZm9yIHRob3NlIGRldmljZXMKK3RoYXQgcmVxdWlyZSBpdC4KKworInR0dXNiLWRlYy50eHQiCitjb250YWlucyBkZXRhaWxlZCBpbmZvcm1hdGlvbnMgYWJvdXQgdGhlCitUVCBERUMyMDAwL0RFQzMwMDAgVVNCIERWQiBoYXJkd2FyZS4KKworImJ0OHh4LnR4dCIgCitjb250YWlucyBkZXRhaWxlZCBpbnN0YWxsYXRpb24gaW5zdHJ1Y3Rpb25zIGZvciB0aGUKK3ZhcmlvdXMgYnQ4eHggYmFzZWQgImJ1ZGdldCIgRFZCIGNhcmRzCisoTmVidWxhLCBQaW5uYWNsZSBQQ1RWLCBUd2luaGFuIERTVCkKKworIlJFQURNRS5kaWJ1c2IiCitjb250YWlucyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBhZGFwdGVycworYmFzZWQgb24gRGlCY29tIHJlZmVyZW5jZSBkZXNpZ24uCisKKyJ1ZGV2LnR4dCIKK2hvdyB0byBnZXQgRFZCIGFuZCB1ZGV2IHVwIGFuZCBydW5uaW5nLgorCitHb29kIGx1Y2sgYW5kIGhhdmUgZnVuIQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kdmIvdHR1c2ItZGVjLnR4dCBiL0RvY3VtZW50YXRpb24vZHZiL3R0dXNiLWRlYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWMxZTk4NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZHZiL3R0dXNiLWRlYy50eHQKQEAgLTAsMCArMSw0NCBAQAorVGVjaG5vVHJlbmQvSGF1cHBhdWdlIERFQyBVU0IgRHJpdmVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRHJpdmVyIFN0YXR1cworLS0tLS0tLS0tLS0tLQorCitTdXBwb3J0ZWQ6CisJREVDMjAwMC10CisJREVDMjQ1MC10CisJREVDMzAwMC1zCisJTGludXggS2VybmVscyAyLjQgYW5kIDIuNgorCVZpZGVvIFN0cmVhbWluZworCUF1ZGlvIFN0cmVhbWluZworCVNlY3Rpb24gRmlsdGVycworCUNoYW5uZWwgWmFwcGluZworCUhvdHBsdWcgZmlybXdhcmUgbG9hZGVyIHVuZGVyIDIuNiBrZXJuZWxzCisKK1RvIERvOgorCVR1bmVyIHN0YXR1cyBpbmZvcm1hdGlvbgorCURWQiBuZXR3b3JrIGludGVyZmFjZQorCVN0cmVhbWluZyB2aWRlbyBQQy0+REVDCisJQ29uYXggc3VwcG9ydCBmb3IgMjQ1MC10CisKK0dldHRpbmcgdGhlIEZpcm13YXJlCistLS0tLS0tLS0tLS0tLS0tLS0tLQorVG8gZG93bmxvYWQgdGhlIGZpcm13YXJlLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKKyJnZXRfZHZiX2Zpcm13YXJlIGRlYzIwMDB0IgorImdldF9kdmJfZmlybXdhcmUgZGVjMjU0MHQiCisiZ2V0X2R2Yl9maXJtd2FyZSBkZWMzMDAwcyIKKworCitDb21waWxhdGlvbiBOb3RlcyBmb3IgMi40IGtlcm5lbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRm9yIDIuNCBrZXJuZWxzIHRoZSBmaXJtd2FyZSBmb3IgdGhlIERFQ3MgaXMgY29tcGlsZWQgaW50byB0aGUgZHJpdmVyIGl0c2VsZi4KKworQ29weSB0aGUgdGhyZWUgZmlsZXMgZG93bmxvYWRlZCBhYm92ZSBpbnRvIHRoZSBidWlsZC0yLjQgZGlyZWN0b3J5LgorCisKK0hvdHBsdWcgRmlybXdhcmUgTG9hZGluZyBmb3IgMi42IGtlcm5lbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0ZvciAyLjYga2VybmVscyB0aGUgZmlybXdhcmUgaXMgbG9hZGVkIGF0IHRoZSBwb2ludCB0aGF0IHRoZSBkcml2ZXIgbW9kdWxlIGlzCitsb2FkZWQuICBTZWUgbGludXgvRG9jdW1lbnRhdGlvbi9kdmIvZmlybXdhcmUudHh0IGZvciBtb3JlIGluZm9ybWF0aW9uLgorCitDb3B5IHRoZSB0aHJlZSBmaWxlcyBkb3dubG9hZGVkIGFib3ZlIGludG8gdGhlIC91c3IvbGliL2hvdHBsdWcvZmlybXdhcmUgZGlyZWN0b3J5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kdmIvdWRldi50eHQgYi9Eb2N1bWVudGF0aW9uL2R2Yi91ZGV2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGVlMjI0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kdmIvdWRldi50eHQKQEAgLTAsMCArMSw0NiBAQAorVGhlIERWQiBzdWJzeXN0ZW0gY3VycmVudGx5IHJlZ2lzdGVycyB0byB0aGUgc3lzZnMgc3Vic3lzdGVtIHVzaW5nIHRoZQorImNsYXNzX3NpbXBsZSIgaW50ZXJmYWNlLgorCitUaGlzIG1lYW5zIHRoYXQgb25seSB0aGUgYmFzaWMgaW5mb3JtYXRpb25zIGxpa2UgbW9kdWxlIGxvYWRpbmcgcGFyYW1ldGVycworYXJlIHByZXNlbnRlZCB0aHJvdWdoIHN5c2ZzLiBPdGhlciB0aGluZ3MgdGhhdCBtaWdodCBiZSBpbnRlcmVzdGluZyBhcmUKK2N1cnJlbnRseSAqbm90KiBhdmFpbGFibGUuCisKK05ldmVydGhlbGVzcyBpdCdzIG5vdyBwb3NzaWJsZSB0byBhZGQgcHJvcGVyIHVkZXYgcnVsZXMgc28gdGhhdCB0aGUKK0RWQiBkZXZpY2Ugbm9kZXMgYXJlIGNyZWF0ZWQgYXV0b21hdGljYWxseS4KKworV2UgYXNzdW1lIHRoYXQgeW91IGhhdmUgdWRldiBhbHJlYWR5IHVwIGFuZCBydW5uaW5nIGFuZCB0aGF0IGhhdmUgYmVlbgorY3JlYXRpbmcgdGhlIERWQiBkZXZpY2Ugbm9kZXMgbWFudWFsbHkgdXAgdG8gbm93IGR1ZSB0byB0aGUgbWlzc2luZyBzeXNmcworc3VwcG9ydC4KKworMC4gRG9uJ3QgZm9yZ2V0IHRvIGRpc2FibGUgeW91ciBjdXJyZW50IG1ldGhvZCBvZiBjcmVhdGluZyB0aGUKK2RldmljZSBub2RlcyBtYW51YWxseS4KKworMS4gVW5mb3J0dW5hdGVseSwgeW91J2xsIG5lZWQgYSBoZWxwZXIgc2NyaXB0IHRvIHRyYW5zZm9ybSB0aGUga2VybmVsCitzeXNmcyBkZXZpY2UgbmFtZSBpbnRvIHRoZSB3ZWxsIGtub3duIGR2YiBhZGFwdGVyIC8gZGV2aWNlIG5hbWluZyBzY2hlbWUuCitUaGUgc2NyaXB0IHNob3VsZCBiZSBjYWxsZWQgImR2Yi5zaCIgYW5kIHNob3VsZCBiZSBwbGFjZWQgaW50byBhIHNjcmlwdAorZGlyIHdoZXJlIHVkZXYgY2FuIGV4ZWN1dGUgaXQsIG1vc3QgbGlrZWx5IC9ldGMvdWRldi9zY3JpcHRzLworCitTbywgY3JlYXRlIGEgbmV3IGZpbGUgL2V0Yy91ZGV2L3NjcmlwdHMvZHZiLnNoIGFuZCBhZGQgdGhlIGZvbGxvd2luZzoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXNjaG5pcHAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMhL2Jpbi9zaAorL2Jpbi9lY2hvICQxIHwgL2Jpbi9zZWQgLWUgJ3MsZHZiXChbMC05XVwpXC5cKFteMC05XSpcKVwoWzAtOV1cKSxkdmIvYWRhcHRlclwxL1wyXDMsJworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tc2NobmlwcC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEb24ndCBmb3JnZXQgdG8gbWFrZSB0aGUgc2NyaXB0IGV4ZWN1dGFibGUgd2l0aCAiY2htb2QiLgorCisxLiBZb3UgbmVlZCB0byBjcmVhdGUgYSBwcm9wZXIgdWRldiBydWxlIHRoYXQgd2lsbCBjcmVhdGUgdGhlIGRldmljZSBub2RlcworbGlrZSB5b3Uga25vdyB0aGVtLiBBbGwgcmVhbCBkaXN0cmlidXRpb25zIG91dCB0aGVyZSBzY2FuIHRoZSAvZXRjL3VkZXYvcnVsZXMuZAorZGlyZWN0b3J5IGZvciBydWxlIGZpbGVzLiBUaGUgbWFpbiB1ZGV2IGNvbmZpZ3VyYXRpb24gZmlsZSAvZXRjL3VkZXYvdWRldi5jb25mCit3aWxsIHRlbGwgeW91IHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHJ1bGVzIGFyZSwgbW9zdCBsaWtlbHkgaXQncyAvZXRjL3VkZXYvcnVsZXMuZC8KKworQ3JlYXRlIGEgbmV3IHJ1bGUgZmlsZSBpbiB0aGF0IGRpcmVjdG9yeSBjYWxsZWQgImR2Yi5ydWxlIiBhbmQgYWRkIHRoZSBmb2xsb3dpbmcgbGluZToKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXNjaG5pcHAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0tFUk5FTD0iZHZiKiIsIFBST0dSQU09Ii9ldGMvdWRldi9zY3JpcHRzL2R2Yi5zaCAlayIsIE5BTUU9IiVjIgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tc2NobmlwcC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJZiB5b3Ugd2FudCBtb3JlIGNvbnRyb2wgb3ZlciB0aGUgZGV2aWNlIG5vZGVzIChmb3IgZXhhbXBsZSBhIHNwZWNpYWwgZ3JvdXAgbWVtYmVyc2hpcCkKK2hhdmUgYSBsb29rIGF0ICJtYW4gdWRldiIuCisKK0ZvciBldmVyeSBkZXZpY2UgdGhhdCByZWdpc3RlcnMgdG8gdGhlIHN5c2ZzIHN1YnN5c3RlbSB3aXRoIGEgImR2YiIgcHJlZml4LAordGhlIGhlbHBlciBzY3JpcHQgL2V0Yy91ZGV2L3NjcmlwdHMvZHZiLnNoIGlzIGludm9rZWQsIHdoaWNoIHdpbGwgdGhlbgorY3JlYXRlIHRoZSBwcm9wZXIgZGV2aWNlIG5vZGUgaW4geW91ciAvZGV2LyBkaXJlY3RvcnkuCg==